Professional Documents
Culture Documents
INTRODUCTION TO
SOFTWARE ENGINEERING
SOFTWARE
⮚ Characteristics of Software
⮚ Software is developed or engineered; it is not manufactured
in the classical sense
⮚ Software doesn’t “wear out.”
⮚ Although the industry is moving toward component-based
construction, most software continues to be custom built
SOFTWARE
⮚ Engineering
⮚Application of
⮚Science,
⮚Tools and
⮚Methods
⮚to find cost effective solution to problems
⮚is all about developing products, using well-defined,
scientific principles and methods
INTRODUCTION TO SOFTWARE ENGINEERING
⮚Software Engineering
⮚is the science and art of building significant software
systems based on
⮚ Time
⮚ Budget
⮚ Acceptable performance
⮚ Correct operation
⮚A systematic, disciplined and quantifiable approach in
the development, operation and maintenance of software
⮚Objective
⮚ To produce software products
INTRODUCTION TO SOFTWARE ENGINEERING
⮚Software Engineering
⮚Goal
⮚ to “devise methodologies that are founded on the notion of
evolution”; that is, the notion that software systems
continually change, new software systems are built from the
old ones, and . . . all must interoperate and cooperate with
each other”
⮚Software framework encompasses
⮚ a process,
⮚ a set of methods, and
⮚ an array of tools
⮚ that we call software engineering
INTRODUCTION TO SOFTWARE ENGINEERING
• Software products are produced with the help of the software process.
ESSENTIAL CHARACTERISTICS OF SOFTWARE
PRODUCT:
1. Efficiency:
The software should not make wasteful use of system resources such as memory
and processor cycles.
System resources should be used optimally
2. Maintainability:
It should be possible to evolve the software to meet the changing requirements
of customers.
3. Dependability:
Dependable software should not cause any physical or economic injury within the
event of system failure.
It includes a range of characteristics such as reliability, security and safety.
ESSENTIAL CHARACTERISTICS OF SOFTWARE
PRODUCT:
4. In time:
Software should be developed well in time.
5. Within Budget:
The software development costs should not overrun and it should be within the
budgetary limit.
6. Functionality:
The software system should exhibit the proper functionality, i.e, it should perform
all the functions it is supposed to perform.
7. Adaptability:
The software system should have the ability to get adapted to a reasonable extent
with the changing requirements.
8. Usability:
Good software product should be easily usable by the user.
SOFTWARE PRODUCT
TYPES OF SOFTWARE PRODUCTS
Generic products are the stand-alone systems that are developed by a production
unit and sold on the open market to any customer who is able to buy them.
Eg
Word Processors, CAD/CAM Packages
2. Customized Products:
• a collection of activities, actions, and tasks that are performed when some
work product is to be created
• The software process is a way in which we produce software.
• Framework that describe activities performed at each stage of Software
development.
• It is an approach to develop a software product.
• Set of activities whose goal is development or evolution of Software.
• Process Activities:
⮚ Software Analysis – Analyze the requirements and constraints defined by users
or customers about the software.
⮚ Software Specification – Specify the structure of the S/W according to
requirements
⮚ Software Development – Coding – Production of Software System.
⮚ Software Validation - Testing– Checking whether software is according to
customer needs.
⮚ Software Evolution – Changing Software in response to changing demands.
WHY IS SOFTWARE ENGINEERING REQUIRED?
• Cost Management
• In this stage, all the requirements for the target software are specified.
• These requirements get approval from the customers, market analysts, and
stakeholders.
• This document specifies everything that need to be defined and created during the
entire project cycle.
SOFTWARE DEVELOPMENT LIFECYCLE
• SRS is a reference for software designers to come out 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).
• After evaluating all the possible factors, the most practical and logical design is
chosen for the development.
SOFTWARE DEVELOPMENT LIFECYCLE
⚫ 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.
⚫ Some popular languages like C/C++, Python, Java, etc. are put into use as per the
software regulations.
SOFTWARE DEVELOPMENT LIFECYCLE
• After the development of the product, testing of the software is necessary to ensure
its smooth execution.
• Therefore at this stage, all the probable flaws are tracked, fixed, and retested.
• This ensures that the product confronts the quality requirements of SRS.
SOFTWARE DEVELOPMENT LIFECYCLE
⚫ After detailed testing, the conclusive product is released in phases as per the organization’s
strategy.
⚫ However, this alone is not enough. Therefore, along with the deployment, the product’s
supervision.
PROCESS MODELS – WATERFALL MODEL
PROCESS MODELS – WATERFALL MODEL
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 determine 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.
PROCESS MODELS – WATERFALL MODEL
3) Design:
• The aim of the design phase is to transform the requirements specified in the SRS
document into a structure that is suitable for implementation in some programming
language.
• The aim of the unit testing phase is to check whether each module is working
properly or not.
PROCESS MODELS – WATERFALL MODEL
• During each integration step, modules are added to the partially integrated system
System testing consists three different kinds of testing activities as described below :
Maintenance:
• Most important phase of a software life cycle.
• 60 % of total effort.
• There are basically three types of maintenance :
– Corrective Maintenance: to correct errors that were not discovered during
the product development phase.
4. Milestones.
5. Well Documented.
1. No feedback path.
3. No overlapping of phases.
SPIRAL MODEL
SPIRAL MODEL
SPIRAL MODEL
• The exact number of loops of the spiral is unknown and can vary from project to
project.
• 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.
• In the fourth quadrant, the Customers evaluate the so far developed version of the
software.
1. Risk Handling.
3. Flexibility in Requirements.
4. Customer Satisfaction.
DISADVANTAGES
1. Complex in Nature.
2. Expensive.
• The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built.
• In many instances, the client only has a general view of what is expected
from the software product. In such a scenario where there is an absence of
detailed information regarding the input to the system, the processing
needs, and the output requirement, the prototyping model may be
employed.
PROTOTYPING MODEL
STEPS OF PROTOTYPING MODEL:
Throwaway/Rapid Prototyping:
Evolutionary Prototyping:
Incremental Prototyping:
• In this type of incremental Prototyping, the final expected product is broken into
different small pieces of prototypes and being developed individually.
• In the end, when all individual pieces are properly developed, then the different
prototypes are collectively merged into a single final product in their predefined
order.
• It’s a very efficient approach which reduces the complexity of the development
process, where the goal is divided into sub-parts and each sub-part is developed
individually.
• The time interval between the project begin and final delivery is substantially
reduced because all parts of the system are prototyped and tested simultaneously
ADVANTAGES:
3. Reduces time and cost as the defects can be detected much earlier.
3. The effort invested in building prototypes may be too much if it is not monitored
properly.
INCREMENTAL PROCESS MODEL
INCREMENTAL PROCESS MODEL
• Next Increment.
• Error Reduction.
• Agile methods break tasks into smaller iterations, or parts ,do not directly
involve long term planning.
• Agile model believes that every project needs to be handled differently and
the existing methods need to be tailored to best suit the project
requirements.
• In Agile, the tasks are divided to time boxes (small time frames) to deliver
specific features for a release.
• Each build is incremental in terms of features; the final build holds all the
features required by the customer.
AGILE DEVELOPMENT MODELS:
AGILE DEVELOPMENT VALUES
AGILE DEVELOPMENT VALUES
• This used to result in wastage of both time and resources. If the customers
are kept in the loop during the development process, team members can
ensure that the final product meets all the requirements of the client.
AGILE DEVELOPMENT VALUES