0% found this document useful (0 votes)
40 views

Software Design Fundamentals

This document defines software design and discusses its key aspects. It begins by defining software design as taking a specification and adding implementation details like user interaction and data management. Software design involves problem solving by partitioning information between the problem and solution domains. There are static and dynamic design models to represent different aspects of a system. Modular design with well-defined interfaces between independent and conceptually simple modules is emphasized as important for understandability, documentation, testing and flexibility.

Uploaded by

Jeyc Rapper
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
40 views

Software Design Fundamentals

This document defines software design and discusses its key aspects. It begins by defining software design as taking a specification and adding implementation details like user interaction and data management. Software design involves problem solving by partitioning information between the problem and solution domains. There are static and dynamic design models to represent different aspects of a system. Modular design with well-defined interfaces between independent and conceptually simple modules is emphasized as important for understandability, documentation, testing and flexibility.

Uploaded by

Jeyc Rapper
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Software Design

Definitions
• Coad & Yourdon
– Software design is the practice of taking a
specification of externally observable behaviour
and adding details needed for actual computer
system implementation including human
interaction, task management and data
management details.
Webster
design is an information base that describes
aspects of this object, and the design process
can be viewed as successive elaboration of
representation, such as adding more
information or an even backtracking and
exploring alternatives.
Software design as a problem solving

• It suggests that information may be


partitioned between the problem and the
solution.
• Many reasonable designs.
Software design models
• Static models
– Represents aspects of software systems that do
not change during execution.
– These models represents software components,
their characteristics, and relationship between
software components.
– E.g class diagrams, data structures pictures,
implementation diagrams.
Dynamic models
• These models show that what happens during
software execution.
• E.g interaction diagrams, state-charts, data
flow diagrams, decision trees and tables, etc.
Software design strategy
• Understand the problem
• Generate potential solutions to the problem.
• Pick the best one.
• If the best solution is in-adequate, repeat the
step 2.
• Finalize the solution, with documentation.
General design problem
• Analyze the problem.
• Generate/refine the design.
• Evaluate the design
• Review the design.
Software design process
• Interface design
• Architecture design
• Detailed design.
User interface design includes:
• Specification of user inputs (from the mouse,
keyboard etc.)
• User outputs. (sounds, windows and their
contents)
• Valid sequences of user inputs and outputs
• How system features are controlled and
monitored by user input and outputs.
Architectural design
• Decomposition of the system into major
components.
• Allocation of functional responsibilities to
components.
• Component interfaces
• Component scaling.
• Communication and interaction b/w
components.
Detailed design
• Decomposition of major system components
into program units.
• Allocation of functional responsibilities to
units.
• Unit interfaces.
• Data and control interactions.
• Unit packaging and implementation.
• Algorithms and data structures.
Software design process failures
• Non – conformance to user needs and design
constraints.
• Inadequate design documentation
• Workable but poor design
Good design V/s Bad design
Characteristics Good Design Bad Design

Change Does not require changes b/w parts Affects the other part

Logic Each piece of logic has one home Can be duplicated

Nature Simple Complex

Cost Small Very high

Extension Can be extended Can’t

Link Logic link can easily be found Can’t be remembered


Concept of a module
• Software systems are decomposed into
several major large parts.
• These parts further contains smaller parts, and
those of even smaller parts.
• A module is a software component with parts,
at any level of abstraction.
• In other words a system is a module whose
parts are its architectural components.
Modularity
• Modularity is probably the single most
important characteristic of a well designed
software system.
• A system is modular if it is composed of well-
defined, conceptually simple and independent
units interacting through well-defined
interfaces.
Advantage of modular system
• Modular systems are easier to understand and
explain because their parts make sense and can
stand on their own.
• M S are easier to document.
• Programming individual modules is easier bcz the
programmer can focus on just one small, simple
problem.
• Testing and debugging is very easy.
• Bugs are easy to isolate and understand.
Module coupling
• Coupling is a property of a collection of
modules.
• Alternatively, coupling is a measure of the
degree of independence between modules.
• When there is a little interaction b/w modules,
they are said to be loosely coupled
• Other wise more interaction, means tightly
coupled.
Types of modules coupling
• No direct coupling
• Data coupling
• Stamp coupling
• Control coupling
• Common coupling
• Content coupling

You might also like