0% found this document useful (0 votes)
45 views22 pages

Dr. Raj Singh

Software design is the process of implementing software solutions to problems by creating specifications and solutions using primitive components while considering constraints. It involves converting requirements analysis into specifications for development. The main outputs are specifications like flowcharts and UML diagrams. Design focuses on providing an overall solution to the problem by breaking it into smaller sub-problems analyzed separately. Considerations in software design include compatibility, extensibility, fault-tolerance, maintainability, modularity, reliability, reusability, robustness, security, usability, performance and scalability. Software models like UML are used to represent and develop object-oriented design. Requirements can change over time due to changing user needs, flaws discovered, and changes in environment, resources or

Uploaded by

Ali Ozdemir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views22 pages

Dr. Raj Singh

Software design is the process of implementing software solutions to problems by creating specifications and solutions using primitive components while considering constraints. It involves converting requirements analysis into specifications for development. The main outputs are specifications like flowcharts and UML diagrams. Design focuses on providing an overall solution to the problem by breaking it into smaller sub-problems analyzed separately. Considerations in software design include compatibility, extensibility, fault-tolerance, maintainability, modularity, reliability, reusability, robustness, security, usability, performance and scalability. Software models like UML are used to represent and develop object-oriented design. Requirements can change over time due to changing user needs, flaws discovered, and changes in environment, resources or

Uploaded by

Ali Ozdemir
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 22

Dr.

Raj Singh
What is Software Design concepts Design Software Software
design? considerations Modeling development
challenges

2
A process of implementing software
solutions to one or more set of problems.

A process by which an agent creates a


specification of a software artifact
intended to accomplish goals using a set
of primitive components and subject to
constraints.

Software design can be considered as


creating a solution to a problem in hand
with available capabilities.

3
A process of converting the software requirements analysis (SRA) to list of
specifications used for software development to solve problem/s.

flow chart
Specifications could be as simple as UML diagram

The main difference between software analysis and design is that the
output of a software analysis consist of smaller problems to solve.

4
Similar action but different output

Design is focused on solution to the problem as whole


that may consist sub-problems.

Analysis consist of smaller (sub) problems to solve.

Analysis must be same to the multiple designs to the


same problem.

Design may be platform-independent or platform-


specific, depending on the availability of the technology
used for the design.

5
The design concepts are a foundation from which more sophisticated
methods can be applied.

A set of concepts has evolved.

A process or result of generalization by reducing the information


Abstraction content.
Retain only information which is relevant for a particular purpose.

More specific to a certain process.


Refinement Abstraction and Refinement are complementary concepts.

6
Modularity Software Architecture
Software architecture is divided into Overall structure of the software.
components called modules. A good architecture will yield to good
quality product.
Effectiveness is measured in terms of
performance, quality, schedule and cost.

7
Hierarchy Structural Partitioning
A program structure that represents the The program structure can be divided both
organization of a program component. horizontally and vertically.
Horizontal partitions define separate
branches of modular hierarchy.
Vertical partitioning suggests that control
and work should be distributed top down.
8
Data Structure Software Procedure Information Hiding
It is a representation of the It focuses on the processing of Hide the implementation
logical relationship among each modules individually details.
individual elements of data.

9
There are many aspects to consider in the design of a piece of software
based on the goals the software. Some of these aspects are:

Compatibility The software is able to operate with other products.

New capabilities can be added to the software without


Extensibility major changes to the underlying architecture.

The software is resistant to and able to recover from


Fault-tolerance component failure.

10
A measure of how easily bug fixes or functional
modifications can be accomplished. High
Maintainability maintainability can be the product of
modularity and extensibility.

Smaller modules for each individual task.


Modularity Easy to test, debug, reuse, and maintain.

The software is able to perform a required


Reliability function under stated conditions for a specified
period of time.

11
It can be reused in other application
Reusability and can be extended easily.

The software is able to operate under


Robustness stress or tolerate unpredictable or
invalid input.

The software is able to withstand


Security hostile acts and influences.

12
User friendly and self explanatory.
Usability Default values for the parameters.

The software performs its tasks within


Performance a user-acceptable time.

The software adapts well to increasing


Scalability data or number of users.

13
Software models are used to represent software design.

Textual or graphical languages are used to express


the software design.

For object-oriented software, an object modeling language such as


UML is used to develop and express the software design.

Defined by a consistent set of rules.


14
Most commonly used software modeling language is UML.

Unified Modeling Language (UML) is a general modeling language


to describe software both structurally and behaviorally.

A standard language for specifying, visualizing, constructing, and


documenting the artifacts of software systems.

15
Software is

• Used for a long time


• Updated and maintained by people who did not write it

Software requirements specification

• Initially may be incomplete


• Clarified through extensive interaction between user(s) and system analyst(s)
• Needed at the beginning of any software project
• Designers and users should both approve it

16
Requirements change
• Users needs and expectations change over the time
• Software use reveals limitations and flaws
• Desire for increased convenience, functionality
• Desire for increased performance

Environment change
• Hardware, OS, software packages (“software rot”)
• Need to interact with clients, parent org., etc.
• Law and regulations change
• Ways of doing business
• Style, “cool” factor, new trends

17
Resources Organizational changes Technology constraints
Time, budget, expertise People, goals, mergers and Operating system, software
acquisitions language, framework, database,
security, ever changing
technology, innovations

18
You write code based on what you know

When was the last time you had to change the


design?

What happened after you changed it?

Does your code turn into a loose cannon


towards the

deadline?

19
Change is inevitable

No surprises

Feedback is critical

Frequent feedback is necessary

You want to know right away if you broke the


code, isn’t it?

Test to break it, break to test it.

20
A good design leads to a good product.

In Engineering Construction is expensive, Design


is relatively Cheap

In Software Development Construction is Cheap


and design (which involves modeling and coding)
is expensive

Can’t we quickly test our design (since


construction is cheap)?

Testing is the Engineering Rigor in Software


Development

21
Review class notes. Research software Start a discussion on Google
development methodologies Groups to clarify your doubts.
and practices.

22

You might also like