Software Design Basic Concepts (Year 3 Semester 1) : University of Mines and Technology, Tarkwa Umat

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 17

SOFTWARE DESIGN BASIC

CONCEPTS

LECTURE 3

(YEAR 3 SEMESTER 1)

UNIVERSITY OF MINES AND TECHNOLOGY, TARKWA UMaT


LECTURE OBJECTIVES

Understanding the significance of


software design process
Knowing the characteristics of software
design
Knowing the various elements of software
design and basic software concepts

UNIVERSITY OF MINES AND TECHNOLOGY, TARKWA UMaT


SOFTWARE DESIGN
Software design - Software design is a process to
transform user requirements into some more suitable
form, which helps the programmer/designer in the
actual software coding and implementation.
It is a process of planning a solution for a software
problem.
The relevance of the practice of Software Design can
be explained by the ever-increasing complexity of
software systems. Because of such complexity, the
risk of building a system that will not meet its goals is
indeed too high.
The process of Software design involves deciding
which components to use, which functions they
COMPONENTS OF SOFTWARE
DESIGN

OBJECTIVES OF SOFTWARE DESIGN


High reliability and quality, leading to greater user end
satisfaction
Maintainability and modifiability of code leading to
lower overall costs
End user service
Usefulness and ease of use
Timely delivery of software
CHARACTERISTICS OF SOFTWARE
DESIGN
Design enables early evaluation Ensures the
stakeholders of the development of the right program, because
it describes and delivers several aspects of the final software.
No organization wants to commit resources to developing
software that solves the wrong problem.
Design demands modeling. When modeling, the designer
focuses on the domain problem. This enables the designer to
distinguish the problem's essential complexity from the
accidental one.
Design involves planning. Planning helps in estimating
detailed costs, e.g., time to be spent on overall development,
how many implementers will be necessary for a specific
module, should a module built in-house or outsourced, etc.
Design facilitates communication. Contains knowledge
from the system that can be recorded, transmitted, and
discussed. It can act as a communication vehicle. To support a
SOFTWARE DESIGN
While the design process occurs, it is possible that the
client might;
Change his mind about the core problem at hand
Describe his problem incorrectly
Consider that the problem itself changed, or have been
solved, during the design process.
All these three possibilities must be kept in mind because
they may lead the designer to fail on achieving the client's
objectives and eventually to waste time and money.
Although a software design must be correct, its processes
may not be followed during the implementation stage.
We must therefore be aware that wrong implementation
of a design can lead to wrong software just like a wrong
design would.
ELEMENTS OF SOFTWARE DESIGN PROCESS

Software design process is the process of choosing a


representation of a solution from a set of alternatives,
given the constraints towards a set of goals.
It can be divided in two phases: diversification and
convergence.
The diversification is the phase of generating alternatives.
Not necessarily documents describing a possible solution,
but, at least, on the designer's mind.
During the convergence phase, the designer chooses the
alternative (or the combination of alternatives) that meets
the intended goals.
5 major elements are involved in the design process
namely; Goals, Constraints, Alternatives,
Representations, and Solution. These elements together
define a mental framework that helps to understand the
5 MAJOR ELEMENTS
GOALS The design process is undertaken to solve a
clients need. It starts with a need to be specified and goals
are outlined to achieve the goals through the design
process. Goals are also referred to as requirements,
therefore functional and non-functional. A functional
requirement specifies the functionality that a system will
exhibit. A non-functional requirement specifies properties or
characteristics that a software system must exhibit other
than the observable behavior.

CONSTRAINTS - Constraints are the rules or limitations


through which design is conceived and created. These
limitations can be self-imposed, conceptual necessities, client
directives, cost influenced, etc
ALTERNATIVES A design alternative is a possibility of solution.
Since design problems often have multiple solutions, the
5 MAJOR ELEMENTS
Representations This represents the
communication commitments between the
stakeholders on a software project. A design
representation allows communication because it
turns alternatives into product representations
which can be manipulated, described, analyzed,
and discussed.

Solutions - A design solution is nothing more


than a description enabling system construction
that uses one or many representations in order to
expose sufficient details. Design solutions mirror
the problem complexity, usually having many
LEVELS OF SOFTWARE DESIGN
According to the Guide to Software Engineering Body
of Knowledge (SWEBOK), software design consists of
two activities: top-level design or system design and
Detailed design or logic design.
Software Architectural Design (sometimes called
top-level design): concerned on describing the
fundamental organization of the system, identifying
its various components and their relationships to
each other and the environment in order to meet the
system's quality goals.
Software detailed design: describes each
component sufficiently to allow for its construction
according to the top-level design. Detailed design
describes the specific behavior of these components.
SOFTWARE DESIGN
Enabling techniques - are guidelines, approaches, and
key notions that are known to result on generally good
and sound software designs.

Design Concepts Serves as a platform from which more


sophisticated methods can be applied. A set of
fundamental design concepts has evolved. They are:

Abstraction Providing only the essential information


needed to the outside world and hiding the background
details. E.g. POS

Refinement The process of breaking down/elaborating


programming language statements into more detailed
SOFTWARE DESIGN
Modularity Stepwise decomposition/division of the
entire software architecture into smaller components,
units or modules.

Some benefits of modularization are as follows:


Promotes understanding, since each module can be
grasped at a time,
It eases development, since each module can be
designed, implemented, and tested separately,
Software Architecture - Refers to the overall structure of
the software with respects to achieving set goals (i.e. in
terms of performance, quality, schedule, cost, etc.).
Control Hierarchy - A program structure that represent
the organization of program components and implies a
SOFTWARE DESIGN
Structural Partitioning - The program structure can be
divided both horizontally and vertically. Horizontal
partitions define separate branches of modular hierarchy
for each major program function. Vertical partitioning
suggests that control and work should be distributed top
down in the program structure.
Data Structure Represents the logical relationship
among individual elements of data.
Software Procedure Emphasis is placed on the
individual processing of each module.
Information Hiding/Encapsulation - Modules should be
specified and designed so that information contained
within a module is inaccessible to other modules that
have no need for such information. Information hiding
involves concealing the details of a [system entity's]
DESIGN CONSIDERATION
Many aspects are to be considered in software design.
Each aspect must reflect the goals of the software.
Compatibility - The software is able to operate with
other products that are designed for interoperability with
another product.
Extensibility - New capabilities/features can be added to
the software without any major changes.
Fault-tolerance - The software is resistant to and able to
recover from component failure.
Maintainability - The software can be restored to a
specified condition within a specified period of time. For
example, antivirus software may include the ability to
periodically receive virus definition updates in order to
maintain the software's effectiveness.
DESIGN CONSIDERATION
Modularity - Stepwise decomposition/division of
the entire software architecture into smaller
components, units or modules. The components
could be then implemented and tested in
isolation before integrated to form a desired
software system.
Packaging/Branding - Printed material such as
the box and manuals should match the style
designated for the target market and should
enhance usability. All compatibility information
should be visible on the outside of the package.
Reliability - The software is able to perform a
required function under stated conditions for a
DESIGN CONSIDERATION
Robustness - The software is able to
operate under stress or tolerate
unpredictable or invalid input.
Usability - The software must be user
friendly for its target user/audience.
Reusability - The software is able to add
further features and modification with
slight or no modification.
Security - The software is able to withstand
internal and external shocks, hostile acts
and influences.
END OF LECTURE 3

UNIVERSITY OF MINES AND TECHNOLOGY, TARKWA UMaT

You might also like