SW Software Design SW
Design Architecture High Level Design Module Decomposition Functional/OO Design Document/IEEE Std.1016 SDD Detailed Design Formal Methods UML  Overview Graphical Diagrams
Architectural Design Establishing basing structural framework of an application -  decomposition ( subsystems, modules ), interface specification and communication . subsystems  -  independent components/modules of an application modules  -  provide one or more services to other modules Output -  Design Document/SDD
Architecture Design Choice Affects:  performance, robustness, distributabilty and maintainability and development costs . Application Constraints: Performance localize critical operations Security   access control, layered structure Safety costly validation, single component for safety-related operations Availability include redundant components Maintainability self-contained components
Structure Design Repository Design Client-Server Design Layered Design Control Models Centralized control Hierarchic Design Centralized Design Event Driven Broadcast Interrupt driven
Repository Design Registrar Staff Professor Client Admin Client Student Database Professor Database Schedule Class Database Adv : - share large database - integrate tools w/ same data model Drbk : - performance - evolution difficult - forces the same policy on subsystems - difficult to distribute Student Client
Client/Server Design Registrar Staff Student Database Professor Database Schedule Class Database Payroll HR Adv : - distributed - scalable Drbks : -naming/registry -diff to anticipate prbls w/ add a srvr -independent data mgmt/recovery Student Client Professor Client
Layered Design Kernel Memory Mgmt I/O - Dev.Drv File Server - GUI Adv : - incremental dev. - portability
Hierarchic Control Design  Adv : - call/return - only for sequential tasks
Centralized Design Adv : - parallel tasks - RTS System Controller Input Sensor Program Program/Data
Broadcast Design network Client A Client B Client C Client D
Interrupt Design IH 2 Proc IH 3 Proc IH 5 Proc IH 4 Proc IH 1 Proc Adv : - fast Drbks : -complex to implement/test/validate
Design Entities Procedural design Procedures Modular design Modules Object-oriented design Classes Multithreded, multiprocessors, multitasking Threads, tasks, processes
Compiler: Functional view Lexical analysis Syntax analysis Semantic analysis Build symbol table Code generation input program program symbols symbolic program syntax tree symbol table analyzed program Object code
Compiler: Object oriented view Source program Syntax tree Symbol table Analyzed program Object code
Software Design Process Requirements Specification Architectural Design Functional Specification Architecture Chart UI Design Module/Algorithm Design UI Specification Database Design Module/Algorithm Specification Database Specification Design Activities API, algorithms database
Design Methods Informal ad hoc Formal requirements Formal specifications Structured Models supported data-flow model -  data transfers entity-relation model -  basic entities and relations structural model -  components and interactions object-oriented model -  objects, relationships and interactions, classes/methods
C++/Java C++ Classes, variables, functions class myclass { int myclassvariable; public: int myclass (int); ~myclass(); void function(int i) } Java Classes, variables, methods public class myclass { int myclassvariable; myclass (int){};  void function(int i){}; }
Architecture Chart HTML GUI WML GUI SQL Database Server WAP Terminal Web Terminal JDBC HTML WML Template files ASCII
Design Document Outline Software program overview broad terms overview, high level discussion of the design alternatives. goals for the architecture, problem addressed. Subprograms and organization chart major clusters of functionality, communication and dependencies. Change scenarios most likely changes in the program and how each change will be addresses. Reuse analysis and buy vs build decisions arguments for what will be build, bought or reused.
Approach to Standard Functional Areas External software interfaces ( APIs ) User interface -  prototype Database organization -  content, type of database Data storage -  non database data, file formats, major data structures Key algorithms Memory management String storage -  stiles, error messages Concurrency/threads Security -  how the design will be affected Localization Networking -  multi-user Portability Programming language Error handling
IEEE Design Description Overview Std. 1016 SDD: Standard Design Description Introduction Decomposition Description Dependency Description Interface Description Detailed Design Description
SDD Modular Design Methodology Introduction Purpose Scope Definitions and acronyms References Overview Decomposition Description Module Decomposition Module 1 Description Module 2 Description … Task Decomposition Task 1 Description Task 2 Description …
SDD Modular Design Methodology 3.  Dependency Description Module dependency Description Task Dependency Description 4.  Interface Description Module Interface Description Module 1 Interface Description Module 2 Interface Description … Task Interface Description Task 1 Interface Description Task 2 Interface Description …
SDD Modular Design Methodology 5.  Detailed Design Description Module Detailed Description Module 1 Detailed Description Module 2 Detailed Description … Task Detailed Description Task 1 Detailed Description Task 2 Detailed Description …
SDD Object Design Methodology Introduction Purpose Scope Definitions and acronyms References Overview Decomposition Description Class 1 Description Class 2 Description …
SDD Object Design Methodology 3.  Dependency Description Object Interaction Description Aggregation Description Inheritance Description 4.  Interface Description Class 1 Interface Description Class 2 Interface Description … 5.  Detailed Design Description Class 1 Detailed Description Class 2 Detailed Description …
Detailed Design Formal Design Approach Formal Design Approach Very Formal Design Approach Informal Design Approach for a subprogram/module/object done by the developer Project difficulty Programmer  experience HIGH LOW HIGH LOW
Formal Methods (theory, logic, algebra). Large % of the software developed use formal methods. Formal specifications Way of discovering specification errors and presenting the application specification in a unambiguous way -fewer errors. Specification analysis and proof Application verification/validation
Critical Software Applications Development Costs of failure are high -  Properties:  safety, reliability, security . Have high validation costs. Examples: Air traffic control system ( Hall 1996 ) Railway signaling systems ( Dehbonei and Mejia, 1995 ) Spacecraft systems ( Easterbrook 1998 ) Medical control systems ( Jackey 1997 ) Software tool specification ( Neil 1998 ) IBM’s CICS system ( Wordsworth 1991 )
UML Overview UML Modeling language for specifying, visualizing, constructing and documenting software programs.   Model elements, Notation and Guidelines Motivation communication among project teams  tools for automation of software design/validation/production (same as component technology, visual programming) SW Program A set of nearly independent set of graphical diagrams
UML Graphical Diagrams Use Case Diagram Static Structure Diagrams Class/Object Diagram Behavior Diagrams Interaction Diagrams Sequence diagram Statechart Diagrams  Activity Diagrams   Implementation Diagrams Component Diagram Deployment Diagram
Use Case Diagram Display the user interaction with the application Provide an external view of the application Basis for testing Use Case Relationships Include  -  to avoid repetition of use cases Generalization  -  describe a variation casually Extend  -  declare extension points in the base case
Use Case Diagram Check Grade Register Classes Database Query Authorize Student Input Grades Student Professor Registrar Staff Max Credits <<include>> <<include>> <<include>> <<include>> Include Generalization Use Case
Class Diagram Describes the type of objects and the static relationships ( associations and subtypes ) Class attributes, multiplicity, generalization, role, constraints, operations Associations relations between instances of classes, with multiplicity (*, x, x..y | x, y    N) navigability (unidirectional/bi-directional)
Class Diagram Catalog Entry exam date : Date grade : String passed():Boolean Class subject : String professor : String gradedPNP():String 1 * * 1 If CatalogEntry.Student.isCurrent is “n” then Catalog.Entry.grade must be “N” Multiplicity: mandatory Association Generalization Class Constraint Job 0..1 Multiplicity: optional Attribute Operation Multiplicity: Many-valued Navigability Student name : String address : String ID : Long Integer isCurrent():String Graduate department: String isCurrent():String Undergraduate major: String isCurrent():String
Object/Class Diagrams Object diagram  objects allocated at a certain point in time Classification -relation of an object to a type Single classification  -  single type, subtypes Multiple classification  -  several types Static classification  -  separation between   types/states Dynamic classification  -  change type within the subtyping structure
Object/Class Diagrams Employee name Male Female Developer QA/Test Design Job <<dynamic>> Sex {complete} Discriminator Manager Software: MGMT name = “Name” MGMT * 1 Software PM: MGMT name = “Name” QA Manager: MGMT name = “Name” Software PM: MGMT name = “Name” Engineer: Developer name = “Name” Engineer: Design name = “Name” Engineer: QA/Test name = “Name” Engineer: Developer name = “Name” Object Diagram showing instances of  the above class diagram Class Diagram with Multiple and Dynamic Classification Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F
Statechart Diagram All possible states that a particular object can get into How the object state changes as a result of events that reach the object Enhancements Superstates Concurrent Statechart Diagrams
Statechart Diagram State C State B State A State D -describes the behavior of a model element such as an object or interaction Trigger  condition A to B Trigger  condition B to D Trigger  condition C to A Trigger  condition C to B Trigger  condition B to C start self-transition transition state
Sequence Diagram Shows a number of example objects and the messages that are passed between these objects within the use case Time on the vertical dimension and different objects on the horizontal dimension Also valuable for concurrent processes
Sequence Diagram Initiate request Init servlet new Gdocument(); Connect to the database servlet.setDomaine(); servletgetConnection(); HTTP request on the server TCP/IP port 80 Database call prepareStatement() executeQuerry() Response to the SQL request Database call return Read data getString(); Generate HTML output doc.p(); HTML return return(); Display WEB page Web Client Web Server Database
Activity Diagram A state machine of the procedure itself, the states represent the performance of actions or subactivities and the transitions are triggered by the completion of the actions or subactivities Branch  -  conditional behavior, a single incoming transition and multiple outgoing transitions Merge  -  multiple input transitions and one single output Fork  -  parallel activities, one incoming transition and several outgoing transitions Join  -  multiple input transitions and one single output (*)  Dynamic concurrency Swimlanes  -  for clarity Recommended for:   analyzing a use case, understanding workflow, describing a complicated sequential algorithm, dealing with multithreaded applications
Activity Diagram Present lecture Prepare slides Turn on the projector Tune the projector [found projector] [no projector] Use blackboard Begin lecture Start Fork Join End
Component Diagram Structure of the code Shows various components of the application and their dependencies Component  a physical module of the code Dependencies  how changes to one component may cause other components to change
Component Diagram WML Interface Search Engine Database query
Deployment Diagram Structure of the run time program Physical relationships among software and hardware components Node -  a computational unit - in most cases a hardware device Connection -  communication path over which nodes interact
Deployment Diagram WAP Terminal WML Interface Server Search Engine Database query Component Communication Interface Application Connection Contained object(s) Node

Sw Software Design

  • 1.
  • 2.
    Design Architecture HighLevel Design Module Decomposition Functional/OO Design Document/IEEE Std.1016 SDD Detailed Design Formal Methods UML Overview Graphical Diagrams
  • 3.
    Architectural Design Establishingbasing structural framework of an application - decomposition ( subsystems, modules ), interface specification and communication . subsystems - independent components/modules of an application modules - provide one or more services to other modules Output - Design Document/SDD
  • 4.
    Architecture Design ChoiceAffects: performance, robustness, distributabilty and maintainability and development costs . Application Constraints: Performance localize critical operations Security access control, layered structure Safety costly validation, single component for safety-related operations Availability include redundant components Maintainability self-contained components
  • 5.
    Structure Design RepositoryDesign Client-Server Design Layered Design Control Models Centralized control Hierarchic Design Centralized Design Event Driven Broadcast Interrupt driven
  • 6.
    Repository Design RegistrarStaff Professor Client Admin Client Student Database Professor Database Schedule Class Database Adv : - share large database - integrate tools w/ same data model Drbk : - performance - evolution difficult - forces the same policy on subsystems - difficult to distribute Student Client
  • 7.
    Client/Server Design RegistrarStaff Student Database Professor Database Schedule Class Database Payroll HR Adv : - distributed - scalable Drbks : -naming/registry -diff to anticipate prbls w/ add a srvr -independent data mgmt/recovery Student Client Professor Client
  • 8.
    Layered Design KernelMemory Mgmt I/O - Dev.Drv File Server - GUI Adv : - incremental dev. - portability
  • 9.
    Hierarchic Control Design Adv : - call/return - only for sequential tasks
  • 10.
    Centralized Design Adv: - parallel tasks - RTS System Controller Input Sensor Program Program/Data
  • 11.
    Broadcast Design networkClient A Client B Client C Client D
  • 12.
    Interrupt Design IH2 Proc IH 3 Proc IH 5 Proc IH 4 Proc IH 1 Proc Adv : - fast Drbks : -complex to implement/test/validate
  • 13.
    Design Entities Proceduraldesign Procedures Modular design Modules Object-oriented design Classes Multithreded, multiprocessors, multitasking Threads, tasks, processes
  • 14.
    Compiler: Functional viewLexical analysis Syntax analysis Semantic analysis Build symbol table Code generation input program program symbols symbolic program syntax tree symbol table analyzed program Object code
  • 15.
    Compiler: Object orientedview Source program Syntax tree Symbol table Analyzed program Object code
  • 16.
    Software Design ProcessRequirements Specification Architectural Design Functional Specification Architecture Chart UI Design Module/Algorithm Design UI Specification Database Design Module/Algorithm Specification Database Specification Design Activities API, algorithms database
  • 17.
    Design Methods Informalad hoc Formal requirements Formal specifications Structured Models supported data-flow model - data transfers entity-relation model - basic entities and relations structural model - components and interactions object-oriented model - objects, relationships and interactions, classes/methods
  • 18.
    C++/Java C++ Classes,variables, functions class myclass { int myclassvariable; public: int myclass (int); ~myclass(); void function(int i) } Java Classes, variables, methods public class myclass { int myclassvariable; myclass (int){}; void function(int i){}; }
  • 19.
    Architecture Chart HTMLGUI WML GUI SQL Database Server WAP Terminal Web Terminal JDBC HTML WML Template files ASCII
  • 20.
    Design Document OutlineSoftware program overview broad terms overview, high level discussion of the design alternatives. goals for the architecture, problem addressed. Subprograms and organization chart major clusters of functionality, communication and dependencies. Change scenarios most likely changes in the program and how each change will be addresses. Reuse analysis and buy vs build decisions arguments for what will be build, bought or reused.
  • 21.
    Approach to StandardFunctional Areas External software interfaces ( APIs ) User interface - prototype Database organization - content, type of database Data storage - non database data, file formats, major data structures Key algorithms Memory management String storage - stiles, error messages Concurrency/threads Security - how the design will be affected Localization Networking - multi-user Portability Programming language Error handling
  • 22.
    IEEE Design DescriptionOverview Std. 1016 SDD: Standard Design Description Introduction Decomposition Description Dependency Description Interface Description Detailed Design Description
  • 23.
    SDD Modular DesignMethodology Introduction Purpose Scope Definitions and acronyms References Overview Decomposition Description Module Decomposition Module 1 Description Module 2 Description … Task Decomposition Task 1 Description Task 2 Description …
  • 24.
    SDD Modular DesignMethodology 3. Dependency Description Module dependency Description Task Dependency Description 4. Interface Description Module Interface Description Module 1 Interface Description Module 2 Interface Description … Task Interface Description Task 1 Interface Description Task 2 Interface Description …
  • 25.
    SDD Modular DesignMethodology 5. Detailed Design Description Module Detailed Description Module 1 Detailed Description Module 2 Detailed Description … Task Detailed Description Task 1 Detailed Description Task 2 Detailed Description …
  • 26.
    SDD Object DesignMethodology Introduction Purpose Scope Definitions and acronyms References Overview Decomposition Description Class 1 Description Class 2 Description …
  • 27.
    SDD Object DesignMethodology 3. Dependency Description Object Interaction Description Aggregation Description Inheritance Description 4. Interface Description Class 1 Interface Description Class 2 Interface Description … 5. Detailed Design Description Class 1 Detailed Description Class 2 Detailed Description …
  • 28.
    Detailed Design FormalDesign Approach Formal Design Approach Very Formal Design Approach Informal Design Approach for a subprogram/module/object done by the developer Project difficulty Programmer experience HIGH LOW HIGH LOW
  • 29.
    Formal Methods (theory,logic, algebra). Large % of the software developed use formal methods. Formal specifications Way of discovering specification errors and presenting the application specification in a unambiguous way -fewer errors. Specification analysis and proof Application verification/validation
  • 30.
    Critical Software ApplicationsDevelopment Costs of failure are high - Properties: safety, reliability, security . Have high validation costs. Examples: Air traffic control system ( Hall 1996 ) Railway signaling systems ( Dehbonei and Mejia, 1995 ) Spacecraft systems ( Easterbrook 1998 ) Medical control systems ( Jackey 1997 ) Software tool specification ( Neil 1998 ) IBM’s CICS system ( Wordsworth 1991 )
  • 31.
    UML Overview UMLModeling language for specifying, visualizing, constructing and documenting software programs. Model elements, Notation and Guidelines Motivation communication among project teams tools for automation of software design/validation/production (same as component technology, visual programming) SW Program A set of nearly independent set of graphical diagrams
  • 32.
    UML Graphical DiagramsUse Case Diagram Static Structure Diagrams Class/Object Diagram Behavior Diagrams Interaction Diagrams Sequence diagram Statechart Diagrams Activity Diagrams Implementation Diagrams Component Diagram Deployment Diagram
  • 33.
    Use Case DiagramDisplay the user interaction with the application Provide an external view of the application Basis for testing Use Case Relationships Include - to avoid repetition of use cases Generalization - describe a variation casually Extend - declare extension points in the base case
  • 34.
    Use Case DiagramCheck Grade Register Classes Database Query Authorize Student Input Grades Student Professor Registrar Staff Max Credits <<include>> <<include>> <<include>> <<include>> Include Generalization Use Case
  • 35.
    Class Diagram Describesthe type of objects and the static relationships ( associations and subtypes ) Class attributes, multiplicity, generalization, role, constraints, operations Associations relations between instances of classes, with multiplicity (*, x, x..y | x, y  N) navigability (unidirectional/bi-directional)
  • 36.
    Class Diagram CatalogEntry exam date : Date grade : String passed():Boolean Class subject : String professor : String gradedPNP():String 1 * * 1 If CatalogEntry.Student.isCurrent is “n” then Catalog.Entry.grade must be “N” Multiplicity: mandatory Association Generalization Class Constraint Job 0..1 Multiplicity: optional Attribute Operation Multiplicity: Many-valued Navigability Student name : String address : String ID : Long Integer isCurrent():String Graduate department: String isCurrent():String Undergraduate major: String isCurrent():String
  • 37.
    Object/Class Diagrams Objectdiagram objects allocated at a certain point in time Classification -relation of an object to a type Single classification - single type, subtypes Multiple classification - several types Static classification - separation between types/states Dynamic classification - change type within the subtyping structure
  • 38.
    Object/Class Diagrams Employeename Male Female Developer QA/Test Design Job <<dynamic>> Sex {complete} Discriminator Manager Software: MGMT name = “Name” MGMT * 1 Software PM: MGMT name = “Name” QA Manager: MGMT name = “Name” Software PM: MGMT name = “Name” Engineer: Developer name = “Name” Engineer: Design name = “Name” Engineer: QA/Test name = “Name” Engineer: Developer name = “Name” Object Diagram showing instances of the above class diagram Class Diagram with Multiple and Dynamic Classification Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F Sex: M/F
  • 39.
    Statechart Diagram Allpossible states that a particular object can get into How the object state changes as a result of events that reach the object Enhancements Superstates Concurrent Statechart Diagrams
  • 40.
    Statechart Diagram StateC State B State A State D -describes the behavior of a model element such as an object or interaction Trigger condition A to B Trigger condition B to D Trigger condition C to A Trigger condition C to B Trigger condition B to C start self-transition transition state
  • 41.
    Sequence Diagram Showsa number of example objects and the messages that are passed between these objects within the use case Time on the vertical dimension and different objects on the horizontal dimension Also valuable for concurrent processes
  • 42.
    Sequence Diagram Initiaterequest Init servlet new Gdocument(); Connect to the database servlet.setDomaine(); servletgetConnection(); HTTP request on the server TCP/IP port 80 Database call prepareStatement() executeQuerry() Response to the SQL request Database call return Read data getString(); Generate HTML output doc.p(); HTML return return(); Display WEB page Web Client Web Server Database
  • 43.
    Activity Diagram Astate machine of the procedure itself, the states represent the performance of actions or subactivities and the transitions are triggered by the completion of the actions or subactivities Branch - conditional behavior, a single incoming transition and multiple outgoing transitions Merge - multiple input transitions and one single output Fork - parallel activities, one incoming transition and several outgoing transitions Join - multiple input transitions and one single output (*) Dynamic concurrency Swimlanes - for clarity Recommended for: analyzing a use case, understanding workflow, describing a complicated sequential algorithm, dealing with multithreaded applications
  • 44.
    Activity Diagram Presentlecture Prepare slides Turn on the projector Tune the projector [found projector] [no projector] Use blackboard Begin lecture Start Fork Join End
  • 45.
    Component Diagram Structureof the code Shows various components of the application and their dependencies Component a physical module of the code Dependencies how changes to one component may cause other components to change
  • 46.
    Component Diagram WMLInterface Search Engine Database query
  • 47.
    Deployment Diagram Structureof the run time program Physical relationships among software and hardware components Node - a computational unit - in most cases a hardware device Connection - communication path over which nodes interact
  • 48.
    Deployment Diagram WAPTerminal WML Interface Server Search Engine Database query Component Communication Interface Application Connection Contained object(s) Node