4. Software Project Analysis and Design
• Requirements analysis evolves an SRS document which
then must be mapped to a software design.
• SRS is for problem whereas software design is for
solution. Whereas SRS states requirements, software
design shows how they may be met.
• A design involves the following abstraction levels:
– Architectural: communicating components making up the
subsystems of the target software system
– High-level: a collection of modules and sub-systems and
the communication between them
– Detailed: For each of the module, this design defines their
logical structure and the interface for interaction. It
facilitates in implementation of the modules.
07.12.2020 Intro Comp SWE 4
5. SAD
• Software design relies on many fundamental
concepts:
– Abstraction,
– Refinement,
– Modularity,
– Software architecture,
– Control & hiearchy,
– (Algorithmic) Structural partitioning,
– Data structure,
– Software procedure,
– Information hiding
07.12.2020 Intro Comp SWE 5
6. SAD continued
Many design considerations are observed in a software design:
• Compatibility,
• Extensibility,
• Testability,
• Fault-tolerance,
• Maintainability,
• Structure,
• Modularity,
• Discreteness,
• Packaging,
• Reliability,
• Reusability,
• Robustness,
• Security,
• Usability,
• Documentation
07.12.2020 Intro Comp SWE 6
7. SAD- Levels of Design
• The design progresses top to down. The top-
level architecture is system architecture. The
software architecture is a detailed extension
of the system architecture. Levels:
1. Software system
2. Division into subsystems or packages
3. Division into classes,
4. Division into routines,
5. Internal routine design.
07.12.2020 Intro Comp SWE 7
9. Software design methodologies
• The design of a software system and its components
follows an orderly sequence of steps. There are a few
basic methodologies:
– Top-down design: from the most general towards the most
specific.
– Bottom-up design: from the most specific towards the
most general/global
– Stepwise refinement: step-bystep from course to fine
detail
– Function-oriented design: devide functions into
manageable-size smaller functional units
– Object-oriented design: considering data and operations
on data.
07.12.2020 Intro Comp SWE 9
10. SAD Tools
• Decision support tools:
– Decision table,
– Decision tree,
– Structured English,
– Programming constructs
• Data structure
• Data dictionary
• Data flow diagram
07.12.2020 Intro Comp SWE 10
11. Data Flow Diagram (DFD)
• Data flow diagram provides a logical model of
the system and shows the flow of data and the
flow of (function/)logic operating on it.
– Follow from the textbook:
• Pp 139 - 144
07.12.2020 Intro Comp SWE 11
12. Readings on SAD
• Short intro/tutorial:
– https://www.wisdomjobs.com/e-
university/software-engineering-tutorial-
338/software-design-basics-25970.html
• From the textbook:
– Case studies: pp 146 - 148
07.12.2020 Intro Comp SWE 12
13. Tools for SAD
- Intro & tools:
- https://www.wisdomjobs.com/e-
university/software-engineering-tutorial-
338/software-analysis-and-design-tools-
25973.html
07.12.2020 Intro Comp SWE 13
14. Terminology - Terimler
• Architectural design
• Abstraction,
• Refinement,
• Modularity,
• Software architecture,
• Control & hiearchy,
• (Algorithmic) Structural
partitioning,
• Data structure,
• Software procedure,
• Information hiding
• Module
• Routine
• Top-down
• Bottom-up
• Stepwise
• Function-oriented
• Object-oriented
• Data flow
• Data dictionary
• Decision support
07.12.2020 Intro Comp SWE 14
16. Homework
• Pick your project management homework
example and develop its data flow diagram.
You may use a drawing program, even MS
Word, to do this homework. You supply me a
print out.
07.12.2020 Intro Comp SWE 16
17. These are FYI!
• The 4 most hated programming languages:
Experts pile on Javascript, C++, and more:
– https://www.techrepublic.com/article/the-4-
most-hated-programming-languages-experts-pile-
on-javascript-c-and-more/
–
07.12.2020 Intro Comp SWE 17