DESIGN
CONCEPTS
AGENDA
▸ SOFTWARE DESIGN (INTRODUCTION) ▸ DESIGN MODELS
▸ REQUIREMENTS MODEL INTO THE DESIGN ▹ DATA DESIGN ELEMENTS
MODEL ▹ ARCHITECTURAL DESIGN ELEMENTS
▸ SOFTWARE QUALITY GUIDELINESS ▹ INTERFACE DESIGN ELEMENT
▸ SOFTWARE QUALITY ATTRIBUTES ▹ COMPONENT LEVEL DESIGN ELEMENT
▸ DESIGN CONCEPTS ▸ COMPONENT AND DEPLOYMENT
DIAGRAMS
2
SOFTWARE DESIGN
▸ Software design encompasses ,
the set of principles ,
concepts,
practices,
that lead to the development of a high-quality system or product.
3
WHAT IS THE GOAL OF DESIGN
▸ The goal of design is to produce a model or
representation that exhibits
▹ 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:
▹ The design must implement all of the explicit
requirements contained in the requirements model,
and it must accommodate all of the implicit
requirements desired by stakeholders.
▹ The design must be a readable, understandable
guide for those who generate code and for those who
test and subsequently support the software.
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
▹ 1) has been created using recognizable architectural styles or patterns,
▹ 2) is composed of components that exhibit good design characteristics
▹ 3) can be implemented in an evolutionary fashion , thereby facilitating implementation and
testing.
▸ 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.
▸ A design should be derived using a repeatable method that is driven by information
obtained during software requirements analysis.
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.
▸ Usability is assessed by considering human factors, overall aesthetics, consistency, and
documentation.
▸ 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.
▸ Performance is measured by considering processing speed, response time, resource
consumption, throughput, and efficiency.
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.
▹ Hence designing, coding , testing will be easy , fast & efficient
▸ 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
▹ As requirements analysis occurs, a set of “concerns” is uncovered. These concerns include
“requirements, use cases, features, data structures , quality-of-service issues, variants, intellectual
property boundaries, collaborations, patterns and contracts”.
▹ An aspect is a representation of a crosscutting concern.
▹ 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)
▸ Business domain classes are often refinements of the analysis classes
▸ 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
▸ Complete and sufficient
▸ Primitiveness
▸ High cohesion
▸ Low coupling
22
DESIGN MODEL
23
DESIGN MODEL
▸ The design model can be viewed in two different dimensions.
▸ 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
▸ There are three levels
▹ 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.
▸ The architectural model is derived from three sources:
▹ Information about the application to be built
▹ Specific requirements
▹ Availability of styles & patterns
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.
▸ There are three important elements of interface design:
▹ Ui
▹ External interfaces to other systems, devices, networks, or other producers or consumers of
information
▹ Internal interfaces between various design components
27
COMPONENT LEVEL DESIGN ELEMENTS
▸ The component level design for software fully describes the internal
detail of each software component.
▸ Example : rooms in house
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.
▸ The components can be a software component such as a database or user interface; or
a hardware component such as a circuit, microchip or device; or a business unit such
as supplier, payroll or shipping.
29
COMPONENT DIAGRAM
30
DEPLOYMENT LEVEL DESIGN ELEMENTS
▸ Deployment-level design elements indicate how software functionality and
subsystems will be allocated within the physical computing environment that will
support the software
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
▸ Design concepts ▹ Refinement
▹ Abstraction ▹ Refactoring
▹ Architecture ▹ Separation of concerns
▹ Pattern ▹ Aspects
▹ Modularity ▹ Design classes
▹ 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