Notes-Module 1: Introduction To Software Engineering
Notes-Module 1: Introduction To Software Engineering
Notes-Module 1
Introduction to Software Engineering
1. According to Boehm, "Software engineering is the practical application of scientific
knowledge in the design and construction of computer programs and associated
documentation required to develop, operate and maintain them".
2. Software engineering is a discipline whose aim is the production of fault free software that
satisfies the user's needs and that is delivered on time and within budget.
Software Components
1. Set of programs
Program : A program is a set of instruction.
2. Software documents
Software documentation consist all the description, programs, graphics and instruction
pertaining to design, coding, testing and preparations of software.
Notes-Module 1 1
3. Coding
4. Testing
3. Operating procedure
a. Operating procedure provide information about what the software is, how to work with it,
how to install it on our system and how to control all the activities of the software.
b. The main aim of this manual is to provide help to operating staff for producing desired
output with the help of that particular software.
Software Characteristics
1. Software is developed or engineered, it is not manufactured in classical sense.
a. Engineering / developing and manufacturing both are logically different in working pattern
and providing end product.
c. While this type of problem does not exist in case of software as it can be easily modified
2. Most software is custom-built rather than being assembled from existing components.
a. Industries are shifting to component-based assembly, where products are not all
manufactured in the same place.
b. This design approach uses pre-manufactured hardware elements available in the market.
e. Software developers aim to design reusable elements, in such a way that they may be
reuse in many different programs.
f. Example: GUI is build using reusable component which can be used to develop other
menus.
Notes-Module 1 2
1. STAGE 1: In introduction stage of both hardware and software, there are chances of high
failure rate.
2. STAGE 2: Defects are corrected and then failure rate is reduced and steady state
comes.
3. STAGE 3A: In case of hardware after some time this failure rate start rising again as the
hardware parts begin to wear out with time which may caused by cumulative effect of
dust, sudden temperature change (high/low), vibration and other environmental maladies.
This failure rate of hardware in relation with time form a tub like curve which is also called
"bath tub curve".
4. STAGE 3B: In case of software, these failure are due to some undiscovered errors but
once the errors are corrected the curve become flat and continue at the same rate until its
features become obsolete which is called idealized curve. In real practice this ideal curve
is not possible because software does not wear out but it becomes deteriorate and
requires some maintenance (changes).
4. Software is intangible.
a. Intangible products are those products which we cannot touch and whose quality cannot
be measured until the whole product is checked.
b. For example, a small software program which is used to generate telephone bill cannot be
said ok by only checking that, it is taking the correct input as customer name, address,
number of local and STD call etc., until it is checked that it is producing correct output in
required format.
2. The business in which the system is used changes in response to market forces and this also
generates new system requirements.
Notes-Module 1 3
3. 🏦 The external legal and political environment for the system changes and generates new
requirements.
4. New technologies become available that offer significant benefits and the system must
change to take advantage of them.
👉 Software change is very important because organizations are now completely dependent on
their software systems and have invested millions of dollars in these systems.
👉 Their systems are critical business assets and they must invest in system change to maintain
the value of these assets.
➡️ Changes to the software are made in response to changed requirements but the
fundamental structure of the software remains stable.
➡️ This is the most common approach used to system change.
2. Architectural transformation :
3. Software re-engineering :
➡️ This is different from other strategies in that no new functionality is added to the system.
➡️ Rather, the system is modified to make it easier to understand and change.
➡️ System re-engineering may involve some structural modifications but does not usually
involve major architectural change.
Notes-Module 1 4
1. Quality Focus
2. Process
a. The process layer serves as the foundational element for Software Engineering (SE).
b. SE process functions as the GLUE holding all technology layers together, facilitating
timely software development. It establishes the base for management control in software
projects.
c. Process layer provides the groundwork for effective management control of software
projects.
3. Methods
4. Tools
a. SE tools offer automated or semi-automated support for both the "Process" and the
"Methods."
b. Tools are integrated to enable seamless information exchange between different stages
of software development.
Software Crisis
Notes-Module 1 5
Software Engineering Process
Software Engineering Process refers to a systematic approach for designing, developing,
testing, and maintaining software. It involves a series of steps that ensure the efficient and
effective creation of high-quality software.
1. Feasibility Analysis
2. Requirement Analysis
3. Planning
Create a detailed project plan outlining tasks, timelines, and resource allocation.
Define the scope, budget, and risks associated with the project.
4. Design
5. Implementation
6. Testing
7. Deployment
8. Maintenance
Notes-Module 1 6
1. Feasibility Analysis
2. Requirement Analysis
3. Planning
Software Engineering: Involves creating a project plan, defining tasks, estimating effort,
allocating resources, and scheduling activities.
4. Designing
5. Testing
Software Engineering: Entails various testing phases, including unit testing, integration
testing, system testing, and user acceptance testing, to ensure the software meets
specifications.
6. Maintenance
Software Engineering: Includes activities like bug fixing, updates, and enhancements to
ensure the software remains effective and efficient over time.
Notes-Module 1 7
information technology, and discrete
mathematics.
Prototyping is common and helps to refine Prototyping is less common due to cost and
requirements. time.
Design requirements may change throughout Design Requirements are typically well-
the development process. defined upfront.
SDLC is a structured process that is used to design, develop, and test good-quality
software.
The goal of the SDLC life cycle model is to deliver high-quality, maintainable software that
meets the user’s requirements.
SDLC in software engineering models outlines the plan for each stage so that each stage of
the software development model can perform its task efficiently to deliver the software at a
low cost within a given time frame that meets users’ requirements.
Notes-Module 1 8
Stage-1: Planning and Requirement Analysis
In this same stage, requirement analysis is also performed by the developers of the
organization.
Requirements are attained from customer inputs, and sales department/market surveys.
The information from this analysis forms the building blocks of a basic project.
In this stage, all the requirements for the target software are specified. These
requirements get approval from customers, market analysts, and stakeholders.
Notes-Module 1 9
Stage-3: Designing Architecture
SRS is a reference for software designers to come up with the best architecture for the
software. Hence, with the requirements defined in SRS, multiple designs for the product
architecture are present in the Design Document Specification (DDS).
This DDS is assessed by market analysts and stakeholders. After evaluating all the
possible factors, the most practical and logical design is chosen for development.
The fundamental development of the product starts. For this, developers use a specific
programming code as per the design in the DDS.
Hence, it is important for the coders to follow the protocols set by the association.
Conventional programming tools like compilers, interpreters, debuggers, etc. are also put
into use at this stage.
Notes-Module 1 10
Some popular languages like C/C++, Python, Java, etc. are put into use as per the
software regulations.
After the development of the product, testing of the software is necessary to ensure its
smooth execution.
After detailed testing, the conclusive product is released in phases as per the
organization’s strategy.
Notes-Module 1 11
After retrieving beneficial feedback, the company releases it as it is or with auxiliary
improvements to make it further helpful for the customers.
🔥 In iterative waterfall model feedback is there, which revert back from each phase to
requirement analysis and specification.
1. Feasibility Study
The main goal of this phase is to determine whether it would be financially and technically
feasible to develop the software.
The feasibility study involves understanding the problem and then determining the various
possible strategies to solve the problem.
These different identified solutions are analyzed based on their benefits and drawbacks.
The best solution is chosen and all the other phases are carried out as per this solution
strategy.
The goal of the analysis part is to remove incompleteness (an incomplete requirement is
one in which some parts of the actual requirements have been omitted) and inconsistencies
Notes-Module 1 12
(an inconsistent requirement is one in which some part of the requirement contradicts some
other part).
SRS document serves as a contract between the development team and customers. Any
future dispute between the customers and the developers can be settled by examining the
SRS document.
3. Design
The goal of this phase is to convert the requirements acquired in the SRS into a format that
can be coded in a programming language.
It includes high-level and detailed design as well as the overall software architecture.
The unit testing phase aims to check whether each module is working properly or not.
Alpha testing: Alpha testing is the system testing performed by the development team.
Beta testing: Beta testing is the system testing performed by a friendly set of customers.
Acceptance testing: After the software has been delivered, the customer performs
acceptance testing to determine whether to accept the delivered software or reject it.
6. Maintenance
Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop a full software. There are three types of
maintenance.
Corrective Maintenance: This type of maintenance is carried out to correct errors that were
not discovered during the product development phase.
Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to
work in a new environment such as working on a new computer platform or with a new
operating system.
Notes-Module 1 13
Advantages of the SDLC Waterfall Model
Easy to Understand: The Classical Waterfall Model is very simple and easy to understand.
Individual Processing: Phases in the Classical Waterfall model are processed one at a time.
Properly Defined: In the classical waterfall model, each stage in the model is clearly defined.
Clear Milestones: The classical Waterfall model has very clear and well-understood
milestones.
Properly Documented: Processes, actions, and results are very well documented.
Reinforces Good Habits: The Classical Waterfall Model reinforces good habits like define-
before-design and design-before-code.
Working: Classical Waterfall Model works well for smaller projects and projects where
requirements are well understood.
Difficult to accommodate Change Requests: This model assumes that all the customer
requirements can be completely and correctly defined at the beginning of the project, but the
customer’s requirements keep on changing with time. It is difficult to accommodate any
change requests after the requirements specification phase is complete.
No Overlapping of Phases: This model recommends that a new phase can start only after the
completion of the previous phase. But in real projects, this can’t be maintained. To increase
efficiency and reduce cost, phases may overlap.
Limited Flexibility: The Waterfall Model is a rigid and linear approach to software
development, which means that it is not well-suited for projects with changing or uncertain
requirements. Once a phase has been completed, it is difficult to make changes or go back to
a previous phase.
Not Suitable for Complex Projects: The Waterfall Model is not well-suited for complex
projects, as the linear and sequential nature of the model can make it difficult to manage
multiple dependencies and interrelated components.
Prototype Model
Notes-Module 1 14
1. Requirements Gathering and analysis
Requirement gathering and analysis: Firstly all the requirements regarding the software are
gathered from the customer and then the gathered requirements are analyzed.
2. Quick Design
The quick decision phase in the prototype model involves rapidly identifying and selecting
key features and functionalities to be included in the initial prototype, prioritizing based on
user needs and project requirements.
3. Design
The goal of this phase is to convert the requirements acquired in the SRS into a format that
can be coded in a programming language.
It includes high-level and detailed design as well as the overall software architecture.
The unit testing phase aims to check whether each module is working properly or not.
Notes-Module 1 15
5. Integration and System testing
Integration of different modules is undertaken soon after they have been coded and unit tested.
During each integration step, previously planned modules are added to the partially integrated
system and the resultant system is tested. Finally, after all the modules have been successfully
integrated and tested, the full working system is obtained and system testing is carried out on
this.
System testing consists of three different kinds of testing activities as described below.
Alpha testing: Alpha testing is the system testing performed by the development team.
Beta testing: Beta testing is the system testing performed by a friendly set of customers.
Acceptance testing: After the software has been delivered, the customer performs
acceptance testing to determine whether to accept the delivered software or reject it.
6. Maintenance
Maintenance is the most important phase of a software life cycle. The effort spent on
maintenance is 60% of the total effort spent to develop a full software. There are three types of
maintenance.
Corrective Maintenance: This type of maintenance is carried out to correct errors that were
not discovered during the product development phase.
Adaptive Maintenance: Adaptive maintenance is usually required for porting the software to
work in a new environment such as working on a new computer platform or with a new
operating system.
Spiral Model
In its diagrammatic representation, looks like a spiral with many loops. 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.
1. Planning : The first phase of the Spiral Model is the planning phase, where the scope of the
project is determined and a plan is created for the next iteration of the spiral.
2. Risk Analysis : In the risk analysis phase, the risks associated with the project are identified
and evaluated.
3. Engineering : In the engineering phase, the software is developed based on the requirements
gathered in the previous iteration.
4. Evaluation : In the evaluation phase, the software is evaluated to determine if it meets the
customer’s requirements and if it is of high quality.
Notes-Module 1 16
The Spiral Model is often used for complex and large software development projects, as it allows
for a more flexible and adaptable approach to software development. It is also well-suited to
projects with significant uncertainty or high levels of risk.
1. The spiral model supports coping with risks by providing the scope to build a prototype at
every phase of software development.
2. The Prototyping Model also supports risk handling, but the risks must be identified
completely before the start of the development work of the project.
3. But in real life, project risk may occur after the development work starts, in that case, we
cannot use the Prototyping Model.
1. The spiral model incorporates the stepwise approach of the Classical Waterfall Model.
2. The spiral model uses the approach of the Prototyping Model by building a prototype at the
start of each phase as a risk-handling technique.
3. Also, the spiral model can be considered as supporting the Evolutionary model – the
iterations along the spiral can be considered as evolutionary levels through which the
complete system is built.
Notes-Module 1 17
2. Flexibility in Requirements: Change requests in the Requirements at a later phase can be
incorporated accurately by using this model.
3. Improved Communication: The Spiral Model provides for regular evaluations and reviews,
which can improve communication between the customer and the development team.
4. 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.
5. 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.
6. Iterative and Incremental Approach: The Spiral Model provides an iterative and incremental
approach to software development, allowing for flexibility and adaptability in response to
changing requirements or unexpected events.
1. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.
5. 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.
Notes-Module 1 18
Iterative Enhancement Model in Software Development - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and
well explained computer science and programming articles, quizzes and
practice/competitive programming/company interview Questions.
https://www.geeksforgeeks.org/iterative-enhancement-model-in-software-de
velopment/
Incremental Model
➡️ Build and deployed in modules.
Agile Model
Notes-Module 1 19
Agile in Software Engineering
👉Subscribe to our new channel:https://www.youtube.com/@varunainashots
►Software Engineering (Complete Playlist):
https://www.youtube.com/watch?v=Xs6E-MAJbfE
Notes-Module 1 20