What is design
•Design process is the creative process of
transforming the problem into a solution.
• Design product is the description of a solution.
• What is a solution?
– We declare something to be a solution to a problem
if it satisfies all the requirements in the specification
* Software Engineering 2
3.
Conceptual and TechnicalDesigns
• We produce conceptual design that tells the customer exactly what
the system will do. (The What of the solution)
• We produce technical design that allows system builders
(developers) to understand the actual hardware and software
needed to solve the customer’s problem. (The How of the solution)
• Merged the two into one document.
* Software Engineering 3
4.
Conceptual Design
• Concptualdesign tells the customer what the system will
do
• Answers to:
– Where will the data come from?
– What will happen to the data in the system?
– What will the system look like to users?
– What choices will be offered to users?
– What is the timing of events?
– What will the reports and screens look like?
– Describes the system in a language that the customer can
understand, rather than computer jargon
* Software Engineering 4
5.
Conceptual Design Example
•Customer is told that the message is routed from one
place to another
• Network protocol and topology are not specified to
the user
* Software Engineering 5
6.
Good Design
• Goodconceptual design should have the following
– It is written in customer language with no technical jargon
– It describes system functions
– It is independent of implementation
– It is linked to requirements
• Good technical design should have the following
– Tells the programmers what the system will do
– A description of the major hardware components and their
function
– hierarchy and function of software components
– data structures and data flow
* Software Engineering 6
7.
Top
level
First level of
decomposition
Secondlevel of
decomposition
Decomposition and Views
• High-level description of system’s key
elements
• Creating a hierarchy of information with
increasing details
* Software Engineering 7
1. Modular Decomposition:This construction is based
on assigning functions to components. The designer
begins with a high level description of the function
that are to be implemented and builds lower level
explanations of how each components will be
organized and related to other components.
2. Data oriented Decomposition: This design is based
on external data structures. The high level
descriptions depict general data structures and lower
level descriptions provide detail on what data
elements will be involved and how they are related.
Popular Design Methods (Cont.)
* Software Engineering 9
10.
3. Event orientedDecomposition: This design is based
on events that the system must handle and uses
information about how event changes the system
state. The high level description catalogs the various
states and lower level description describe how state
transformation take place.
Popular Design Methods (Cont.)
* Software Engineering 10
11.
Popular Design Methods(Cont.)
4. Outside in Design: This approach based on use inputs
to the system. The high level description lists all possible
inputs a user can make and lower level descriptions
address, what is done with input and what outputs are
produced .
5. Object oriented Design: This design identifies classes
of objects and their interrelationships . at the highest
level each object type is described. At lower levels , the
object attributes and actions are discussed and the design
explains how objects are related to one another.
* Software Engineering 11
12.
Architectural Styles andStrategies
• Three design levels
– Architecture
• Associates system capabilities identified in the requirements specification with
system components that will implement them.
• Describes the interconnection between modules
• Creating system from subsystems
– Code design
• Involves algorithm and data structure
• The component are programming language primitives such as numbers and
characters.
• Composition mechanism such as arrays and files
– Executable design
• Addressing the code design at lower level of detail
• Discussing memory allocation, data format and so on
– good to start from top to bottom
– in reality designs move back and forth
– Designer interact with tester and programmers changing their view of the
system and changing their designs
* Software Engineering 12
13.
Characteristics of gooddesign
1. Component independence
– Coupling refers to the degree of interdependence between
software modules. High coupling means that modules are
closely connected and changes in one module may affect
other modules .
– Cohesion refers to the degree to which elements within a
module work together to fulfill a single, well-defined
purpose. High cohesion means that elements are closely
related and focused on a single purpose
Software Engineering
14.
Characteristics of gooddesign(Cont.)
2. Exception identification and handling
– Design defensively, trying to expect situations that might lead
to system problems
– Exception Include
• failure to provide a service
• providing the wrong service or data
• corrupting data
– Exception Handling
• Retrying, Correct, Report
Software Engineering
15.
Characteristics of gooddesign(Cont.)
3. Fault prevention and tolerance
Fault tolerance is the ability of a system to continue
performing, or at least minimize downtime, even when some
components fail. Examples :
I. Data Storage Systems
II. Network Traffic
III. Distributing Applications in Cloud Computing
Software Engineering