What is Design Design is the process of transforming requirements specifications for software into an architectural structure of software components.
Who Does Design Software designer, software programmer or software architect.
Why is Design Difficult 1.Nascent Body of Knowledge – relatively new field. 2.Confusion and Gurus – good designers must lead 3.Professional Jealously – use humility 4.Management Trap 5.Software Crisis
Where is DESIGN in the SDLC System Initiation Requirements Analysis MockUp User Prototype Design
Where is DESIGN in the SDLC Design Build Database Architecture Build Interface Architecture Build Distributed Architecture Build Technology Architecture
Build Database Architecture Input: Entity Relationship Diagram/Class Diagram Process: Transform ERD into Database Architecture Output: LAYOUT for Relational Database TablesOR IMS Database Segment OR Codasyl Database Pointers OR Object Oriented Database Entities OR Flat File Components
Build Database Architecture STUDENTENROLLSECTIONS M M SSN9 digits{0..9} SName20 char{A..Z, a..z} Major5 digits{0..9} ReferenceNo5 digits{0..9} ClassID7 char{A..Z, 0..9} Bldg5 char{A..Z, a..z} SSN9 digits{0..9} ReferenceNo5 digits{0..9}
Build Interface Architecture Input: Screen Definition, Output Definition Process: Transform Screen Definition into Screen Design with Navigation (Identifying reusable I/O components) Transform Output Definition into Reports and other outputs Outputs: Screen Prototype and Output Prototype
Build Interface Architecture SRF = SSN + {class information} + total hours Class information = Class ID + ref# + hours SSN:Name: Total Hours: Reference NoClass IDHours
Build Distributed Architecture Input: Specification for inputs/outputs, Specification for Use Cases Specification for Domain Classes Specification for Database Process: Transform Specifications into Distributed Specifications Output: Distributed Inputs/Outputs Distributed Use Cases Distributed Databases
Build Distributed Architecture System CRUD request Create Reference Update Delete CRUD response
Build Distributed Architecture Web Browser Web Server http request http response DB db request db response File Server Java Servlet JSP
Build Distributed Architecture Controller http response http request routed request Use Case Servlet Classes Entity Classes do CRUD(SQL request) JavaBean DB db request db response update db resultset JSP Request Dispatcher putValue (JSP bean) Http Session make a JSP Bean ( result set): instance forward to JSP
Build Technology Architecture Inputs: Database Designs Input/Output Designs Distribution Design Process: Transform Designs into Good Design using Analysis Patterns Design Patterns, Refactoring, Component Building Framework Building
Design Build Database Architecture Build Interface Architecture Build Distributed Architecture Build Technology Architecture Majority of course dedicated to Technology Architecture
Technology Design Approaches 1.Zachman 2.Open Distributed Processing (ODP) 3.Domain Analysis View Model
1.Zachman (30 viewpoints of design) IBM Approach (using structured techniques) Who what when why where how for software plan own build design for construction DOD C4ISR –Command, control, computers, communications, intelligent surveillance and reconnaissance Technology Design Approaches
2.Open Distributed Processing (ODP) 5 viewpoints Enterprise viewpoint – domain objects Informational viewpoint- object models Computational viewpoint – components Engineering viewpoint – distributed middleware DCOM (MS distributed object model) CORBA (common object request broker architecture) EJB (sun enterprise java beans) Technology Viewpoint - design patterns Technology Design Approaches
3.Domain Analysis Building systems in a particular domain which utilize reuse and commonalities in the domain. Frameworks in particular domains Technology Design Approaches
4.4+1 View Model Use Case View Logical View Process View Implementation (component) View Deployment View Technology Design Approaches
Global Level Enterprise Level System Level Application Level Frameworks Micro Architectures Objects/ Classes DESIGN LEVELS Commercial marker - Internet Across the Enterprise 0..N Applications 0..N Frameworks 0..N Components 0..N Objects/Classes Refactoring, Design Patterns
Design Patterns Definition: Pattern: A representation of a proven solution. Problem Applicable Forces Solution Consequences Benefits
Design Patterns Definition: Anti-Pattern: A solution pair not a problem solution pair Anti Pattern Solution Contextual Causes Refactored Solution Consequences Benefits Symptoms and Consequences