Unit III (SE)
Unit III (SE)
DESIGN ENGINEERING
By
Mr.B.Narsimha Reddy
MTech(CSE),(PhD)
Associate Professor
Dept of CSE
what is software design?
• The process of creating software methods, functions, objects, and the
general structure and interaction of your code such that the resulting
functionality meets the needs of your users is known as software
design.
• Software design is a method that converts user requirements into a
suitable form for the programmer to employ in software coding and
implementation.
• It is concerned with converting
the client's requirements as
defined in the SRS (Software
Requirement Specification)
document into a form that can
be easily implemented using a
programming language.
Objectives of Software Design
• Correctness: Software design should be correct as per requirement.
• Completeness: The design should have all components like data
structures, modules, and external interfaces, etc.
• Efficiency: Resources should be used efficiently by the program.
• Flexibility: Able to modify on changing needs.
• Consistency: There should not be any inconsistency in the design.
• Maintainability: The design should be so simple so that it can be
easily maintainable by other designers.
• Content Covered:
• Software Design Process
• Design Quality Guidelines and Attributes
• Design Concepts
• Design Models
What is the design process?
• The design process is a tool that
helps you break down large
projects into smaller, easier-to
handle stages.
Software Design Process
• 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 is a systematic approach to creating a
blueprint for the software.
• It translates user requirements into a structured design that
developers can implement.
• The goal is reliable, maintainable, and scalable software that meets
objectives.
• 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 (how users interact),
• Architectural Design (system components and their relationships),
• Detailed Design (internal elements, data structures, and algorithms
within components).
Interface Design
• In software engineering,
• architecture design defines
the high-level structure,
components, and interactions of
a software system, acting as a
blueprint for its development
and ensuring it meets functional
and non-functional
requirements.
3. Patterns
• Draw.io
• Jira
• Mockflow
• Sketch
• Marvel
• Zeplin
Design Modeling
in
Software Engineering
• A Design Model in software
engineering is a structured
framework that helps in
translating software
requirements into a blueprint for
implementation.
• It represents different aspects of
the system, including its
architecture, components,
interfaces, and interactions.
• Design modeling in software engineering refers to the process of
creating abstract representations of a software system's structure,
behavior, and interactions to guide the development process.
• It plays a critical role in bridging the gap between system
requirements and implementation.
What is Design Modeling?
1.Data Design:
• Defines how data is organized,
structured, and stored within the
system.
• Data Structures: Choosing
appropriate data structures (e.g.,
arrays, linked lists, trees) for
efficient data handling.
• Data Relationships: Modeling
relationships between different data
entities (e.g., one-to-one, one-to-
many).
2. Architectural Design:
• High-level design: It focuses on the big picture, making decisions about the overall
structure and how different parts of the system will work together.
• Component identification and selection: Determining the necessary components
and their functionalities.
• Interaction patterns: Defining how different parts of the system will communicate
and exchange data.
• Quality attributes: Considerations for things like scalability, performance, security,
and maintainability.
• System organization: Arranging components in a way that facilitates understanding
and collaboration among developers.
• Evolution and future needs: Planning for how the system might evolve and adapt to
future requirements.
Why is software architecture
important?
• Improved system quality: A well-designed architecture leads to a more
robust, maintainable, and scalable system.
• Reduced development costs: A clear architecture can streamline
development, making it easier to build and modify the system.
• Enhanced communication: It provides a shared understanding of the
system's structure for all stakeholders, including developers, project
managers, and clients.
• Facilitates early risk identification: Analyzing the architecture can help
identify potential design flaws and risks early in the development process.
• Supports future development: A well-defined architecture makes it easier
to add new features, integrate with other systems, and adapt to changing
business needs.
Data Design
• Data design in software engineering refers to the process of
organizing and structuring data in a way that supports efficient
software development, data storage, retrieval, and maintenance.
• Structure: Components
communicate via events.
• Example: GUI applications, IoT
systems.
• Advantage: Loose coupling,
asynchronous communication.
Microservices Architecture
• Structure:
• Model: Handles data and business logic
• View: UI layer
• Controller: Handles input and updates
model/view
• Use Case: Web frameworks (Django,
Ruby on Rails, ASP.NET MVC).
Microservices Pattern