Professional Documents
Culture Documents
Design Concepts
Design Concepts
CONCEPTS
AGENDA
▸ SOFTWARE DESIGN (INTRODUCTION) ▸ DESIGN MODELS
concepts,
practices,
3
WHAT IS THE GOAL OF DESIGN
▹ firmness
▹ Commodity
▹ delight
4
Translating the requirements model into the design model
▸ McGlaughlin suggests three characteristics that serve as a
guide for the evaluation of a good design:
6
▸ The design should provide a complete picture of the
software, addressing the data, functional, and behavioral
domains from an implementation perspective.
7
SOFTWARE QUALITY GUIDELINES
8
SOFTWARE QUALITY GUIDELINES
▸ A design should exhibit an architecture that
▸ A design should be modular; that is, the software should be logically partitioned into elements or
subsystems.
▸ A design should contain distinct representations of data, architecture, interfaces, and components.
9
SOFTWARE QUALITY GUIDELINES
▸ A design should lead to data structures that are appropriate for the classes to be
implemented and are drawn from recognizable data patterns
▸ A design should lead to interfaces that reduce the complexity of connections between
components and with the external environment.
10
SOFTWARE QUALITY ATTRIBUTES
11
SOFTWARE QUALITY ATTRIBUTES
▸ Functionality is assessed by evaluating the feature set and capabilities of the program, the
generality of the functions that are delivered, and the security of the overall system.
▸ Reliability is evaluated by measuring the frequency and severity of failure, the accuracy of
output results, the mean-time-to-failure (MTTF), the ability to recover from failure, and the
predictability of the program.
12
SOFTWARE QUALITY ATTRIBUTES
▸ Supportability : This category focuses on the ease of maintenance and support for the software
product. Supportability includes factors such as the availability of technical support, the ease of
installing and updating the software, and the ease of modifying or customizing the software.
13
DESIGN CONCEPTS
14
DESIGN CONCEPTS
▸ ABSTRACTION
▹ Abstraction simply means to hide the details to reduce the complexity & increase efficiency and
quality.
▹ Different levels of abstraction are necessary & must be applied at each stage of design process so
errors that are present can be removed efficiently.
▹ Procedural abstraction
▹ Data abstraction
▸ ARCHITECTURE
▹ It is the structure or organization of program components , the manner in which these components
interact and the structure of data that are used by the components
15
DESIGN CONCEPTS
▸ PATTERN
▹ The pattern simply means a repeated form of design in which the shape is repeated several times to
form a pattern.
▹ The pattern in the design process means the repetition of a solution to a common recurring problem
with a certain context
▸ Modularity
▹ Modularity simply mean to divide the system or project into smaller parts to reduce the complexity of
the system or project.
▹ In the same way , modularity in design means to subdivided a system into smaller parts so that test part
can be created independently & then designing & construction will be easy
16
DESIGN CONCEPTS
▸ Hence always select as medium module based on project cost & complexity
17
DESIGN CONCEPTS
▸ INFORMATION HIDING
▹ Information hiding simply means to hide the information so that it cannot be accessed by unwanted
party.
▸ FUNCTIONAL INDEPENDENT
▹ As a project has multiple functions/methods they all should be independent to each other.
▸ REFINEMENT
▹ Refinement simply means to find impurities if present & increases the quality
▹ Refinement is very necessary to find out any bugs/errors if present optimization is also done here
18
DESIGN CONCEPTS
▸ SEPARATION OF CONCERN
▹ It is a design concept that suggests that any complex problem can be more easily handled if it is
subdivided into pieces that can each be solved and/or optimized independently.
▹ A concern is a feature or behavior that is specified as part of the requirements model for the software
▸ ASPECTS
▹ A crosscutting concern is some characteristic of the system that applies across many different
requirements. 19
DESIGN CONCEPTS
▸ REFACTORING
▹ Refactoring simply mean to reconstruct something in such a way that it does not affect the behavior or
any other features.
▹ Refactoring in software design means to reconstruct the design to reduce complexity & to make it
simple without affecting the behavior or its functions
▸ DESIGN CLASSES
▹ System classes, process class, persistent class, user interface class & business domain classes are
referred as design classes
20
DESIGN CONCEPTS
▸ User interface classes define all abstractions that are necessary for human computer interaction
(HCI)
▸ Process classes implement lower-level business abstractions required to fully manage the
business domain classes.
▸ Persistent classes represent data stores (e.g., a database) that will persist beyond the execution of
the software
▸ System classes implement software management and control functions that enable the system to
operate and communicate within its computing environment and with the outside world.
21
CHARACTERISTICS OF A WELL-FORMED DESIGN
CLASS
▸ Primitiveness
▸ High cohesion
▸ Low coupling
22
DESIGN MODEL
23
DESIGN MODEL
▸ Process dimension indicates the evolution of the design model as design tasks are executed as
part of the software process.
▸ Abstraction dimension represents the level of detail as each element of the analysis model is
transformed into a design equivalent and then refined iteratively
24
DATA DESIGN ELEMENTS
▸ Data design creates a model of data and/or information that is represented at a high level of
abstraction.
▸ The structure of data has always been an important part of software design
▹ Component level
▹ Application level
▹ Business level
25
ARCHITECTURAL DESIGN ELEMENTS
▸ The architecture design for software is the equivalent to the floor plan of a house . The floor
plan depicts the overall layout of the rooms; their size , shape, and relationship to one another;
and the doors and windows that allow movement into and out of the rooms.
▹ Specific requirements
26
INTERFACE DESIGN ELEMENTS
▸ The interface design elements for software depict information flows into and out of the system
and how it is communicated among the components defined as part of the architecture.
▹ Ui
27
COMPONENT LEVEL DESIGN ELEMENTS
▸ The component level design for software fully describes the internal
detail of each software component.
28
COMPONENT DIAGRAM
▸ Component diagrams are used to visualize the organization of system components and
the dependency relationships between them. They provide a high-level view of the
components within a system.
29
COMPONENT DIAGRAM
30
DEPLOYMENT LEVEL DESIGN ELEMENTS
31
DEPLOYMENT DIAGRAM
▸ Deployment diagrams are typically used to visualize the physical hardware and
software of a system.
▸ Deployment diagram helps you to understand how the system will be physically
deployed on the hardware.
32
SUMMARIZE
▸ In this presentation ,
▹ Software design
▹ Quality software’s guidelines
▹ Quality software’s attributes
33
SUMMARIZE
▹ Abstraction ▹ Refactoring
▹ Pattern ▹ Aspects
▹ Information hiding
▹ Functional independent
34
SUMMARIZE
▸ Design model
▹ Data design element
▹ Architecture design element
▹ Interface design element
▹ Component level design element
35
THANK YOU
36