In the GTU degree engineering, Software engineering is such a subject which is used to explore thinking over designing reliable softwares. In this presentation , Design concepts and principles are mentioned and explained in simplified manner.
3. Design :
▪ A meaningful representation of something to be built
▪ It's a process by which requirements are translated into blueprint for constructing
a software
▪ Blueprint gives us the holistic view of a software
SRS
Design
Process
Software
Design
Problem Domain Solution Domain
4. Design Concepts
§ Software process is characterized by basic concepts
§ Using methods concepts are applied
§ Abstracion
§ Architecture
§ Patterns
§ Modularity
§ Information Hiding
§ Stepwise Refinement
§ Refactoring
§ Structural Partitioning
§ Concurrency
5. Abstraction
§ Refers to a powerful design tool
§ A view of a problem
§ Functional Abstraction
§ Use of parameterized subprograms
§ Data Abstraction
§ Specifies data that describes a data object
§ Control Abstraction
§ States the desired effect
6. Architecture
§ Refers to the structure of the system
§ Enables to analyze the software design efficiently
§ Helps in decision-making and handling risks
The software architecture does the following.
§ Provides an insight to all the interested stakeholders that enable them to communicate
with each other
§ Highlights early design decisions, which have great impact on the software
engineering activities that follow the design phase
§ Creates intellectual models of how the system is organized into components and how
these components interact with each other
7. Patterns
§ Provides a description of the solution to a recurring design problem of some specific
domain in such a way that the solution can be used again and again
§ Types of Design Patterns :
1) Architectural : These patterns are high-level strategies that refer to the
overall structure and organization of a software system
2) Design : These patterns are medium-level strategies that are used to solve design
problems
3) Idioms : These patterns are low-level patterns, which are programming -
language specific
8. Modularity
§ Modularity is achieved by dividing the software into uniquely named and addressable
components, which are also known as modules
§ After developing the modules, they are integrated together to meet the software
requirements
§ The larger the number of modules, the greater will be the effort required to integrate
the modules
9. Information Hiding
§ The way of hiding unnecessary details is referred to as information hiding
§ The technique of encapsulating software design decisions in modules in such a way
that the module's interfaces reveal as little as possible about the module's inner
workings; thus each module is a 'black box' to the other modules in the system
§ Advantages associated with information hiding are :
1) Leads to low coupling
2) Emphasizes communication through controlled interfaces
3) Decreases the probability of adverse effects
4) Restricts the effects of changes in one component on others
5) Results in higher quality software
10. Design Principles
1. Software design should correspond to the analysis model
2. Choose the right programming paradigm
3. Software design should be uniform and integrated
4. Software design should be flexible
5. Software design should ensure minimal conceptual errors
6. Software design should be structured to degrade gently
7. Software design should represent correspondence between the software and real-
world problem
8. Software reuse
9. Designing for testability
10. Prototyping