Unit 1 Software Engg.

Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Q.1 What do you understand by SDLC?

Why is it important to adhere to a life cycle


model while developing a large software product?
Ans The Software Development Life Cycle (SDLC) is a structured process used to design,
develop, and test high-quality software1. It provides a systematic approach to software
development, ensuring that the software is developed in a consistent and efficient manner2. The
SDLC involves several stages:
1. Planning and Requirement Analysis: This stage involves gathering customer inputs
and conducting market surveys to form the building blocks of a basic project1.
2. Defining Requirements: The requirements of the software are defined in this stage1.
3. Designing Architecture: The architecture of the software is designed1.
4. Developing Product: The actual development of the software product takes place1.
5. Product Testing and Integration: The developed product is tested and integrated1.
6. Deployment and Maintenance of Products: The final software product is deployed
and maintained1.
Adhering to the SDLC is crucial, especially when developing large software products, for
several reasons:
• Quality and Consistency: The SDLC aims to ensure quality and consistency, which is
vital in large software projects3.
• Risk Mitigation: It allows for the identification and minimization of risks early in the
process4.
• Efficiency: It helps in improving the processes, recognizing the need for change, and
setting up and forming a process group5.
• Stakeholder Involvement: The SDLC ensures that the right people are involved in the
right activities at the right times6.
• Project Management: It provides a framework for managing the development process
systematically, with clear goals and deliverables at every stage7.
In summary, the SDLC provides a roadmap for the software development process, ensuring
that all stakeholders agree on the goals and requirements upfront and have a plan to achieve
them7. This makes it an essential tool in the development of large software products.

Ques 2 Explain spiral model . What are limitations of such model?


Ans
The Spiral Model is a software development life cycle (SDLC) model that provides a
systematic and iterative approach to software development1. It’s often used for complex and
large software development projects, as it allows for a more flexible and adaptable approach to
software development1. The model is divided into four main phases1:
1. Planning: The scope of the project is determined and a plan is created for the next
iteration of the spiral1.
2. Risk Analysis: The risks associated with the project are identified and evaluated1.
3. Engineering: The software is developed based on the requirements gathered in the
previous iteration1.
4. Evaluation: The software is evaluated to determine if it meets the customer’s
requirements and if it is of high quality1.
However, the Spiral Model has several limitations23:
1. Complexity: It is much more complex than other SDLC models2.
2. Cost: It is not suitable for small projects as it can be expensive2.
3. Risk Analysis Dependence: The model is heavily dependent on risk analysis and
requires highly specific expertise2.
4. Time Management: As the number of phases is unknown at the start of the project,
time estimation can be very difficult2.
5. Indefinite Spirals: The spiral may go on indefinitely, and the end of the project may
not be known early2.
6. Documentation: Large numbers of intermediate stages require excessive
documentation3.
7. Low Risk Projects: It is not suitable for low risk projects2.
8. Milestones: It may be hard to define objective, verifiable milestones2.
Ques 3 Explain RAD (rapid application development) .discuss each phase in detail.
Ans: Rapid Application Development (RAD) is an agile project management strategy that is
popular in software development1. The key benefit of the RAD methodology is its fast project
turnaround, making it an attractive choice for developers working in a fast-paced environment
like software development1. The RAD process generally follows four main phases21:
1. Requirements Planning: This phase is equivalent to a project scoping meeting. During
this stage, developers, clients (software users), and team members communicate to
determine the goals and expectations for the project as well as current and potential
issues that need to be addressed during the build1. A basic breakdown of this stage
involves researching the current problem, defining the requirements for the project, and
finalizing the requirements with each stakeholder’s approval1.
2. User Design: Once the project is scoped out, it’s time to jump right into development
and build out the user design through various prototype iterations1. This is the meat and
potatoes of the RAD methodology—and what sets it apart from other project
management strategies1. During this phase, clients work hand-in-hand with developers
to ensure their needs are met at every step in the design process1.
3. Construction: In this phase, refinement of the prototype and delivery takes place2. It
includes the actual use of powerful automated tools to transform processes and data
models into the final working product2. All the required modifications and
enhancements are too done in this phase2.
4. Cutover: All the interfaces between the independent modules developed by separate
teams have to be tested properly2. The use of powerfully automated tools and subparts
makes testing easier2. This is followed by acceptance testing by the user2.
The RAD model is used when the requirements are fully understood and the component-based
construction approach is adopted2. A software project can be implemented using this model if
the project can be broken down into small modules wherein each module can be assigned
independently to separate teams2. These modules can finally be combined to form the final
product2. The time frame for delivery (time-box) is generally 60-90 days2
Ques 4 –Discuss the prototype model. What is the effect of designing a prototype on the
overall cost of software product?
Ans: The Prototype Model is a software development life cycle (SDLC) model that involves
creating a working prototype of the software before moving on to full-scale development1. This
model is particularly useful when the customers do not know the exact project requirements
beforehand1. The process generally involves the following steps1:
1. Requirement Gathering and Analysis: In this phase, users are asked about what they
expect or what they want from the system1.
2. Quick Design: This phase covers the basic design of the requirement1.
3. Build a Prototype: An actual prototype is built from the knowledge gained from the
prototype design1.
4. Initial User Evaluation: Preliminary testing occurs, as the customer will tell the
strengths and weaknesses of the design1.
5. Refining Prototype: If any feedback is given by the user, then improving the client’s
response to feedback and suggestions, the final system is approved1.
6. Implement Product and Maintain: This is the final step where the final system is
tested and distributed to production1.
As for the effect of designing a prototype on the overall cost of a software product, prototyping
can actually reduce the overall budget2. While there may be some initial costs of developing
the prototype, it helps to identify and rectify errors or glitches that could have occurred if the
idea was made from scratch without any prior user testing2. By identifying issues and refining
the design early on in the development process, developers can reduce the risk of costly rework
and delays, which can ultimately save time and reduce costs3. Furthermore, changes detected
later in the development process are much more expensive to implement4. At the beginning of
a project, it is easier and cheaper to determine the needs and wishes of the client; this translates
into less expensive software and faster results4. Therefore, the effect of designing a prototype
on the overall cost of a software project is to actually reduce the additional costs of restructuring
and reframing it after its full-fledged development5.
Ques: 5 Describe the type of situations where iterative enhancement model lead to
difficulties.
Ans: The Iterative Enhancement Model, while beneficial in many scenarios, can lead to
difficulties in certain situations123:
1. Complexity in Larger Projects: Managing several iterations at once can add
complexity, especially in larger projects1. This requires more skill to manage than some
other models3.
2. Higher Costs: The iterative nature of this model can lead to higher costs due to the
constant changes and improvements1.
3. Documentation Delays: Due to constant changes, there may be delays in
documentation, making it more difficult to maintain comprehensive documentation1.
4. Continuous Customer Engagement: Continuous customer engagement may not be
possible in all scenarios, which impacts the effectiveness of the model1. This is because
the model relies heavily on feedback from customers for each iteration.
5. Feature Creep: There’s a risk of feature creep, where more and more features are added
that take away from the core purpose of the software3. This can occur near the end of
the project and can lead to scope creep, increased complexity, and delays.
6. Overkill for Small Projects: The iterative enhancement model can be a bit overkill for
small projects that wouldn’t benefit from multiple iterations3.
In summary, while the Iterative Enhancement Model has its advantages, it’s important to
consider these potential difficulties when deciding whether to use this model for a specific
project.
Q.6- What are advantages of spiral model? What are limitations of such model?
The Spiral Model has several advantages12345:
1. Early Software Generation: Software is produced early in the software life cycle1.
2. Risk Handling: It is one of the best development models to follow due to the risk
analysis and risk handling at every phase1.
3. Flexibility in Requirements: In this model, we can easily change requirements at later
phases and can be incorporated accurately1.
4. Customer Satisfaction: We can involve customers in the development of products at
an early phase of the software development1.
5. Strong Approval and Documentation Control: It provides strong approval and
documentation control1.
6. Suitable for High Risk Projects: It is suitable for high-risk projects, where business
needs may be unstable1.
7. Highly Customized Product: A highly customized product can be developed using
this1.
However, the Spiral Model also has several limitations123:
1. Not Suitable for Small Projects: It is not suitable for small projects as it is expensive1.
2. Complexity: It is much more complex than other SDLC models1.
3. Dependence on Risk Analysis: It is too much dependent on Risk Analysis and requires
highly specific expertise1.
4. Difficulty in Time Management: As the number of phases is unknown at the start of
the project, so time estimation is very difficult1.
5. Indefinite Spirals: The spiral may go on indefinitely1.
6. Not Suitable for Low Risk Projects: It is not suitable for low risk projects1.
7. Hard to Define Objective, Verifiable Milestones: It may be hard to define objective,
verifiable milestones1.
8. Excessive Documentation: Large numbers of intermediate stages require excessive
documentation1.
Q.7- Compare the waterfall model and the spiral model of software development
Ans: Waterfall Model:
• It is also known as the classical or linear model because it follows sequential stages1.
• The Waterfall model is simple and easy1.
• It works in a sequential method1.
• Errors or risks are identified and rectified after the completion of stages1.
• It is adopted by customers1.
• It is applicable for small projects1.
• Requirements and early stage planning is necessary1.
• Flexibility to change is difficult1.
• There is a high amount of risk1.
• It is comparatively inexpensive1.
• Customer involvement is minimum1.
• It requires least maintenance1.
• It is based on a linear framework type1.
• Testing is done after the coding phase in the development life cycle1.
• Reusability is extremely unlikely1.
• Customer control over the administrator is very limited1.
Spiral Model:
• The Spiral model does not follow the sequential stages, it follows the evolutionary
way1.
• The Spiral model is a lot more complex1.
• The Spiral model works in an evolutionary method1.
• In the Spiral model, errors or risks are identified and rectified earlier1.
• The Spiral model is adopted by developers1.
• The Spiral model is used for large projects1.
• In the Spiral model, requirements and early stage planning is necessary if required1.
• Flexibility to change in the Spiral model is not difficult1.
• There is a low amount of risk in the Spiral model1.
• The cost of the Spiral model is very expensive1.
• In the Spiral Model, customer involvement is high1.
• It requires typical maintenance1.
• It is based on linear and iterative framework type1.
• Testing is done after the engineering phase in the development cycle1.
• To a certain extent, reusability is possible1.
• Customers have control over the administrator as compared to the Waterfall model1
Q.8- How does project risk factors affect the spiral model of software development.
Ans Project risk factors play a significant role in the Spiral Model of software development1234:
1. Risk-Driven Approach: The Spiral Model is risk-driven, meaning that the focus is on
managing risk through multiple iterations of the software development process1. Each
spiral focuses on building a specific set of requirements or user needs1. The focus of
each spiral should be enhancing the product incrementally1.
2. Risk Identification and Mitigation: In each phase of the spiral model cycle, areas of
uncertainty that pose a significant risk to the progress of the software project should be
identified3. This is followed by the development of the least risky and most cost-
effective strategy, using methods such as prototyping, simulations, benchmark tests,
analytical models, and user surveys3.
3. Risk Management: Risk management is a critical component of the spiral model4. It’s
integrated into the fabric of the entire project lifecycle4. Risk analysis occurs during
each iteration, ensuring potential problems are identified and mitigated before they
affect the project4.
4. Risk Reflection: The model focuses on identifying the risk early in product
development, developing strategies around it, and reflecting those strategies on what to
build1. This allows product teams to build the product through cycles1.
In summary, the Spiral Model is designed to handle project risks effectively. It allows for early
identification, analysis, and mitigation of risks, which can significantly affect the direction and
success of the software development project1234.
Q.9—When to choose iterative enhancement model? Why is unified process called as
iterative and incremental?
Ans The Iterative Enhancement Model is chosen in the following scenarios12345:
1. When the requirements of the complete system are clearly defined and understood3.
2. The major requirements are defined, while some functionalities and requested
enhancements evolve with the process of the development process3.
3. A new technology is being used and is being learnt by the development team, while
they are working on the project3.
4. When the software application is large4.
5. When there is a requirement of changes in future4.
6. When risk of long project cannot be taken2.
7. This model is for businesses where time is of essence2.
The Unified Process is called iterative and incremental due to its approach to software
development678910. It is based on the enlargement and refinement of a system through multiple
iterations, with cyclic feedback and adaptation8. Each iteration includes its own requirements
analysis, design, implementation, and testing activities10. The system grows incrementally over
time, iteration by iteration10. An increment is the difference between the baseline generated by
one iteration and the baseline generated by the next iteration9. This is why the Unified Process
is called “iterative and incremental”9.
Q.10- Why do you feel that characteristics of requirements play a very significant role in
the selection of a life cycle model?
Ans The characteristics of requirements play a significant role in the selection of a life cycle
model for several reasons12345:
1. Understanding Complexity: The complexity of the requirements can help determine
the most suitable life cycle model. For instance, if the requirements are complex and
likely to change, an iterative or agile model might be more appropriate1.
2. Managing Changes: The frequency of requirement changes also influences the choice
of the model. If changes are expected to be frequent, a flexible model like the Agile or
Iterative model would be beneficial1.
3. Risk Management: The reliability of requirements is crucial in risk management. If
requirements are uncertain, risk-driven models like the Spiral model can be used to
mitigate potential risks1.
4. Resource Allocation: The number and type of requirements can impact the allocation
of resources, including time, personnel, and cost. Understanding these requirements
upfront can help in selecting a model that best fits the resource constraints1.
5. Customer Satisfaction: Models should be chosen based on how well they can meet
customer requirements. For instance, if customer involvement is high and feedback is
continuous, models like Agile or Spiral that allow for frequent customer interaction and
feedback would be suitable1.
In summary, understanding the characteristics of requirements is crucial in selecting the most
appropriate life cycle model, as it helps align the development process with the project’s needs
and constraints, ultimately leading to a more successful and efficient project execution123
Q.11-Define software crisis. What are possible solutions to present software crisis?
Ans: Software Crisis is a term used in computer science for the difficulty of writing useful and
efficient computer programs in the required time12. The software crisis was due to using the
same workforce, same methods, and same tools even though rapidly increasing software
demand, the complexity of software, and software challenges1. This condition is called a
Software Crisis. It was due to the rapid increases in computer power and the complexity of the
problems that could not be tackled2. The crisis manifested itself in several ways: Projects
running over-budget, software was very inefficient, software was of low quality, software often
did not meet requirements, projects were unmanageable and code difficult to maintain2.
Possible solutions to the software crisis include134:
• Software Engineering: It is a systematic, disciplined, and quantifiable
approach. Software engineering plays a vital role in the development of innovative
solutions and applications in the ever-changing technological landscape3.
• Improved Project Management: Effective project management practices are
essential3.
• Structured Methodologies: The adoption of structured methodologies, like Waterfall
and later Agile, brought systematic approaches to software development. These
methodologies emphasized planning, iterative development, and continuous user
feedback4.
• Guidelines for preventing software crises1:
o Reduction in software over budget.
o The quality of the software must be high.
o Less time is needed for a software project.
o Experienced and skilled people working on the software project.
o Software must be delivered.
o Software must meet user requirements.
Q.12-Identify the problem one would face, if he tries to develop a large software product
without using software engineering principles

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.

Q.16 State three important advantages of structured programming.


Ans Structured programming offers several advantages123:
1. Decreased Complexity: Structured programming breaks down a program into smaller,
manageable modules or functions, each performing a specific task. This decreases the
overall complexity of the program12.
2. Improved Maintainability: The modular nature of structured programming makes it
easier to maintain and modify. Changes to a single module do not affect the rest of the
program12.
3. Enhanced Readability and Understandability: Structured programming is easier to
read and understand due to its logical structure and flow. It also makes debugging
easier13.

You might also like