0% found this document useful (0 votes)
27 views18 pages

Chapter One - Introduction To Software Design

Uploaded by

eliasferhan2333
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
0% found this document useful (0 votes)
27 views18 pages

Chapter One - Introduction To Software Design

Uploaded by

eliasferhan2333
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1/ 18

Chapter One

Introduction to software design

1
What is software design?

 Software Design is the process of transforming user

requirements into a 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.

2
Cont…

 The following items are designed and documented

during the design phase:


 Different modules are required.

 Control relationships among modules.

 Interface among different modules.

 Data structure among the different modules.

 Algorithms are required to be implemented among

the individual modules.

3
Objective of software design
 Correctness: A good design should be correct i.e., it should correctly implement all the

functionalities of the system.


 Efficiency: A good software design should address the resources, time, and cost optimization

issues.
 Flexibility: A good software design should have the ability to adapt and accommodate

changes easily. It includes designing the software in a way, that allows for modifications,
enhancements, and scalability without requiring significant rework or causing major
disruptions to the existing functionality.
 Understandability: A good design should be easily understandable, it should be modular,

and all the modules are arranged in layers.


 Completeness: The design should have all the components like data structures, modules,

external interfaces, etc.


 Maintainability: A good software design aims to create a system that is easy to understand,

modify, and maintain over time.


4
Software Design Activities
 Software Design is the process of creating the blueprint for the Software

system being build. Generally, there are 3 major activities in Software Design –
 External Design
 Architectural Design
 Detailed Design
 The Architectural design and Detailed design are collectively known as
Internal Design.
 External Design – External design involves conceiving, planning out and
specifying the externally observable characteristics of Software Product
such as User interface, report formats, data sources, functional
characteristics and performance requirements.
5
Cont…
 Internal Design – Internal design involves conceiving, planning out and specifying the

internal structure and processing details of the software product. The goals of internal
design are to specify internal structure and processing details, to record design, to
elaborate the test plan and to provide alternatives, provide the blueprint design for
implementation, specifying using and maintenance activities.

 Architectural Design – Architectural Design involves the refining of the


conceptual view of the system, identifying data entities, attributes, internal
processing flows and their relationships.
 Detailed Design – Detailed design include specifications of
algorithms/activity flows and detailed class diagrams that provide detailed
blueprints for concrete implementation of data models/objects and their
interrelationships.
6
Design considerations
 When designing a piece of software, there are many aspects to be considered. What is

expected from the software will define the importance of each point of consideration.
 Usability: The end-user must be able to easily interact with the UI. Location of UI
elements, colors and default value for parameters are factors to be considered.
 Extensibility: When adding new capabilities to the software, it should be done
without significant changes to the architecture.
 Compatibility: How is the software going to interact with other products. For
example backward-compatibility with an older version of itself
 Modularity: Various components of the software could be implemented and tested
independently.
 Maintainability: How easy is to apply bug fixes and modifications to the software
 Functionality: How well the software can execute the user tasks
 And many more...
7
Design principles
 Software Design is also a process to plan or convert

the software requirements into a step that are needed to


be carried out to develop a software system.
 There are several principles that are used to organize

and arrange the structural components of Software


design.
 Software Designs in which these principles are applied

affect the content and the working process of the


8
Cont…
 Software design principles are concerned with providing means to

handle the complexity of the design process effectively.


 Effectively managing the complexity will not only reduce the

effort needed for design but can also reduce the scope of
introducing errors during design.
Following are the principles of Software Design

9
Problem Partitioning
 divide the problems and conquer the problem it means to divide the problem

into smaller pieces so that each piece can be captured separately.


 For software design, the goal is to divide the problem into manageable

pieces.
 breaking down a complex problem or task into smaller, more manageable

sub-problems or tasks. It is a top-down approach


 Benefits of Problem Partitioning

 Software is easy to understand


 Software becomes simple
 Software is easy to test
 Software is easy to modify
10  Software is easy to maintain
Abstraction
 An abstraction is a tool that enables a designer to consider a component at an

abstract level without bothering about the internal details of the implementation.
 Abstraction can be used for existing element as well as the component being

designed.
 Abstraction is the selection of a set of concepts to represent a complex whole.

 Abstraction is mostly formed by reducing information content of a concept or a

physical phenomenon typically to retain information that is relevant to a particular


purpose
 There are two common abstraction mechanisms

 Functional Abstraction- forms the basis for Function oriented design


approaches.
 Data Abstraction- forms the basis for Object Oriented design approaches.
11
Modularity
 Partitioning a problem in to sub parts (Modules).

 Modularity specifies to the division of software into separate modules which are

differently named and addressed and are integrated later on in to obtain the
completely functional software. It is a bottom-up approach to system design
 Quality attributes:

 Well-defined: Modules are clearly distinguished


 Each module has single specified objectives
 Loosely coupled- It measures the relative function strength of a module.
 Cohesive- It measures the relative interdependence among modules.
 A good design is the one that has low coupling.
 Coupling is measured by the number of relations between the modules.
 That is, the coupling increases as the number of calls between modules
increase or the amount of shared data is large. Thus, it can be said that a
12
design with high coupling will have more errors.
Cont…

 Advantages of Modularity
 It allows large programs to be written by several or different people

 It encourages the creation of commonly used routines to be placed in

the library and used by other programs.


 It simplifies the overlay procedure of loading a large program into

main storage.
 It provides more checkpoints to measure progress.

 It provides a framework for complete testing, more accessible to test

 It produced the well designed and more readable program.

13
Strategy of Design
 To design a system, there are two possible approaches

 Top-down Approach
 Bottom-up Approach
 Top-down Approach: This approach starts with the identification

of the main components and then decomposing them into their


more detailed sub-components.

14
Cont…
 Bottom-up Approach: A bottom-up approach begins with the

lower details and moves towards up the hierarchy, as shown in fig.


This approach is suitable in case of an existing system.

15
1.6. Introduction to User Interface Design
 UI design refers to the visual design of a digital product’s interface.

 It’s the process of creating interfaces (namely apps and websites) with a focus on

look, style, and interactivity.


 A UI designer will design the movement between different screens, and create

the visual elements and their interactive properties that facilitate user interaction.
 While UI design is largely a visual discipline, UI designers work on a vast array

of projects.
 In order to design accessible, user-friendly interfaces, UI designers bring

empathy into every stage of the design process from designing screens, icons,
and interactions, to creating a style guide that ensures consistency and the proper
implementation of a visual language across an entire product.
 In today’s digital world, UI designers are needed across all industries from
16
banking, healthcare, and education to ecommerce, fashion, and travel.
1.6. Introduction to User Interface Design
 What’s the difference between UI design and UX design?

 UX designers enhance user satisfaction by improving the usability

and accessibility of a product,


 while UI designers enhance user satisfaction by making the

product's interface look and feel enjoyable for the user.


 UX designers draw out the map of the product, which UI

designers then flesh it out with visual and interactive touchpoints.


 UX and UI designers often work in tandem to maximize the

responsiveness, efficiency, and accessibility of a website.

17
1.6. Introduction to User Interface Design
 AI tools can help UI designers with preliminary

research, image and text generation, and other shortcuts


to guide their design process.
 However, it’s important to know that AI cannot replace

designers completely. The knowledge a human designer


brings, like user research, visual design, user behavior,
and company preference is still necessary for creating
efficient designs.
18

You might also like