Software design is an iterative process that translates requirements into a blueprint for constructing software. It involves understanding the problem from different perspectives, identifying solutions, and describing solution abstractions using notations. The design must satisfy users and developers by being correct, complete, understandable, and maintainable. During the design process, specifications are transformed into design models describing data structures, architecture, interfaces, and components, which are reviewed before development.
2. Software Design is an iterative process through which
requirements are translated into a 'blueprint' for
constructing the Software.
Software Design means Driving a Solution which satisfies
problem.
Initially, the blue print describes a collective view of the
Software.
3. .
Understanding the problem from different angles:-
Look at the problem from different angles to discover the desired required.
Identify one or more solutions
Evaluate possible solution and choose the most appropriate depending on the
designers experience and available resources.
Describe solution Abstractions
Use graphical , formal and other discreptive notations to describe the components of
the design.
5. Design Methods:-
Structured methods are sets of notations for experessing a software design and
guidelines for creating a design.
Well-known methods include Structured designs that helps to choose an
appropriate method for software development.
Can be applied succesfully because the support standard notations and ensure
design follows a standard form.
6. Method Components:-
• Many methods support a comparable views of the system.
• A data flow view showing a data Transformation
• An entity-relation view describing the logical data Structure.
• A structural view showing system components and there
interactions.
7. Method Deficiencies:-
Different Designers create quite a different system designs.
They do not help much with the early, creative phase of Design
.Rather they help the Designer to structure his/her own design
ideas.
Graphical notations:-Used to display component relationship
Informal text:- Natural Language Description.
10. The design needs to be
1. Correct & Complete.
2. Understandable.
3. Maintainable.
11. • Design Quality
Design quality is an elusive concept. Quality depends on specific
organizational properties.
A “good design” may be the most efficient, the cheapest ,the most
maintainabe ,the most reliable etc.
These attributes are concerned with the maintainability of the
design.
12. Process of Design Engineering:-
During the design process the software specifications are transformed into design
models.
Models describe the details of the data Structure, system architecture, interface and
Components.
Each design product is reviewed for quality before moving to the next phase of
software development.
At the end of the design process a design model and specification module is
produced.
13. Design specification model:-
Data Design - created by transforming the analysis information model into data
strucures required to implement the software. Part of the data design may occur in
conjunction with the design of software architecture. more detailed data design
occurs as each software component is designed.
Architecture Design - defines the relationships among the major structural
elements of the software, the “design patterns” define for the system , and the
constraints that affect the way in which the architectural pattern can be applied. It
is delivered from the system specification, the analysis model, and the subsystem
interactions defined in the analysis model.
• .
14. Design Specification Model
Interface design - describes how the software elements
communicate with each other , with other systems and the uman users; the
data flow and control flow diagrams provide much of the neccessary
informatin required.
Procedural/ Component-level design - created by transforming the
structural elements defined by the software architecture into procedural
descripion of software component using information obtained from the
process specification , control specification and State transitiondiagram.
16. Abstraction
Data Abstraction. - A named collection of data that describes a data object
Procedural Abstraction. - A sequence of instructions that have a specifi c and limited
functionality.
Design Algorithms.
Design different algorithms for different problems.
Adaptability:-
A design is Adaptable if:
-Its components are loosely coupled.
-It is well document and documentation is up to date.
-There is an obvious correspondence between design levels.
- Each component is a self contained entity.
17. Trace-Ability:-
To adapt a design it must be possible to trace the links between the
design components so that change consequences can be analyzed.
18. .
Architecture
The overall structure of the software and the ways in which the structure
provides conceptual inytegrity of the system.
Establish the overall structure of the system.
Consist of components , connectors and the relationship between them.
Architectures are the technical interfaces between the customer and contractor
building the system.
A bad architecture design for the building can not be rescued by good
construction.
There are different styles for building a software architecture.
19. Understandability:-
- Can the component be understood on it's own.
- Are meaningful/understandable names used.
- Is the Design well-documented.
- Are complex algorithms used.
High Complexity means many relationships between
different components of Design.
20. Patterns
A design structure that solves a particular design problem with a specific context.
-It provides a description that enables the designer to determine whether the pattern is applicable ,
whether the pattern can be reused , and whether ythe pattern can serve as a guide for developing
similar patterns.
Modularity
Separately named and addresable copmponents that are integrated to satisfy requirements.
- It makes software intellectually manageable so as to grasp the control paths, number of variables
and overall complexity.
21. Information hiding
The designing of modules so that the algorithms and local data contained within them is
inaccessible to any other module
This inforces constraints to both proscedural details and local data Structures.
Functional Independence
Modules that have a single minded funtion and an aversiion to axcessive interactions with other
modules.
22. Cohession
A measure of how well a component “fits together”.
A component should implement a single logical entity or function.
Cohession is a desirable component attribute as when a change has to be made , it is
localized in a single cohessive part.
There are variable level of cohessions.
High Cohession- A module performs only a single task.
Low Cohession - A module has the lowest amount of connections needed with other
modules.
23. Coupling:-
A measure of the strength of the inter-connections between system components.
Loosely Coupling means that the components are unlikely to affect other
components.
Shared variable are controlled information exchange leadto tight coupling.
Loose coupling can be achieved by state decentralized and components
communication via parameter or message passing.
24. Refactoring:-
A recoganiztion technique that simplifies the design of a component without changing it's
functional or External behaviour.
Removes Redundancy.
unused design elements.
Insufficient or unneccessary Algorithms.
Poorly constructed or inappropriate data Structures
Any other design failure.
25. Pattern based Software Design
Mature engineerring descipline use thousands of design patterns for such things as buildings,
highways , electric circuits, factories, weapon systems, vihicles and computers.
Design patterns also serve a purpose in software engineering.
Architectural Patterns:-
-Define the overall structure of the software.
-Indicate the relationship among the subsystems and software components
-Define the rule for specifying the relation-ships among software elements.
Design Patterns:-
Address a specific element of the design such as an aggregation of components or solve some design
problems , relationship among components, or the mechanism for effecting the inter-component
Communication.
-Consists of creational , structural and behavioral patterns.
Coding Patterns
Describe language specific patterns that implement an alogrithmic or data structure element of a
component, a specific interface protocol or mechanism for communication among components.