Se Unit - Iv Notes
Se Unit - Iv Notes
DESIGNS
Software Design Process – Software Engineering
The design phase of software development deals with transforming the customer
requirements as described in the SRS documents into a form implementable using a
programming language. The software design process can be divided into the following three
levels or phases of design:
1. Interface Design
2. Architectural Design
3. Detailed Design
Elements of a System
1. Architecture: This is the conceptual model that defines the structure, behavior, and
views of a system. We can use flowcharts to represent and illustrate the architecture.
2. Modules: These are components that handle one specific task in a system. A
combination of the modules makes up the system.
3. Components: This provides a particular function or group of related functions. They
are made up of modules.
4. Interfaces: This is the shared boundary across which the components of a system
exchange information and relate.
5. Data: This is the management of the information and data flow.
Conceptual Design: This is the high-level design phase where the system’s
architecture and major components are identified and specified. The main goal is to
define the what and why of the system — what functionalities will be included, and
why the chosen approach or architecture is suitable for the requirements. It focuses on
understanding the problem space and solving it from a conceptual standpoint, without
worrying about technical implementation details.
Technical Design: This phase follows conceptual design and focuses on the how. It
involves determining how the system will be implemented, addressing the technical
details, choosing technologies, tools, databases, and platforms, and deciding on
software components and their interactions. It also includes defining interfaces, data
structures, and specific algorithms.
Objectives of Design
The objectives of design in software engineering are to ensure that the software is:
1. Correct: The system should perform as expected and meet the requirements.
2. Efficient: It should perform well in terms of resource usage (e.g., memory, CPU
time).
3. Maintainable: The software should be easy to update and modify, allowing for easy
debugging, enhancements, and fixes.
4. Scalable: It should be able to handle increased load or expand over time without
requiring a complete redesign.
5. Reliable: The software should consistently perform its intended functions without
failures.
6. Usable: It should provide a user-friendly interface, ensuring a positive experience for
the end-user.
Modularity
Function-Oriented Design
Key Characteristics:
o Decomposition: The system is broken down into a hierarchy of functions.
o Data Flow: Emphasizes the flow of data between functions.
o Modularity: Functions are modular, allowing for independent testing and
maintenance.
Software Reliability refers to the probability that a software system will perform its
intended functions without failure under specified conditions for a specified period of
time.
Key Concepts:
o Failure: When the software does not perform as expected.
o Fault: A defect or bug in the software that can potentially lead to a failure.
o Error: A discrepancy between the software’s behavior and its specification or
requirements.
o Reliability Metrics: Metrics such as Mean Time Between Failures (MTBF)
and failure rate are used to quantify software reliability.
Software reliability often evolves through various maturity levels, commonly outlined in
models such as the Capability Maturity Model (CMM) or Software Reliability
Engineering:
1. Initial (Level 1): At this stage, software is unpredictable and unreliable. Development
is typically ad-hoc.
2. Managed (Level 2): Some processes are defined, and basic reliability testing is
performed.
3. Defined (Level 3): Software reliability is systematically measured, and testing
methods are formalized.
4. Quantitatively Managed (Level 4): The software reliability is continuously
monitored, and statistical methods are used for improvement.
5. Optimizing (Level 5): Continuous improvement processes are in place, focusing on
optimization and predictive reliability.
IMPORTANT QUESTIONS
5 Marks Questions
10 Marks Questions
1. Compare and contrast conceptual design and technical design. Explain the role
each plays in the overall software development process.
2. Discuss the objectives of design in software engineering and how these objectives
impact the final product.
3. Describe the function-oriented design approach and provide examples where this
approach is suitable.
4. Explain the concept of software reliability and how it impacts the lifecycle of a
software project.
5. Discuss the importance of modularity in software design. How does modularity
contribute to maintenance and scalability of software systems?
6. Explain the maturity levels of software reliability. How do these levels help in
improving the reliability of software over time?
7. What is function-oriented design, and how does it differ from object-oriented
design?
8. Discuss the relationship between conceptual design and software requirements.
How does conceptual design help in identifying key functionalities of the system?
9. Explain the importance of software reliability in real-world applications and
how it can be measured and improved.
10. How do modular designs improve the reliability and scalability of software
systems? Provide an example.
15 Marks Questions