software design noun : represents the abstract entity -design- of a system design of an existing...
TRANSCRIPT
![Page 1: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/1.jpg)
![Page 2: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/2.jpg)
Software Design Noun :
Represents the abstract entity -design- of a systemDesign of an existing systemEvery existing system has a designDesign of a system to be constructedDesign is a plan for a solution
Verb :The process of design(ing), which results in a designResulting design is a plan for a solution
![Page 3: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/3.jpg)
Design…Design activity begins with a set of requirementsDesign done before the system is implementedDesign is the intermediate language between
requirements and codeMoving from problem domain to solution domainProceeding from abstract to more concrete
representationsResult is the design to be used for implementing
the system
![Page 4: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/4.jpg)
Design…Design is a creative activityGoal: to create a plan to satisfy
requirementsPerhaps the most critical activity during
system developmentDesign determines the major characteristics
of a systemHas great impact on testing and
maintenanceDesign document forms reference for later
phases
![Page 5: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/5.jpg)
Levels in Design ProcessArchitectural design
Identifies the components needed for the system, their behavior, and relationships
We have already discussed itHigh Level Design
Really is the module view of the systemI.e. what modules are in the system and how
they are organized
![Page 6: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/6.jpg)
Levels..Logic design
Components and modules are designed to satisfy their specs
How to implement componentsAlgorithms for implementing component are
designed
Complete design: the architectural design, the high level design, and Logic design of each component
![Page 7: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/7.jpg)
Design MethodologiesMany possibilities for design, methodologies
aim to reduce search spaceProvide some discipline for handling
complexity Most methodologies deal with high level
designProvide a set of rules for guiding the designerRules do not reduce design to a sequence of
mechanical stepsMany methodologies existDiff. methodologies may be useful for diff.
applications
![Page 8: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/8.jpg)
Design ObjectivesGoal is to find the best possible designHave to explore different designsEvaluation criteria are often subjective and non
quantifiableMajor criteria to evaluate a design
Correctness Efficiency MaintainabilityCost
![Page 9: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/9.jpg)
Correctness is the most fundamentalDoes design implement requirements?Is design feasible, given the constraints?
EfficiencyConcerned with the proper use of scarce
resources - processor & memoryOther factors same, efficiency should be
maximized
![Page 10: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/10.jpg)
MaintainabilityMost important quality criteria Most affected by architectural design Should facilitate testingShould facilitate discovery and correction of bugsMake modifying the system easier
CostFor same quality, minimize costDesign costs are quite smallShould try to minimize cost in later phases
![Page 11: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/11.jpg)
Design PrinciplesDesign is a creative processHow to create a design from abstract
requirementsThere are principles for guiding during designTwo fundamental principles in the design process
Problem partitionAbstraction
![Page 12: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/12.jpg)
Problem PartitioningBasic principle "divide and conquer"Divide the problem into manageably small pieces
Each piece can be solved separatelyEach piece can be modified separatelyPieces can be related to the application
Pieces cannot be independent; they must communicate
Communication adds complexityAs number of components increases, this cost
increasesStop partitioning when cost is more than benefit
![Page 13: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/13.jpg)
Abstraction Necessary for partitioning Used in all engg disciplines (all walks of life) Abstraction of existing components
Represents components as black boxesHides the details, provide external behavior Useful for understanding existing systemsNecessary for using systemsUseful for determining design of existing systems
![Page 14: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/14.jpg)
Abstraction during design processComponents do not exist a prioriTo decide how components interact the designer
specifies the external behavior of componentsAllows concentrating on one component at a timePermits a component to be considered without
worrying about othersAllows designer to control the complexityPermits gradual transition from abstract to concreteNecessary for solving parts separately
![Page 15: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/15.jpg)
Functional AbstractionEmploys parameterized subprogramsSpecifies the functional behavior of a moduleModule is treated as a input/output functionMost languages provide features to support this
(e.g. functions, procedures, …)A functional module can be specified using pre
and post conditions
![Page 16: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/16.jpg)
Data Abstraction An entity in the real world provides some services
to the environment it belongsSimilar is the case of data entitiesCertain operations are required from a data objectThe internals are not of consequenceData abstraction supports this view
Data is treated as a set of pre defined operations Only operations can be performed on the objects Internals are hidden and protected
Modern languages support data abstraction
![Page 17: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/17.jpg)
Top-Down vs Bottom-up Design
Top down design Starts with the system specificationsDefines a module to implement the specsSpecifies subordinate modulesThen treats each specified module as the problemRefinement proceeds till bottom level modules
reachedAt each stage a clear picture of design existsMost natural for handling complex problemsHave been propagated by manyMany design methodologies based on thisFeasibility is not know till the end
![Page 18: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/18.jpg)
Bottom up DesignIn we start by designing bottom modulesBuilding blocks Layers or abstraction or
virtual machinesNecessary if existing modules have to be
reused
Pure top-down or bottom-up is not possibleIn bottom-up must have some idea of the topOften a combination is used
![Page 19: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/19.jpg)
ModularityModularity is the degree to which a system's
components may be separated and recombined.A concept closely tied to abstractionModularity supports independence of modelsModules support abstraction in softwareSupports hierarchical structuring of programsModularity enhances design clarity, eases
implementationReduces cost of testing, debugging and
maintenanceCannot simply chop a program into modules to
get modularlyNeed some criteria for decomposition
![Page 20: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/20.jpg)
CouplingIndependent modules: if one can function
completely without the presence of other Independence between modules is desirable
Modules can be modified separatelyCan be implemented and tested separatelyProgramming cost decreases
In a system all modules cannot be independent
Modules must cooperate with each other More connections between modules
More dependent they are More knowledge about one module is required to
understand the other module. Coupling captures the notion of dependence
![Page 21: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/21.jpg)
Coupling between modules is the strength of interconnections between modules
In general, the more we must know about module A in order to understand module B the more closely connected is A to B
"Highly coupled" modules are joined by strong interconnection
"Loosely coupled" modules have weak interconnections
![Page 22: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/22.jpg)
Goal: modules as loosely coupled as possibleWhere possible, have independent modulesCoupling is decided during architectural
designCannot be reduced during implementationCoupling is inter-module conceptMajor factors influencing coupling
Type of connection between modulesComplexity of the interfaceType of information flow between modules
![Page 23: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/23.jpg)
The complexity and obscurity of interfaces increase coupling
Minimize the number of interfaces per moduleMinimize the complexity of each interface
Coupling is minimized ifOnly defined entry of a module is used by others Information is passed exclusively through parameters
Coupling increases if Indirect and obscure interface are used Internals of a module are directly usedShared variables employed for communication
![Page 24: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/24.jpg)
Coupling increases with complexity of interfaces (eg. number and complexity of parameters)
Interfaces are needed to support required communication
Often more than needed is used (eg. passing entire record when only a field is needed)
Keep the interface of a module as simple as possible
![Page 25: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/25.jpg)
Coupling depends on type of information flowTwo kinds of information: data or control.
Transfer of control information Action of module depends on the information Makes modules more difficult to understand
Transfer of data informationModule can be treated as input-output function
![Page 26: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/26.jpg)
Lowest coupling: interfaces with only data communication
Highest: hybrid interfaces
Coupling Interface complexity
Type of connection
Type of Communication
Low Simple, obvious
to module by name
data
High complicated , obscure
To internal elements
Control or hybrid
![Page 27: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/27.jpg)
Cohesion Cohesion refers to the degree to which the
elements of a module belong together.Coupling characterized the inter-module bondReduced by minimizing relationship between
elements of different modulesAnother method of achieving this is by maximizing
relationship between elements of same moduleCohesion considers this relationshipInterested in determining how closely the elements
of a module are related to each otherIn practice both are used
![Page 28: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/28.jpg)
Cohesion of a module represents how tightly bound are the elements of the module
Gives a handle about whether the different elements of a module belong together
High cohesion is the goalCohesion and coupling are interrelatedGreater cohesion of modules, lower coupling
between moduleCorrelation is not perfect.
![Page 29: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/29.jpg)
Levels of Cohesion There are many levels of cohesion.
Coincidental Logical – conceptually related procedures are grouped together Temporal - aspects of a system are grouped together which are used
during the same phase of execution of a program, i.e. execute close together in time
Communicational - procedures that access the same data are kept together
Sequential - a series of procedures, where one provides input to the next, are kept together
Layer - facilities for providing or accessing a set of services through an API or hardware interface are kept together. There must also be a strict hierarchy in which higher level layers can access only lower-level layers. In other words, the system is effectively divided into layers
Functional - modules which together perform a function (a computation that returns a result and has no side effects) are kept together, and everything else is kept out
Coincidental is lowest, functional is highest Scale is not linear Functional is considered very strong
![Page 30: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/30.jpg)
Determining Cohesion Describe the purpose of a module in a
sentence Perform the following tests
1. If the sentence has to be a compound sentence, contains more than one verbs, the module is probably performing more than one function. Probably has sequential or communicational cohesion.
2. If the sentence contains words relating to time, like "first", "next", "after", "start" etc., the module probably has sequential or temporal cohesion.
![Page 31: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/31.jpg)
3. If the predicate of the sentence does not contain a single specific object following the verb, the module is probably logically cohesive. Eg "edit all data", while "edit source data" may have functional cohesion.
4. Words like "initialize", "clean-up" often imply temporal cohesion.
Functionally cohesive module can always be described by a simple statement
![Page 32: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/32.jpg)
SummaryDesign is a creative activityGoal is to find the best possible designTwo levels in the design processArchitectural design and logic designCorrectness of design is most fundamental
propertyDesign principles
Problem partitioningAbstraction
When using functional abstraction aim forLow couplingHigh cohesion
Design Methodologies - a set of rules/steps to guide the designer
![Page 33: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/33.jpg)
![Page 34: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/34.jpg)
Program Structure and Structure Charts
Every program has a structure Structure Chart - graphic representation of
structure SC represents modules and interconnections Each module is represented by a box If A invokes B, an arrow is drawn from A to B Arrows are labeled by data itemsDifferent types of modules in a SC Input, output, transform and coordinate modules A module may be a composite
![Page 35: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/35.jpg)
SC shows the static structure, not the logicDifferent from flow chartsMajor decisions and loops can be shownStructure is decided during designImplementation does not change structureStructure effects maintainabilityStructured Design Methodology (SDM) aims to
control the structure
![Page 36: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/36.jpg)
SC of a Sort Program
![Page 37: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/37.jpg)
Diff types of modules
![Page 38: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/38.jpg)
Iteration and decision
![Page 39: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/39.jpg)
STRUCTURED DESIGN METHODOLOGY
SDM views software as a transformation function that converts given inputs to desired outputs
The focus of SD is the transformation functionUses functional abstractionGoal of SDM: Specify functional modules and
connectionsLow coupling and high cohesion is the
objective TransformationfunctionsInput Output
![Page 40: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/40.jpg)
Main Steps in SD1. Draw a DFD of the system2. Identify most abstract inputs and most
abstract outputs3. First level factoring4. Factoring of input, output, transform
modules5. Improving the structure
![Page 41: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/41.jpg)
Data Flow DiagramsSD starts with a DFD to capture flow of
data in the proposed systemDFD is an important representation;
provides a high level view of the systemEmphasizes the flow of data through
the systemIgnores procedural aspects(Purpose here is different from DFDs
used in requirements analysis, thought notation is the same)
![Page 42: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/42.jpg)
Drawing a DFGStart with identifying the inputs and outputsWork your way from inputs to outputs, or vice
versaIf stuck, reverse directionAsk: "What transformations will convert the
inputs to outputs"Never try to show control logic.
If thinking about loops, if-then-else, start again
Label each arrow carefullyMake use of * and +, and show sufficient detailIgnore minor functions in the startFor complex systems, make DGF hierarchicalNever settle for the 1st DGF
![Page 43: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/43.jpg)
Step 2 of SD MethodologyGenerally a system performs a basic function Often cannot be performed on inputs directly First inputs must be converted into a suitable
form Similarly for outputs - the outputs produced
by main transforms need further processing Many transforms needed for processing inputs
and outputsGoal of step 2 is to separate such transforms
from the basic transform centers
![Page 44: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/44.jpg)
Example 1 – counting the no of different words in a file
![Page 45: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/45.jpg)
Step 2…Most abstract inputs: data elements in
DFG that are furthest from the actual inputs, but can still be considered as incoming
These are logical data items for the transformation
May have little similarity with actual inputs.
Often data items obtained after error checking, formatting, data validation, conversion etc.
![Page 46: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/46.jpg)
Step 2…Travel from physical inputs towards outputs until
data can no longer be considered incomingGo as far as possible, without loosing the
incoming natureSimilarly for most abstract outputsRepresents a value judgment, but choice is often
obviousBubbles between mai and mao: central
transformsThese transforms perform the basic
transformationWith mai and mao the central transforms can
concentrate on the transformation
![Page 47: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/47.jpg)
Step 2…Problem View: Each system does some i/o
and some processingIn many systems the i/o processing forms
the large part of the codeThis approach separates the different
functionssubsystem primarily performing inputsubsystem primarily performing
transformationssubsystem primarily performing output
presentation
![Page 48: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/48.jpg)
Example 2 – ATM
![Page 49: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/49.jpg)
First Level FactoringFirst step towards a structure chartSpecify a main moduleFor each most abstract input data item,
specify a subordinate input moduleThe purpose of these input modules is to
deliver to main the mai data itemsFor each most abstract output data element,
specify an output moduleFor each central transform, specify a
subordinate transform moduleInputs and outputs of these transform modules
are specified in the DFD
![Page 50: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/50.jpg)
First level factoring is straight forwardMain module is a coordinate moduleSome subordinates are responsible for
delivering the logical inputsThese are passed to transform modules to get
them converted to logical outputsOutput modules then consume themDivided the problem into three separate
problemsEach of the three diff. types of modules can be
designed separatelyThese modules are independent
![Page 51: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/51.jpg)
Example 1
![Page 52: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/52.jpg)
Example 2
![Page 53: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/53.jpg)
Factoring Input modulesThe transform that produced the mai data is
treated as the central transformThen repeat the process of first level factoringInput module being factored becomes the
main moduleA subordinate input module is created for
each data item coming in this new central transform
A subordinate module is created for the new central transform
Generally there will be no output modules
![Page 54: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/54.jpg)
The new input modules are factored similarly Till the physical inputs are reached
Factoring of the output modules is symmetricalSubordinates - a transform and output modulesUsually no input modules
![Page 55: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/55.jpg)
Example 1
![Page 56: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/56.jpg)
Factoring Central TransformsFactoring i/o modules is straight forward if the
DFD is detailedNo rules for factoring the transform modulesTop-down refinement process can be usedGoal: determine sub-transforms that will together
compose the transformThen repeat the process for newly found
transformsTreat the transform as a problem in its own rightDraw a data flow graphThen repeat the process of factoringRepeat this till atomic modules are reached
![Page 57: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/57.jpg)
Example 1
![Page 58: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/58.jpg)
Design HeuristicsThe above steps should not be followed blindlyThe structure obtained should be modified if
neededLow coupling, high cohesion being the goalDesign heuristics used to modify the initial designDesign heuristics - A set of thumb rules that are
generally usefulModule Size: Indication of module complexity
Carefully examine modules less than a few lines or greater than about 100 lines
Fan out and fan inA high fan out is not desired, should not be
increased beyond 5 or 6Fan in should be maximized
![Page 59: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/59.jpg)
Scope of effect of a module: the modules affected by a decision inside the module
Scope of control: All subordinates of the module
Good thumb rule: For each module scope of effect should be a subset of scope of control
Ideally a decision should only effect immediate subordinates
Moving up the decision, moving the module down can be utilized to achieve this
![Page 60: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/60.jpg)
Transaction AnalysisThe above approach is transform analysisIn this data flows from input to output through
various transformsIn transaction processing type situations,
many different types of processing are done depending on type
The DFD of such a system shows a bubble splitting data into many streams
In execution, one of the streams is followedTransaction analysis is best for this
![Page 61: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/61.jpg)
DFD shown in figureNote the use of + signifying ORThere is a transaction center, TT takes input & then performs different
transformationsThis can be converted to SC as shownIn smaller systems, dispatching may be done
in the transaction center itself
![Page 62: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/62.jpg)
DFD for transaction analysis
![Page 63: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/63.jpg)
Transaction analysis…
![Page 64: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/64.jpg)
SummaryGoal of design phase: produce simpler & modular
designStructured design methodology is one way to create
modular designIt partitions the system into input subsystems, output
subsystems & transform subsystemsIdea: Many systems use a lot of code for handling
inputs & outputs SDM separates these concernsThen each of the subsystems is factored using the DFDThe design is finally documented & verified before
proceeding
![Page 65: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/65.jpg)
Detailed DesignHLD does not specify module logicThis is done during detailed designProcess Design Logic (PDL) can also be used for
detailed design of modulesPDL can be used to specify the complete design
- architectural as well as logic designThe degree of detail desired is decided by the
designerOne way to communicate a design: use natural
languageIs imprecise and can lead to misunderstanding
![Page 66: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/66.jpg)
Other extreme is to use a formal language Such representations often have a lot of
detail,necessary for implementation, butnot important for communicating the design
These details are often a hindrance to understanding
![Page 67: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/67.jpg)
Ideally would like a language that isas precise as possibleDoes not need too much detail,target language independent can be easily converted in to an implementation
This is what PDL attempts to do. PDL has outer syntax of a structure
programming language Vocabulary of a natural language (English in
our case) It can be thought as "structured english" Some automated processing can be done on
PDL
![Page 68: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/68.jpg)
E.g.. determine the min and max of a set of numbers in a file
A design in PDL is:minmax (in file)ARRAY a
DO UNTIL end of input READ an item into a
ENDDOmax, min: = first item of a DO FOR each item in a
IF max < item THEN set max to itemIF min > item THEN set min to item
ENDDO END
![Page 69: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/69.jpg)
The entire logic is describedFew implementation detailsFor implementation, the pseudo statements
will have to beconverted into programming language statements
A design can be expressed in level of detailsuitable for the problem
PDL allows a successive refinement approachEncourages use of structured language
constructs
![Page 70: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/70.jpg)
The basic constructs of PDL
if-then-else construct Like PascalConditions and the statements need not be
stated formally
A general CASE statementSome examples of CASE
CASE OF transaction typeCASE OF operator type
The DO construct: used to indicate repetitionDO iteration criteriaone or more statementsENDDO
![Page 71: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/71.jpg)
The iteration criteria need not be stated formally
Examples of valid use are:DO WHILE there are characters in input fileDO UNTIL the end of file is reachedDO FOR each item in the list EXCEPT when item is
zero.
A variety of data structures can be defined Eg. list, tables, scalar, records, arrays etc. All constructs should be programmable
![Page 72: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/72.jpg)
Design VerificationMain objective: does the design implement
the requirementsAnalysis for performance, efficiency, etc may
also be doneIf formal languages used for design
representation, tools can helpDesign reviews remain the most common
approach for verification
![Page 73: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/73.jpg)
![Page 74: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/74.jpg)
BackgroundBasic purpose to provide a quantitative
evaluation of the design (so the final product can be better)
Size is always a metric – after design it can be more accurately estimatedNumber of modules and estimated size of each
is one approach
Complexity is another metric of interest – will discuss a few metrics
![Page 75: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/75.jpg)
Network MetricsFocus on structure chart; a good SC is
considered as one with each module having one caller (reduces coupling)
The more the SC deviates from a tree, the more impure it is
Graph impurity = n – e – 1n – nodes, e- edges in the graph
Impurity of zero means tree; as this number increases, the impurity increases
![Page 76: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/76.jpg)
Stability MetricsStability tries to capture the impact of a
change on the designHigher the stability, the better it isStability of a module – the number of
assumptions made by other modules about this moduleDepends on module interface, global data the
module usesAre known after design
![Page 77: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/77.jpg)
Information Flow MetricsComplexity of a module is viewed as
depending on intra-module complexityIntramodule estimated by module size and
the information flowingSize in LOCInflow – info flowing in the moduleOutflow – info flowing out of the module
Dc = size * (inflow * outflow)2
![Page 78: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/78.jpg)
Information flow metrics…(inflow * outflow) represents total
combination of inputs and outputsIts square reps interconnection between the
modulesSize represents the internal complexity of the
moduleProduct represents the total complexity
![Page 79: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/79.jpg)
Identifying error-prone modulesUses avg complexity of modules and std dev
to identify error prone and complex modules:Error prone: If Dc > avg complexity + std_devComplex: If avg complexity < Dc < avg + std devNormal: Otherwise
![Page 80: Software Design Noun : Represents the abstract entity -design- of a system Design of an existing system Every existing system has a design Design of a](https://reader037.vdocuments.us/reader037/viewer/2022110101/56649e755503460f94b7682b/html5/thumbnails/80.jpg)
Metrics with detailed designWhen logic is known, internal complexity
metrics can be determinedWe will cover all detailed design based
metrics along with code metrics