0% found this document useful (0 votes)
22 views20 pages

Design

Uploaded by

Jayaraj Joshi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views20 pages

Design

Uploaded by

Jayaraj Joshi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

Design process

&
Design concepts
Design process
• Design is the place where software quality is established. The design
process moves from a “big picture” view of software that defines the detail
required to implement a system.

evaluation of a good design:


• The design must implement all of the explicit requirements contained in
the requirements model, and it must accommodate all of the implicit
requirements desired by stakeholders.
• The design must be a readable, understandable guide for those who
generate code and for those who test and subsequently support the
software.
• The design should provide a complete picture of the software, addressing
the data, functional, and behavioural domains from an implementation
perspective.
• Design quality can be evaluated by FURPS—functionality, usability,
reliability, performance, and supportability.
Design concepts

• software design concepts can be describe below


1. Abstraction
two abstraction:
procedural : A procedural abstraction refers to a
sequence of instructions that have a specific and
limited function.
data abstractions.
A data abstraction is a named collection of data that
describes a data object.
Design concepts
• Architecture: Architecture is the structure or organization of
program components (modules), the manner in which these components
interact, and the structure of data that are used by the components.
Properties of architectural design:
• Structural properties.
• Extra-functional properties.
• Families of related systems.
Design concepts
• Patterns:
In object-oriented idioms, the pattern is a problem solving
technique by assigning some or specific responsibilities on an
object.
The intent of each design pattern is to provide a description that
enables a designer to determine
• Whether the pattern is applicable to the current work,
• Whether the pattern can be reused (hence, saving design
time), and
• Whether the pattern can serve as a guide for developing a
similar, but functionally or structurally different pattern.
Design concepts
• Separation of Concerns:Separation of
concerns is a design concept that suggests that
any complex problem can be more easily
handled if it is subdivided into pieces that can
each be solved and/or optimized
independently.
Design concepts
• Modularity :
Software is divided into separately named and addressable components,
sometimes called modules, which are integrated to satisfy problem
requirements.
Design concepts
• Information Hiding :The principle of information hiding suggests that
modules be “characterized by design decisions that (each) hides from all
others.” In other words, modules should be specified and designed so that
information (algorithms and data) contained within a module is
inaccessible to other modules that have no need for such information.
• Functional Independence :Independence is assessed using two qualitative
criteria: cohesion and coupling. Cohesion is an indication of the relative
functional strength of a module. Coupling is an indication of the relative
interdependence among modules. High Cohesion: High cohesion means
assigning only one or less responsibility to an object so that it can be re-
useable in many other systems also. Low Coupling: Low coupling means
less number of relations to other object (less dependency) that helps to
isolate the object as re-usable component
Design concepts
• Refinement :A hierarchy is developed by decomposing a macroscopic
statement of function (a procedural abstraction) in a stepwise fashion until
programming language statements are reached. Refinement is actually a
process of elaboration. And opposite of abstraction.

• Aspects :aspect—a module that enables the concern to be implemented


across all other concerns that it crosscuts.
• Refactoring :refactoring is a reorganization technique that simplifies the
design (or code) of a component without changing its function or
behavior.
Design Model

Object oriented analysis and object oriented


design(OOA & OOD)
• Analysis: Analysis emphasizes an investigation of the problem and
requirements, rather than a solution. For example, if a new computerized library
information system is desired, how will it be used?

• Object-oriented analysis: During object-oriented analysis, there is an emphasis on


finding and describing the objects—or concepts—in the problem domain Essential
use cases: They are created during early stage of eliciting the requirements and
independent of the design decisions. For example:

•Design: Design emphasizes a conceptual solution that fulfils the requirements,


rather than its implementation
• Object-oriented design: During object-oriented design, there is an emphasis on
defining software objects and how they collaborate to fulfil the requirements.
Design Model
Design Model
• Architectural Design :The architectural design for
software is the equivalent to the floor plan of a house that
give us the overall view of the building.
• 1. Data-centred architectures:
Design Model

• Data-flow architectures:
Design Model
• Call and return architectures.
• Main program/subprogram architectures. This classic program structure
decomposes function into a control hierarchy where a “main” program invokes a
number of program components that in turn may invoke still other components.
Design Model

• Object-oriented architectures: The


components of a system encapsulate data and
the operations that must be applied to
manipulate the data. Communication an
coordination between components are
accomplished via message passing.
Design Model
• Layered architectures:
Interface Design

A. User Interface (UI) design :User interface design creates an effective


communication medium between a human and a computer. Three
important principles guide the design of effective user interfaces:
(1) place the user in control
(2) reduce the user’s memory load, and
(3) make the interface consistent.
Interface Design
B. Interface design evaluation
Component Level Design

• A component is a modular building block for computer software that


encapsulates implementation and exposes a set of interfaces.
• The component-level design for software fully describes the internal detail
of each software component. To accomplish this, the component-level
design defines data structures for all local data objects and algorithmic
detail for all processing

Component diagram
Deployment Level Design

• Deployment-level design elements indicate how software functionality


and subsystems will be allocated within the physical computing
environment that will support the software.
• A deployment diagram shows a set of nodes and their relationships. They
show the configuration of run-time processing nodes and the components
that live on them. Use deployment diagrams to model the static
deployment view of a system or architecture.

You might also like