0% found this document useful (0 votes)
4 views54 pages

Module 1

The document provides an overview of software engineering, defining it as a systematic approach to the development, operation, and maintenance of software. It discusses various software process models, including the Waterfall model, and emphasizes the importance of quality management, project planning, and the Capability Maturity Model Integration (CMMI) for improving software processes. Additionally, it outlines key activities in software production, such as communication, planning, modeling, construction, and deployment.

Uploaded by

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

Module 1

The document provides an overview of software engineering, defining it as a systematic approach to the development, operation, and maintenance of software. It discusses various software process models, including the Waterfall model, and emphasizes the importance of quality management, project planning, and the Capability Maturity Model Integration (CMMI) for improving software processes. Additionally, it outlines key activities in software production, such as communication, planning, modeling, construction, and deployment.

Uploaded by

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

Software Engineering

 Basic of S/W Engineering


 Layered Technology
 Software Process Framework
 Generic Process Framework
Activities
 Umbrella Activities
 CMMI Level
What is software?

 Computer programs and associated documentation


 Software products may be developed for a
particular customer or may be developed for a
general market
 Software products may be
 Generic - developed to be sold to a range of
different customers
 Custom - developed for a single customer
according to their specification
What is software engineering?
 IEEE-Definition :
(1) The application of systematic, disciplined, quantifiable
approach to the development, operation, and
maintenance of software; that is, the application of
engineering to software.
(2) Its a discipline that is concerned with all aspects of
software production.

 Software engineers should adopt


 Systematic and organized approach to their work
 Use appropriate tools and techniques depending on the
problem to be solved
 The development constraints and the resources available
 Apply Engineering Concepts to developing Software
 Challenge for Software Engineers is to produce high quality
software with finite amount of resources & within a predicted
schedule
Insimple word - software engineering is
about designing, building, testing, and
maintaining computer programs and systems
 Software engineering is an engineering discipline that
is concerned with all aspects of software production
from the early stages of system specification through
to maintaining the system after it has gone into use.
 Engineering discipline
 Using appropriate theories and methods to solve problems
within organizational and financial constraints.
 All aspects of software production
 Not just technical process of development. Also project
management and the development of tools, methods etc. to
support software production.
Engineering Process
Layered Technology

A quality Focus
 Every organization is rest on its commitment to quality.
 Total quality management, Six Sigma, or similar continuous
improvement culture and it is this culture ultimately leads to
development of increasingly more effective approaches to software
engineering.
 The bedrock that supports software engineering is a quality focus.
Process:

 It’s a foundation layer for software engineering.


 A set of activities whose goal is the development or evolution of
software
 The processes define the tasks to be performed and the order in
which they are to be performed
 Generic activities in all software processes are:
 Specification - what the system should do and its development
constraints
 Development - production of the software system
 Validation - checking that the software is what the customer wants
 Evolution - changing the software in response to changing
demands
Methods:
 It provide the technical how-to's for building software.
 Methods encompass a broad array of tasks that include requirements
analysis, design, program construction, testing, and support.
 There could be more than one technique to perform a task and
different techniques could be used in different situations.
Tools:
 Software systems which are intended to provide automated support
for software process activities. CASE systems are often used for
method support
 Upper-CASE
Tools to support the early process activities of requirements and
design
 Lower-CASE
Tools to support later activities such as programming, debugging and
testing
Process Framework
•Each framework activities is
populated by a set for software
engineering actions – a collection
of related tasks.
• Each action has individual work
task.
Generic Process Framework
Activities
Communication:

Heavy communication with customers, stakeholders, team
 Encompasses requirements gathering and related activities
 Planning:
 Workflow that is to follow
 Describe technical task, likely risk, resources will require, work
products to be produced and a work schedule.
 Modeling:
 Help developer and customer to understand requirements
(Analysis of requirements) & Design of software
 Construction
 Code generation: either manual or automated or both
 Testing – to uncover error in the code.
 Deployment:
 Delivery to the customer for evaluation
 Customer provide feedback
Umbrella Activities
 Software project tracking and control
 Assessing progress against the project plan.
 Take adequate action to maintain schedule.
 Formal technical reviews
 Assessing software work products in an effort to uncover and remove errors before
goes into next action or activity.
 Software quality assurance
 Define and conducts the activities required to ensure software quality.
 Software configuration management
 Manages the effects of change.
 Document preparation and production
 Help to create work products such as models, documents, logs, form and list.
 Reusability management
 Define criteria for work product reuse
 Mechanisms to achieve reusable components.
 Measurement
 Define and collects process, project, and product measures
 Assist the team in delivering software that meets customer’s needs.
 Risk management
 Assesses risks that may effect that outcome of project or quality of product (i.e.
Capability Maturity Model
Integration (CMMI)
 The Software Engineering Institute (SEI) has
developed process meta-model to measure
organization different level of process capability
and maturity.
 CMMI – developed by SEI
 The CMMI defines each process area in terms of
“specific goals” and the “specific practices”
required to achieve these goals.
 Specific goals establish the characteristics that
must exist if the activities implied by a process
area are to be effective.
 Specific practices refine a goal into a set of
process-related activities.
 Fulfilling customer needs and expectations.
 Value creation for investors/stockholders.
 Market growth is increased.
 Improved quality of products and services.
 Enhanced reputation in Industry.
 Staged Representation :
 uses a pre-defined set of process areas to define improvement path.
 provides a sequence of improvements, where each part in the sequence
serves as a foundation for the next.
 an improved path is defined by maturity level.
 maturity level describes the maturity of processes in organization.
 Staged CMMI representation allows comparison between different
organizations for multiple maturity levels.
 Continuous Representation :
 allows selection of specific process areas.
 uses capability levels that measures improvement of an individual process
area.
 Continuous CMMI representation allows comparison between different
organizations on a process-area-by-process-area basis.
 allows organizations to select processes which require more improvement.
 In this representation, order of improvement of various processes can be
selected which allows the organizations to meet their objectives and
eliminate risks.
CMMI Level

Level 0 (Incomplete) –
 Process are not perform or not achieve all the goals and objectives
defined by the CMMI for Level I capability.
Level 1 (Performed) – All specific goals are performed as per defined by CMMI
Level 2 (Managed) –
 All level 1 criteria have been satisfied
 In addition to Level I;
 People doing work have access to adequate resources to get job
done,
 Stakeholders are actively involved,
 Work tasks and products are monitored, controlled, reviewed, and
evaluated for conformance to process description.
Level 3 (Defined) –
 All level 2 criteria have been achieved.
 In addition;
 management and engineering processes documented
 standardized and integrated into organization-wide software process
Level 4 (Quantitatively Managed) -
 All level 3 criteria have been satisfied.
 Software process and products are quantitatively understood
 Controlled using detailed measures and assessment.
Level 5 (Optimized) –
 Continuous process improvement is enabled by quantitative feedback
from the process and testing innovative ideas.
 CMMI provides a structured approach to process improvement,
ensuring higher quality and lower risk in organizational processes.
 The staged or continuous representation, organizations can achieve
different maturity or capability levels, leading to standardized,
managed, and optimized processes. This systematic improvement
enhances customer satisfaction, market reputation, and overall
business performance. CMMI is a valuable tool for organizations
seeking to integrate and enhance their processes effectively.
Process Model
 Different process models
 Build-and-fix model
 Waterfall model
 Incremental model
 Evolutionary process models
 Rapid prototyping model
 Spiral model
 Agile process models
 Extreme programming
 Object-oriented life-cycle models
 Unified Process
 Criteria for deciding on a model
Software Process Model

 Process model (Life-cycle model) -steps through


which the product progresses
 Requirements phase
 Specification phase
 Design phase
 Implementation phase
 Integration phase
 Maintenance phase
 Retirement
Build and Fixed Model

 Problems
 No specifications
 No design
 Totally unsatisfactory
 High cost
 Difficult maintenance
Waterfall Model
 The Waterfall Model was the first Process Model to be introduced. It is also
referred to as a linear-sequential life cycle model. It is very simple to
understand and use. In a waterfall model, each phase must be completed
before the next phase can begin and there is no overlapping in the phases.
 the outcome of one phase acts as the input for the next phase sequentially.
 1. Requirements Analysis and Specification
 Requirement Analysis and specification phase aims to understand the
exact requirements of the customer and document them properly. This phase
consists of two different activities.
 1. 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 (an inconsistent requirement is one in
which some part of the requirement contradicts some other part).
Waterfall Model
 2. 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.
 2. Design
 The goal of this Software Design 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).
 High-Level Design (HLD): This phase focuses on outlining the broad
structure of the system. It highlights the key components and how they
interact with each other, giving a clear overview of the system’s
architecture.
 Low-Level Design (LLD): Once the high-level design is in place, this
phase zooms into the details. It breaks down each component into smaller
parts and provides specifics about how each part will function, guiding the
actual coding process.
 3. Development
 In the Development 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.
 In this phase, developers begin writing the actual source code based
on the designs created earlier.
 The goal is to transform the design into working code using the most
suitable programming languages.
 Unit tests are often performed during this phase to make sure that
each component functions correctly on its own.
 4. Testing and Deployment
 1. Testing: Integration of different modules is undertaken soon after
they have been coded and unit tested. Integration of various modules
is carried out incrementally over several steps. 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.
 2. Deployment: Once the software has been thoroughly tested, it's
time to deploy it to the customer or end-users. This means making
the software ready and available for use, often by moving it to a live
or staging environment.
 During this phase, we also focus on helping users get comfortable
with the software by providing training, setting up necessary
environments, and ensuring everything is running smoothly. The goal
is to make sure the system works as expected in real-world conditions
and that users can start using it without any hitches.
 5. Maintenance
 In Maintenance Phase 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.
 Features of Waterfall Model
 Sequential Approach: The waterfall model involves a sequential
approach to software development, where each phase of the project is
completed before moving on to the next one.
 Document-Driven: The waterfall model depended on documentation to
ensure that the project is well-defined and the project team is working
towards a clear set of goals.
 Quality Control: The waterfall model places a high emphasis on quality
control and testing at each phase of the project, to ensure that the final
product meets the requirements and expectations of the stakeholders.
 Rigorous Planning: The waterfall model involves a careful planning
process, where the project scope, timelines, and deliverables are
carefully defined and monitored throughout the project lifecycle.
 the waterfall model is used in situations where there is a need for a
highly structured and systematic approach to software development. It
can be effective in ensuring that large, complex projects are completed
on time and within budget, with a high level of quality and customer
satisfaction.
 Importance of Waterfall Model
 Clarity and Simplicity: The linear form of the Waterfall Model offers
a simple and unambiguous foundation for project development.
 Clearly Defined Phases: The Waterfall Model phases each have
unique inputs and outputs, guaranteeing a planned development with
obvious checkpoints.
 Documentation: A focus on thorough documentation helps with
software comprehension, maintenance, and future growth.
 Stability in Requirements: Suitable for projects when the
requirements are clear and stable, reducing modifications as the
project progresses.
 Resource Optimization: It encourages effective task-focused work
without continuously changing contexts by allocating resources
according to project phases.
 Relevance for Small Projects: Economical for modest projects with
simple specifications and minimal complexity.
Rapid Prototyping Model
 Prototyping is defined as the process of
developing a working replication of a product
or system that has to be engineered.
 It offers a small scale replica of the end
product and is used for obtaining customer
feedback as described below:
 The Prototyping Model is one of the most popularly used
Software Development Life Cycle Models (SDLC models). This
model is used when the customers do not know the exact project
requirements beforehand.
 a prototype of the end product is first developed, tested, and refined
as per customer feedback repeatedly till a final acceptable prototype
is achieved which forms the basis for developing the final product.
 In this process model, the system is partially implemented before or
during the analysis phase thereby allowing the customers to see the
product early in the life cycle. The process starts by interviewing the
customers and developing the incomplete high-level paper model.
 This document is used to build the initial prototype supporting only
the basic functionality as desired by the customer. Once the
customer figures out the problems, the prototype is further refined to
eliminate them. The process continues until the user approves the
prototype and finds the working model to be satisfactory.
Rapid Prototyping Model (contd.)

Rapid application development is a software development


methodology that uses minimal planning in favor of rapid
prototyping. A prototype is a working model that is
functionally equivalent to a component of the product.
 In the RAD model, the functional modules are developed in parallel as
prototypes and are integrated to make the complete product for
faster product delivery. Since there is no detailed preplanning, it
makes it easier to incorporate the changes within the development
process.
 RAD projects follow iterative and incremental model and have small
teams comprising of developers, domain experts, customer
representatives and other IT resources working progressively on their
component or prototype.
Rapid Prototyping Model
(contd.)

Rapid prototype characteristics:
 Used in the requirements phase
 Evaluated by the customer/user
 Then,
it is discarded -do not turn into
product
 Rapidprototyping model is not proven
and has its own problems
 Possible solution
Rapid prototyping for defining
requirements
Waterfall model for rest of life cycle
Incremental Model
 Incremental Model is a process of software development where
requirements are broken down into multiple standalone modules
of software development cycle.
 Each iteration passes through the requirements, design, coding
and testing phases.
 Typical product takes from 5 to 25 builds (iterations).
Incremental Model (contd.)
Incremental Model (contd.)
 Waterfall and rapid prototyping models
 Deliver complete product at the end
 Incremental model
 Deliver portion of the product at each stage
 Advantages
 The software will be generated quickly during the software life cycle
 It is flexible and less expensive to change requirements and scope
 Throughout the development stages changes can be done
 This model is less costly compared to others
 A customer can respond to each building
 Errors are easy to be identified
 Partial System Delivery: The system is developed and
delivered in small, manageable pieces. Each part adds new
features to the previous version.
 Early Functionality: Basic functionality is available early in
the project. This allows users to start using and testing the
system quickly.
 Customer Feedback Loop: Feedback is collected after each
part is delivered. This helps improve the next version of the
system.
 Flexible to Changes: Changes or new features can be added
between increments. This makes the model flexible to
evolving needs.
 Combination of Linear and Iterative
Approaches: Combines the structured approach of Waterfall
with flexibility. Supports both planning and ongoing
improvements.
 Requirement Analysis
 The first step in the Incremental Model is understanding
what the software needs to do. The team gathers the
requirements from the product experts and clearly
defines the system’s functional needs. This phase is
important because it sets the foundation for everything
else in the development process.
 Design & Development
 Next, the team focuses on designing how the software
will function and starts developing it. They work on
adding new features and making sure the system works
as expected. The design and development steps go
hand-in-hand to build the functionality of the software.
 Testing
 Once a feature is developed, it goes through testing. The
testing phase checks how the software performs,
including both new and existing features. The team uses
different testing methods to make sure everything is
working correctly.
 Implementation
 This phase involves writing the final code based on the
design and development steps. After testing the
functionality, the team verify that everything is working
as planned. By the end of this phase, the product is
gradually improved and updated until it becomes the
final working version.
Incremental Model (contd.)

 Disadvantages:
 It requires a good planning designing
 Problems might arise due to system architecture as
not all requirements collected up front for the entire
software lifecycle
 Each iteration phase is rigid and does not overlap
each other
 Correcting a problem in one unit requires correction in
all the units and consumes a lot of time
When to use Incremental
models?
 Requirements of the system are clearly understood
 When demand for an early release of a product arises
 When software engineering team are not very well skilled or
trained
 When high-risk features and goals are involved
 Such methodology is more in use for web application and
product based companies
Spiral Model
 The spiral model is a risk-driven software development process model.
 Based on the unique risk patterns of a given project, the spiral model guides
a team to adopt elements of one or more process models, such as
incremental, waterfall, or evolutionary prototyping.
 Risk Analysis: Identification of potential risk is done while risk mitigation
strategy is planned and finalized
 Precede each phase by
 Alternatives
 Risk analysis
 Follow each phase by
 Evaluation
 Planning of next phase
Simplified Spiral Model
 Objectives Defined
 In first phase of the spiral model we clarify what the project
aims to achieve, including functional and non-functional
requirements.
 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.
 . Risk Analysis and Resolving
 In the risk analysis phase, the risks associated with the
project are identified and evaluated.
 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.
 In the evaluation phase, the software is evaluated to determine if
it meets the customer's requirements and if it is of high quality.
 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 started.
 The next iteration of the spiral begins with a new planning phase,
based on the results of the evaluation.
 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.
Full Spiral Model
When to use Spiral
Methodology?
 When project is large
 When releases are required to be frequent
 When creation of a prototype is applicable
 When risk and costs evaluation is important
 For medium to high-risk projects
 When requirements are unclear and complex
 When changes may require at any time
 When long term project commitment is not feasible
due to changes in economic priorities

You might also like