0% found this document useful (0 votes)
10 views20 pages

Notes-Module 1: Introduction To Software Engineering

The document provides an overview of software engineering, defining it as the application of scientific knowledge to create fault-free software that meets user needs within budget and time constraints. It outlines the objectives, components, characteristics, and processes involved in software development, emphasizing the importance of maintenance and adaptation to changing requirements. Additionally, it compares software engineering processes with conventional engineering, highlighting differences in development, testing, and maintenance approaches.

Uploaded by

anuj921920
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views20 pages

Notes-Module 1: Introduction To Software Engineering

The document provides an overview of software engineering, defining it as the application of scientific knowledge to create fault-free software that meets user needs within budget and time constraints. It outlines the objectives, components, characteristics, and processes involved in software development, emphasizing the importance of maintenance and adaptation to changing requirements. Additionally, it compares software engineering processes with conventional engineering, highlighting differences in development, testing, and maintenance approaches.

Uploaded by

anuj921920
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

📒

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.

3. Software engineering is the application of methods and scientific knowledge to create


practical cost-effective solutions for the design, construction, operation and maintenance of
software.

Objective/aim of software engineering


1. To understand user conceptual models and development of better specification.

2. To satisfy the user's requirements.

3. To provide the software within budget and time.

4. To achieve low maintenance and production cost.

5. To achieve high performance.

Software Components
1. Set of programs
Program : A program is a set of instruction.

a. It is a collection of source code and objects code.


Examples of small programs are factorial of number or print a sequence of number up to
given limit.

b. A program is a subset of software and it becomes software only if documentation and


operating procedure manuals are prepared.

2. Software documents
Software documentation consist all the description, programs, graphics and instruction
pertaining to design, coding, testing and preparations of software.

Good software contain following type of documentations:


1. Analysis and specification
2. Design

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.

It can be divided in two parts:


1. User manual
2. Operational manuals

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.

b. In manufacturing phase of hardware, a quality problem can introduce if proper attention is


not paid at the time of manufacturing as once a product is manufactured it cannot be
modified easily.

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.

c. Designers focus on innovative elements.

d. While software is designed to meet user requirements.

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.

3. Software does not wear out.

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.

Systems become progressively less useful for a number of reasons :


1. 📉 The presence of the system changes the ways of working in its environment and this
generates new requirements. If these are not satisfied, the usefulness of the system declines.

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.

Number of different strategies for software change:


1. Software maintenance :

➡️ 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 :

➡️ This is a more radical approach to software change than maintenance as it involves


making significant changes to the architecture of the software system.
➡️ Most commonly, systems evolve from a centralised, datacentric architecture to client-
server architecture.

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.

Layers of Software Development


Software development operates as a layered technology, requiring progression from one layer to
another. Each layer is interrelated, with the fulfillment of the previous layer being a prerequisite.

Notes-Module 1 4
1. Quality Focus

a. Any engineering approach must be anchored in quality.

b. Quality focus acts as the "Bed Rock" supporting software engineering.

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

a. SE methods contribute the "Technical Questions" essential for software construction.

b. Methods encompass a wide range of tasks, including communication, requirement


analysis, design modeling, program construction, testing, and support.

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

Software Crisis - Software Engineering - 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/software-engineering-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

Evaluate the practicality and viability of the proposed software project.

Consider technical, economic, and operational factors to determine if the project is


feasible.

2. Requirement Analysis

Identify and understand the client's needs and expectations.

Define the features and functionalities required for the software.

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

Develop a blueprint of the software architecture.

Specify how different components will interact with each other.

5. Implementation

Write the actual code based on the design specifications.

Use programming languages and follow coding standards.

6. Testing

Conduct various tests to ensure the software functions as intended.

Identify and fix any bugs or issues in the code.

7. Deployment

Release the software for users or clients.

Ensure a smooth transition from development to the production environment.

8. Maintenance

Address and fix any post-deployment issues or bugs.

Update the software to meet changing requirements.

Similarities : Software & Conventional engineering processes

Notes-Module 1 6
1. Feasibility Analysis

Software Engineering: Involves assessing the feasibility of developing the software,


considering technical, operational, and economic aspects.

Conventional Engineering: Evaluates the feasibility of a project based on factors such as


materials, labor, and financial resources.

2. Requirement Analysis

Software Engineering: Focuses on gathering and analyzing user requirements to


understand the functionalities and features expected from the software.

Conventional Engineering: Involves a analysis of project requirements, on the load-


bearing capacities it must withstand, and establishing the expected lifespan or durability.
This also consider performance metrics, safety standards, and regulatory compliance.

3. Planning

Software Engineering: Involves creating a project plan, defining tasks, estimating effort,
allocating resources, and scheduling activities.

Conventional Engineering: Requires detailed planning for construction, manufacturing, or


other processes, including resource allocation, scheduling, and risk management.

4. Designing

Software Engineering: Involves creating high-level and low-level design specifications,


defining the software architecture, and detailing the components and their interactions.

Conventional Engineering: Encompasses the design of physical structures, systems, or


products, considering factors like materials, safety, and functionality.

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.

Conventional Engineering: Involves testing physical prototypes or models to ensure they


meet design requirements and standards.

6. Maintenance

Software Engineering: Includes activities like bug fixing, updates, and enhancements to
ensure the software remains effective and efficient over time.

Conventional Engineering: Requires ongoing maintenance to address wear and tear,


repair any damage, and ensure continued functionality of structures or systems.

Difference: Software & Conventional Engineering Process


Software Engineering Process Conventional Engineering Process

Software Engineering Process is a process The conventional Engineering Process is a


that majorly involves computer science, process that majorly involves science,
mathematics, and empirical knowledge.

Notes-Module 1 7
information technology, and discrete
mathematics.

It is mainly related to computers,


It is about building cars, machines,
programming, and writing codes for building
hardware, buildings, etc.
applications.

It majorly emphasizes quality. It majorly emphasizes mass production.

In Software Engineering Process In Conventional Engineering Process


construction and development cost is low. construction and development cost is high.

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.

Product development develops intangible Product development develops tangible


products (software). products (e.g. bridges, buildings).

Testing is an integral part of the Testing occurs mainly after product


development process. completion.

Maintenance and updates are necessary to Maintenance is typically scheduled or


keep software relevant. reactive.

Software Development Life Cycle (SDLC)


SDLC is a methodology that defines the entire procedure of software development step-by-
step.

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.

Stages of the Software Development Life Cycle

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.

The quality of the project is a result of planning.

Stage-2: Defining Requirements

In this stage, all the requirements for the target software are specified. These
requirements get approval from customers, market analysts, and stakeholders.

This is fulfilled by utilizing SRS (Software Requirement Specification). This is a sort of


document that specifies all those things that need to be defined and created during the
entire project cycle.

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.

Stage-4: Developing Product

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.

Stage-5: Product Testing and Integration

After the development of the product, testing of the software is necessary to ensure its
smooth execution.

Although, minimal testing is conducted at every stage of SDLC. Therefore, at this


stage, all the probable flaws are tracked, fixed, and retested. This ensures that the
product confronts the quality requirements of SRS.

Stage 6: Deployment and Maintenance of Products

After detailed testing, the conclusive product is released in phases as per the
organization’s strategy.

Then it is tested in a real industrial environment.

If it performs well, the organization sends out the product as a whole.

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.

Water Fall Model

🔥 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.

2. Requirements Analysis and Specification


Requirement gathering and analysis: Firstly all the requirements regarding the software are
gathered from the customer and then the gathered requirements are analyzed.

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).

Requirement specification: These analyzed requirements are documented in a software


requirement specification (SRS) document.

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.

A Software Design Document is used to document all of this effort (SDD).

4. Coding and Unit Testing


In the coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded.

The unit testing phase aims to check whether each module is working properly or not.

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.

Perfective Maintenance: This type of maintenance is carried out to enhance the


functionalities of the system based on the customer’s request.

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.

Disadvantages of the SDLC Waterfall Model


No Feedback Path: In the classical waterfall model evolution of software from one phase to
another phase is like a waterfall. It assumes that no error is ever committed by developers
during any phase. Therefore, it does not incorporate any mechanism for error correction.

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.

A Software Design Document is used to document all of this effort (SDD).

4. Coding (Implementation) and Unit Testing


In the coding phase software design is translated into source code using any suitable
programming language. Thus each designed module is coded.

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.

Perfective Maintenance: This type of maintenance is carried out to enhance the


functionalities of the system based on the customer’s request.

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.

Phases of Spiral Model


The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through
multiple iterations of the software development process. It consists of the following phases:

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.

The Radius of the spiral at any point


represents the expenses(cost) of the project
so far.

The angular dimension represents the


progress made so far in the current phase.

Risk Handling in Spiral Model


A risk is any adverse situation that might affect the successful completion of a software project.
The most important feature of the spiral model is handling these unknown risks after the project
has started. Such risk resolutions are easier done by developing a prototype.

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.

Why Spiral Model is called Meta Model?


The Spiral model is called a Meta-Model because it subsumes all the other SDLC models.

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.

Advantages of the Spiral Model


1. Good for large projects: It is recommended to use the Spiral Model in large and complex
projects.

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.

Disadvantages of the Spiral Model


Below are some main disadvantages of the spiral model.

1. Complexity: The Spiral Model can be complex, as it involves multiple iterations of the
software development process.

2. Expensive: Spiral Model is not suitable for small projects as it is expensive.

3. Time-Consuming: The Spiral Model can be time-consuming, as it requires multiple


evaluations and reviews.

4. Resource Intensive: The Spiral Model can be resource-intensive, as it requires a significant


investment in planning, risk analysis, and evaluations.

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.

Evolutionary Development Model [Iterative Enhancement


Models]

Evolutionary Model with real life examples | Software Engineering


👉Subscribe to our new channel:https://www.youtube.com/@varunainashots
►Software Engineering (Complete Playlist):
https://www.youtube.com/watch?v=SzRs2y1TcSY

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/

Selection of Software Development Models

Selection Process Parameters for a Software Life Cycle Model - 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/selection-process-parameters-for-a-software-life-cy
cle-model/

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

You might also like