Software Design: Massimo Felici Room 1402, JCMB, KB 0131 650 5899 Mfelici@inf - Ed.ac - Uk
Software Design: Massimo Felici Room 1402, JCMB, KB 0131 650 5899 Mfelici@inf - Ed.ac - Uk
Massimo Felici
Room 1402, JCMB, KB
0131 650 5899
mfelici@inf.ed.ac.uk
Software Design
Software Design: the process of defining the architecture,
components, interfaces and other characteristics of a system or
component. [IEEE standard glossary]
• The Link to Requirements
• Key Design techniques and issues
• Structure and architecture
• the main elements of software that need to be managed
• design in the large and design in the small
• Design notations
• Design quality and evaluation
Design: 1. The process of defining the software architecture,
components, modules, interfaces, and data for a software system to
satisfy specified requirements. 2. The results of the design process.
[IEEE Software]
Software Design: The use of scientific principles, technical
information, and imagination in the definition of a software
system to perform prespecified functions with maximum
economy and efficiency. [IEEE Software]
• Design is a pervasive activity
• often there is no definitive solution
• solutions are highly context dependent
• No “magic bullet” in general
© 2004-2006 SEOC - Lecture Note 04 2
The Link to Requirements
Design links requirements to “implementable
specifications”
Traceability - retaining the link from requirements
to components
• By allocating a particular requirement to a particular
component as we decompose, e.g., in VolBank, we might
require a log
• By decomposing requirements into more refined
requirements on particular components, e.g., a particular
function in VolBank might be realized across several
components
• Some requirements (e.g., usability) are harder to decompose,
e.g., it takes 30 minutes to become competent in using the
system
We might require traceability back from the design
Design activities
Data
System Software Inter face Component Algorithm
structure
architecture specification specification specification specification
specification
[Sommerville, 2004]
Design products
Modeling Components:
• Interface, Types, Semantics, Constraints,
Evolution, Non-functional Properties
Modeling Connectors:
• Interface, Types, Semantics, Constraints,
Evolution, Non-functional Properties
Modeling Configurations:
• Understandable Specifications, Compositionality
(and Conposability), Refinement and Traceability,
Heterogeneity, Scalability, Evolvability, Dynamism,
Constraints, Non-functional Properties
Static Notations:
• Component diagrams
• Class and object diagrams
• Deployment diagrams
• CRC Cards
Dynamic Notations:
• Activity diagrams
• Collaboration diagrams
• Statecharts
• Sequence diagrams
Traceability
• M. Jarke. Requirements Tracing. Communications of the
ACM, Vol. 41, No. 12, December 1998.
• B. Ramesh. Factors Influencing Requirements Traceability
Practice. Communications of the ACM, Vol. 41, No. 12,
December 1998.
Software Design
• Chapter 3 – Software Design - of the SWEBOK for an
overview of the work on design.
• P. Kruchten. Software Design in a Postmodern Era. IEEE
Software 2005.
• M. Fowler. The State of Design. IEEE Software 2005.
• Software Engineering Glossary. Software Design - Part 1,
Part 2 and Part 3. IEEE Software 2004.