Uploaded by Dr. J.Nelson Raja

Nelson Notes Unit 3

advertisement
UNIT 3
http://meenasclassprints.blogspot.com/p/unit-4-software-engineering.html
https://slideplayer.com/slide/8569131/
Define Software Design:
 Software Design is a mechanism to transform the customer requirements as
described in the Software Requirement Specification (SRS) documents into a
form implementable using a programming language.
 It deals with representing the client's requirement, as described in SRS (Software
Requirement Specification) document, into a form, i.e., easily implementable
using programming language.
Goal of Software Design / Objective of Software Design:
The fundamental goal of software design is to structure the software product so that the
number and complexity of interconnections between modules is minimized.
List out and explain the different types activities in Software Design Phase.
Or
What are the three Levels of Software Design?
There are 3 distinct types of activities in software design:
1.External design
2.Architectural design
3.Detailed design
Architectural and detailed design are called as Internal design.
1. External design

External design involves conceiving, planning out, and specifying the externally
observable characteristics of a software product.

It includes user displays, and report formats, external data sources and data links
and the functional characteristics, performance requirements and high level process
structure for the product.
1
2. Internal design (combine activity of Architectural Design and Detailed Design)
 Internal design involves conceiving, planning out, and specifying the internal
structure and processing details of the software product.
 Internal design include a specification of architectural structure, the details of
algorithms and data structures and the test plan.
i. Architectural design
 Architectural design is concerned with the following activities:
 Refining the conceptual view of the system
 Identifying internal processing functions and decomposing high level
functions into sub functions
 Defining internal data streams and data stores
 Establishing relationships and interconnections among functions ,data
streams and data stores.
ii. Detailed design
 It concerned with the following activities:
 Specification of algorithms that implement the functions,
 Define data structures
 Actual interconnections among functions and data structures, and
 The packaging scheme for the system
2
What are the approaches used in software design?
(OR)
Discuss about Fundamental Design Concepts in Software Engineering.
Fundamental concepts of software design includes the following techniques,
1. Abstraction
2. Structure
3. Information Hiding
4. Modularity
5. Concurrency
6. Verification
7. Design Aesthetics
1. Abstraction
During software design, Abstraction allows us to organize and channel our thought and
3
processes by postponing structural considerations and detailed algorithmic
considerations.
ie. Abstraction permits separation of the conceptual aspects of a system from the
implementation details.
ie: to retain only information which is relevant
Three widely used abstract mechanisms in software design
i.
Functional abstraction
ii.
Data abstraction
iii.
Control abstraction
i. Functional abstraction
Functional abstraction is a collection of subroutines called groups. They have visible
property and hidden property. Through visible property one group communicate with
another group.
ii. Abstract data
Abstract data types are representation details of the data and manipulation details of
the data are hidden.
iii. Control abstraction
Control abstraction is used to state a desired effect without stating the exact mechanism
of control.
2. Structure
 The use of structuring permits decomposition of a large system into smaller.
 More manageable units with well-defined relationships to the other units in
the system.
 The most general form of system structure is the network.
4
 It consists of nodes and arcs.
 The nodes can represent processing elements that transform data
 The arcs can be used to represent data links between nodes.
 Alternatively, the nodes can represent data stores and the arcs data
transformation.
Figure : Structure
3. Information Hiding
 Information hiding is a fundamental design concept for software.
 Each module in the system hides the internal details of its processing activities
and modules communicate only through well-defined interfaces.
Other candidates for information hiding include:
1. A data structure and its internal linkage
2. The format of control blocks such as those for queues in an operating system
3. Character codes
4.Shifting, masking and other machine dependent details
4. Modularity
 The software is divided into various components that work together to form a
single functioning item.
 This process of creating software modules is known as Modularity in software
5
engineering.
Desirable properties of a modular system include:
1. Each processing abstraction is are well-defined subsystem that is potentially useful in
other applications.
2. Each function in each abstraction has a single, well defined purpose.
3. Each function manipulates no more than one major data structure.
4. Functions share global data selectively. It is easy to identify all routine that share a
major data structure.
5. Functions that manipulate instances of abstract data types are encapsulated with the
data structures being manipulated.
Modularity enhances design clarity, which in turn eases, implementation, debugging,
testing, documenting and maintenance of the software product.
Modularity enhance the design clarity and following activities:
 Implementation
 Debugging
 Testing
 Document
 Maintenance
5. Concurrency
 Software systems can be categorized as sequential or concurrent.
 In a sequential system only one portion of the system is active at any given time.
Concurrent systems have independent process that can be activated
simultaneously if multiple processors are available.
 Problems unique to concurrent systems include deadlock, mutual exclusion and
synchronization processes.
 Deadlock is an undesirable situation that occur when all processes in a computing
systems are waiting for other processes to complete some actions so that each
can proceed.
 Mutual exclusion is necessary to ensure that multiple processors do not attempt to
update the same components of the shared processing state at the same time
synchronization is required so that concurrent processes operating at differing
execution speeds can communicate at the appropriate points in their execution
6
histories.
 SYNCHRONIZATION: Concurrent process at different execution speed should be
synchronized.
6. Verification.
A Design is verifiable if it can be demonstrated that the design will result in an
implementation that satisfies the customer’s requirements.
1. Verification that the software requirements definition satisfies the customer’s needs
(verification of the requirements).
2. Verification that the design satisfies the requirements definition (verification of the
design).
7. Aesthetics
Aesthetic considerations are fundamental to design, whether in art or technology.
Simplicity, elegance and clarity of purpose distinguish products of outstanding quality from
mediocre products. When we speak of mathematical elegance or structural beauty, we are
speaking of those properties that go beyond more satisfaction of the requirements.
Discuss Modules and Modularization Criteria
Architectural design has the goal of producing well structured modular software systems.
A software module to be a named entity having the following characteristics.
1. modules contain instructions, processing logic and data structures
2. modules can be separately, compiled and stored in a library
3. modules can be included in a program.
4. module segments can be used by invoking a name and some parameter.
5. modules can use other modules.
Advantage of Modularization
 Modularization allows the designs to decompose a system in to functional units to
impose hierarchical ordering on function usage, to implement data abstractions,
and to develop independently useful subsystems.
7
 In addition modularization can be used to isolate machine dependencies to improve
the performance of a software product, or to ease debugging, testing, integration,
tuning and modification of the system.
MODULARIZATION CRITERIA
There are numerous criteria that can be used to guide the modularization of a system.
Modularization criteria include the conventional criterion, in which each module and its
sub-modules correspond to a processing step in the execution sequence; the information
hiding criterion, in which each module hides a difficult or changeable design decision from
the other modules; the data abstraction criterion, in which each module hides the
representation details of a major data structure behind functions that access and modify
the data structure; levels of abstraction, in which modules and collections of modules
provide a hierarchical set of increasingly complex services; coupling cohesion, in which
a system is structures to maximize the cohesion of elements in each module and to
minimize the coupling between modules; and problem modeling, in which the modular
structure of the problem modules; and problem modeling, in which the modular structure
of the system matches the structure of the problem being solved. There are two versions
of problem modeling: either the data strictures match the problem structure and the visible
functions manipulate the data structures, or the modules form a network of
communicating processes where each process corresponds to a problem entity.
OTHER MODULARIZATION CRITERIA
Additional criteria for deciding which functions to place in which modules of a software
system include:
testability
pendencies to a few routines
8
calls.
Discuss Coupling.
 Coupling is a measure the level of inter-dependability among modules.
 It tells at what level the modules interact with each other.
 The lower the coupling, the better the program.
 Two modules with high coupling are strongly interconnected and dependent on
each other.
Types of Coupling:
1. Content coupling
2. Common coupling
3. Control coupling
4. Stamp coupling
5. Data coupling
1. Content Coupling:
When a module can directly access or modify or refer to the content of another module, it
is called content level coupling.
2. Common Coupling:
When multiple modules have read and write access to some global data, it is called
common or global coupling.
3. Control Coupling:
Two modules are called control-coupled if one of them decides the function of the other
module or changes its flow of execution.
4. Stamp Coupling:
When multiple modules share common data structure and work on different part of it, it is
called stamp coupling.
5. Data Coupling:
9
Data coupling is when two modules interact with each other by means of passing data (as
parameter).
Discuss Cohesion.
 Cohesion is a measure the degree of intra-dependability within elements of a
module.
 Basically, cohesion is the internal glue that keeps the module together.
 The greater the cohesion, the better is the program design.
Types of Cohesion
1. Logical cohesion
2. Functional cohesion
3. Temporal cohesion
4. Sequential cohesion
5. Communication cohesion
6. Informational cohesion
7. Coincidental cohesion
1. Logical cohesion
When logically categorized elements are put together into a module, it is called logical
cohesion.
2. Functional cohesion
It is considered to be the highest degree of cohesion, and it is highly expected. Elements
of module in functional cohesion are grouped because they all contribute to a single welldefined function. It can also be reused.
3. Temporal cohesion
When elements of module are organized such that they are processed at a similar point in
time, it is called temporal cohesion.
10
4. Sequential cohesion
When elements of module are grouped because the output of one element serves as input
to another and so on, it is called sequential cohesion.
5. Communication cohesion
When elements of module are grouped together, which are executed sequentially and
work on same data (information), it is called communicational cohesion.
6. Informational cohesion
Elements in a module occur when the module contains a complex data structure and
several routines to manipulate the data structure
7. Coincidental cohesion
It is unplanned and random cohesion, which might be the result of breaking the program
into smaller modules for the sake of modularization. Because it is unplanned, it may serve
confusion to the programmers and is generally not-accepted.
Discuss about Design Notation.
Or
What are the notations used to specify external characteristics of a software?.
Notation used to specify the external characteristic, architectural structure and processing
details of a software system.
Good notation can clarify the interrelationships and
interaction of interest.
1. Dataflow diagram
2. Structure charts
3. HIPO diagrams
4. Procedure specification
5. Pseudo code
6. Structured flow charts
11
DATA-FLOW DIAGRAMS
o Data flow diagram is graphical representation of flow of data in an
information system.
o It is capable of showing incoming data flow, outgoing data flow and stored
data ie. Dataflow diagrams are Graphs in which the nodes specify
processing activities and the arcs specify the data items transmitted between
processing nodes.
Figure : Data Flow Diagram
2. STRUCTURED CHARTS
 Structure chart is a chart derived from Data Flow Diagram.
 It represents the system in more detail than DFD.
 It breaks down the entire system into lowest functional modules, describes functions
and sub-functions of each module of the system to a greater detail than DFD.
12
HIPO DIAGRAMS
 HIPO diagram(Hierarchy-process-input-output) were developed at IBM as design
representation schemes for top down software development.
 HIPO diagram represents the hierarchy of modules in the software system.
 Analyst uses HIPO diagram in order to obtain high-level view of system functions.
 It decomposes functions into sub-functions in a hierarchical manner. It depicts the
functions performed by system.
 HIPO diagrams are good for documentation purpose.
PROCEDURE TEMPLATE
It provides initial architectural design , specification of side effects , exception handling ,
processing algorithms and data representation.
PSEUDO CODE NOTATION
Pseudo code notation can be used in both the architectural and detailed design phases.
• The designer describes system characteristics using short , concise , that are
structured by keywords such as If-Then- Else , While-Do and End.
13
• Pseudo code can replace flowcharts and reduce the amount of external
documentations required to describe system.
STRUCTURED FLOWCHARTS
• Flowcharts means are specifying and documenting algorithmic detailed in a software
system.
• Flowchart interoperate rectangular boxes for actions , diamond shaped boxes for
decisions , directed arcs for interconnections for boxes.
• Single entry , single exit allows hierarchical nesting of structured flowchart to design in
top-down fashion.
Figure : Structured Flow Charts
DECISION TABLES
• Decision tables can be used to specify complex decision logic in a high level software
specification.
• There are useful for specifying algorithmic logic during detailed design.
14
Explain various Design Techniques in Software Engineering.
 The design process involves developing a conceptual view of the system,
establishing system structure ,identifying data streams and data stores,
decomposing high-level function into sun functions, establishing relationships and
interconnections among components, developing concrete data representations,
and specifying algorithm details.
 Design techniques are typically based on the “Top Down Approach” and/or “Bottom-up
Approach” Design strategies.
Top down Approach
 Using the top-down approach, attention is first focused on global aspects of the overall
system.
 As the design progresses, the system is decomposed into subsystems and more
consideration is given to specific issues.
 Backtracking is fundamental to top-down design.
 In top down approach, a high – level decision may have to be reconsidered and the
system restructured accordingly.
 The disadvantage of top-down design and implementation permits early demonstration of
functional capabilities at the user level; dummy routines (program stubs) can be used to
simulate the lower, unimplemented levels of the system.
 The primary advantage of the top-down strategy is that attention is first directed to the
customer's needs, user interfaces, and the overall nature of the problem being solved.
Bottom up Approach
 In the bottom-up approach software design, the Designer first attempts to identify a set of
primitive objects, actions, and relationships that will provide a basis for problem solution.
 Higher-level concepts are than formulated in terms of the primitives.
 The bottom-up strategy requires the designer to combine features provided by the
implementation language into more sophisticated entities.
 Bottom-up design may also require redesign and design backtracking. The success of
bottom-up design depends on identifying the “proper” set of primitive ideas sufficient to
implement the system.
15
 The primary advantage bottom-up design and implementation permits assessment of
subsystem performance during system evolution.
 When using top-down methods, performance evaluation must be deferred until the entire
system is assembled.
Types of Design Techniques:
1. Stepwise refinement
2. Levels of abstraction
3. Structure design
4. Integrated top- down development
5. Jackson design methods
1. STEPWISE REFINEMENT:
Stepwise refinement is a top-down technique for decomposing a system from high –level
specification in to more elementary levels.
Stepwise refinement is also know as “stepwise program development ” and “Successive
refinement”.
Stepwise refinement involves the following activities:
i.
Decomposing design decisions to elementary levels.
ii.
Isolating design aspects that are not truly interdependent.
iii.
Posting decision concerning representation details as long as possible.
iv.
Carefully demonstrating that each successive step in the refinement is a faithful
expansion of previous steps.
The major benefits of stepwise refinement as a design techniques are:
1.Top-down decomposition
2.Incremental addition of detail
3.Postponement of design decision
4.Continual verification of consistency(formally or informally)
16
Successive refinement can be used to preform details design of the individual modules in
a software product.
LEVELS OF ABSTRACTION:
 Levels of abstraction was originally described as a bottom-up design technique in
which an a layering of hierarchical levels staring at level 0(processor allocation,
real-time clock interrupts)and building up to the level of processing independent
user program.
 Each level of abstraction perform a set of services for the functions on the next high
level of the abstraction.
 Thus, a file manipulation system might be layered as a set of routine to manipulate
fields(bit vectors on level of 0),a set of routine manipulate records(sets of fields on
level 1) and a set routine to manipulate files(sets of records on the level 2).
 Each levels of abstraction has exclusive use of certain resources(I/O devices data
structures)that other level a are not permitted to access. Higher level function
cannot invoke functions on lower levels, but lower level functions cannot invoke or
in any way make use of higher-level function.
STRUCTURE DESIGN:
 Structure design was developed by Constantine as a topdown techniques for
architectural design of software system.
 The basic approach in structure design systematic conversion of the data flow
diagrams into structure charts.
 Coupling measures the degree to which two distinct modules are bound together,
and cohesion is a measure of the relationship of the element with in a module to
one another.
17
1. A well-designed system exhibits a lows degree of coupling between modules and
a high degree of cohesion among each module.
2. The first step in structured design is review and refinement of the data flow
diagram(s) developed during requirements definition and external design.
3. The second step is to determine whether the system is transform-centered or
transaction-driven, and to derive a high – level structure chart based on this
determination.
4. In a transform-centered system, the data flow diagram contains Input,
Processing, and Output segments that are converted into Input, Processing, and
Output subsystems in the structure chart.
5. Boundaries between the three major subsystems in a transform – centered
system are identified by determining the point of most abstract input data and
the point of most abstract output data on the data flow diagram.
Integrated top- down development:
 Using integrated top-down development, design proceeds top-down from the
highest-level routines.
 They have the primary function of coordinating and sequencing the lower level
routines.
 There is a hierarchical structure to a top-down system in which routines can invoke
lower-level routines but cannot invoke routines on a higher level.
Jackson design methods:
In Jackson design technique, the mapping is accomplished in three steps:
1.The problem is modeled by specifying the input and output data structure using tree
structured diagrams.
2.Input-output model is converted in to a structural model for the program by identifying
points of correspondence between nodes in the input and output trees.
18
3.The structural model of the program is expanded into a detailed design model that
contains the operations needed to solve the problem.
DETAILED DESIGN CONSIDERATION:
 Detailed design is concerned with specifying algorithmic details, concrete data
representation, interconnection among function and data structures, and packaging
of the software product.
 Detailed design is strongly influenced by the implementation language, and it is not
the same as implementation.
 Detailed design is more concerned with semantic issues and less concerned with
syntactic details then is implementation.
 Detailed design also provides a vehicle for design inspection, structured
walkthroughs, and the critical design review.
 Product package is an important aspect of detailed design. Packaging is concerned
with the manner in which global data items are selectively shared among program
units.
Real Time and Distributed System
Real Time System
 By definition, real-time systems must provide specified amounts of computation
with in fixed time intervals.
19
 Real-time systems typically sense and control external devices, respond to external
events, and share processing time between multiple tasks processing demands are
both cyclic and event-driven in nature.
 The traditional considerations hierarchy, information hiding and modularity are
important concepts for the design of real-time systems.
 However these concepts are typically applied to the individual components of a
real-time systems.
 Higher-level issues of networking, performance and reliability must be analyzed and
designed before the component nodes or processes are developed.
Distributed System
According to Franta, a distributed system consists of a collection of nearly autonomous
processors that communicate to achieve a coherent computing system.
Each processor possesses a private memory, and processors communicate through an
interconnection network.
Major issues to be addressed in designing a distributed system includes:
 Specifying the topology of the communication network
 Establishing rules for accessing the shared communication channel
 Establishing rules for process communication and synchronization.
 The design of distributed systems is further complicated by the need to allocate
network functionality between hardware and software components of the network.
DISCUSS TEST PLANS.
Test Plan prescribes various kinds of activities that will be performed to demonstrate that
the software product meets its requirements.
20
The Test Plan specifies the following:
 The objectives of testing e.g., to achieve error-free operation under stated
conditions for a stated period of time.
 The test completion criteria to achieve a specified rate of error exposure, to achieve
a specified percent of logical path coverage.
 The system integration plan (strategy, schedule, responsible individuals),
 The particular test cases to be used.
There are four types of tests that software products must satisfy:
1. Functional Tests
2. Performance Tests
3. Stress Tests
4. Structural Tests
These tests are based on the requirements specifications; they are designed to
demonstrate that the system satisfies the requirements, which in turn must be phased in,
quantified, testable terms.
1. Functional Test
It specifies typical operating conditions ,typical input values , and typical expected results
. Functional test should also be designed to test boundary conditions just inside and just
beyond the boundaries(eg., square root of negative numbers ,inversions of one-by-one
matrices). Also, initial values and system default should be tested with data that have both
correct and incorrect ordering.
2. Performance test
It Designed to verify response time(under various loads) ,executive time ,throughput
,primary and secondary memory utilization ,and traffic rates on data channels and
21
communications links. Performance test will often indicate processing bottlenecks to be
addressed during system testing and turning.
3. Stress test
It is Designed to overload a system in various ways, such as attempting to sign on more
than the maximum allowed number of terminals, processing more than the allowed number
of identifiers or static levels or disconnecting a communication link. The purpose of this
testing are to determine the limitation of the system and when the system fails, to
determine the manner in which the failure is manifest. This test provides a valuable insight
concerning the strength and weakness of a system.
4. Structural Test
The goal of structural testing is to traverse a specified number of paths through in the
system to establish thoroughness of testing.
DISCUSS DESIGN GUIDELINES
Design is a creative process that can be guided and directed, but it can never be reduced
to an algorithmic procedure.
The following guidelines do not constitute a “design methodology,” but rather provide some
guidance for organizing the activities of software design.
1. Review the requirements specification. In particular, study the desired functional
characteristics and performance attributes of the system.
2. Review and expand the external interfaces, user dialogues, and report formats
developed during requirements analysis.
3. Review and refine the data flow diagrams developed during requirements analysis and
external design. Identify internal data stores and elaborate the processing functions.
4. Identify functional abstractions and data abstractions. Record them using a design
notation.
22
5. Define the visible interfaces for each functional abstraction and each data abstraction.
Record them using a design notation.
6. Define the modularization criteria to be used in establishing system structure.
7. Apply the techniques of your particular design method to establish system structure. For
example, derive the input and output data structures and convert the data structures into
a processing structure that maximizes information hiding, or a structure that enhances the
overlay capabilities or real-time response rate, etc.
8. Verify that the resulting system structure satisfies the requirements.
9. Develop interface specifications for the procedures in each module.
10. Conduct the preliminary design review. The level of detail should be inclusive to levels
1 and 2 of the procedure templates.
11. Develop concrete data representations for the data stores and data abstractions.
12. Expand the procedure templates to include the information in level 3.
13. Specify algorithmic details for the body of each procedure in the system, using
successive refinement, HIPO diagrams, pseudo code, structured English, and/or
structured flowcharts.
Develop concrete data structures and algorithms.
14. Conduct the critical design review.
15. Redesign as necessary
The major difficulties in software design are caused by inadequate requirements, failure
to consider alternative design strategies and the temptation to provide too much detail too
soon. The use of systematic design notations will greatly enhance your thoughts
processes and improve you ability to think about, communicate and verify the design
23
Download