160 likes | 516 Views
Design Overview. Software Design Process Design Document Outline. Agenda. Deliverables Friday, May 30 @ 5 PM - Status Report #3 Please put team # and report # in title of email! Friday, May 30 @ 5 PM Requirements Document Project Plan Team Resources Up Lecture: Design Overview.
E N D
Design Overview Software Design Process Design Document Outline
Agenda • Deliverables • Friday, May 30 @ 5 PM - Status Report #3 • Please put team # and report # in title of email! • Friday, May 30 @ 5 PM • Requirements Document • Project Plan • Team Resources Up • Lecture: Design Overview
Software Design Fundamentals • Good design is not accomplished by chance “The beginning of wisdom for a computer programmer is to recognize the difference between getting a program to work, and getting it right.” [Jackson] • Fundamental concepts provide the framework for “getting it right”
Software Design • General definition of design • “… the process of applying various techniques and principles for the purpose of defining a device, a process, or a system in sufficient detail to permit its physical realization.” • Goal: • To produce a model or representation that will later be built • Engineering or Art?
Software Design Model Functional model Information model Behavioral model Data design Design Architectural design Code Other requirements Integrated & validated software Procedural design Program modules Test
Conceptual vs. Technical Design WHAT HOW CONCEPTUAL TECHNICAL DESIGN DESIGN form System function designers System Customers builders [Pfleeger, 98]
Software Architecture The hierarchical structure of procedural components & the structure of data Transition between analysis and design Combines program and data structure by defining interfaces that allows data to flow throughout the program “Holistic view” of software Standard Architectural Configurations – Architectural Styles Architectural Design “ The primary objective of architectural design is to develop a modular program structure and represent the control relationships between modules.” [Pressman]
Architecture Example: Pipes and filters Filter Pipe [Pfleeger, 98]
Architecture Example: Layering Cryptography File interface Key management Authentication Users [Pfleeger, 98]
Architecture Example Program being interpreted Input Data (program state) Selected Internal instruction Output Simulated interpreter interpretation state engine Selected data [Pfleeger, 98]
Ballot Creation Software Record Ballot Info Create Ballot Architecture Example Ballot Information Ballot Creation Interface Election Official Ballot Ballot Server Vote Repository Ballot Ballot Ballot Ballot Voter
Architectural Views • Conceptual / Logical • Process / Runtime • Module / Code • Physical • Not all systems need all views. Need to describe how views relate, typically through scenarios.
Data Design The primary activity during data design is to select logical representations of data objects identified during the requirements definition and specification phase. The selection process may involve algorithmic analysis of alternative structures in order to determine the most efficient design or may simply involve the use of a set of modules that provide the operations upon some representation of an object. [Wasserman] • Identify the program modules that operate upon the logical data structures • Data design leads to better program structure, effective modularity, & reduced complexity
Procedural Design • After data & program structure have been established, becomes necessary to specify procedural detail without ambiguity • Design Notations • Structured programming • Graphical design notation • Tabular design notation • Program design language (PDL)
Design Document Format off class web page Grading Criteria off web page Looking for a flow from System -> Architecture -> Detail What goes in/out of system at top level? What are major components of system? (architecture) What is design of each component? (Detail)
Common Mistakes • Poor Architecture • No mapping through levels • No Dynamic Models (State/Sequence) • No deployment diagram for distributed systems • Poor/Incorrect UML • Poor UI design • Poor overall design, failure to follow principles/patterns of good design.