Unit-3 Notes SE Part-I
Unit-3 Notes SE Part-I
DESIGN ENGINEERING
Design engineering encompasses the set of principles, concepts, and practices that lead to the
development of a high-quality system or product. Design principles establish an overriding
philosophy that guides the designer in the work that is performed.
The goal of design engineering is to produce a model or representation that exhibits firmness,
commodity and delight.
Data/class design
Architectural designer
Interface design
Component Design
DESIGN CONCEPTS
ABSTRACTION
consider modular solution to any problem, many levels of abstraction can be posed. At highest-level
of abstraction, solution stated in broad terms, at lowest levels of abstraction, more detailed
description of the solution is provided.
Procedural Abstraction (Seq. Of instructions that have specific & limited function)
Data Abstraction (collection of data that describes a data object).
ARCHITECTURE
alludes to “the overall structure of the software and the ways in which that structure provides
conceptual integrity for a system”.
Architecture is the structure or organization of program components (modules), the manner in
which these components interact and the structure of data that are used by the components.
Can be represented using the following models
Structural models
Framework models
Dynamic models
Process models
Functional models
PATTERNS
Pattern is a named nugged of insight which conveys the essence of a proven solution to a recurring
problem within a certain context amidst competing concerns.
A Design pattern describes a design structure that solves a particular design problem within a
specific context and amid “forces” that may have an impact on the manner in which the pattern is
applied & used.
MODULARITY
Software is divided into separately named & addressable components, sometimes called modules,
that are integrated to
satisfy problem
requirements.
Information Hiding
modules be “characterized by design decision that (each) hides from all others”.
Modules should be specified and designed so that information (algorithm & data) contained within
a module is inaccessible to other modules that have no need for such information.
Functional Independence
Concept of FI is a direct outgrowth of modularity and the concepts of abstraction and information
hiding.
FI achieved by developing modules with “single minded” function and an “aversion” to excessive
interaction with other modules.
Explain Coupling & Cohesion
Cohesion – Indication of the relative functional strength of a module.
Coupling – indication of the relative interdependence among modules.
Refinement
Top down Strategy
Program developed by successively refining levels of procedural detail.
Process of Elaboration
High level of abstraction to low level of abstraction
Abstraction & refinement complementary concepts.
Abstraction enables designer to specify procedure & data and yet supress low-level details
Refinement helps the designer to reveal low-level details as design progresses.
Refactoring
reorganization technique that simplifies the design (or code) of a component without changing its
function or behavior.
Process of changing a software system in such a way that it does not alter the external behavior of
the code (design) yet improves its internal structure.
Design Classes
as the design evolves, software team must define a set of design classes that
1. refine the analysis classes by providing design detail that will enable the classes to be
implemented
2. create a new set of design classes that implement a software infrastructure to support the
business solution.
Five different types of design classes, each representing a different layer of the design
architecture are suggested
User interface classes
Business domain classes
Process classes
persistent classes
system classes