Unit 1 Software Engg.
Unit 1 Software Engg.
Unit 1 Software Engg.
Ans Developing a large software product without using software engineering principles can
lead to several problems123456:
1. Increased Complexity: Without the structured approach provided by software
engineering, managing the complexity of large software projects becomes
challenging3. The problem with developing large software is that the complexity and
difficulty levels increase exponentially with the increase in software size1.
2. Poor Quality: The absence of software engineering principles can lead to software of
low quality3. Violating software design principles can lead to unexpected behavior,
bugs, and maintainability issues5.
3. Inefficiency: Software may be very inefficient3. Execution time may be longer, storage
size may be increased, and more source lines must be written6.
4. Difficulty in Maintenance: Without following software engineering principles, the
code can become difficult to maintain3.
5. Risk Management: Developing software is fraught with uncertainties and
risks. Principles such as iterative development and change management help identify
and mitigate risks early in the process, reducing the chances of costly errors later on3.
6. Limited Flexibility and Bureaucracy: Following established software engineering
principles and methodologies can be rigid and may limit the ability to quickly adapt to
changing requirements4. It can also create an environment that is bureaucratic, with a
lot of processes and paperwork, which may slow down the development process4.
7. Inconsistency: Without principles, there may be a lack of uniformity in code quality,
design patterns, and project execution3.
8. Over Budget: Projects may frequently go over budget3.
These challenges highlight the importance of software engineering principles in managing the
complexities of large-scale software development.
Q.13 Explain waterfall Model? Also write its advantages and disadvantages.
Ans The Waterfall Model is a classical software development methodology that was first
introduced by Winston W. Royce in 19701. It is a linear and sequential approach to software
development that consists of several phases that must be completed in a specific order1. The
phases of the Waterfall Model are1:
1. Requirements Gathering and Analysis: The first phase involves gathering
requirements from stakeholders and analyzing them to understand the scope and
objectives of the project1.
2. Design Phase: Once the requirements are understood, the design phase begins. This
involves creating a detailed design document that outlines the software architecture,
user interface, and system components1.
3. Implementation and Unit Testing: The implementation phase involves coding the
software based on the design specifications1.
4. Integration and Testing: All the units developed in the implementation phase are
integrated into a system after testing of each unit1.
5. Deployment of System: Once the functional and non-functional testing is done, the
product is deployed in the customer environment or released into the market1.
6. Maintenance: There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are
released1.
Advantages of the Waterfall Model12345:
• Sequential Approach: The waterfall model involves a sequential approach to software
development, where each phase of the project is completed before moving on to the
next one1.
• Document-Driven: The waterfall model relies heavily on documentation to ensure that
the project is well-defined and the project team is working towards a clear set of goals1.
• Quality Control: The waterfall model places a high emphasis on quality control and
testing at each phase of the project, to ensure that the final product meets the
requirements and expectations of the stakeholders1.
• Rigorous Planning: The waterfall model involves a rigorous planning process, where
the project scope, timelines, and deliverables are carefully defined and monitored
throughout the project lifecycle1.
• Simplicity: This model is simple to implement and the number of resources required
for it is minimal3.
• Clear Objectives: The start and end points for each phase is fixed, which makes it easy
to cover progress3.
Disadvantages of the Waterfall Model1267:
• Inflexibility: Once an application is in the testing stage, it is very difficult to go back
and change something that was not well-thought out in the concept stage6.
• Late Software Production: No working software is produced until late during the life
cycle6.
• High Risk and Uncertainty: High amounts of risk and uncertainty6.
• Not Suitable for Complex and Object-Oriented Projects: Not a good model for
complex and object-oriented projects6.
• Poor Model for Long and Ongoing Projects: Poor model for long and ongoing
projects7.
• Difficulty in Accommodating Changes: If changes are required during the
implementation phase (due to unforeseen issues with the design, integrations, or even
changes to the intended function of the system), this necessitates that a new design be
created and signed off on before the implementation is completed2.
Q.14 Explain different phases of SDLC. When to choose iterative enhancement model?
Ans The Software Development Life Cycle (SDLC) is a systematic process for planning,
creating, testing, and deploying an information system12345. The different phases of the SDLC
are:
1. Requirements Gathering and Analysis: This phase involves gathering information
about the software requirements from stakeholders, such as customers, end-users, and
business analysts12345.
2. Planning: The planning phase involves evaluating the feasibility of creating the
product, revenue potential, the cost of production, the needs of the end-users, etc2.
3. Design: In this phase, the software design is created, which includes the overall
architecture of the software, data structures, and interfaces12345.
4. Software Development (Coding): The implementation phase involves coding the
software based on the design specifications12345.
5. Testing: All the units developed in the implementation phase are integrated into a
system after testing of each unit12345.
6. Deployment: Once the functional and non-functional testing is done, the product is
deployed in the customer environment or released into the market12345.
7. Maintenance: There are some issues which come up in the client environment. To fix
those issues, patches are released. Also to enhance the product some better versions are
released12345.
The Iterative Enhancement Model is used in software development due to its incremental
and iterative nature6789. It focuses on incremental development and improvement rather than
trying to complete a software product in a single phase6789. This model is chosen in the
following scenarios6789:
• When the requirements of the complete system are clearly defined and understood6789.
• The major requirements are defined, while some functionalities and requested
enhancements evolve with the process of the development process6789.
• A new technology is being used and is being learnt by the development team, while
they are working on the project6789.
• When the software application is large9.
• When there is a requirement of changes in future9.
• When risk of long project cannot be taken7.
• This model is for businesses where time is of essence7.
Q.15 What are different software qualities attributes?
Ans: Software quality attributes are the characteristics or properties that contribute to the
overall quality of a software product1234. They can be broadly classified into five types: Design,
Runtime, System, User, and Non-runtime qualities12. Here are some of the key software quality
attributes:
1. Design and Software Architecture Quality Attributes1:
o Conceptual Integrity
o Maintainability
o Reusability
o Correctness
2. Runtime Qualities1:
o Reliability
o Interoperability
o Scalability (Flexibility)
o Performance
o Security
o Availability
3. System Qualities1:
o Supportability
o Testability
4. User Qualities1:
o Usability
5. Non-runtime Qualities1:
o Portability
o Reusability
Each of these attributes contributes to the overall quality of the software product and can be
used to measure product or service performance1. These attributes can be further used for
Quality Assurance as well as Quality Control1.