Se Notes
Se Notes
LECTURE NOTES
SOFTWARE ENGINEERING
AY: 2024-2025
YEAR : II
SEMESTER : II
STREAM : CSE
VERIFIED BY
Definition of Engineering: Application of science, tools and methods to find cost effective
solution to problems.
OR
CHARACTERISTICS OF A SOFTWARE
1. Software is developed or engineered; it is not manufactured.
2. Software does not wear out.
3. Most of the software is custom built, rather than being assembled from existing
components.
simplification of actual failure models for software. However, the implication is clear
software doesn’t wear out. But it does deteriorate.
3.Most of the software is custom built, rather than being assembled from existing
components:
1. System software: Infrastructure software come under this category like compilers,
operating systems, editors, drivers, etc. Basically, system software is a collection of
programs to provide service to other programs.
2. Application software: Application software is a type of computer program that performs
a specific personal, educational, and business function. Each application is designed to
assist end-users in accomplishing a variety of tasks, which may be related to productivity,
creativity, or communication.
3. Engineering and Scientific software: Scientific and engineering software satisfies the
needs of a scientific or engineering user to perform enterprise-specific tasks. Such
software is written for specific applications using principles, techniques, and formulae
particular to that field. Examples are software like MATLAB, AUTOCAD, PSPICE,
ORCAD, etc.
4. Embedded software: This type of software is placed in “Read-Only- Memory (ROM)”
of the product and control the various functions of the product. The product could be an
aircraft, automobile, security system, signaling system, control unit of power plants, etc.
he embedded software handles hardware components and is also termed as intelligent
software.
5. Product line Software: software product line is a set of software- intensive systems
sharing a common, managed set of features that satisfy the specific needs of a particular
market segment or mission and that are developed from a common set of core assets in a
prescribed way.
6. Artificial intelligence software: Artificial Intelligence software makes use of non
numerical algorithms to solve complex problems that are not amenable to computation or
straight forward analysis. Examples are expert systems, artificial neural network, signal
processing software etc.
7. Web based software: The software related to web applications come under this category.
Examples are CGI, HTML, Java, Perl, DHTML etc.
SOFTWARE MYTHS
There are some misbelieves in the software industry about the software and process of
building software. For any software developer it is must to know such beliefs and reality
about them.
Myths --> misleading attitudes of people ---> serious problems in software production
The Myths are classified into 3 categories. They are
1. Management Myths
2. Customer Myths
3. Practitioner Myths
1. Management Myths:- In the management, the managers are responsible for the
development of software. Some of myths of managers are
(i) Myth:- The management thinks “We already have books with full of standards and
procedures for developing software?”
Reality:-Even though we have all standards and procedures with us for helping the developer
to develop a software. But it is not possible for software professionals to develop a desired
product with required quality.
Reality:-Adding more people in order to catch the schedule will cause the reverse effect on
the software project that is software project will get delayed. Because, we have to spend more
time on educating people or informing them about the project.
2. Customer Myths:- A customer who requests computer software may be a person at the
next desk, an outside company that has requested software under contract, an in-house group
,a marketing or sales group. Customer myths --lead to false expectations (by customers) and
ultimately, dissatisfaction with the developers.
(i)Myth:- We can start writing the program by using general problem statements only. Later
we can add more required functionalities in the program.
Reality:-It is not possible each time to have comprehensive problem statement. We have to
start with general problem statements; however by proper communication with customer the
software professionals can gather useful information. The most important thing is that the
problem statement should be unambiguous to begin with.
Reality : It’s true that software requirement change, but the impact of change varies with the
time at which it is introduced. When requirement changes are requested early(before design),
cost impact is relatively small. However, as time passes, cost impact grows rapidly. Similarly,
the additional resources and more design modifications may be demanded by the software.
3.Practitioner’s Myths:- The practitioner may be Planning group- System analysts, system
architects, Development group- Software engineers ,Verification group-Test engineers,
quality assurance group, Support group- Customer supporters, technical supports,
Marketing/sales- Marketing people and product sales .
(i)Myth:- “Once we write the program and get it to work, our job is done.”
Reality:-Even though we obtain that the program is running major part of work is after
delivering it to the customer.
2. Process
The method provides the answers of all 'how-to' that are asked during the process.
It provides the technical way to implement the software.
It includes collection of tasks starting from communication, requirement analysis,
analysis and design modelling, program construction, testing and support.
4. Tools
The software engineering tool is an automated support for the software development.
The tools are integrated i.e the information created by one tool can be used by the other
tool.
For example: The Microsoft publisher can be used as a web designing tool.
A PROCESS FRAMEWORK:
The process of framework defines a small set of activities that are applicable to all types
of projects.
The software process framework is a collection of task sets.
Task sets consist of a collection of small work tasks, project milestones, work
productivity and software quality assurance points.
Umbrella activities
In this activity, the developing team accesses project plan and compares it with the
predefined schedule.
If these project plans do not match with the predefined schedule, then the required
actions are taken to maintain the schedule.
2. Risk management
SQA is the planned and systematic pattern of activities which are required to give a
guarantee of software quality.
For example, during the software development meetings are conducted at every stage
of development to find out the defects and suggest improvements to produce good
quality software.
It consists of the activities that are needed to create the documents, forms, lists, logs
and user manuals for developing a software.
1. Communication:
The software development starts with the communication between customer and developer.
2. Planning:
It consists of complete estimation, scheduling for project development and tracking.
3. Modeling:
Modeling consists of complete requirement analysis and the design of the project like
algorithm, flowchart etc.
The algorithm is the step-by-step solution of the problem and the flow chart shows a
complete flow diagram of a program.
4. Construction:
Construction consists of code generation and the testing part.
Coding part implements the design details using an appropriate programming language.
Testing is to check whether the flow of coding is correct or not.
Testing also check that the program provides desired output.
5. Deployment:
Deployment step consists of delivering the product to the customer and take feedback
from them.
If the customer wants some corrections or demands for the additional capabilities, then
the change is required for improvement in the quality of the software.
The intent of maturity model is to provide overall indication of the “maturity of the
process” used by a software.
Means the intent of maturity model is:
1. As a continuous model
2. As a staged model
1. Continuous CMMI model:
Level 0: INCOMPLETE:
Process is ad-hoc; Objective and goal of process are as are not known.
Level 1: PERFORMED:
All the specific goals of the process area (defined by CMMI) have been satisfied.
Work tasks required to produce work products are conducted.
Level 2: MANAGED:
All capability level1 criteria have been satisfied.
All work tasks and activities or work products are monitored, reviewed,
controlled and evaluated.
Level 3: DEFINED:
All capability level2 criteria have been achieved.
Activities are standardized, integrated and documented
Level 4: QUANTITATIVELY MANAGED:
All capability level3 criteria have been achieved.
Metrics and indicators are available to measure the process and quality
In addition, process is controlled and improved using measurement and quantitative
assessment.
Level5: OPTIMIZED:
All capability level4 criteria have been achieved.
Continuous process improvement based on quantity feedback from user.
Use of innovative ideas and techniques, statistical quality control and other methods
for process improvement and optimization.
The process is optimized by statistical means to meet changing needs of customer and
continuously improve efficiency of process.
1. This model is used if you have no clue of how to improve the process for quality
software.
2. This model defines same process areas, goals as continuous model.
3. The difference is that it defines five maturity levels, rather than capability levels.
4. Levels are called maturity level.
5. It gives a suggestion of what things, the other organizations have found helpful to
work first.
6. To achieve a maturity level, the goals of that process are must be achieved.
7. The next table is the relationship between maturity levels and process areas:
The linear sequential model, sometimes called the classic life cycle or the waterfall
model, suggests a systematic, sequential approach to software development that begins at the
system level and progresses through communication, planning, modeling, construction and
deployment. The following given figure illustrates the linear sequential model for software
engineering.
i) Communication :
This activity involves heavy communication with customers and other stakeholders in order
to gather requirements and other related activities.
(ii) Planning : Here a plan to be followed will be created which will describe the technical
tasks to be conducted, risks, required resources, work schedule etc.
(iii) Modeling : A model will be created to better understand the requirements and design to
achieve these requirements.
(iv) Construction : Here the code will be generated and tested.
(v) Deployment :
Here, a complete or partially complete version of the software is represented to the
customers to evaluate and they give feedbacks based on the evaluation.
Advantages of Waterfall model:-
• It is suitable for routine type of projects, where all the requirements are well understood.
• Risk is low.
• Work flow is in a linear (i.e., sequential) fashion.
• Used often with well-defined adaptations or enhancements to current software.
• It works very quickly.
Disadvantages of Waterfall model: -
• Doesn't support iteration, so changes can cause confusion.
• Difficult for customers to state all requirements explicitly.
• Customers must have patience (because a working version of the program doesn't occur
until the final phase).
• Inflexible partitioning of the project into distinct stages makes it difficult to respond to
changing customer requirements.
• The waterfall model is mostly used for large systems engineering projects where a system
is developed at several sites.
2.INCREMENTAL PROCESS MODELS:-
The incremental process models are classified into 2 types. They are
1. Incremental model.
2. RAD model.
Incremental Model:-The incremental model combines the elements of the waterfall model
with the iterative nature of prototyping model. The incremental model applies the linear
The incremental model combines elements of the linear sequential model with the
iterative philosophy of prototyping. The incremental model applies linear sequences in a
staggered fashion as calendar time progresses. Each linear sequence produces a deliverable
“increment” of the software. In incremental model, the first increment is often a core product.
For example, word-processing software developed using the incremental paradigm might
deliver basic file management, editing, and document production functions in the first
increment; more sophisticated editing and document production capabilities in the second
increment; spelling and grammar checking in the third increment; and advanced page layout
capability in the fourth increment etc.,
The incremental model is iterative in nature. So, it mainly focuses on the delivery of an
operational product with each increment.
• It results in better testing, because testing each increment is easier than testing the
whole system at once.
• Multiple independent deliveries are identified.
• Work flow is in a linear (i.e., sequential) fashion within an increment and is staggered
(moved) between increments.
• Iterative in nature; focuses on an operational product with each increment
• It is useful when their is less number of staff people.
Disadvantages of Incremental model:-
• Additional staff must be added for the next increments.
• The software is not released as a whole.
RAD Model :
Rapid Application Development (RAD) is an incremental software development process
model which is a “high-speed” adaptation of the linear sequential model in which rapid
development is achieved by using component-based construction. If requirements are well
understood and project scope is constrained, the RAD process enables a development team to
create a “fully functional system” within very short time periods, such as in 60 to 90 days.
(i) Communication :
This step works to understand the business problems and the information characteristics that
the software must accommodate.
(ii) Planning : This is very important as multiple teams work on different systems.
(iii) Modeling : Modeling includes the major phases, like business, data, process modeling
and establishes design representation that serves as the basis for RAD’s construction activity.
(ii) Planning — Tasks required to define resources, timelines, and other project related
information.
(iii) Modeling — Tasks required in building one or more representations of the application.
(v) Deployment — Tasks required to deliver the software, getting feedbacks etc.
specific expertise.).
Cost involved in this model is usually high.
It is not suitable for low risk projects.
Project’s success is highly dependent on the risk analysis phase.
Agile Methodology
1.Requirements gathering
3.Construction/ iteration
5.Deployment
6.Feedback
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based
on this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders
to define requirements. You can use the user flow diagram or the high-level UML diagram to
show the work of new features and show how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the work begins.
Designers and developers start working on their project, which aims to deploy a working
product. The product will undergo various stages of improvement, so it includes simple,
minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance
and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
1. Scrum
2. Crystal
6. eXtreme Programming(XP)
Extreme programming is one of the most popular and well-known approaches in the family
of agile methods. an XP project starts with user stories which are short descriptions of what
scenarios the customers and users would like the system to support. Each story is written on
a separate card, so they can be flexibly grouped.
Good Practices in Extreme Programming
Some of the good practices that have been recognized in the extreme programming model
and suggested to maximize their use are given below:
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of
programmers who switch their work between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests
test-driven development (TDD) to continually write and execute test cases. In the TDD
approach, test cases are written even before any code is written.
Incremental development: Incremental development is very good because customer
feedback is gained and based on this development team comes up with new increments
every few days after each iteration.
Simplicity: Simplicity makes it easier to develop good-quality code as well as to test
and debug it.
Design: Good quality design is important to develop good quality software. So,
everybody should design daily.
Integration testing: Integration Testing helps to identify bugs at the interfaces of
different functionalities. Extreme programming suggests that the developers should
achieve continuous integration by building and performing integration testing several
times a day.