Design Principles, Design Concepts, Data Design, Architectural Design-Architectural Styles, Procedural Design
Design Principles, Design Concepts, Data Design, Architectural Design-Architectural Styles, Procedural Design
Abstraction
There are three types of abstraction
available :
Procedural Data Control
abstraction abstraction abstraction
Procedural abstraction – a sequence of instructions that have a specific and limited
function. Eg: Word OPEN for a door.
Data abstraction – a named collection of data that describes a data object. Data
abstraction for door would be a set of attributes that describes the door (e.g. door
type, swing direction, weight, dimension).
• The overall structure of the software and the ways in which the structure provides
conceptual integrity for a system.
• Shaw and Garlan (1996) suggest that software architecture is the first step in
producing a software design.
• They distinguish among three design levels:
1. Architecture design
2. Code design
3. Executable design
Architecture design : It associates the system capabilities
identified in the requirements specification with the system
components that will implement them. Components are usually
modules, and the architecture al describes the interconnections
among them.
The data structures needed for implementing the software as well-as the operations that can be applied on them should be
identified.
A data dictionary should be developed to depict how different data objects interact with each other and what constraints are to be
imposed on the elements of data structure.
Stepwise refinement should be used in data design process and detailed design decisions should be made later in the process.
Only those modules that need to access data stored in a data structure directly should be aware of the representation of the data
structure.
A library containing the set of useful data structures along with the operations that can be performed on them should be
maintained.
Language used for developing the system should support abstract data types.
Component Level
• A component is a pipe-and-filter
system, illustrated in figure 9.1, has
streams of data called pipes, for input
and output.
• Often, the transformation of the data
from input to output is begun before
the component, called a filter, finishes
reading the input stream.
• In this type of system, the filter are independent and each is not aware of the existence or
functions of the system's other filters.
• In addition, the correctness of the systems output does not depend on the order in which
the filters are applied.
1. The designers can understand the entire system's
effects on input and output as the composition of
There are the filters.
2. Since any two filters can be linked together, the
several filters can be reused easily on other systems.
important 3. System evolution is simple, because new filters can
properties of 4.
be added and old filters removed with relative ease.
Because of filter independence, designers can
pipe and filter simulate system behaviour and analyze properties
• The system requirements can be organized by objects and their abstract types.
• The design can also build its components around abstract data types.
• An object based design must have two important characteristics:
• The object must preserve the integrity of the data representation, and the data
representation must be hidden from other objects.
• One object must know the identity of the other objects in order for them to
interact.
Implicit invocation
• The design model for implicit invocation is event-driven, based on the notion of broad-casting.
• Instead of invoking a procedure directly, a component announces that one or more events have taken place.
• Then other components can associate a procedure with those events (called registering the procedure), and
the system invokes all such registered procedures.
• Data exchange in this type of system must be done through shared data in a repository. This type of design is
often used in packet-switched networks.
• This style of design is especially useful for reusing design components from other systems. Because any
component can register for an event, a reused component can be added to the system and can register itself,
independent of the other components like-wise, as the system evolves and requires upgrades, old components
can be removed and new ones added easily.
Layering
01 02 03
The blackboard itself : The Knowledge sources : The The control : The control is
blackboard contains a hierarchy of knowledge sources are separate determined by the state of the
problem-solving state data that are pieces of data, also application- blackboard. As the blackboard
dependent on the application being dependent, that interact only by changes state, the knowledge
designed. using the blackboard. sources respond, much as we noted
in the implicit invocation style.
Blackboard designs have appeared in
many systems, notably signal
processing and pattern recognition.
Interpreters
• Shaw and Garlan (1996) point out that process control systems are very different from function -
or object-based designs, which are characterized by the kinds of components that appear in the
design.
• Process control systems are characterized not only by the type of component, but also by the
relationships that hold among them.
• The purpose of a process control system is to maintain specified properties of process outputs at or
near specified reference values called set points.
• For example, your home heating and cooling system uses a thermostat to monitor air temperature
and then controls the furnace and air condition to keep the air temperature within an acceptable
range.
Procedural design
• Procedural design, also called component level design, occurs after data, architectural, and
interface designs have been established.
• The intent is to translate the design model into operational software.
• But the level of abstraction of the existing design model is relatively high, and the abstraction level
of the operational program is low.
• The translation can be challenging, opening the door to the introduction of subtle errors that are
difficult to find and correct in later stages of the software process.
• The translation can be challenging, opening the door to the introduction of subtle errors that are
difficult to find and correct in later stages of the software process.
• It is possible to represent the component-level design using a programming language.
• In essence, the program is created using the design model as a guide.
• An alternative approach is to represent the procedure design using some intermediate (e.g.,
graphical, tabular, or text-based representation that can be translated easily into source code.
Thank You