UNIT 3 Design Engineering
UNIT 3 Design Engineering
UNIT 3 Design Engineering
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. 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
Elements of a System:
1. Architecture – This is the conceptual model that defines the structure, behavior,
and views of a system. We can use flowcharts to represent and illustrate the
architecture.
2. Modules – These are components that handle one specific task in a system. A
combination of the modules makes up the system.
3. Components – This provides a particular function or group of related functions.
They are made up of modules.
4. Interfaces – This is the shared boundary across which the components of a
system exchange information and relate.
5. Data – This is the management of the information and data flow.
Interface Design: 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. 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 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 of 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. Issues 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: 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. 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
Each module should have a well-defined purpose, a clear interface, and minimal
dependencies on other modules.
A diagram representing modularity might show the main system as a box with smaller
boxes representing modules, connected by arrows indicating dependencies or interactions.
2. Cohesion:
Cohesion measures how closely related the functionality within a module or component
is.
High cohesion means that the module has a single, well-defined purpose, reducing
complexity and making it easier to understand and maintain.
A diagram could depict cohesion by showing a module with various internal components
tightly connected to a single task.
3. Coupling:
Low coupling indicates that modules are loosely connected and changes in one module
have minimal impact on others.
In a diagram, low coupling can be represented by arrows connecting modules with few
connections.
4. Abstraction:
Diagrams can represent abstraction by using high-level views that hide implementation
details, such as class diagrams showing only class names and their relationships.
5. Reusability:
Reusable design elements enable the same components or modules to be used in multiple
parts of the software or in different projects.
A diagram could depict reusability by showing how common components are used in
different parts of the system.
6. Scalability:
Diagrams might show how the system can be expanded by adding additional components
or modules.
7. Maintainability:
Maintainable designs are easy to understand and modify without introducing errors.
8. Separation of Concerns:
Separation of concerns involves isolating different aspects of the software (e.g., user
interface, business logic, data storage) into distinct modules or layers.
Diagrams might illustrate this by depicting the various layers and how they interact, such
as in an architecture diagram.
Diagrams can demonstrate compliance with design patterns by showing how specific
patterns are used in the system's architecture or code.
Design quality often requires following industry standards and best practices.
Diagrams can highlight the use of standard conventions, interfaces, and protocols in the
system.
Remember that design quality is not a one-time effort but an ongoing consideration
throughout the software development process. Creating diagrams to visualize the design can
be a helpful tool in evaluating and communicating design quality to stakeholders. Different
types of diagrams, such as UML diagrams (e.g., class diagrams, component diagrams, and
sequence diagrams), can be used to represent various aspects of design quality.
1. Architectural Design:
The architecture of a system can be viewed as the overall structure of the system
& the way in which structure provides conceptual integrity of the system. The
architectural design identifies the software as a system with many components
interacting with each other. At this level, the designers get the idea of the
proposed solution domain.
3. Detailed design:
Once the high-level design is complete, a detailed design is undertaken. In
detailed design, each module is examined carefully to design the data structure
and algorithms. The stage outcome is documented in the form of a module
specification document.
Design modeling in software engineering represents the features of the software that helps
engineer to develop it effectively, the architecture, the user interface, and the component level
detail. Design modelling provides a variety of different views of the system like architecture
plan for home or building. Different methods like data-driven, pattern-driven, or object-
oriented methods are used for constructing the design model. All these methods use set of
Data design: It represents the data objects and their interrelationship in an entity-
shows the structure of the data in terms of the tables. It shows three type of
relationship – One to one, one to many, and many to many. In one to one relation, one
entity is connected to another entity. In one many relation, one Entity is connected to
more than one entity. un many to many relations one entity is connected to more than
one entity as well as other entity also connected with first entity using more than one
entity.
of the components and how these components communicate with each other to share
data. It defines the structure and properties of the component that are involved in the
User Interfaces design: It represents how the Software communicates with the user
i.e. the behavior of the system. It refers to the product where user interact with
controls or displays of the product. For example, Military, vehicles, aircraft, audio
equipment, computer peripherals are the areas where user interface design is
This is done to test what works and what does not work as expected. Only after
to share a large amount of data. Components need not be concerned with how data is
managed at a centralized level i.e. components need not worry about issues like
Analysis model represents the information, functions, and behavior of the system. Design
model translates all these things into architecture – a set of subsystems that implement major
functions and a set of component kevel design that are the realization of Analysis classes.
This implies that design model must be traceable to the analysis model.
Software architecture is the skeleton of the system to be built. It affects interfaces, data
structures, behavior, program control flow, the manner in which testing is conducted,
Data design encompasses the manner in which the data objects are realized within the design.
It helps to simplify the program flow, makes the design and implementation of the software
The user interface is the main thing of any software. No matter how good its internal
functions are or how well designed its architecture is but if the user interface is poor and end-
users don’t feel ease to handle the software then it leads to the opinion that the software is
bad.
interface, by messaging, or through global data. As the level of coupling increases, error
propagation also increases, and overall maintainability of the software decreases. Therefore,
The data flow between components decides the processing efficiency, error flow, and design
simplicity. A well-designed interface makes integration easier and tester can validate the
It means that functions delivered by component should be cohesive i.e. it should focus on one
Short Questions
Q4. What are golden rules during the design of the Interface?
Long Questions
Q5. Explain Component level diagram elements & Deployment level deng elements?