Design: HOW to implement a system Goals: » Satisfy the requirements » Satisfy the customer » Reduce development costs » Provide reliability » Support maintainability » Plan for future modifications Dillon: CSE470: SYSTEM DESIGN 1 Design Issues Architecture User Interface Operations Data Representations Data Types Dillon: CSE470: SYSTEM DESIGN Algorithms 2 Design System design (high level design) » Focus on architecture » Identification of subsystems Object design (lower level design) » Modules and their implementations » Focus on data representations and algorithms Dillon: CSE470: SYSTEM DESIGN 3 System Design Choose high-level strategy for solving problem and building solution Decide how to organize the system into subsystems Identify concurrency / tasks Allocate subsystems to HW and SW components Dillon: CSE470: SYSTEM DESIGN 4 System Design Major conceptual and policy decisions » Approach for management of data stores » Access mechanism for global resources » Software control mechanism Handle boundary conditions Prioritize trade-offs Dillon: CSE470: SYSTEM DESIGN 5 Design Principles Consider alternative approaches » Do pro and con analysis » Delay decisions until superior choice is clear » Isolate decisions so alternative implementations can be evaluated later Avoid unnecessary embellishments But don’t oversimplify Dillon: CSE470: SYSTEM DESIGN 6 Design Principles (cont.) Make design traceable to requirements Use uniform documentation style Reuse existing designs when possible Keep design simple unless performance, maintainability, etc. DEMAND otherwise Dillon: CSE470: SYSTEM DESIGN 7 Design Principles (cont.) Define interfaces between modules carefully Consider how to handle the unexpected Don’t code!! Document decisions Review, review, review . . . Dillon: CSE470: SYSTEM DESIGN 8 System Architecture Overall organization of system into subsystems Decide basic interaction patterns Numerous architectural styles for different applications Architecture provides context for detailed design decisions Dillon: CSE470: SYSTEM DESIGN 9 Subsystem Identification Divide system into a manageable number of components Each major component is a subsystem Subsystem groups components with common properties/function Dillon: CSE470: SYSTEM DESIGN 10 Subsystem Collection of » Classes » Associations » Operations » Events » Constraints Dillon: CSE470: SYSTEM DESIGN Interrelated » Good cohesion Well-defined, small interface with other subsystems » Low coupling Identified by the service it provides 11 Subsystem Discussion Provide services for other subsystems » Group of related functions » Share a common purpose Divide system into components (>20) Subsystems are decomposed . . . » Module is the lowest level of subsystem Dillon: CSE470: SYSTEM DESIGN 12 Subsystem Relationships Client-Server relationship » Client subsystems actively drive the system by requesting services provided by a server subsystem Peer-to-peer relationship » Subsystems interact and communicate to accomplish a common goal Dillon: CSE470: SYSTEM DESIGN 13 Client-Server Relationship Server supplies services for clients » Need not know identity of clients » Need not know interface of clients Client calls server » Client knows interface of server » Server performs some service and returns a result Dillon: CSE470: SYSTEM DESIGN 14 Peer-to-Peer Relationship Subsystems call one another The results of/responses to calls may not be immediately visible Subsystems must know the interfaces of other subsystems More likely to have communication dependencies Dillon: CSE470: SYSTEM DESIGN 15 Strategies for Decompositions Layers: Horizontal decomposition » Open » Closed Partitions: Vertical decomposition System topology: » General decompositions Dillon: CSE470: SYSTEM DESIGN 16 Layered Subsystems Set of “virtual” worlds Each layer is defined in terms of the layer(s) below it » Knowledge is one way: Layer knows about layer(s) below it Objects within layer can be independent Lower layer (server) supplies services for objects (clients) in upper layer(s) Dillon: CSE470: SYSTEM DESIGN 17 Example: Layered architecture Interactive Graphics Application Windows Operations Screen Operations Pixel Operations Device I/O Operations Dillon: CSE470: SYSTEM DESIGN 18 Closed Architectures Each layer is built only in terms of the immediate lower layer Reduces dependencies between layers Facilitates Dillon: CSE470: SYSTEM DESIGN change 19 Open Architectures Layer can use any lower layer Reduces the need to redefine operations at each level More efficient /compact code System is less robust/harder to change Dillon: CSE470: SYSTEM DESIGN 20 Properties of Layered Architectures Top and bottom layers specified by the problem statement » Top layer is the desired system » Bottom layer is defined by available resources (e.g. HW, OS, libraries) Easier to port to other HW/SW platforms Dillon: CSE470: SYSTEM DESIGN 21 Partitioned Architectures Divide system into weakly- coupled subsystems Each provides specific services Vertical decomposition of problem Dillon: CSE470: SYSTEM DESIGN 22 Ex: Partitioned Architecture Operating System Virtual File Process Memory Device System Control Manage- Control ment Dillon: CSE470: SYSTEM DESIGN 23 Typical Application Architecture Application package Window graphics User dialogue control Screen graphics Simulation package Pixel graphics Operating system Computer hardware Dillon: CSE470: SYSTEM DESIGN 24 System Topology Describe information flow » Can use DFD to model flow Some common topologies » Pipeline (batch) » Star topology Dillon: CSE470: SYSTEM DESIGN 25 Ex: Pipeline Topology Compiler: source program Lexical analyzer token stream Semantic analyzer abstract syntax tree Code generator Dillon: CSE470: SYSTEM DESIGN code sequence Code optimizer object code 26 Ex: Star Toplogy Monitoring system: Alarm Sensors sensor status commands, SafeHome data software Control panel Dillon: CSE470: SYSTEM DESIGN display information On/Off signals, alarm type Telephone line number tones 27 Modularity Organize modules according to resources/objects/data types Provide cleanly defined interfaces » operations, methods, procedures, ... Hide implementation details Simplify program understanding Simplify program maintainance Dillon: CSE470: SYSTEM DESIGN 28 Abstraction Control abstraction » structured control statements » exception handling » concurrency constructs Procedural abstraction » procedures and functions Data abstraction » user defined types Dillon: CSE470: SYSTEM DESIGN 29 Abstraction (cont.) Abstract data types » encapsulation of data Abstract objects » subtyping » generalization/inheritance Dillon: CSE470: SYSTEM DESIGN 30 Cohesion Contents of a module should be cohesive Improves maintainability » Easier to understand » Reduces complexity of design » Supports reuse Dillon: CSE470: SYSTEM DESIGN 31 (Weak) Types of cohesiveness Coincidentally cohesive » contiguous lines of code not exceeding a maximum size Logically cohesive » all output routines Temporally cohesive » all initialization routines Dillon: CSE470: SYSTEM DESIGN 32 (Better) Types of cohesiveness Procedurally cohesive » routines called in sequence Communicationally cohesive » work on same chunk of data Functionally cohesive » work on same data abstraction at a consistent level of abstraction Dillon: CSE470: SYSTEM DESIGN 33 Example: Poor Cohesion package Output is procedure DisplayDice( . . .); procedure DisplayBoard( . . .); I/O device Dillon: CSE470: SYSTEM DESIGN Dice Output Board 34 Example: Good Cohesion package Dice is procedure Display ( . . .); procedure Roll( . . .); Dice I/O device Board Dillon: CSE470: SYSTEM DESIGN 35 Coupling Connections between modules Bad coupling » Global variables » Flag parameters » Direct manipulation of data structures by multiple classes Dillon: CSE470: SYSTEM DESIGN 36 Coupling (cont.) Good coupling » Procedure calls » Short argument lists » Objects as parameters Good coupling improves maintainability » Easier to localize errors, modify implementations of an objects, ... Dillon: CSE470: SYSTEM DESIGN 37 Information Hiding Hide decisions likely to change » Data representations, algorithmic details, system dependencies Black box » Input is known » Output is predictable » Mechanism is unknown Improves maintainability Dillon: CSE470: SYSTEM DESIGN 38 Information Hiding Dillon: CSE470: SYSTEM DESIGN 39 Abstract data types Modules (Classes, packages) » Encapsulate data structures and their operations » Good cohesion – implement a single abstraction » Good coupling – pass abstract objects as parameters » Black boxes – hide data representations and algorithms Dillon: CSE470: SYSTEM DESIGN 40 Identifying Concurrency Inherent concurrency » May involve synchronization » Multiple objects receive events at the same time with out interacting » Example: – User may issue commands through control panel at same time that the sensor is sending status information to the SafeHome system Dillon: CSE470: SYSTEM DESIGN 41 Determining Concurrent Tasks Thread of control » Path through state diagram with only one active object at any time Threads of control are implemented as tasks » Interdependent objects » Examine state diagram to identify objects that can be implemented in a task Dillon: CSE470: SYSTEM DESIGN 42 Management of Data Stores Data stores permit separations between subsystems » Internal or external Common types of data stores » Files » Databases Dillon: CSE470: SYSTEM DESIGN 43 File Data Stores When to use a database » Require access to voluminous data at fine levels of detail by multiple users » Access can be efficiently managed with DBMS commands » Application must port across many HW and OS platforms » Store is to be accessed by multiple application programs Dillon: CSE470: SYSTEM DESIGN 44 Database Data Stores Advantages » Infrastructure support » Common interface » Standard access language (SQL) Disadvantages » Performance penalty » Awkward programming language Dillon: CSE470: SYSTEM DESIGN 45 File Data Stores When to use file data stores » Data does not fit structure of DBMS » Voluminous data that is low in information density » “Raw” data » Volatile data – only retained for a short time Dillon: CSE470: SYSTEM DESIGN 46 Global Resources Identify global resources and determine access patterns Examples » physical units (processors, tape drives) » available space (disk, screen, buttons) » logical names (object IDs, filenames) » access to shared data (database, file) Dillon: CSE470: SYSTEM DESIGN 47 Software Control Mechanism How SW will control interactions between objects » Internal control – flow of control within a process » External control – flow of externally-visible events among objects Uniform control style for objects Dillon: CSE470: SYSTEM DESIGN 48 Internal Control Under control of programmer Structured for convenience » efficiency, clarity, reliability, . . . Common types of control flow » Procedure calls » Quasi-concurrent inter-task calls » Concurrent inter-task calls Dillon: CSE470: SYSTEM DESIGN 49 External Control Procedure-driven Event-driven Concurrent Dillon: CSE470: SYSTEM DESIGN systems systems systems 50 Procedure-driven systems Control resides within the program code » procedure issues request, waits for reply, then continues execution System state defined by » program counter, stack of procedure calls, local variables Dillon: CSE470: SYSTEM DESIGN 51 Event-Driven Systems Control resides within a central dispatcher » calls to the dispatcher send output or enable input » dispatcher invokes procedures when events occur (“call back”) » state maintained – using global variables, or – by dispatcher for procedures Dillon: CSE470: SYSTEM DESIGN 52 Concurrent Systems Control resides concurrently in independent tasks Events are implemented as messages between tasks OS schedules tasks for execution Dillon: CSE470: SYSTEM DESIGN 53 Boundary Conditions Initialization » Constants, parameters, global variables, tasks, guardians, class hierarchy Termination » Release external resources, notify other tasks Failure » Clean up and log failure info Dillon: CSE470: SYSTEM DESIGN 54 Identify Trade-off Priorities Establish priorities for choosing between incompatible goals Implement minimal functionality initially and embellish as appropriate Isolate decision points for later evaluation Trade efficiency for simplicity, reliability, . . . Dillon: CSE470: SYSTEM DESIGN 55