Software Engineering Unit (4)
Software Engineering Unit (4)
UNIT NO. 04
Basic concept to Software Design
TOPICS TO BE COVERED
❖ Design process
❖ Design fundamentals
❖ Software Design Levels
❖ Architectural Design
❖ Component Level Design (Function Oriented Design Object Oriented
Design)
❖ User Interface Design
❖ Web Application Design
o The software design phase is the first step in the SDLC (Software
Development Life Cycle) that shifts the focus from the problem
domain to the solution domain. In software design, the system is
viewed as a collection of components or modules with clearly
defined behaviours and bounds.
➢ Design Process
o The software design process can be divided into the following three
levels or phases of design:
1. Interface Design
2. Architectural Design
3. Detailed Design
1 - Interface Design
o 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.
o Attention is focused on the dialogue between the target system and the
users, devices, and other systems with which it interacts.
o The design problem statement produced during the problem analysis step
should identify the people, other systems, and devices which are
collectively called agents.
o Specification of the data, and the formats of the data coming into and
going out of the system.
2 - Architectural Design
▪ Deciding what tasks each major part of the system will handle.
o Component Interfaces:
▪ Planning how the major parts of the system will work together
and exchange information.
➢ Design fundamentals
o Abstraction
o Modularity
o Architecture
o Refinement
o Design Patterns
• They cover the problem, the solution, when to apply it, and
potential impacts, guiding developers in implementing
effective solutions efficiently.
o Information/Data Hiding
o Refactoring
o Architectural Design
➢ High-level Design
➢ Detailed Design
⮚ Architectural Design
o This kind of architecture is used when input data is transformed into output
data through a series of computational manipulative components.
o The figure represents pipe-and-filter architecture since it uses both pipe and
filter and it has a set of components called filters connected by lines.
o Pipes are used to transmitting data from one component to the next.
o Each filter will work independently and is designed to take data input of a
certain form and produces data output to the next filter of a specified form.
The filters don’t require any knowledge of the working of neighboring
filters.
o If the data flow degenerates into a single line of transforms, then it is
termed as batch sequential. This structure accepts the batch of data and then
applies a series of sequential components to transform it.
o It is used to create a program that is easy to scale and modify. Many sub-
styles exist within this category. Two of them are explained below.
o The components of a system encapsulate data and the operations that must
be applied to manipulate the data. The coordination and communication
between the components are established via the message passing.
5] Layered architecture
o A number of different layers are defined with each layer performing a well-
defined set of operations. Each layer will do some operations that becomes
closer to machine instruction set progressively.
o At the outer layer, components will receive the user interface operations
and at the inner layers, components will perform the operating system
interfacing (communication and coordination with OS)
o Advantages
▪ Many and easier to customizations options.
▪ Typically capable of more important tasks.
o Disadvantages
▪ Relies heavily on recall rather than recognition.
▪ Navigation is often more difficult.
• GUI Characteristics
o Advantages
▪ The user may switch quickly from one task to another and
can interact with several different applications.
o Disadvantages
• UI Design Principles
• Structure:
• Simplicity: The design should make the simple, common task easy,
communicating clearly and directly in the user's language, and
providing good shortcuts that are meaningfully related to longer
procedures.
• Definition: Explain what Web Application Design is, emphasizing that it is about creating the
look and feel of a website while ensuring usability and interaction. The goal is to make web apps
intuitive and user-friendly
• Key Areas:
o User Interface (UI) Design
o Aesthetic Design
o Content Design
o Architecture Design
o Navigation Design
• Objectives:
o Provide a consistent window into the content and functionality of the web app.
o Guide users through the interactions.
o Organize navigation and available content effectively.
• WebApp Design Quality Requirement: -Design is the engineering activity that leads to a high-
quality product. This leads us to a recurring question that is encountered in all engineering
disciplines
• Purpose: Aesthetic design is responsible for making a web app visually appealing,
complementing the technical functionality.
• Key Concepts:
o Choosing appropriate colors, fonts, and layouts.
o Balancing functionality with aesthetic appeal to enhance user engagement.
• Impact: While a web app might function well, aesthetics draw users in and can make them
feel more connected to the platform.
2. Content Design
• Content Objects: This involves both creating content and structuring it effectively within the
web app.
• Tasks in Content Design:
o Creating and organizing text, images, videos, and other media.
o Ensuring that the content is relevant and accessible.
• Tools: Use content management systems (CMS) and design tools to facilitate the arrangement
and creation of content.
3. Architecture Design
• Definition: Architecture design outlines the structure of the web app, ensuring it meets goals
and objectives. It involves decisions on content presentation, user interactions, and overall
navigation.
• Relation to Interface: Architecture often influences navigation and the user’s ability to
interact with different parts of the web app efficiently.
• Focus Areas: Security, scalability, and performance should also be considered during
architecture design.
4. Navigation Design
• Purpose: This ensures users can efficiently find content and perform actions within the app.
• Best Practices:
o Clear, intuitive navigation menus and buttons.
o Ensuring all pages and sections are easily accessible.
o Navigation pathways should minimize user confusion or frustration.
5. Component-Level Design
• Modern WebApps: Today’s web apps often provide complex features like dynamic content
generation, data processing, and interactions with databases.
• Designing Components: Components should be modular, easy to maintain, and scalable.
Focus on ensuring that each component handles a specific functionality within the web app.
Key Points:
Function-Oriented Approach
Salient Features:
1. Functions as the Core: The system is broken down into a set of functions. Starting from
high-level functions, each is decomposed into sub-functions, which are refined into detailed
procedures.
o For example, in a library system, a high-level function such as create-new-library-
member can be broken down into smaller functions like assign-membership-number,
create-member-record, and print-bill.
2. Centralized System State: The system’s state (e.g., data like membership records) is
typically centralized. Different functions can access and modify this shared state.
o For instance, functions like create-new-member, delete-member, and update-member-
record all operate on the same shared set of member data.
Key Features:
1. Objects as the Core: In OOD, the system is viewed as a set of interacting objects. Each
object represents an entity in the system and manages its own data (state).
o For example, in a library system, each member is represented as an object. This
member object would contain attributes like name, ID, and borrowed books, along
with methods for updating this information.
2. Decentralized State: Instead of having a centralized system state, each object manages its
own state. Objects communicate with each other through message passing (method calls).
o For instance, an Employee object can handle its own data like name, salary, and
position, while another Department object handles department-related data.
3. Classes and Inheritance: Similar objects are grouped into classes, and these classes can
inherit attributes and methods from superclasses.
o For example, both Manager and Staff might inherit from an Employee class.
Example (Library create-new-member, delete-member, Member object manages its own data, with
System) update-member-record methods like updateRecord()