Se Unit Iv
Se Unit Iv
Se Unit Iv
SYSTEM DESIGN
Design Deployment
Commu- Analysis Construction
( installation)
nication modellin (code , test)
(Feedback)
modelling activity
Software Engineering
THEDESIGN MODEL
⚫ Advantages of modularization(modularity):
To modularize a design
1. Software development can be more easily planned.
2. Software increments can be defined and delivered.
3. Software changes can be more easily accommodated.
4. Software testing and debugging can be conducted more efficiently.
5. and long-term software maintenance can be conducted without serious
side effects.
DESIGN CONCEPTS contd.
⚫ Information Hiding
⚫ Hiding implies that effective modularity can be achieved by defining a set
of independent modules that communicate with one another only that
information necessary to achieve software function.
⚫ The purpose of information hiding is to hide the details of data structures
and procedural processing behind a module interface. Knowledge of the
details need not be known by users of the module.
DESIGN CONCEPTS contd.
⚫ Functional Independence
⚫ The concept of functional independence is a direct outgrowth of separation of concerns ,
modularity, and the concepts of abstraction and information hiding.
⚫ Functional independence is achieved by developing modules with “single minded” function
and little interaction with other modules.
⚫ Software with effective modularity by functionally independent modules have the following
advantages
1.Easier to develop 2.Easier to maintain and test 3.Key to good design, and design is the key to
software quality.
⚫ Functional Independence is evaluated using two qualitative criteria: cohesion and coupling.
⚫ Cohesion is an indication of the relative functional strength of a module. Coupling is an
indication of the relative interdependence among modules.
⚫ Cohesion is a natural extension of the information-hiding.
⚫ A cohesive module performs a single task, requiring little interaction with other components in
other parts of a program. Stated simply, a cohesive module should (ideally) do just one thing.
Although you should always have great efforts to achieve for high cohesion(i.e.,
single-mindedness) However, “schizophrenic” components(modules that perform many
unrelated functions) are to be avoided if a good design is to be achieved.
⚫ Coupling is an indication of interconnection among modules in a software structure. Coupling
depends on the interface complexity between modules, the point at which entry or reference is
made to a module, and what data pass across the interface. Although you should always have
great efforts to achieve for low coupling(little interaction with other components of a
program).
DESIGN CONCEPTS contd.
⚫ Refinement
⚫ Refinement is actually a process of elaboration. You begin with a
statement of function (or description of information) that is defined at a
high level of abstraction. That is, the statement describes function or
information conceptually(logically) but provides no information about the
internal workings of the function or the internal structure of the
information. You then elaborate on the original statement, providing more
and more detail as each successive refinement (elaboration) occurs.
⚫ Abstraction and refinement are complementary concepts. Abstraction
suppresses the specific low level details to external world but Refinement
reveals low-level details as design development. Both concepts allow you
to create a complete design model as the design evolves.
DESIGN CONCEPTS contd.
⚫ Aspects
⚫ The design architecture should support a mechanism for defining an
aspect—a module that enables the concern to be implemented across all
other concerns that it crosscuts.
DESIGN CONCEPTS contd.
⚫ Refactoring
⚫ Refactoring is an important design activity suggested for many agile methods.
⚫ Refactoring is a reorganization technique that simplifies the design (or code) of a
component(e.g. Module , object, filter) without changing its function or behaviour.
⚫ Fowler [Fow00] defines refactoring in the following manner: “Refactoring is the process of
changing a software system in such a way that it does not alter the external behaviour of the
code [design] yet improves its internal structure.”
A data store (e.g., a file or database) resides at the center of this architecture and is accessed
frequently by other components that update, add, delete, or otherwise modify data within the store.
Client software accesses a central repository.
ARCHITECTURAL STYLES
⚫ Data-flow architectures.
Data-flow architectures.
This architecture is applied when input data are to be
transformed through a series of computational or manipulative
components into output data.
A pipe-and-filter pattern (Figure 9.2) has a set of components,
called filters, connected by pipes that transmit data from
one component to the next.
Each filter works independently of those components
upstream and downstream, is designed to expect data input
of a certain form, and produces data output (to the next
filter) of a specified form. However, the filter does not require
knowledge of the workings of its neighboring filters.
Call and return architectures.
⚫ This architectural style enables you to achieve a
⚫ program structure that is relatively easy to modify and
scale.
⚫ A number of substyles exist within this category:
⚫ • Main program/subprogram architectures. This classic
program structure decomposes function into a control
hierarchy where a “main” program invokes a number of
program components that in turn may invoke still
other components.
Call and return architectures.
Object-oriented architectures.
⚫ The components of a system encapsulate data and the operations that must be
applied to manipulate the data.
⚫ Communication and coordination between components are accomplished via
message passing.
⚫ Layered architectures. The basic structure of a layered
architecture is illustrated in Figure.
⚫ A number of different layers are defined, each accomplishing
operations that progressively become closer to the machine
instruction set.
⚫ At the outer layer, components service user interface operations. At
the inner layer, components (program modules)perform operating
system interfacing. Intermediate layers provide utility services and
application software functions.
ASSESSING ALTERNATIVE ARCHITECTURAL DESIGNS