Software Engineering
Designing the System
12/16/23 1
Software Engineering
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
Conceptual and Technical Designs
• 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
Conceptual Design
• Concptual design 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
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
Good Design
• Good conceptual 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
Top
level
First level of
decomposition
Second level of
decomposition
Decomposition and Views
• High-level description of system’s key
elements
• Creating a hierarchy of information with
increasing details
* Software Engineering 7
• Popular design methods:
1. Modular decomposition
2. Data-oriented decomposition
3. Event-oriented decomposition
4. Outside-in design
5. Object-oriented design
Popular Design Methods
* Software Engineering 8
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
3. Event oriented Decomposition: 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
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
Architectural Styles and Strategies
• 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
Characteristics of good design
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
Characteristics of good design(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
Characteristics of good design(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

Desining---systems@@@@@@@@@@@@@@.ppt.pdf

  • 1.
    Software Engineering Designing theSystem 12/16/23 1 Software Engineering
  • 2.
    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
  • 8.
    • Popular designmethods: 1. Modular decomposition 2. Data-oriented decomposition 3. Event-oriented decomposition 4. Outside-in design 5. Object-oriented design Popular Design Methods * Software Engineering 8
  • 9.
    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