Chapter 4
Chapter 4
Software design
Introduction To Software Design
• Process to transform user requirements into some suitable form.
• Helps the programmer in software coding and implementation.
• For assessing user requirements, an SRS (software requirement specification)
document is created whereas, for coding and implementation, there is a need
for more specific and detailed requirements in software terms.
• The output of this process can directly be used into implementation in
programming languages.
• Software design is the first step in SDLC (software design life cycle), which
moves the concentration from the problem domain to the solution domain.
• It tries to specify how to fulfill the requirements mentioned in srs.
Good software designs
Extension System can be extended with changes in System cannot be extended so easily.
only one place.
Objectives of Software Design
Objectives of Software Design
1. Layered Pattern
2. Client-Server Pattern
3. Repository Architecture
1. Layered Pattern :
• As the name suggests, components(code) in this pattern are
separated into layers of subtasks and they are arranged one above
another.
• Each layer has unique tasks to do and all the layers are independent
of one another.
• One can modify the code inside a layer without affecting others.
• Commonly used pattern for designing the majority of software.
• This layer is also known as ‘N-tier architecture’.
• Basically, this pattern has 4 layers.
1. Layered Pattern
1. Layered Pattern :
• Presentation layer (The user interface layer where we see and enter
data into an application.)
• Business layer (this layer is responsible for executing business logic as
per the request.)
• Application layer (this layer acts as a medium for communication
between the ‘presentation layer’ and ‘data layer’.
• Data layer (this layer has a database for managing data.)
Ideal for:
E-commerce web applications development like Amazon.
2. Client-Server Pattern
Client-server pattern has two major entities.
There are a server and multiple clients.
Here the server has resources(data, files or services) and a client requests the server for a
particular resource.
Then the server processes the request and responds back accordingly.
Examples of software developed in this pattern:
• Email.
• WWW.
• File sharing apps.
• Banking, etc…
So this pattern is suitable for developing the kind of software listed in the examples.
2. Client-Server Pattern
3. Repository Architecture
• Data is stored in a central shared repository.
• Components interact through the repository only.
• Suited to applications whose data is generated by one component
and used by another.
Advantages: - Components are independent/separate. - Changes to
data are automatically available to other components.
• Communication between components may be inefficient
3. Repository Architecture
4.Model-View-Controller (MVC)
• The Model-View-Controller (MVC) is an architectural pattern that
separates an application into three main logical components:
the model, the view, and the controller.
• Each of these components are built to handle specific development
aspects of an application.
• MVC is one of the most frequently used industry-standard web
development framework to create scalable and extensible projects.
Model-View-Controller (MVC)
Model
• The View component is used for all the UI logic of the application.
• For example, the Customer view will include all the UI components
such as text boxes, dropdowns, etc. that the final user interacts with.
Controller
• Controllers act as an interface between Model and View components
to process all the business logic and incoming requests, manipulate
data using the Model component and interact with the Views to
render the final output.
• For example, the Customer controller will handle all the interactions
and inputs from the Customer View and update the database using
the Customer Model.
• The same controller will be used to view the Customer data.
Pipe and Filter architectures
• Minimize actions − Minimize action means steps per screen. The tasks and actions are
streamlined so that they can be done in as few steps as possible. The interface should be
designed keeping in mind to maintain the steps as few as possible for performing any tasks.
• Simplicity − The user interface should not be complex. It should always be designed simple
and elegant.
• Consistent − The user interface should be consistent. The design should be consistent.
Increasing consistency increases the familiarity, and hence increases the usability.
• Proving useful feedback − The user should be provided with feedback for every action. This
keeps the user informed and helps them to know whether some action was successful or not.
• Clarity − Content should provide the user with clarity. There should not be anything which
confuses the user, as it becomes an obstacle for the user in interacting with the product.
Human-Computer interaction
• Cross-disciplinary area that deals with the theory design,
implementation, and evaluation of the ways humans use and interact
with computing devices.
• User interaction means issuing commands and associated data to the
computer system.
• Designer focuses on how the information from the user be provided
to the computer system and how can information from the computer
system is presented to users.
Five basic method of user interactions
• Direct Manipulation
• Menu selection
• Form fill-in
• Command language
• Natural Language
Information Presentation
Information presentation is concerned with presenting system
information to system users
The information may be presented directly (e.g. text in a word
processor) or may be transformed in some way for presentation (e.g. in
some graphical form)
The Model-View-Controller approach is a way of supporting multiple
presentations of data
Information Presentation
Interface evaluation