1 / 25

Software Design Principles

Software Design Principles. “ Producing the software blueprint”. Lecture Objectives. To understand the importance of design in developing quality software To describe the translation from the requirements analysis model to the design model

rollin
Télécharger la présentation

Software Design Principles

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Design Principles “Producing the software blueprint” TCS2411 Software Engineering

  2. Lecture Objectives • To understand the importance of design in developing quality software • To describe the translation from the requirements analysis model to the design model • To understand the principles that guide proper design of software TCS2411 Software Engineering

  3. Designing A House • If you are asked to design a house… D W W Kitchen Room 2 D WC D Living Room Room 1 D W W TCS2411 Software Engineering

  4. What Is Design? • Explaining the idea/concept of something • Usually with graphical diagrams • With the intention to build from the explanation • The design is a representation of a product or a system with sufficient detail for implementation TCS2411 Software Engineering

  5. The Second Task Problem Analysis Design Models Development Solution Testing TCS2411 Software Engineering

  6. Designing Software • From our understanding of the problem, we start building the software • Translate the analysis model into the design model • Map the information from the analysis model to the design representations - data design, architectural design, interface design, procedural design TCS2411 Software Engineering

  7. Translation Model Entity- Relationship Diagram Process Specification (PSPEC) Data Object Description Procedural design Data Dictionary Data Flow Diagram Interface design State-Transition Diagram Architectural design Control Specification (CSPEC) Data design TCS2411 Software Engineering

  8. Design Principles • Design process should not suffer from “tunnel vision” • The design should be traceable to the analysis model • The design should not reinvent the wheel; Time is short • The design should “minimize intellectual distance” between the software and the problem in the real world TCS2411 Software Engineering

  9. Design Principles (Continued) • The design should exhibit uniformity and integration • The design should be structured to accommodate change • The design should be structured to degrade gently. TCS2411 Software Engineering

  10. Design Principles (Continued) • Design is not coding, coding is not design • The design should be assessed for quality as it is being created, not after the fact • The design should be reviewed to minimize conceptual errors TCS2411 Software Engineering

  11. Design Concepts Fundamental concepts which provide foundation to design correctly: • Abstraction • Refinement • Modularity • Software Architecture • Control Hierarchy • Structural Partitioning • Data Structure • Software Procedure • Information Hiding TCS2411 Software Engineering

  12. Abstraction • Identifying important features for representation • There are many levels of abstraction depending on how detailed the representation is required • Data abstraction - representation of data objects • Procedural abstraction - representation of instructions TCS2411 Software Engineering

  13. Refinement • Stepwise refinement - top-down design strategy by Niklaus Wirth • Starting at the highest level of abstraction, every step of refinement ‘decompose’ instructions into more detailed instructions • Complementary to abstraction TCS2411 Software Engineering

  14. Modularity • Software is divided into separately named and addressable modules • “Divide and conquer” approach - problem is broken into manageable pieces • Solutions for the separate pieces then integrated into the whole system TCS2411 Software Engineering

  15. Divide And Conquer S1 S2 P1 P2 S5 P5 P4 P3 S3 S4 TCS2411 Software Engineering

  16. Software Architecture • Modules can be integrated in many ways to produce the system • Software architecture is the overall structure of the software • The hierarchy of components and how they interact, and the structure of data used by the components • Use of framework models, and possible reuse of architectural patterns TCS2411 Software Engineering

  17. Software Architecture Patterns • Recurring pattern help designers reuse successful designs by basing new designs on prior experience. • A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them. TCS2411 Software Engineering

  18. Why use Design Patterns? • Reuse successful practices. • Not new – recognised that this is something that engineers have done for years. • Improve communication • Step towards a software engineer’s handbook TCS2411 Software Engineering

  19. S1 S1 S2 S2 S4 S5 S3 S3 S4 S5 Examples of Software Architecture Program structure Batch sequential pattern TCS2411 Software Engineering

  20. Control Hierarchy • Hierarchy of modules representing the control relationships • A super-ordinate module controls another module • A subordinate module is controlled by another module • Measures relevant to control hierarchy: depth, width, fan-in, fan-out TCS2411 Software Engineering

  21. Structure Terminology M Fan-out a b c Depth d e f g h Fan-in i Width TCS2411 Software Engineering

  22. Structural Partitioning • Program structure partitioned horizontally and vertically • Horizontal partitioning defines separate branches for each major program function - input, process, output • Vertical partitioning (aka factoring) defines control (decision-making) at the top and work at the bottom TCS2411 Software Engineering

  23. Software Procedure • Processing details of individual modules • Precise specification of processing, including sequence of events, exact decision points, repetitive operations, and data organization/structure • Procedure is layered - subordinate modules must be referenced in processing details TCS2411 Software Engineering

  24. Information Hiding • Information (procedure and data) contained within a module is inaccessible to other modules that have no need for such information • Effective modularity is achieved by independent modules, that communicate only necessary information • Ease of maintenance - testing, modification localized and less likely to propagate TCS2411 Software Engineering

  25. References • “Software Engineering: A Practitioner’s Approach” 5th Ed. by Roger S. Pressman, Mc-Graw-Hill, 2001 • “Software Engineering” by Ian Sommerville, Addison-Wesley, 2001 TCS2411 Software Engineering

More Related