MODELING - SYSTEM DESIGN, DESIGN PROCESS, DESIGN CONCEPTS AND DESIGN MODEL Flashcards

1
Q

How does one transalate the requirements model into the design model?

A
  1. This process involves converting the high-level specifications and functional requirements outlined in the requirements model into a detailed design that can be implemented.
  2. The translation process may vary depending on the development methodology and the specific characteristics of the project.
  3. Additionally, using modeling tools and notations (such as UML) can aid in the visualization and communication of the design model.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are the Software Design Objectives?

A
  1. Correctness,
  2. Completeness,
  3. Efficiency,
  4. Flexibility,
  5. Consistency,
  6. Maintainability.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Exaplain the Design Process.

A

1.Involves the systematic and creative application of design principles and techniques to transform requirements into a solution that meets the specified objectives,
2. Crucial phase that bridges the gap between the conceptualization of a system and its actual implementation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Talk about the Desing Concept - Abstraction.

A

Definition: Abstraction involves simplifying complex systems by modeling classes based on essential characteristics and ignoring unnecessary details. It allows developers to focus on relevant aspects without being overwhelmed by the intricacies of the entire system.
Application: Abstraction is applied through the use of abstract classes, interfaces, and high-level design models that provide a simplified view of the system’s functionality.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Talk about the Desing Concept - Architecture.

A

Definition: Architecture refers to the overall structure and organization of a software system. It involves high-level decisions on how components will interact, the system’s behavior, and the distribution of responsibilities.
Application: Designing a system with a well-defined architecture ensures scalability, maintainability, and the alignment of the software with business goals.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Talk about the Desing Concept - Patterns.

A

Definition: Design patterns are reusable solutions to common problems in software design. They represent best practices that have evolved over time and provide templates for solving recurring design challenges.
Application: Patterns, help create maintainable and modular systems by providing tested and proven solutions to specific design issues.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Talk about the Desing Concept - Separation of Concerns.

A

Definition: This principle advocates dividing a system into distinct modules or layers, each responsible for a specific concern. It helps manage complexity by isolating different aspects of the software.
Application: In practice, this could mean separating the user interface from business logic and data storage, allowing each component to be developed, tested, and maintained independently.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Talk about the Desing Concept - Modularity.

A

Definition: Modularity involves breaking down a system into smaller, independent, and interchangeable components. Each module should have a specific and well-defined set of responsibilities.
Application: Modularity enhances reusability and maintainability. It allows developers to work on different modules simultaneously, and changes to one module have minimal impact on others.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Talk about the Desing Concept -Sizing Modules

A

Definition: This concept involves determining the size and scope of modules within a system. The two views refer to the perspective of the end-users and the perspective of developers, each influencing module size.
Application: Balancing user needs and developer considerations helps in creating modules that are both functional for end-users and manageable for development teams.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Talk about the Desing Concept - Information Hiding

A

Definition: Information hiding involves restricting access to certain details of a module or object and exposing only what is necessary for external interactions.
Application: This concept enhances security, reduces complexity, and allows for changes in the internal implementation without affecting the external interfaces.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Talk about the Desing Concept -Functional Independence (Encapsulation)

A

Definition: Encapsulation involves bundling data and methods that operate on the data into a single unit, promoting information hiding and enhancing security.
Application: By encapsulating functionalities, developers can control access to data, limit unintended side effects, and create more modular and maintainable code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Explaing what is Cohesion and Coupling and how high cohesion and low coupling are essential design concepts as well.

A

Cohesion: Cohesion refers to the degree to which elements within a module or component belong together. It measures how closely the responsibilities of a module are related to each other.
Coupling: Coupling is the degree of dependence between different modules or components in a system. It measures how much one module relies on another.
Relationship: High cohesion ensures that each module has a well-defined purpose, making it more understandable and maintainable. Low coupling ensures that modules are independent and can be modified with minimal impact on other parts of the system, promoting flexibility and ease of change.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Talk about the Desing Concept -Stepwise Refinement.

A

Definition: Stepwise refinement is an iterative approach to system design where a high-level design is successively refined into more detailed and specific designs.
Application: Starting with a broad view of the system and gradually refining it helps manage complexity and ensures that each level of design is well thought out before moving on to the next.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Talk about the Desing Concept - Design Classes

A

Definition: Design classes involve creating class structuresthat represent the key components and entities in a system, considering attributes, methods, and relationships.
Application: Well-designed classes form the building blocks of a system, promoting modularity, reusability, and maintainability.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Talk about the Desing Concept -Refactoring

A

Definition: Refactoring is the process of restructuring existing code without changing its external behavior. It aims to improve code quality, maintainability, and readability.
Application: Regularly refactoring code helps address technical debt, improves design, and ensures that the codebase remains flexible and adaptable to changing requirements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Talk about the Desing Concept - Dependency Inversion

A

Definition: Dependency inversion is a design principle that suggests high-level modules should not depend on low-level modules; both should depend on abstractions. It promotes flexibility and ease of change.
Application: Dependency inversion is often implemented through dependency injection, allowing for the injection of dependencies from higher-level modules.

17
Q

Talk about the Desing Concept -Don’t Repeat Yourself (DRY)

A

Definition: The DRY principle states that code duplication should be avoided. Instead, common functionalities or pieces of information should be abstracted and reused.
Application: Following DRY** reduces redundancy, promotes consistency, and simplifies maintenance**. It encourages the creation of reusable components and functions.

18
Q

Talk about the Desing Concept -Single Responsibility

A

Definition: The Single Responsibility Principle (SRP) states that a class should have only one reason to change, meaning it should have only one responsibility or job.
Application: Designing classes with a single responsibility** enhances code clarity, maintainability, and flexibility**. Each class becomes focused on a specific task, making it easier to understand and modify.

19
Q

What is Design Model in software development?

A
  1. Representation of the system’s architecture, components, and their interactions, created during the design phase of the software development life cycle.
  2. Serves as a blueprint for the construction of the actual system and helps in visualizing, communicating, and documenting the design decisions.
20
Q

How can one represent the Design Model?

A
  1. UML Diagrams
  2. Data Flow Diagrams (DFD’s)
  3. Entity-Relationship Diagrams (ERD’s)