5 New
5 New
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.
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 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.
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.
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.
2. Design Patterns: These patterns are medium-level strategies that are used to solve
design problems.
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.
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”
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.
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.
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.
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.