Podcast
Questions and Answers
What is the primary purpose of software design?
What is the primary purpose of software design?
Which document is created to assess user requirements in the software design process?
Which document is created to assess user requirements in the software design process?
What is the highest level of software design abstraction?
What is the highest level of software design abstraction?
How does high-level design differ from architectural design?
How does high-level design differ from architectural design?
Signup and view all the answers
What is NOT a result from the software design process?
What is NOT a result from the software design process?
Signup and view all the answers
What characterizes the detailed design phase of software design?
What characterizes the detailed design phase of software design?
Signup and view all the answers
In which phase of the SDLC does software design occur?
In which phase of the SDLC does software design occur?
Signup and view all the answers
What is the nature of the software design process?
What is the nature of the software design process?
Signup and view all the answers
What does cohesion measure in a software module?
What does cohesion measure in a software module?
Signup and view all the answers
What is the ideal characteristic of coupling in a well-designed program?
What is the ideal characteristic of coupling in a well-designed program?
Signup and view all the answers
What is the purpose of design verification in the software development process?
What is the purpose of design verification in the software development process?
Signup and view all the answers
Which of the following is NOT a characteristic of a good software design?
Which of the following is NOT a characteristic of a good software design?
Signup and view all the answers
What is one of the key outputs of the software design process?
What is one of the key outputs of the software design process?
Signup and view all the answers
Which method is mentioned for verifying the output of the design phase when formal notation is not used?
Which method is mentioned for verifying the output of the design phase when formal notation is not used?
Signup and view all the answers
Why is it important to review design outputs early in the development process?
Why is it important to review design outputs early in the development process?
Signup and view all the answers
What quality guideline is essential for evaluating a good software design?
What quality guideline is essential for evaluating a good software design?
Signup and view all the answers
What is a characteristic of a well-designed software system?
What is a characteristic of a well-designed software system?
Signup and view all the answers
Which principle emphasizes the logical partitioning of software into elements?
Which principle emphasizes the logical partitioning of software into elements?
Signup and view all the answers
What does the FURPS acronym represent in software design?
What does the FURPS acronym represent in software design?
Signup and view all the answers
Which of the following attributes assesses the security of a software system?
Which of the following attributes assesses the security of a software system?
Signup and view all the answers
Which principle is focused on ensuring a software design can be easily extended and adapted?
Which principle is focused on ensuring a software design can be easily extended and adapted?
Signup and view all the answers
What is a key feature of a modular design in software?
What is a key feature of a modular design in software?
Signup and view all the answers
Which quality attribute measures response time and processing speed?
Which quality attribute measures response time and processing speed?
Signup and view all the answers
What characteristic do effective software design interfaces possess?
What characteristic do effective software design interfaces possess?
Signup and view all the answers
How can modularity be achieved in design?
How can modularity be achieved in design?
Signup and view all the answers
What is the purpose of employing abstract context interfaces?
What is the purpose of employing abstract context interfaces?
Signup and view all the answers
Which principle focuses on achieving conceptual integrity?
Which principle focuses on achieving conceptual integrity?
Signup and view all the answers
What facilitates intellectual control in design?
What facilitates intellectual control in design?
Signup and view all the answers
What does the principle of malleable designs entail?
What does the principle of malleable designs entail?
Signup and view all the answers
How can visibility of designs be partially achieved?
How can visibility of designs be partially achieved?
Signup and view all the answers
What is a consequence of poor modular design?
What is a consequence of poor modular design?
Signup and view all the answers
What is the main goal of abstracting a unit’s behavior in design?
What is the main goal of abstracting a unit’s behavior in design?
Signup and view all the answers
What is the primary purpose of modularization in software design?
What is the primary purpose of modularization in software design?
Signup and view all the answers
Which of the following is NOT a benefit of modularization?
Which of the following is NOT a benefit of modularization?
Signup and view all the answers
In software design, what is meant by 'concurrency'?
In software design, what is meant by 'concurrency'?
Signup and view all the answers
Which statement correctly describes coupling in software design?
Which statement correctly describes coupling in software design?
Signup and view all the answers
What is meant by 'high cohesion' in the context of modular design?
What is meant by 'high cohesion' in the context of modular design?
Signup and view all the answers
Which design technique is briefly described by the phrase ‘divide and conquer’?
Which design technique is briefly described by the phrase ‘divide and conquer’?
Signup and view all the answers
Which characteristic is NOT typically associated with modular systems?
Which characteristic is NOT typically associated with modular systems?
Signup and view all the answers
What is the function of an application framework in software design?
What is the function of an application framework in software design?
Signup and view all the answers
Study Notes
Software Design
- Software design is a process to transform user requirements into a format programmers can use for coding and implementation.
- The output of the software design process can be directly implemented using programming languages.
- Software design is the first step of the SDLC (Software Development Life Cycle) and focuses on moving from the problem domain to the solution domain.
- It attempts to specify how to fulfill the requirements mentioned in the SRS (Software Requirements Specification).
Software Design Levels
- Architectural Design: The highest level of abstraction in software design. It identifies the system as a collection of components interacting with each other. Gives an overall idea of the proposed solution domain.
- High-Level Design: Breaks down the 'single entity-multiple component' concept of architectural design into a less-abstracted view of sub-systems and modules. It depicts the interactions between them. Focuses on implementing the system and its components as modules. Recognizes the modular structures of each sub-system and their relationships with each other.
- Detailed Design: Deals with the implementation of the system and its sub-systems defined in the previous two levels. Focuses on the implementation of modules. Defines the logical structure of each module and their interfaces for communication with other modules.
Design Process
- The software design process is an iterative series of steps that translate requirements into a blueprint for software construction.
- This process involves creating a solution design from requirements, previous systems, or system sequence diagrams.
- Objects are identified and grouped into classes based on similar attribute characteristics.
- The class hierarchy and relationships are defined.
- The application framework is specified.
Design Technique
- Modularization: Divides a software system into multiple independent modules that can perform specific tasks independently. These modules serve as building blocks for the software. Modules are designed to be executed and compiled separately. It follows the 'divide and conquer' problem-solving strategy.
Advantages of Modularization
- Smaller components are easier to maintain.
- Programs can be divided based on functional aspects.
- Desired levels of abstraction can be incorporated.
- Components with high cohesion can be reused.
- Concurrent execution is made possible.
- More secure design.
Concurrency
- Traditionally, software was designed to be executed sequentially. This means instructions are executed one after another with only one part of the program being active at a time.
- Concurrency is implemented by splitting the software into multiple independent units of execution, like modules, and executing them in parallel.
- It allows the software to execute multiple parts of the code simultaneously.
- Programmers and designers need to identify modules that can be executed concurrently.
- Example: The spell check feature in a word processor runs concurrently with the word processor itself.
Coupling and Cohesion
-
Coupling and cohesion are measures used to assess the quality of module design and their interactions.
-
Cohesion: Measures the degree of inter-dependability within the elements of a module. Higher cohesion indicates better program design.
-
Coupling: Measures the level of inter-dependability among modules. It signifies how much modules interact and interfere with each other. Lower coupling means better program design.
Design Quality
-
Design Verification: The output of the software design process includes design documentation, pseudo codes, logic diagrams, process diagrams, and a detailed description of functional and non-functional requirements.
-
The implementation phase depends on these outputs. It's crucial to verify these outputs before proceeding to the next phase.
-
Earlier detection of errors is better, as they might not be found easily in the testing phase.
-
Formal verification tools should be used for outputs in formal notation. Otherwise, thorough design reviews can be used for verification and validation.
-
Structured verification helps detect defects caused by overlooking specific conditions.
-
Good design reviews are essential for effective, accurate, and high-quality software design.
-
Design quality is assessed using formal technique reviews and walkthroughs throughout the design process.
Design Quality Characteristics
- Design must implement all explicit requirements from the analysis model and accommodate implicit requirements desired by the customer.
- It must be readily understandable for those generating code, testing, and supporting the software.
- It must provide a complete picture of the software, encompassing data, functional, and behavioral domains from an implementation perspective.
Quality Guideline
-
A good design should exhibit an architecture that:
- Uses recognizable architectural styles and patterns.
- Is composed of components with good design characteristics.
- Can be implemented in an evolutionary way (linear development possible for smaller systems).
-
A design should be modular: The software should be divided logically into elements or subsystems.
-
A design should contain distinct representations of data, architecture, interfaces, and components.
-
A design should lead to appropriate data structures for the classes being implemented, drawing from recognized data patterns.
-
A design should lead to components with independent functional characteristics.
-
A design should lead to interfaces that minimize the complexity of connections between components and the external environment.
-
A design should be derived from a repeatable method driven by information obtained during software requirements analysis
-
** A design should be represented using a notation that communicates its meaning effectively.**
Quality Attributes
- The FURPS quality attributes represent targets for all software design:
- Functionality: Assessed by evaluating the features, capabilities, generality of the functions, and security of the system.
- Usability: Assessed by considering human factors, overall design, consistency, and documentation.
- Reliability: Evaluated by measuring failure frequency, severity, output accuracy, mean-time-to-failure, recovery capabilities, and program predictability.
- Performance: Measured by processing speed, response time, resource consumption, throughput, and efficiency.
- Supportability: Combines extensibility, adaptability, serviceability (maintainability), testability, compatibility, and configurability.
Design Principles
-
Principle of Modular Designs:
- Achieved by dividing large aggregates of components into units with loose inter-unit coupling and high internal cohesion.
- Abstracting each unit's behavior to understand its purpose.
- Recording each unit's interface for use and hiding its design for potential changes.
-
Principle of Portable Designs:
- Achieved by using abstract context interfaces.
-
Principle of Malleable Designs:
- Achieved by modeling the end-user's view of the external environment.
-
Principle of Conceptual Integrity:
- Achieved by uniformly applying a limited number of design forms.
-
Principle of Intellectual Control:
- Achieved by recording designs, after developing a design strategy, as hierarchies of increasingly detailed abstractions.
-
Principle of Visualization:
- Achieved by representing designs in visual notations like diagrams, pictures, and figures to express the characteristics and relationships of system components.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
This quiz focuses on the fundamental concepts of software design, including the transformation of user requirements and the various levels of design, such as architectural and high-level design. Understand the basics of the Software Development Life Cycle (SDLC) and how it guides programming implementation.