Tremblay -Pons-p191

advertisement
Software Design: An
Overview
Guy Tremblay and Anne Pons
EEL 6883
Software Engineering Vol. 1 Chapter 4
pp.191-208
Presenter: Sorosh Olamaei
1 Introduction




Design as a life cycle activity bonds the
requirements to construction
Process of breaking down the system into
components, defining interfaces and
defining components to a level of detail that
enables their construction
Blueprint of the solution to be implemented
Usually not unique
Scope of the paper
DeMarco’s terminology:
 Decomposition design ( D-design ): mapping of a
system into its component pieces
 Family Pattern design (FP-Design): goal is to
establish exploitable commonalities over a family of
systems
 Not covered: User Interface design, Invention
design (I-design): a conceptualization of a system
to satisfy discovered needs and constraints
2 Software Design
Concepts

Design key concepts: (car example)
– Goals
– Constraints
– Alternatives
– Representations
– Solutions ( to wicked problems: lack of test to
determine when the problem is indeed solved)
2.2 Software Design
Context
Software design is bounded to:
 Requirement analysis
 Construction (coding and unit testing)
 Integration and qualification testing
 Linear or Incremental life cycle models
2.3 Software Design
Process


Software architectural design
Software detailed design
3 Software Structure and
Architecture
Definition of software architecture:
The fundamental organization of a system embodied in its
components, their relationships to each other, and to the
environment, and principles guiding its design and evolution.
Reuse of generic design knowledge:
 Architectural Styles
 Design Patterns
 Product Lines
3.1 Architectural
Structures and Views


Key purpose of software architecture is communication among
stakeholders
Design View:
– A collection of models that represent an aspect of an entire
system.
– Represent a partial aspect of software architecture that shows
specific properties of a software system
– Overall organization of an SDD is composed of a number of
design views each of which contains a subset of the various
attributes describing design entities

View model by IEEE:
– Decomposition, Dependency, Interface , detailed description

4+1 view model by RUP:
– Logical, Implementation, Process ,Deployment ,Use-case
Architectural Structures
and Views

Views can be classified into 3 categories
called Viewtypes:
– Module viewtype
– Component-and-connector viewtype
– Allocation viewtype

Software architecture is a multifaceted
artifact produced by the design process and
composed of a set of relatively independent
and orthogonal views
3.2 Macro/Micro architectural Patterns:
Architectural Styles Versus Design Patterns



A pattern is a common solution to a common problem in a
given context
Goal is to codify and document recurring solutions to typical
problems
Attributes to ensure transferability:
–
–
–
–
–
–
–
–
Pattern name
The context in which the pattern may apply
Example illustrating need
Essence of the general problem
Underlying solution
Implementation guidelines
Related patterns
Advantages and disadvantages
Macro/Micro architectural Patterns:
Architectural Styles Versus Design Patterns

Pattern Classification based on scope and
level of abstraction:
– Architectural Styles
– Design Patterns
– Coding Idioms ( part of software construction not explained in this
paper)
Macro/Micro architectural Patterns: Architectural Styles
Versus Design Patterns


An architectural style expresses a fundamental
structural organization schema for software
systems. It provides a rich set of predefined
subsystems, specifies their responsibilities, and
includes rules and guideline for organizing the
relationship between them
Major Architectural Styles:
–
–
–
–
–

General structure
Distributed systems
Interactive systems
Adaptable systems
Other Styles
Choice depends on quality attributes that must be satisfied.
Heterogeneous styles are possible.
Macro/Micro architectural Patterns: Architectural Styles
Versus Design Patterns
Gamma et al. :
– Creational patterns
– Structural patterns
– Behavioral patterns
Buschmann et al. :
–
–
–
–
–
Structural decomposition patterns
Organization of work patterns
Access control patterns
Management patterns
Communication patterns
3.3 Design of Families of
Systems and Frameworks




Based on software product lines and software components
Software production line : A collection of systems sharing a
managed set of features constructed from a common set of
core software asset
Building a common set of software assets involves identifying
the key commonalities encountered among the various
members of the possible family of product- done through
domain analysis as well as accounting for their possible
variability - done by identifying and defining reusable and
customizable components
In an object-oriented context, a related notion is that of
framework, a partially complete software subsystem that can
be extended by instantiating specific plug-ins or hot spots
4 Software design quality
analysis and evaluation


Software Quality: The totality of features
and characteristics of a software product or
service that bear on its ability to satisfy
stated or implied needs
Properties of Software Quality
–
–
–
–
–
Functionality
Usability
Efficiency
Maintainability
portability
Software design quality
analysis and evaluation

4.1 Design Quality Attributes


Run-time qualities
Development-time qualities
– Impact of architectural choices
– Conceptual integrity which concerns the architecture’s intrinsic
quality : architecture reflects one single set of design ideas
leading to simplicity, consistency and elegance

4.2 Measures (quantitative estimates)
– Depends on selected design approach



Function-oriented (structured) measures
Objected-oriented measures
4.3 Quality Analysis and Evaluation Tools
– Quality attributes are hard to quantify


Software design reviews
Simulation and prototyping
5 Software design notations
and documentation
– Budgen categorization:


Black-box notation : external properties of the
elements of a design model
White-box notation : describing some aspect of the
detailed realization of a design element
– Alternative categorization:


Structural/Static properties
Behavioral/dynamic properties
– 5.1 A selection of Design Notations (UML)





Class and object diagrams
Component diagrams
Deployment diagrams
Structure charts
Structure (Jackson) diagrams
Software design notations
and documentation
– 5.2 Behavioral Descriptions (Dynamic
view)
Activity diagrams
 Interaction diagrams : sequence and
collaboration diagrams

Data flow diagrams
 State transition diagrams and statechart

diagrams

Pseudo code and program design languages
(PDLs)
5.2 Design
Documentation


Coherency of the design documentation
depends on many aspects: stakeholders,
software development methods …
Key practice is selection of an appropriate
set of views which satisfies different
stakeholders needs
– Project manager: detailed allocation views
– Developer: detailed module and component-andconnector views
Design Documentation



View documentation also involves describing
interfaces of the element from that view
A key characteristic of any interface specification :
must be two-way which means what the element
provides and what it requires
Another key idea: design should be presented and
documented in a rational way: the rationale behind
the key decisions should also recorded ex. The
design alternatives that were considered and
rejected should be described
6 Software Design
strategies and methods

6.1 General Strategies and Enabling
Techniques
– Software design strategies can be described in
terms of enabling techniques : independent of
specific software development method





Abstraction
Coupling and cohesion
Divide and conquer
Information hiding and encapsulation
Sufficiency
Software Design
strategies and methods

6.2 Function-oriented (Structured) Design
Divide and conquer approach toward identifying major system
function in a top-down approach.
Structured analysis produces DFDs of the various system functions
together with associated process descriptions, that is,
descriptions of the processing performed by each subtask,
usually using informal Pseudocode.
Entity-relationship diagrams describing the data stores can also be
used.
– Key strategies to help derive a software architecture from a DFD


Transaction analysis: triggers
Transformation analysis : identifying the central transform, structure
chart
– Key concept of structured design are those of coupling and
cohesion: restrict coupling to normal types: data, stamp, control
coupling. Avoid common and contest coupling
Software Design
strategies and methods
– Additional Heuristics to improve the
quality of resulting design
Fan-in/Fan-out: high / low or moderate ( 5-7
max)
 Decision splitting (avoid separating them into
files)
 Balanced systems: top-level modules deal
with logical and abstract data independent of
the implementation format

Software Design
strategies and methods

6.3 Object-oriented Design
– Object based (no inheritance or polymorphism) Vs object
oriented design
– OO design (solution domain) Vs requirement analysis ( problem
domain)
– Class diagrams Vs Integration diagrams (sequence or elaboration
diagrams)
6.4 Data-structured-oriented Design (Jackson Structured
Programming)
– Emphasis is on the data that a program manipulates rather than
the functions it performs
– Motivated by stability in data rather then functions that need to
be performed
– Restricted to the design of data-processing programs using
sequential ( batch-style) files and processes
– Jackson System Development (JSD) : approach similar to OOD to
address more complex interacting processes
My views about the paper



Comprehensive overview which does
not get the reader lost
Gets the reader motivated to read the
following design papers
Lack of references to sources that
expand on topics
Questions !?
Download