2. Design and Program
• Design is different from programming. Design brings out
a representation for the
• program – not the program or any component of it.
3. Design Engineer
• A design engineer is an engineer focused on the
engineering design process in any of the various
engineering disciplines (including civil, mechanical,
electrical, chemical, textiles, aerospace, nuclear,
manufacturing, systems, and structural
/building/architectural).
4. Introduction to design
process
• The main aim of design engineering is to generate a
model which shows firmness, delight and commodity.
• Software design is an iterative process through which
requirements are translated into the blueprint for building
the software.
5. Quality attributes
• The attributes of design name as 'FURPS' are as follows:
Functional: It is a very basic quality attribute. Any design solution
should work,
• and should be constructable.
• Efficiency: This can be measured through
• 3⁄4 run time (time taken to undertake whole of processing task or
transaction)
• 3⁄4 response time (time taken to respond to a request for information)
• 3⁄4 throughput (no. of transactions / unit time)
• 3⁄4 memory usage, size of executable, size of source, etc
• Flexibility: It is another basic and important attribute. The very
purpose of doing
• design activities is to build systems that are modifiable in the event of
any
• changes in the requirements.
6. Cont.
• Portability & Security: These are to be addressed during design -
so that such
• needs are not “hard-coded” later.
• Reliability: It tells the goodness of the design - how it work
successfully (More
• important for real-time and mission critical and on-line systems).
• Economy: This can be achieved by identifying re-usable
components.
• Introduction to Software Engineering Page 158 of 348
• Usability: Usability is in terms of how the interfaces are designed
(clarity,
• aesthetics, directness, forgiveness, user control, ergonomics, etc)
and how much
• time it takes to master the system.
7. Design concepts
• The set of fundamental software design concepts are as
follows:
1. AbstractionA solution is stated in large terms using the
language of the problem environment at the highest level
abstraction.
• The lower level of abstraction provides a more detail
description of the solution.
• A sequence of instruction that contain a specific and limited
function refers in a procedural abstraction.
• A collection of data that describes a data object is a data
abstraction.
8. Cont.
• 2. ArchitectureThe complete structure of the software is
known as software architecture.
• Structure provides conceptual integrity for a system in a
number of ways.
• The architecture is the structure of program modules where
they interact with each other in a specialized way.
• The components use the structure of data.
• The aim of the software design is to obtain an architectural
framework of a system.
• The more detailed design activities are conducted from the
framework.
9. Cont.
• 3. Patterns
A design pattern describes a design structure and that structure
solves a particular design problem in a specified content.
4. ModularityA software is separately divided into name and
addressable components. Sometime they are called as modules
which integrate to satisfy the problem requirements.
• Modularity is the single attribute of a software that permits a
program to be managed easily.
• 5. Information hiding
Modules must be specified and designed so that the information like
algorithm and data presented in a module is not accessible for other
modules not requiring that information.
10. Cont.
• 6. Functional independenceThe functional independence is the
concept of separation and related to the concept of modularity,
abstraction and information hiding.
• The functional independence is accessed using two criteria i.e
Cohesion and coupling.
• CohesionCohesion is an extension of the information hiding
concept.
• A cohesive module performs a single task and it requires a small
interaction with the other components in other parts of the program.
• Coupling
Coupling is an indication of interconnection between modules in a
structure of software.
11. Cont.
• 7. RefinementRefinement is a top-down design
approach.
• It is a process of elaboration.
• A program is established for refining levels of procedural
details.
• A hierarchy is established by decomposing a statement
of function in a stepwise manner till the programming
language statement are reached.
12. Cont.
• 8. Refactoring
• It is a reorganization technique which simplifies the design of
components without changing its function behaviour.
• Refactoring is the process of changing the software system in
a way that it does not change the external behaviour of the
code still improves its internal structure.
• 9. Design classes
• The model of software is defined as a set of design classes.
• Every class describes the elements of problem domain and
that focus on features of the problem which are user visible.
13. Cont.
• The design phase of software development deals with
transforming the customer requirements as described in
the SRS documents into a form implementable using a
programming language.
14. Design model
• A design model in Software Engineering is an object-
based picture or pictures that represent the use cases
for a system. Or to put it another way, it is the means to
describe a system's implementation and source code in
a diagrammatic fashion. This type of representation has
a couple of advantages.
15. Design Constraints
• Typical Design Constraints are:
• 3⁄4 Budget
• 3⁄4 Time
• 3⁄4 Integration with other systems
• 3⁄4 Skills
• 3⁄4 Standards
• 3⁄4 Hardware and software platforms
16. Data Design in Software
Engineering
• Data design is the first design activity, which results in less
complex, modular and efficient program structure.
• The information domain model developed during analysis
phase is transformed into data structures needed for
implementing the software.
• The data objects, attributes, and relationships depicted in
entity relationship diagrams and the information stored in data
dictionary provide a base for data design activity. During the
data design process, data types are specified along with the
integrity rules required for the data. For specifying and
designing efficient data structures, some principles should be
followed.
17. Architectural model
• This involves breaking the system down into its major
functional pieces and describing each in a diagrammatic
fashion.
• The interaction between each piece is also described.
• Requirements of the software should be transformed
into an architecture that describes the software's top-
level structure and identifies its components. This is
accomplished through architectural design (also called
system design), which acts as a preliminary 'blueprint'
from which software can be developed.
18. Interface Design:
• Interface design is the specification of the interaction between a
system and its environment.
• This phase proceeds at a high level of abstraction with respect to
the inner workings of the system i.e, during interface design, the
internal of the systems are completely ignored and the system is
treated as a black box.
• User interface is the front-end application view to which user
interacts in order to use the software. The software becomes more
popular if its user interface is:
• Attractive
• Simple to use
• Responsive in short time
• Clear to understand
• Consistent on all interface screens
19.
20. Component level design
• As soon as the first iteration of architectural design is
complete, component-level design takes place. The
objective of this design is to transform the design model
into functional software.
• To achieve this objective, the component-level design
represents -the internal data structures and processing
details of all the software components (defined during
architectural design) at an abstraction level, closer to the
actual code.
• In addition, it specifies an interface that may be used to
access the functionality of all the software components.
21. Deployement design
• Deployment-Level Design Elements. Deployment-
level design elements indicate how software
functionality and subsystems will be allocated within the
physical computing environment that will support the
software.
• To develop deployment level design, distribute the
software components identified in the component-level
design to the computer node where it will reside.