Introduction To Software Design
Introduction To Software Design
software design
2013 E.C
Introduction
Software design is an iterative process through which requirements are
translated into a blueprint for constructing the software.
Initially, the blueprint depicts a holistic view of software. During the design
process the software specifications are transformed into design models.
Models describe the details of the data structures, system architecture,
interface, and components.
Each design product is reviewed for quality before moving to the next phase
of software development. At the end of the design process a design model
and specification document is produced.
Cont.…
Software design is both a process and a model.
The design process is a sequence of steps that enables the designer to describe
all aspects of the software for building.
Creative skill, past experience, a sense of what makes "good" software and an
overall commitment to quality are examples of critical success factors for a
competent design.
It begins by representing the totality of the thing that is to be built (e.g., a
three-dimensional rendering of the house); slowly, the thing is refined to
provide guidance for constructing each detail
Cont…
Generally, design is about how to build a system (answers “HOW?”)-
Specifying different parts of the software, and how they will fit together.
From a project management point of view, software design can be conducted
in two main steps:
Preliminary Design: Concerned with the transformation of requirements into data
and software architecture.
Detail Design: Focuses on refining the architectural representation, and lead to
detailed data structure and algorithmic representations of software.
Three main design activities in the design phase are:
Data design,
Architectural design and
Procedural design. In addition, many modern applications have a distinct interface
design activity. Interface design establishes the layout and interaction mechanisms
for human-machine interaction.
Cont.…
Data Design /Class Design : Objective of Data Design is to transform the
information domain into data structures. Eg: Entity Relationship diagrams,
Data dictionary, abstract data types and Data structures.
Architectural Design: Identify the overall structure of the system, the
principal components (sometimes called sub-systems or modules), their
relationships and how they are distributed.
Procedural/Component Design: Objective is to transform structural
components into a procedural/component description of the software. This
step occurs after the data and program structures have been established, i.e.
after architectural design
Cont…
Design process
The design should "minimize the intellectual distance" between the software
and the problem as it exists in the real world. That is, the structure of the
software design should, whenever possible, mimic the structure of the problem
domain.
The design should exhibit uniformity and integration. A design is uniform if it
appears fully coherent. In order to achieve this outcome, rules of style and
format should be defined for a design team before design work begins
The design should be structured to accommodate change. The design concepts
discussed in the next section enable a design to achieve this principle.
Cont….
Design is not coding, coding is not design. Even when detailed procedural
designs are created for program components, the level of abstraction of the
design model is higher than the source code. The only design decisions made
at the coding level should address the small implementation details that
enable the procedural design to be coded.
Cont…
The design should be assessed for quality as it is being created, not after
the fact. A variety of design concepts and design measures are available to
assist the designer in assessing quality throughout the development process.
reviewed, missing the forest for the trees. A design team should ensure that
major conceptual elements of the design (omissions, ambiguity, in
consistency) have been addressed before worrying about the syntax of the
design model.
Design Considerations
Reusability - The ability to use some or all of the aspects of the preexisting
software in other projects with little to no modification.
Robustness - The software is able to operate under stress or tolerate
unpredictable or invalid input. For example, it can be designed with a
resilience to low memory conditions.
Security - The software is able to withstand and resist hostile acts and
influences.
Usability - The software user interface must be usable for its target
user/audience. Default values for the parameters must be chosen so that they
are a good choice for the majority of the users.
Cont..
User interface is the first impression of a software system from the user’s
point of view. Therefore any software system must satisfy the requirement of
user.
Functions and Features of UI
User Interface (UI) mainly performs two functions −
Accepting the user’s input
Displaying the output
Cont…
User interface plays a crucial role in any software system. It is possibly the
only visible aspect of a software system as:
Users will initially see the architecture of software system’s external user interface
without considering its internal architecture.
A good user interface must attract the user to use the software system without
mistakes. It should help the user to understand the software system easily without
misleading information. A bad UI may cause market failure against the competition
of software system.
UI has its syntax and semantics. The syntax comprises component types such as
textual, icon, button etc. and usability summarizes the semantics of UI. There are
basically two major kinds of user interface − a) Textual b) Graphical.
Software in different domains may require different style of its user interface
Graphical User Interface
A graphical user interface is the most common type of user interface available
today.
It is a very user friendly because it makes use of pictures, graphics, and icons
hence why it is called 'graphical'.
It is also known as a WIMP interface because it makes use of −
Windows − A rectangular area on the screen where the commonly used applications
run.
Icons − A picture or symbol which is used to represent a software application or
hardware device.
Menus − A list of options from which the user can choose what they require.
Pointers − A symbol such as an arrow which moves around the screen as user moves
the mouse. It helps user to select objects.
Elements of UI