Download presentation
Presentation is loading. Please wait.
1
11 Software Design CSCU 411 Software Engineering
2
LEARNING OBJECTIVES To be able to discern desirable properties of a software design To Understand different notions of complexity, at both the module and system level To be aware of some widely-known design Methods To be aware of a global classification scheme for design methods To be aware of guidelines for the design documentation
3
The ‘Programmer's Approach' No Design Phase the 'programmer's approach' to software development. Far too much software is still being developed without a clear design phase. The real The reasons for this 'code first, design later' attitude are many: –We do not want to, or are not allowed to, 'waste our time' on design activities. –We have to, or want to, quickly show something to our customer. –We are judged by the amount of code written per man-month. –We are, or expect to be, pressed for time.
4
Wicked Problem Software design is a 'wicked problem'. The term originated in research into the nature of design in social planning problems –There is no definite formulation of a wicked problem. –Wicked problems have no stopping rule. –Solutions to wicked problems are not true or false. –Every wicked problem is a symptom of another problem.
5
DESIGN CONSIDERATIONS abstraction, modularity, Information hiding, complexity, and system structure
6
Abstraction Procedural Abstraction Data Abstraction OOP Languages (C++, JAVA, ADA Modula-2) –Package –Structure –Module –Class
7
Modularity (cohesion) Coincidental cohesion Logical cohesion Temporal cohesion Procedural cohesion Communicational cohesion Sequential cohesion Functional cohesion
8
Modularity (coupling) Content coupling Common coupling External coupling Control coupling Stamp coupling Data coupling
9
Information Hiding Data Hiding Function Hiding Other –Debug –Logging –Advance Options
10
Complexity How Complex? Size Module attributes Structure Interface Pointers Recursion Dynamic allocation WOW factor
11
System Structure module A contains module B module A follows module B module A delivers data to module B module A uses module B Note Call Graphs
12
System Structure Local and Global Data Flow A local flow from module A to module B exists if : –A invokes B and passes it a parameter, or – B invokes A and A returns a value. A global flow from module A to module B exists if A updates some global data structure and B retrieves from that structure
13
System Structure Complexity M is Modules in a program Complexity (M) = (Fan-In (M) X Fan-Out (M)) 2 Fun(int a) same as Fun(struct *b)
14
DESIGN METHODS Functional Decomposition Data Flow Design (SA/SD) Data Structure Look at Table 11.3
15
Functional Decomposition Top-down design Bottom-up design Both not ideal in real world More often try and refine Layered system
16
Data Flow Design (SA/SD) Data Flow Diagrams (DFD) Structure Charts Structured Analysis Structured Design Using: –External Entities –Processes –Data Flows –Data Stores
17
External Entities Processes Data Flows Data Stores
18
Design Based on Data Structures Structure Diagrams or Jackson Diagrams –Structured text or Structure Diagrams –Schematic Logic (11.13 to 11.23)
19
Selecting a Design Method How to Select a Design Method Problem solving is based on experience –Cost –Maintaining software –Flexibility –It is The prescriptiveness of the design methods differs considerably.
20
Classification of Design Techniques See fig 11.24 The four Quadrants –I Understand the problem –II Transform to implementation –III Represent properties –IV Create implementation units
21
Environmental Factors Familiarity with the problem domain. Designer's experience. Available tools. Overall development philosophy.
22
NOTATIONS THAT SUPPORT THE DESIGN PROCESS Software is far more subject to change. One of the major issues in software design is the hierarchical decomposition of the system. The outcome of the design is the major source of information for the programmer
23
DESIGN DOCUMENTATION People responsible for Creating and using documentation –The project manager –The configuration manager –The designer –The programmer –The unit tester –The integration tester –The maintenance programmer
24
IEEE Standard 1016 Recommended Practice for Software Design Descriptions. (Distinguishes ten attributes) –Identification –Type –Purpose –Function –Subordinates –Dependencies –Interface –Sources –Resources –Processing –Data
25
VERIFICATION AND VALIDATION Same as before
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.