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

5 New

Uploaded by

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

5 New

Uploaded by

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

CH.

05 : DESIGN CONCEPTS

INTRODUCTION -
Software design is a process through which requirements are translated into a
blueprint for constructing the software.

Software design encompasses the set of principles, concepts, and practices that lead
to the development of a high-quality system or product.

"both a process of defining the architecture, components, interfaces and other


characteristics of a system or component and the result of that process".

Software design serves as the foundation for all the software engineering and
software support activities that follow.

DESIGN PROCESS -
The design process comprises a set of principles, concepts and practices, which allow
a software engineer to model the system or product that is to be built.

Software design is an iterative process through which requirements are translated


into a “blueprint” for constructing the software. Initially, the blueprint depicts a
holistic view of software.

EVOLUTION OF SOFTWARE DESIGN -


Software evolution is a term which refers to the process of developing software
initially, then timely updating it for various reasons, i.e. to add new features or to
remove obsolete functionalities etc.

In software engineering, software evolution is referred to as the process of


developing,
maintaining and updating software for various reasons.

Some of these factors include:


1. Requirement changes.
2. Environment changes.
3. Errors or security breaches.
4. New equipment added or removed.
5. Improvements to the system.

Software design usually involves problem solving and planning a software solution.

The design concepts provide the software designer with a foundation from which
more sophisticated methods can be applied.

ABSTRACTION -
The concept of abstraction can be used in two ways, as a process and as an entity.

As a process, it refers to a mechanism of hiding irrelevant details and representing


only the essential features of an item.

As an entity, it refers to a model or view of an item.

Three widely used abstraction mechanisms in software design are functional


abstraction, data abstraction, and control abstraction.

1. Functional abstraction is a named sequence of instructions that has a specific and


limited function.

2.Data abstraction is a named collection of data that describes a data object.

3. Control abstraction implies a program control mechanism without specifying


internal details.

ARCHITECTURE -
The complete structure of the software, which is composed of various components of
a system, the attributes of those components and the relationship amongst them is
called software 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.

The software architecture enables the software engineers to analyze the software
design efficiently.
it also helps them in decision-making and handling risks.

PATTERNS -
A pattern is nothing but the reusable solution which provides a description of the
solution to a recurring design problem of some specific domain in such a way that the
solution can be used again and again.

TYPES OF DESIGN PATTERNS -


1.Architectural Patterns -
These patterns are high-level strategies that refer to the overall structure and
organization of a software system. They define the elements of a software system such
as subsystems, components, classes, etc.

2. Design Patterns: These patterns are medium-level strategies that are used to solve
design problems.

3. Idioms: These patterns are low-level patterns, which are programming-language


specific. They describe the implementation of a software component, the method used
for interaction among software components, etc.,

SEPARATION OF CONCERNS -
Separation of concerns is a design concept for separating a computer program into
distinct sections such that each section addresses a separate concern.

A concern is a set of information that affects the code of a computer program.

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.

MODULARITY -
“modularity is the single attribute of software that allows a program to be
intellectually manageable”

In software design, modularity refers to a logical partitioning of the "software


design" that allows complex software to be manageable for the purpose of
implementation and maintenance.
INFORMATION HIDING -
Information hiding is a fundamental design concept for software.

'the technique of encapsulating software design


decisions in modules in such a way that the module's interfaces reveal as little as
possible about the module's inner workings; thus each module is a 'black box' to the
other modules in the system'.

In short, the way of hiding unnecessary details is referred to as information hiding.

FUNCTIONAL INDEPENDENCE -
Functional independence is defined as, a direct improvement or enhancement to the
concepts modularity abstraction and information hiding.

Functional independence is a key to good design, and design is the key to software
quality.

Independence is assessed using following two qualitative criteria:


1. Cohesion:
Cohesion is an indication of relative function strength of a module. A cohesive module
performs a single task, requiring little interaction with other components in other
parts of program

2. Coupling:
Coupling is an indication of the relative interdependence among modules. Coupling
depends on the interface complexity between modules, the point at which entry or
reference is made to module and what data passes across the interface.

REFINEMENT -
Refinement is the process of elaboration. A hierarchy is developed by decomposing a
macroscopic statement of function in a step-wise fashion until programming
language statements are reached.

Stepwise refinement is a top-down design strategy used for decomposing a system


from a high level of abstraction into a more detailed level (lower level) of abstraction.

An aspect of a program is a feature linked to many other parts of the program, but
which is not related to the program's primary function.

REFACTORING -
• Refactoring is an important design concept that reduces the complexity of module
design keeping its behavior or function unchanged.

Refactoring can be defined as a process of modifying a software system to improve the


internal structure of design without changing its external behavior.

OBJECT ORIENTED DESIGN CONCEPTS -


the Object-Oriented (OO) paradigm is widely used in modern software engineering.
Object-oriented concepts are used in the design methods such as classes, objects,
polymorphism, encapsulation, inheritance, dynamic binding, information
hiding, interface and so on.

To understand object-oriented analysis, the following concepts must be known:


1. Object is an instance of a class. It is used to describe the real-world entity.

2. Class is a collection of similar objects.

3. Attribute is a collection of data values which describe the state of an object.

4. Operation are also known as method and service. Provides a means to modify the
state of the class.

5. Inheritance is the process in which an object inherits some or all the features of a
super class.

6. Polymorphism is an ability of objects to be used in more than one form. The main
advantage of object oriented design is that improving the software development and
maintainability.

The main advantage of object oriented design is that improving the software
development and maintainability. Another advantage is that faster and low cost
development, and creates a high quality software.

The disadvantage of the object-oriented design is that larger program size and it is
not suitable for all types of program.

DEPLOYMENT-LEVEL DESIGN ELEMENT -


Deployment-level design elements indicate how software functionality and
subsystems will be allocated within the physical computing environment that will
support the software.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy