SOFTWARE DESIGN
NAME: MAJED ALBADR
ID: 361101757
DR
:.
KHALID NAZIM
DEPARTMENT OF COMPUTER SCIENCE AND INFORMATION
MAJMAAH UNIVERSITY
CONTENT
.
Software Engineering
.
Software Development Processes
.
SOFTWARE DESIGN.
Software Design Levels
.
Software Design process
.
Objectives of Software Design
.
What are the different approaches for Software Design
.
Design principles
.
Software Engineering

What is software Engineering
?

Software engineering is defined as a process of analyzing user
requirements and then designing, building, and testing software
application which will satisfy those requirements
.

Why Software Engineering is Popular
?
Software Development Processes
.
SOFTWARE DESIGN
.

Software design is a process to transform user requirements into
some suitable form, which helps the programmer in software coding
and implementation
.

For assessing user requirements, an SRS (Software Requirement
Specification) document is created whereas for coding and
implementation, there is a need of more specific and detailed
requirements in software terms. The output of this process can
directly be used into implementation in programming languages
.

Software design is the first step in SDLC (Software Design Life Cycle),
which moves the concentration from problem domain to solution
domain. It tries to specify how to fulfill the requirements mentioned
in SRS
.
Software Design Levels
.

Software design yields three levels of results
:

Architectural Design - The architectural design is the highest abstract version of the
system. It identifies the software as a system with many components interacting with
each other. At this level, the designers get the idea of proposed solution domain
.

High-level Design- The high-level design breaks the ‘single entity-multiple
component’ concept of architectural design into less-abstracted view of sub-
systems and modules and depicts their interaction with each other. High-level
design focuses on how the system along with all of its components can be
implemented in forms of modules. It recognizes modular structure of each sub-
system and their relation and interaction among each other
.

Detailed Design- Detailed design deals with the implementation part of what is
seen as a system and its sub-systems in the previous two designs. It is more detailed
towards modules and their implementations. It defines logical structure of each
module and their interfaces to communicate with other modules
.
Software Design process
.
Objectives of Software Design
.
Objectives of Software Design
.

Correctness: Software design should be correct as per requirement
.

Completeness: The design should have all components like data
structures, modules, and external interfaces, etc
.

Efficiency: Resources should be used efficiently by the program
.

Flexibility: Able to modify on changing needs
.

Consistency: There should not be any inconsistency in the design
.

Maintainability: The design should be so simple so that it can be
easily maintainable by other designers
.
What are the different approaches
for Software Design
?

Top Down Design
.

Each system is divided into several sub-systems and components.
Each of the sub-systems is further divided into set of sub-systems and
components. This process of division facilitates in forming of a system
hierarchy structure
.

Bottom-up Design

The design starts with the lowest level components and sub-systems. Y using
these components, the next immediate higher level components and sub-
systems are created or composed. The process is continued till all the
components and sub-systems are composed into a single component and
which is considered as the complete system. The amount of abstraction
grows high as the design moves to more high levels
.
Design principles
.

Abstraction

Modularity, coupling and cohesion

Information hiding

Limit complexity

Hierarchical structure
Abstraction
.
data abstraction: aimed at finding a hierarchy in the data
application-oriented
data structures
simpler data
structure
Modularity
.

structural criteria which tell us something about individual
modules and their interconnections
.
cohesion and coupling
.

cohesion: the glue that keeps a module together

coupling: the strength of the connection between modules
Information hiding
.

each module has a secret

design involves a series of decision: for each such decision, wonder
who needs to know and who can be kept in the dark

information hiding is strongly related to
:

abstraction: if you hide something, the user may abstract from that fact

coupling: the secret decreases coupling between a module and its
environment

cohesion: the secret is what binds the parts of the module together
Complexity
.

measure certain aspects of the software (lines of code, # of if-
statements, depth of nesting, …)

use these numbers as a criterion to assess a design, or to guide the
design

interpretation: higher value  higher complexity  more effort
required (= worse design)

two kinds
:

intra-modular: inside one module

inter-modular: between modules
hierarchy structure
.

Hierarchical architecture views the whole system as a hierarchy
structure, in which the software system is decomposed into logical
modules or subsystems at different levels in the hierarchy. This
approach is typically used in designing system software such as
network protocols and operating systems
.
References
.

https://www.geeksforgeeks.org/software-engineering-software-desi
gn-process
/

https://www.guru99.com/what-is-software-engineering.html

https://
www.synapseindia.com/6-stages-of-software-development-process/1
41

https://
www.tutorialspoint.com/software_engineering/software_design_basi
cs.htm

https://www.javatpoint.com/software-engineering-software-design

https://
iversity/software-engineering-tutorial-33
s-26000.html
ANY QUESTIONS
?
THANK YOU

software Design in software engineering1

  • 1.
    SOFTWARE DESIGN NAME: MAJEDALBADR ID: 361101757 DR :. KHALID NAZIM DEPARTMENT OF COMPUTER SCIENCE AND INFORMATION MAJMAAH UNIVERSITY
  • 2.
    CONTENT . Software Engineering . Software DevelopmentProcesses . SOFTWARE DESIGN. Software Design Levels . Software Design process . Objectives of Software Design . What are the different approaches for Software Design . Design principles .
  • 3.
    Software Engineering  What issoftware Engineering ?  Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements .  Why Software Engineering is Popular ?
  • 4.
  • 5.
    SOFTWARE DESIGN .  Software designis a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation .  For assessing user requirements, an SRS (Software Requirement Specification) document is created whereas for coding and implementation, there is a need of more specific and detailed requirements in software terms. The output of this process can directly be used into implementation in programming languages .  Software design is the first step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domain. It tries to specify how to fulfill the requirements mentioned in SRS .
  • 6.
    Software Design Levels .  Softwaredesign yields three levels of results :  Architectural Design - The architectural design is the highest abstract version of the system. It identifies the software as a system with many components interacting with each other. At this level, the designers get the idea of proposed solution domain .  High-level Design- The high-level design breaks the ‘single entity-multiple component’ concept of architectural design into less-abstracted view of sub- systems and modules and depicts their interaction with each other. High-level design focuses on how the system along with all of its components can be implemented in forms of modules. It recognizes modular structure of each sub- system and their relation and interaction among each other .  Detailed Design- Detailed design deals with the implementation part of what is seen as a system and its sub-systems in the previous two designs. It is more detailed towards modules and their implementations. It defines logical structure of each module and their interfaces to communicate with other modules .
  • 7.
  • 8.
  • 9.
    Objectives of SoftwareDesign .  Correctness: Software design should be correct as per requirement .  Completeness: The design should have all components like data structures, modules, and external interfaces, etc .  Efficiency: Resources should be used efficiently by the program .  Flexibility: Able to modify on changing needs .  Consistency: There should not be any inconsistency in the design .  Maintainability: The design should be so simple so that it can be easily maintainable by other designers .
  • 10.
    What are thedifferent approaches for Software Design ?  Top Down Design .  Each system is divided into several sub-systems and components. Each of the sub-systems is further divided into set of sub-systems and components. This process of division facilitates in forming of a system hierarchy structure .  Bottom-up Design  The design starts with the lowest level components and sub-systems. Y using these components, the next immediate higher level components and sub- systems are created or composed. The process is continued till all the components and sub-systems are composed into a single component and which is considered as the complete system. The amount of abstraction grows high as the design moves to more high levels .
  • 11.
    Design principles .  Abstraction  Modularity, couplingand cohesion  Information hiding  Limit complexity  Hierarchical structure
  • 12.
    Abstraction . data abstraction: aimedat finding a hierarchy in the data application-oriented data structures simpler data structure
  • 13.
    Modularity .  structural criteria whichtell us something about individual modules and their interconnections .
  • 14.
    cohesion and coupling .  cohesion:the glue that keeps a module together  coupling: the strength of the connection between modules
  • 15.
    Information hiding .  each modulehas a secret  design involves a series of decision: for each such decision, wonder who needs to know and who can be kept in the dark  information hiding is strongly related to :  abstraction: if you hide something, the user may abstract from that fact  coupling: the secret decreases coupling between a module and its environment  cohesion: the secret is what binds the parts of the module together
  • 16.
    Complexity .  measure certain aspectsof the software (lines of code, # of if- statements, depth of nesting, …)  use these numbers as a criterion to assess a design, or to guide the design  interpretation: higher value  higher complexity  more effort required (= worse design)  two kinds :  intra-modular: inside one module  inter-modular: between modules
  • 17.
    hierarchy structure .  Hierarchical architectureviews the whole system as a hierarchy structure, in which the software system is decomposed into logical modules or subsystems at different levels in the hierarchy. This approach is typically used in designing system software such as network protocols and operating systems .
  • 18.
  • 19.
  • 20.