C 1
C 1
• Software Engineering is the process of designing, developing, testing, and maintaining software. It is a systematic and
disciplined approach to software development that aims to create high-quality, reliable, and maintainable software.
2. Software engineering includes a variety of techniques, tools, and methodologies, including requirements analysis,
design, testing, and maintenance.
3. It is a rapidly evolving field, and new tools and technologies are constantly being developed to improve the software
development process.
4. By following the principles of software engineering and using the appropriate tools and methodologies, software
developers can create high-quality, reliable, and maintainable software that meets the needs of its users.
5. Software Engineering is mainly used for large projects based on software systems rather than single programs or
applications.
6. The main goal of Software Engineering is to develop software applications for improving quality, budget, and time
efficiency.
7. Software Engineering ensures that the software that has to be built should be consistent, correct, also on budget, on
time, and within the required requirements
Main Attributes/Features of Software Engineering
• Software Engineering is a systematic, disciplined, quantifiable study and approach to the design,
development, operation, and maintenance of a software system. There are four main Attributes of Software
Engineering.
2. Efficiency: It provides a measure of the resource requirement of a software product in an efficient way.
3. Reliability: It provides the assurance that the product will deliver the same results when used in similar
working environment.
4. Reusability: This attribute makes sure that the module can be used in multiple applications.
5. Maintainability: It is the ability of the software to be modified, repaired, or enhanced easily with changing
requirements.
Objectives of Software Engineering
1. Maintainability: It should be feasible for the software to evolve to meet changing requirements.
2. Efficiency: The software should not make wasteful use of computing devices such as memory, processor
cycles, etc.
3. Correctness: A software product is correct if the different requirements specified in the SRS Document have
been correctly implemented.
4. Reusability: A software product has good reusability if the different modules of the product can easily be
reused to develop new products.
5. Testability: Here software facilitates both the establishment of test criteria and the evaluation of the
software with respect to those criteria.
6. Reliability: It is an attribute of software quality. The extent to which a program can be expected to perform
its desired function, over an arbitrary time period.
7. Portability: In this case, the software can be transferred from one computer system or environment to
another.
Disadvantages of Software Engineering
1. Limited flexibility: Following established software engineering principles and methodologies can be rigid
and may limit the ability to quickly adapt to changing requirements.
2. Bureaucratic: Software Engineering can create an environment that is bureaucratic, with a lot of processes
and paperwork, which may slow down the development process.
3. Complexity: With the increase in the number of tools and methodologies, software engineering can be
complex and difficult to navigate.
4. Limited creativity: The focus on structure and process can stifle creativity and innovation among
developers.
5. High learning curve: The development process can be complex, and it requires a lot of learning and
training, which can be challenging for new developers.
6. High dependence on tools: Software engineering heavily depends on the tools, and if the tools are not
properly configured or are not compatible with the software, it can cause issues.
7. High maintenance: The software engineering process requires regular maintenance to ensure that the
software is running efficiently, which can be costly and time-consuming.
software crisis
• The term "software crisis" refers to a situation where the development or
maintenance of software becomes difficult, costly, and often leads to
unsatisfactory outcomes.
• The software crisis is characterized by several key issues:
• Complexity: As software systems grow in size and functionality, they become
increasingly complex. Managing this complexity becomes a significant
challenge, leading to difficulties in understanding, maintaining, and modifying
the software.
• Cost Overruns: Software projects often exceed their initially estimated
budgets. This can be due to the difficulty in accurately predicting the time and
resources required for development, as well as unexpected challenges that may
arise during the process.
• Quality Issues: Software systems may suffer from bugs, errors, and
other quality issues. Ensuring the reliability and correctness of
software can be challenging, especially as the size and complexity of
systems increase.
• Mismatch with User Expectations: Users may find that the delivered
software does not meet their expectations or does not align with their
actual needs. This can result from poor communication between
developers and users, leading to a gap in understanding requirements
• The diagram that helps in understanding and representing user requirements for a software project using
UML (Unified Modeling Language) is: [GATE CS 2017]
• P: Software Reengineering is preferable for software products having high failure rates, poor design,
and/or poor code structure.
• Q: Software Reverse Engineering is the process of analyzing software with the objective of recovering its
design and requirement specification.
• (A) P only
• (C) Q only
• Maintenance:
• Addressing any issues or bugs discovered after deployment.
• Implementing updates or enhancements as needed.
• Managing the software throughout its lifecycle.
Waterfall Model
22
Classical Waterfall Model
23
Advantages of Waterfall Model
• The disadvantage of waterfall development is that it does not allow much reflection or revision.
• Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-documented or thought upon in the concept stage.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing.
25
Iterative Waterfall Model
26
Iterative Waterfall Model
• The iterative waterfall model provides feedback paths from every phase to its preceding
phases, which is the main difference from the classical waterfall model.
• When errors are detected at some later phase, these feedback paths allow for correcting errors
committed by programmers during some phase.
• The feedback paths allow the phase to be reworked in which errors are committed and these
changes are reflected in the later phases.
• But, there is no feedback path to the stage – feasibility study, because once a project has been
taken, does not give up the project easily.
• It is good to detect errors in the same phase in which they are committed.
27
Prototyping Model
• Prototyping Model is a software development model in which prototype is built,
tested, and reworked until an acceptable prototype is achieved.
• It also creates base to produce the final system or software.
• It is an iterative, trial and error method which takes place between developer and
client.
• This model is used when the customers do not know the exact project requirements
beforehand.
28
29
30
Step 1: Requirements gathering and analysis
31
Step 3: Build a Prototype
• In this phase, an actual prototype is designed based on the information gathered from
quick design.
• It is a small working model of the required system.
32
Step 5: Refining prototype
• If the user is not happy with the current prototype, you need to refine the prototype
according to the user’s feedback and suggestions.
• This phase will not over until all the requirements specified by the user are met.
Once the user is satisfied with the developed prototype, a final system is developed
based on the approved final prototype.
• Step 6: Implement Product and Maintain
• Once the final system is developed based on the final prototype, it is thoroughly
tested and deployed to production.
• The system undergoes routine maintenance for minimizing downtime and prevent
large-scale failures.
33
Advantages of the Prototyping Model
34
Spiral Model
• The Spiral Model is one of the most important Software Development Life Cycle models,
which provides support for Risk Handling.
• The Spiral Model is a Software Development Life Cycle (SDLC) model that provides a
systematic and iterative approach to software development.
• The exact number of loops of the spiral is unknown and can vary from project to project.
Each loop of the spiral is called a Phase of the software development process.
• The exact number of phases needed to develop the product can be varied by the project
manager depending upon the project risks.
• As the project manager dynamically determines the number of phases, the project manager
has an important role in developing a product using the spiral model.
• It is based on the idea of a spiral, with each iteration of the spiral representing a complete
software development cycle, from requirements gathering and analysis to design,
implementation, testing, and maintenance.
35
36
• Each phase of the Spiral Model is divided into four quadrants as shown in the above figure:
• Objectives determination and identify alternative solutions: Requirements are gathered
from the customers and the objectives are identified, elaborated, and analyzed at the start of
every phase. Then alternative solutions possible for the phase are proposed in this quadrant.
• Identify and resolve Risks: During the second quadrant, all the possible solutions are
evaluated to select the best possible solution. Then the risks associated with that solution are
identified and the risks are resolved using the best possible strategy. At the end of this
quadrant, the Prototype is built for the best possible solution.
• Develop the next version of the Product: During the third quadrant, the identified features
are developed and verified through testing. At the end of the third quadrant, the next version
of the software is available.
• Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so-
far developed version of the software. In the end, planning for the next phase is starte
37
38
Advantages of the Spiral Model
• Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to
the risk analysis and risk handling at every phase.
• Good for large projects: It is recommended to use the Spiral Model in large and
complex projects.
• Flexibility in Requirements: Change requests in the Requirements at a later phase can
be incorporated accurately by using this model.
• Customer Satisfaction: Customers can see the development of the product at the early
phase of the software development and thus, they habituated with the system by
using it before completion of the total product.
• Improved Quality: The Spiral Model allows for multiple iterations of the software
development process, which can result in improved software quality and reliability.
39
Disadvantages of the Spiral Model
• Complex: The Spiral Model is much more complex than other SDLC models.
• Expensive: Spiral Model is not suitable for small projects as it is expensive.
• Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be
a failure to develop a project using this model.
• Difficulty in time management: As the number of phases is unknown at the start of the
project, time estimation is very difficult.
• Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
• Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple
evaluations and reviews.
40
Functional Requirements Non-functional requirements
A functional requirement defines a system or its A non-functional requirement defines the quality attribute
component. of a software system.
It•specifies
. “What should the software system do?” A non-functional requirement defines the quality attribute
of a software system.
Functional requirements help to understand the functions of the They help to understand the system's performance.
system
Functional requirements are mandatory. While non-functional requirements are not mandatory.
They are easy to define They are hard to define
They describe what the product does They describe the working of product.
Examples of the functional requirements are - Examples of the non-functional requirements are -
Authentication of a user on trying to log in to the system. The background color of the screens should be light41 blue.
Mcqs
• Identify which of the following life cycle contains the phases: test case design, test
execution, defect tracking, maintenance.
1. SDLC 2.STLC 3.SQLC 4.BLC
3) Which is the following is the most important feature of the spiral model?
a)Efficency managent b)time managent c) risk managent d)quality managent