0% found this document useful (0 votes)
118 views

SDA-Software Design Process

The design phase transforms customer requirements into an implementable form using programming languages. It involves an iterative design process with three levels: architectural design specifies major components and relationships; detailed design specifies internal elements and relationships; construction design deals with routine design elements. Software architecture lays the foundation for subsequent work by evaluating quality concerns. Detailed design builds on architecture by refining components and interfaces. Construction design handles complex software functions requiring additional design. Human-computer interface design optimizes the interaction between humans and computers.

Uploaded by

Mudasser Hussain
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
118 views

SDA-Software Design Process

The design phase transforms customer requirements into an implementable form using programming languages. It involves an iterative design process with three levels: architectural design specifies major components and relationships; detailed design specifies internal elements and relationships; construction design deals with routine design elements. Software architecture lays the foundation for subsequent work by evaluating quality concerns. Detailed design builds on architecture by refining components and interfaces. Construction design handles complex software functions requiring additional design. Human-computer interface design optimizes the interaction between humans and computers.

Uploaded by

Mudasser Hussain
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 34

Software Design & Architecture

Software Design phase and process

Dr. Nargis Fatima


Assistant Professor
Department of Software Engineering
National University of Modern Languages, Islamabad

Spring-2023
Outline
• Design Phase
• Design Process
• Software Architecture
Design Phase

• The design phase of software development deals with


– transforming the customer requirements as
described in the SRS documents into a form
implementable using a programming language.
SOFTWARE DESIGN
PROCESS

4
Design Process
• Software design is an iterative process through which
requirements are translated into a design for
constructing the software.
Design Process
• The software design process can be divided into the
following three levels of phases of design:
1.Architectural Design
2.Detailed Design
3.Construction Design
Design Process –Architectural Design
• is the specification of the major components of a
system, their responsibilities, properties, the
relationships and interactions between them.
• In architectural design,
– the overall structure of the system is chosen, but
the internal details of major components are
ignored.
Design Process –Architectural Design
• It includes
– Gross decomposition of the systems into major
components.
– Allocation of functional responsibilities to
components.
– Component Interfaces
– Communication and interaction between
components.
Design Process –Architectural Design
• Design of the internals of the major components is
ignored until the last phase of the design
Bank Management System
Design Process-Architectural Design
– is represented at a high level of abstraction
• a level that can be directly traced to the specific system
objective and more detailed data, functional, and
behavioral requirements.
Design Process –Architectural Design
• Architecture Design Examples
• From the systems engineering perspective
– architectural designs can provide
• information about the physical deployment of the system,
including subsystems located at different locations, the artifacts
executing in the subsystems, and how the system as a whole
communicates.
• From the configuration management perspective
– architectural designs can provide
• information about the hierarchy of files in the file system and how
these files are interconnected to build and deploy the software
system.
Design Process –Architectural Design
• Architecture Design Examples
• From the software engineering perspective
– different architectural designs can help
• decompose the software and define the major structural components of the system, identify
interfaces between the components, map the requirements to them, and provide overall insight
into the design solution.

• Example architecture design of a city traffic controller system?


Design Process –Architectural Design
• A major benefit of architectural designs is their capacity
– to evaluate high-level concerns from stakeholders that deal
mostly with nonfunctional requirements (e.g., performance,
usability, security).
• For these purposes, architectural designs
– serve as important communication, reasoning, and analysis
tools that support the development and growth of the systems
– Software architecture lays the foundation for all subsequent
work in the software engineering life cycle
Design Process-Detailed Design
• is the specification of the internal elements of all
major system components, their properties,
relationships, processing, and often their algorithms
and the data structures.
Design Process-Detailed Design
• The detailed design step begins after the software
architecture is specified, reviewed, and deemed
sufficiently complete for detailed design to begin
• is the specification of the internal elements of all
major system components, their properties,
relationships, processing, and often their algorithms
and the data structures.
Design Process-Detailed Design
• The detailed design activity builds on the software
architecture to provide white-box design elements of
the ­structure and behavior of the software system
and in many cases is the last major effort before
software construction begins
Design Process-Detailed Design
• Detailed design is the activity that deals with refining the
software architecture to reach a point where the software
design, including architecture and detailed design, is
deemed sufficiently complete for construction to begin.
• Where as the software architecture places a major
emphasis on quality (nonfunctional requirements), the
detailed design activity places a major focus on addressing
functional requirements of the system.
Design Process-Detailed Design
• In object-oriented systems
– the detailed design activity is
• where components are refined into one or more classes,
– interfaces are realized
– relationships between classes are specified
– class functions and variable names are created
– design patterns are identified and applied
– and, if applicable, design tools are configured for code
generation.
Class Diagram
Blood Bank Management system
Design Process-Detailed Design
• Two major tasks of the detailed design activity are
– interface design
– component design.
Design Process-Detailed Design
• interface design
– Interface design refers to the design activity that deals with specification of interfaces
between components in the design
– can be focused on specifying the interfaces used internally within software
components or externally across software components.
– In both cases, interfaces provide a standardized way for specifying how services are
accessed and provided by software components.
– Interface design allows subsystems to be designed independently and in parallel;
therefore, it is typically one of the first tasks performed as part of the detailed design.
– Other forms of interface specify communication between systems, for example,
custom binary or Extensible Markup Language (XML) messaging specifications used
for communication between two or more subsystems through the network.
Design Process-Detailed Design
• Component Design
– During architecture, the software system is decomposed into logical
components
– During detailed design, these logical components are refined and their
interactions are modeled to verify the validity of their structural composition.
– The execution of the detailed design activity requires a shift from the macro
design approach to the micro design approach to further decompose and
refine system components into one or more fine-grained elements, functions,
and data variables required for supporting the internal structure and behavior
of components that meet assigned roles during the software architecture
activity.
Design Process-Detailed Design
• Component Design
– Component design refers to
• modeling the internal structure and behavior of components—which includes the internal
structure of both logical and physical components—identified during the software architecture
phase.
– During this activity, fine-grained components are derived from the architecture, and
their internal structure and behavior are designed.
– Components are not limited to object-oriented systems; therefore, component designs
can be realized in many ways.
– In object-oriented systems, the internal structure of components is typically modeled
using UML through one or more diagrams, including class and sequence diagrams.
– When modeling the internal structure of components, several design principles,
heuristics, and patterns are used to create and evaluate component designs.
Design Process-Detailed Design
• The detailed design may include:
– Decomposition of major system components into
program units.
– Allocation of functional responsibilities to units.
– User interfaces
– Unit states and state changes
– Data and control interaction between units
– Algorithms and data structures
Design Process-Construction Design
• The idea of the detailed design activity is
– to get as close to the solution as possible without
beginning the construction phase.
• In many cases, in object-oriented systems,
– this amounts to identifying classes, their attributes
and functions, and interrelationships with other
classes
Design Process-Construction Design
• In some cases, however, implementing complex
software functions identified during the detailed
design activity requires additional design work to
ensure they work properly and maintain the quality
standards
– In these cases, construction design is necessary.
Design Process-Construction Design
• Construction design is the last design activity
• lowest level design activity deals with routine design
– a sequence of code, intended for the
execution of user programs and input/output
operations
Human–Computer Interface Design
• Optimize the interface between humans and computers.
• Visual designs Role
• Systems that meet functional requirements but that are not usable cannot succeed.
• Parallel execution of activity (architecture or detailed design activities. )
• In some cases, HCI design is considered an architectural task, while in others it is
considered a detailed design task.
• Major design activity that requires careful attention.
• The major concerns of the HCI designs may include the
– evaluation and use of modes, navigation, visual designs, response time and feedback,
and design modalities, such as forms and menu-driven.
• HCI designs influence (System Quality)
• HCI design are essential for usability perspective of the system.
Software Design Documentation (SDD)
• also known as
– software design description (SDD), plays a big role in professional, large-scale, or software-intensive systems.
• SDDs importance is specified by the IEEE (1998, p. iii) as follows:
• ”
– SDDs play a pivotal role in the development and maintenance of software systems.
– During its lifetime, a given design description is used by
• project managers
• quality assurance staff
• configuration managers
• software designers
• programmers
• Testers
• maintainers.
• Each of these users has unique needs, both in terms of required design information and optimal organization of that information.
• Design description must contain all the design information needed by those users.

• * “IEEE Standard for--Systems Design--Software Design Descriptions”


Software Design Documentation (SDD)
• SDD should include
– the necessary information that properly captures
the design of the system.
• The software design documentation activity typically
begins at the
– design phase and continues throughout the
lifetime of the software system
Software Design Management
• Management plays a big role in software engineering projects.
• Griffin (2010, p. 5) defines management as
– A set of activities (including planning and decision making, organizing, leading, and
controlling) directed at an organization’s resources (human, financial, physical, and
information), with the aim of achieving organizational goals in an efficient and effective
manner.
• In the design phase, management refers to
– the set of activities required to efficiently ­create and implement quality design artifacts,
within schedule and budget constraints.
– This definition encompasses a broad set of activities that are particular to specific
organizations.
• However, at the core of every organization’s management activities, quality is a focal point.
The quality of software designs can be assessed in various ways.
Software Design Management
Ways to assess Quality of Design

Management’s perspective Engineering perspective


Cost & Scheduling Design Principles, NFRs

Configuration management’s
perspective
change management processes
(design created, modified, and
improved)
Software Design Management
Ways to assess Quality of Design

• From the management’s perspective,


– quality of software designs can be evaluated in terms of cost and scheduling.
• From the engineering point of view,
– quality in designs can be evaluated using a set of well-known design principles as well as
modeling and evaluating the quality attributes that the software must exhibit, which are
specified via nonfunctional, quality requirements.
• From the configuration management’s perspective,
– design quality can be achieved through change management processes that control how
designs are created, modified, and improved.
• In large-scale software projects,
– software design management is essential to plan, organize, staff, track, and lead the
activities required to carry out successfully the software architecture and detailed design
steps.

You might also like