Design Process and Concepts
Design Process and Concepts
Software Design
• Software Design is the process to transform the user requirements
into some suitable form, which helps the programmer in software
coding and implementation.
• During the software design phase, the design document is produced,
based on the customer requirements as documented in the SRS
document.
• The aim of this phase is to transform the SRS document into the
design document.
• The following items are designed and documented during the design
phase:
• Different modules required.
• Control relationships among modules.
• Interface among different modules.
• Data structure among the different modules.
• Algorithms required to implement among the individual modules.
• The software design process can be divided into the following three
levels of phases of design:
1.Interface Design
2.Architectural Design
3.Detailed Design
Interface Design:
• The design problem statement produced during the problem
analysis step should identify the people, other systems, and
devices which are collectively called agents.
• Interface design is the specification of the interaction between a
system and its environment.
• this phase proceeds at a high level of abstraction with respect
to the inner workings of the system i.e., during interface design,
the internal of the systems are completely ignored and the
system is treated as a black box.
• Attention is focused on the dialogue between the target system
and the users, devices, and other systems with which it
interacts.
Interface design should include the following details:
• Precise description of events in the environment, or messages from agents to
which the system must respond.
• Precise description of the events or messages that the system must produce.
• Specification on the data, and the formats of the data coming into and going
out of the system.
• Specification of the ordering and timing relationships between incoming
events or messages, and outgoing events or outputs.
Architectural Design:
• Architectural design is the specification of the major components of a system, their
responsibilities, properties, interfaces, and 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.
• challenges in architectural design includes:
• Gross decomposition of the systems into major components.
• Allocation of functional responsibilities to components.
• Component Interfaces
• Component scaling and performance properties, resource consumption properties, reliability
properties, and so forth.
• Communication and interaction between components.
• The architectural design adds important details ignored during the interface design.
• Design of the internals of the major components is ignored until the last phase of the
design.
Detailed Design
• The specification of the internal elements of all major system
components, their properties, relationships, processing, and often
their algorithms and the data structures.
• 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
• Data packaging and implementation, including issues of scope and visibility of
program elements
• Algorithms and data structures
Software Design Concepts:
• Concepts are defined as a principal idea or invention that
comes into our mind or in thought to understand something.
• The software design concept simply means the idea or
principle behind the design.
• It describes how you plan to solve the problem of designing
software, the logic, or thinking behind how you will design
software.
• It allows the software engineer to create the model of the
system or software or product that is to be developed or built.
• The software design concept provides a supporting and
essential structure or model for developing the right software.
• There are many concepts of software design and some of them
are given below:
Abstraction- hide Irrelevant data
• Abstraction simply means to hide the details to reduce complexity and increases
efficiency or quality.
• Different levels of Abstraction are necessary and must be applied at each stage of
the design process so that any error that is present can be removed to increase the
efficiency of the software solution and to refine the software solution.
• The solution should be described in broad ways that cover a wide range of
different things at a higher level of abstraction and a more detailed description of a
solution of software should be given at the lower level of abstraction.
• At the highest level of abstraction, a solution is stated in broad terms
• At lower levels of abstraction, a more detailed description of the solution is provided.
• Problem-oriented terminology is coupled with implementation-oriented terminology in an
effort to state a solution.
• Finally, at the lowest level of abstraction, the solution is stated in a manner that can be directly
implemented
• Architecture- design a structure of something
• Architecture simply means a technique to design a structure of something.
Architecture in designing software is a concept that focuses on various
elements and the data of the structure.
• These components interact with each other and use the data of the structure
in architecture.
• Refactoring in software design means reconstructing the design to
reduce complexity and simplify it without affecting the behavior or its
functions.
• In software design, information hiding is achieved by designing the
modules in a manner that the information gathered or contained in
one module is hidden and can’t be accessed by any other modules.
• Pattern- a repeated form
The pattern simply means a repeated form or design in which
the same 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 within a certain context.