0% found this document useful (0 votes)
4 views12 pages

Software Design Process and Principles

The document outlines the software design process, emphasizing its role in transforming requirements into a structured solution through collaboration among stakeholders. It discusses key concepts such as design models, qualities of good design, and principles like coupling and cohesion, which are crucial for creating effective software systems. Additionally, it covers user interface design, architectural patterns, and the importance of evaluating and refining designs to ensure usability and functionality.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views12 pages

Software Design Process and Principles

The document outlines the software design process, emphasizing its role in transforming requirements into a structured solution through collaboration among stakeholders. It discusses key concepts such as design models, qualities of good design, and principles like coupling and cohesion, which are crucial for creating effective software systems. Additionally, it covers user interface design, architectural patterns, and the importance of evaluating and refining designs to ensure usability and functionality.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

4.

1 DESIGN PROCESS AND QUALITY

(Source: [Link])

SQ. What is Design? (3 Marks)

* Once the requirements document regarding the software to be


developed is presented, the phase of software design gets started.

* The requirement specification activity is considered purely related with


the problem domain whereas design is considered as the initial phase of
transforming the problem into a solution.

* In the design phase, all the relevant entities such as the customer,
business requirements and technical considerations collaborate to
formulate a product or a system.

* In design processes, there are several elements, such as set of


principles, concepts and practices, which help a software engineer to
model the system or product which is to be built.

* The design model is assessed for quality and reviewed before


generation of code and execution of tests.

* The design model gives detailed information regarding software data


structures, architecture, interfaces and components which are necessary
to employ the system.

Basic of Software Design

* Software design is considered as a phase in software engineering which


develops a blueprint that will be a base for constructing the software
system.

* IEEE defines software design as 'both a process of defining the


architecture, components, interfaces, and other characteristics of a
system or component and the result of that process.' In the design phase,
important and strategic decisions are made to get the expected
functionality and quality of the system.

* These decisions are considered to successfully develop the software and


handle its maintenance in a way that the quality of the end product will be
improved. Software design encompasses the set of principles, concepts,
and practices that lead to the development of a high-quality system or
product.

* Design concepts must be understood before the design practices are


applied.
* Design practice itself leads to the creation of various representations of
the software.

* Design Practices serve as a guide for the construction activity that


follows.

* The design model provides details about software data structures,


architecture, interfaces, and components that are necessary to implement
the system.

* Keith Kapur, the creator of Lotus 1-2-3, presented a "software design


manifesto" in Dr. Dobbs Journal. He said a good software design should
exhibit:

* Firmness: A program should not have any bugs that inhibit its function.

* Commodity: A program should be suitable for the purposes for which it


was intended.

* Delight: The experience of using the program should be pleasurable


one.

4.1.1 Design Model

Software design model consists of 4 designs:

* Data/Class design

* Architectural design

* Interface design

* Component design

4.2 QUALITIES OF GOOD DESIGN

(Source: [Link])

GQ. Write a report of good software design (5 Marks)

There are a number of qualities of good design:

* Innovative

* Innovative design can be completely new design or design that only


includes minor innovations.

* Good Design

* A good design fulfills all its intended functions to solve the problem.

* Good design focuses on excellence of product by optimizing all


characteristics.
* Focused

* A good design focuses on one core domain represents all functions.

* User's view with regards to design: Firmness, Commodity and Delight.

* User-oriented

* Good design is based on the user's needs and involves the study of the
user's expectations and requirements.

* Correctness

* Correctness is an important quality of good design; good design should


correctly achieve all required functionalities for the SRS document.

4.2.1 (F) The Golden Rules

(Source: [Link])

GQ: Write short note on Golden Rules of interface Design. (5 Marks)

The following rules are known as the golden rules for GUI design:

1. Strive for Consistency

* Consistency is the most important attribute. All applications should


behave consistently.

2. Visibility of System Status or Offer Informative Feedback

* The user should always know what the system is doing.

3. Keep the Interface Simple and Clear

* It is helpful to follow a design hierarchy in which the most important


elements are placed at the top and left.

4. User Control and Freedom or Prevent Errors

* The design must follow the "undo/redo" feature, allowing users to


reverse actions.

5. Error Prevention and Simple Error Handling

* Error messages should be clear and understandable.

6. Reduce short-term memory load or Recognition rather than recall

* Recognition is easier than remembering. Reduce the user's memory


load by making objects, actions, and options available.

7. Enable frequent users to use shortcuts

* Allow users to tailor (manipulate and personalize) frequent actions.


8. Aesthetic and Minimalist design

* Minimalist doesn't mean limited. All information should be valuable and


relevant.

9. Help users recognize, diagnose, and recover from errors

* Error messages should be expressed in plain language and


constructively suggest a solution.

10. Help and Documentation

* Provide help and documentation.

4.3 DESIGN PRINCIPLES

(Source: [Link])

SQ. What are Design Principles?

Following are the important design principles:

* The design process must be traceable to the business case.

* The design process must be based on a few basic ideas.

4.4 COUPLING AND COHESION

(Source: [Link], [Link])

4.4.3 Cohesion

* Cohesion refers to the degree to which the elements within a module or


component are related to each other.

* It is a measure of the relative functional strength of a module.

* Cohesion helps to measure the interdependence between modules.

4.4.3 A. Types of Cohesion (4 Marks)

* (i) Coincidental cohesion: An unplanned, random inclusion of processing


elements into a single module. (Worst type of cohesion)

* (ii) Logical cohesion: When logically similar activities or elements belong


to the same category.

* (iii) Temporal cohesion: When all elements of a module contribute to an


operation that must occur at a single time.

* (iv) Procedural cohesion: When the elements are grouped together


because they are involved in a sequence of steps.
* (v) Communicational cohesion: When the elements are grouped
together because they operate on the same input data or contribute to
the same output data.

* (vi) Sequential cohesion: When the output of one element serves as the
input for the next element in the sequence.

* (vii) Functional cohesion: When all the elements of the module


contribute to the execution of a single well-defined function. (Best type of
cohesion)

4.4.3 D. Advantages of Cohesion

* (i) High cohesion makes the module highly readable and


understandable.

* (ii) High cohesion ensures better program design.

* (iii) High cohesion components are easily reused.

* (iv) High cohesion components are more reliable.

4.4.3 E. Disadvantages of Cohesion

* (i) Low cohesion complicates the maintenance.

* (ii) Low cohesion components are difficult to understand.

* (iii) Low cohesion components are difficult to reuse.

* (iv) Low cohesion components are unreliable.

4.4.4 Coupling

GQ: What do you mean by the term coupling? The context of software
design? How is this concept useful in arriving at a good design of software
(12 Marks)

* Coupling is a measure of the degree of interdependence between


various components of a system.

* It is an indicator of strength of interconnections between two


components of a system.

* Ideally, software components are designed with low coupling (loose


connection) and high cohesion (strong focus on a single function).

4.4.4 A. Types of Coupling (5 Marks)

* Data coupling: Data coupling occurs between two components of a


system when data is passed by arguments.
* Stamp coupling: Occurs when two components of system pass a data
structure.

* Control coupling: One component dictates the sequence of control or


flow of execution for another.

* External coupling: Communication between a component and an


external tool or device.

* Common coupling: Two or more components communicate by sharing a


common global data structure.

* Content coupling: One component directly modifies or accesses the


internal data, memory, or logic of another component. (Worst type of
coupling)

4.4.4 D. Difference between Coupling and Cohesion

(Source: [Link])

| Feature | Coupling | Cohesion |

|---|---|---|

| Definition | Coupling indicates the interdependence between two or more


system modules. | Cohesion indicates the functional strength of a module.
|

| Represents | It is a degree up to which one module depends on another


module. | It is a degree up to which all elements within a module work
together to achieve one single task. |

| Goal/Ideal | High coupling is a poor system design. | High cohesion is a


good system design. |

Table in Normal Text Form:

* Feature: Definition

* Coupling: Coupling indicates the interdependence between two or


more system modules.

* Cohesion: Cohesion indicates the functional strength of a module.

* Feature: Represents

* Coupling: It is a degree up to which one module depends on another


module.

* Cohesion: It is a degree up to which all elements within a module work


together to achieve one single task.

* Feature: Goal/Ideal
* Coupling: High coupling is a poor system design.

* Cohesion: High cohesion is a good system design.

4.4.4 D. Advantages of High Cohesion and Low Coupling (3 Marks)

(Source: [Link])

* Cohesion: High cohesion means components perform one well-defined


function.

* Benefits: 1. Maintainability: Changes are confined to a single


component or module. 2. Reusability: Components are focused and easier
to reuse. 3. Understandability: Components are simpler and easier to
grasp.

* Coupling: Low coupling means components are relatively independent.

* Benefits: 1. Modularity: Modules can be developed and tested


independently. 2. Reliability: A change in one module is less likely to affect
others. 3. Flexibility/Extensibility: The system can be easily extended by
adding new components.

4.5 PATTERN BASED SOFTWARE DESIGN

(Source: [Link])

I. What are Patterns?

* It is proven necessary: Patterns capture solutions with a track record of


success.

* It is for the solution of a problem: Patterns apply a proven structure to


resolve a recurring problem in a specific context.

* It describes a relationship: Patterns describe interplay between


structures and interactions.

II. Types of Patterns

* Architectural Design

* Component level Design

* User Interface Patterns

* System Level Patterns

* Behavioral Patterns

* Structural Patterns

* Quality Patterns
* Design Patterns (GoF)

4.6 ARCHITECTURAL DESIGN

(Source: [Link], [Link], IMG-


[Link])

SQ. What is Architectural Design? (5 Marks)

* Architectural design is the process of defining an architectural blueprint


for a software system that outlines its structure, components, and their
relationships.

* IEEE describes an architecture as: The fundamental organization of a


system embodied in its components, their relationships to each other and
to the environment, and the principles governing its design and evolution.

4.6.1 Advantages of Modularity

(Source: [Link])

* Abstraction and understanding are greatly improved.

* Modifiability is very easy.

* According to the functional aspects, the program can be divided.

* Concurrency allows multiple threads of execution to be carried out in


the program.

* Components with high cohesion can be reused again.

* Security can be achieved.

* Maintainability and reliability are improved.

4.6.2 Functional Independence

(Source: [Link])

GQ. Write a note on Functional Independence (5 Marks)

* Functional independence is achieved as a direct outcome of the


modularity principle and the concept of abstraction as well as functional
decomposition.

* Functional independence is measured by the two principles: Modularity


and coupling.

* The two qualitative criteria for functional independence are cohesion


and coupling.

4.6.4 Architectural Patterns / Styles (5 Marks)


* An architectural pattern (or style) describes the static and dynamic
structure of a system and provides a set of design rules.

1. Data-flow architecture

* The system is composed of several independent components called


filters that transform the data and pass it to the next filter through a pipe.

2. Object-oriented architecture

* Views the components of a system as objects that encapsulate both


data and operations.

* The objects interact with each other through messages or method


invocations.

3. Layered architecture

* Every layer is responsible for performing a well-defined set of


operations.

* Each layer offers a set of services to the layer above and uses services
from the layer below.

* Example: OSI/ISO Open Systems Interconnection (OSI) Reference Model.

4. Data-centered architectural style (5 Marks)

* A central data structure (like a shared database) is used to store and


manage data.

* Other components, called clients, interact with the central data


structure to access and update the data.

5. Call and Return Architecture

* Consists of programs divided into a main program and a set of


subprograms.

4.7 MODELING COMPONENT LEVEL DESIGN

(Source: [Link])

GQ. Write a note on Component Level Design (5 Marks)

* The main function is to define data structures, algorithms, interface


characteristics as well as communication characteristics for all the
software components to be represented as an architectural structure.

* A component is a modular, deployable, and replaceable part of a


system that encapsulates its implementation and exposes a set of
interfaces.
4.7.1 Application Architectures

GQ. Write a note on Application Architectures

* An application architecture provides a blueprint for the system's design.

* It illustrates how the system will meet organizational needs.

* Application types:

* Data processing application: Processes data in batches without explicit


user intervention.

* Transaction processing application: Processes user requests and


displays information in a system database.

* Event processing system: Applications where system actions depend


on an event-driven structure.

* Language processing system: Applications where the core functions


are specified in a formal language.

4.8 USER INTERFACE DESIGN

(Source: [Link])

SQ. What is User Interface Design? (5 Marks)

* The user interface (UI) is the part of a software application that the end-
user interacts with.

* A well-designed user interface improves the usability, efficiency, and


appeal of the software.

* UI design involves creating a system that is easy to use, intuitive, and


aesthetically pleasing.

4.8.1 User Interface Types

UI is broadly divided into two categories:

* Command Line Interface (CLI)

* Graphical User Interface (GUI)

1. Command Line Interface (CLI)

* CLI is considered as the oldest choice of technical communicators to


interact with computers.

* The interaction follows: Querying to use: Always, User's background:


Needs to be an expert user, Visuals: Graphics not supported.

2. Graphical User Interface (GUI)


* Graphical User Interface offers graphical interfaces to the user for
interacting with the software.

* It is the best choice of advanced technology.

4.8.2.A (B) Application Specific GUI Components

(Source: [Link])

* Application Window: Most of the application windows use the constructs


provided by underlying OS.

* Dialog Box: A dialog box is a child window which has message for the
user.

* Menu: Used to display a set of related options to the user.

* Button: Used to perform a function when clicked.

* Radio-button: Only a single radio button can be selected among all


offered.

* List-box: Multiple items can be selected.

* Check-box: Provides a list of available items.

4.8.4 Design Evaluation

(Source: [Link])

GQ. Write short note on Design Evaluation. (5 Marks)

* After generation of an operational user interface prototype, it is


important to evaluate it to determine whether it fulfills the requirements
of the user.

* Evaluation can span a formality spectrum which ranges from an


informal "test drive" to a formal study.

* Evaluation criteria during early design reviews:

* The length and complexity of the written specification...

* The number of user tasks specified and the average number of actions
per task...

* The number of actions, tasks, and system states indicated by the


design model...

* Interface style, help facilities, and error handling protocol provide a


general indication of the complexity of the interface...

4.9 REFACTORING
(Source: [Link])

4.9.3 Refactoring

Q. 3.3.6 What do you mean by refactoring? (2 Marks)

* Refactoring is "the process of changing a software system in such a way


that it does not alter the external behavior of the code yet improves its
internal structure," according to Martin Fowler, the "father" of refactoring.

* The result is to make the code more efficient, scalable, maintainable, or


reusable, without actually changing any functions of the program itself.

Give the importance of refactoring in improving quality of service. (3


Marks)

* Refactoring improves objective attributes of code (length, duplication,


coupling and cohesion, cyclomatic complexity) that correlate with ease of
maintenance.

* Refactoring helps code understanding.

* Refactoring encourages each developer to think about and understand


design decisions.

* Refactoring favours the emergence of reusable design elements (such


as design patterns) and code modules.

You might also like