Software Design (Finals) Flashcards
(48 cards)
a mechanism to transform user requirements into some suitable
form, which helps the programmer in software coding and implementation.
Software design
It deals
with representing the client’s requirement, as described in SRS
Software design
Objectives of Software Design
Correctness
Completeness
Efficiency
Flexibility
Consistency
Maintainability
are concerned with providing means to handle the complexity of the design process effectively.
Software design principles
the goal is to divide the problem into manageable pieces.
Problem Partitioning
Two Types of Abstraction
Functional Abstraction
Data Abstraction
The Software Design Principles
Problem Partitioning
Abstraction
Modularity
Top-down and Bottom-up Approach
achieved by developing
functions that perform only one kind of task and do not excessively interact with other modules.
Functional Independence
a tool that enables a designer to consider a component at an
abstract level without bothering about the internal details of the implementation.
Abstraction
The details of the algorithm to accomplish the functions are not visible to the
user of the function.
* Functional abstraction forms the basis for Function oriented design approaches.
Functional Abstraction
specifies to the division of software into separate modules which are
differently named and addressed and are integrated later on in to obtain the
completely functional software.
Modularity
Details of the data elements are not visible to the users of data. It forms the basis for Object Oriented design approaches.
Data Abstraction
only property that allows a program to be intellectually manageable.
Modularity
It measures the relative function strength of a module.
Cohesion
It measures the relative interdependence among modules.
Coupling
suggests that modules
can be characterized by the design decisions that protect from the others, i.e., In other words, modules should be specified that data include within a module is inaccessible to other modules that do not need for such information.
Information hiding
2 Strategy of Design
Top-down Approach
Bottom-up Approach
explains a system’s core ideas and characteristics with respect to its relationships, environment, and other design principles.
Software architecture
Additional Software Design Principles
- DRY (Don’t Repeat Yourself)
- Encapsulation Principle
- Principle of Least Astonishment (PoLA)
- You Aren’t Gonna Need It (YAGNI)
- Keep It Simple, Stupid (KISS)
Different Architectural Patterns
Event Driven Architecture
Client-Server Architecture
Layered Pattern
Microservices
Monolithic
MV* Pattern
- Defines the high-level structure and organization of a software system.
- focus on the system’s macro-level aspects
and establish a framework for the design and implementation of the entire
application.
Software Architecture Pattern
An older approach where all components of an application are tightly integrated into a single codebase and are deployed together. While less common now, it’s still seen in some legacy systems.
Monolithic
Structures applications as a collection of small, independently deployable services, enabling scalability and rapid development. Common in cloud-based systems.
Microservices
It is an umbrella term that encompasses variants of this architecture pattern, and they differ in terms of the type and level of coupling between the components.
MV* Pattern