0% found this document useful (0 votes)
15 views

UNIT1

The document provides an overview of software engineering, detailing its definition, characteristics, types, and the software development life cycle (SDLC). It discusses various software types, attributes of good software, and methodologies like Waterfall, Incremental, RAD, Spiral, and Agile models. Additionally, it introduces the Capability Maturity Model Integration (CMMI) for assessing process maturity in organizations.

Uploaded by

bheeshma9347
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)
15 views

UNIT1

The document provides an overview of software engineering, detailing its definition, characteristics, types, and the software development life cycle (SDLC). It discusses various software types, attributes of good software, and methodologies like Waterfall, Incremental, RAD, Spiral, and Agile models. Additionally, it introduces the Capability Maturity Model Integration (CMMI) for assessing process maturity in organizations.

Uploaded by

bheeshma9347
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/ 55

UNIT-I

Introduction to Software Engineering


Engineering: The Application of Science to the Solution of Practical
Problems.
Software Engineering: The Application of CS to Building Practical Software
Systems.
 Software is a set of instructions to acquire inputs and to manipulate them
to produce the desired output
 “A systematic approach to the analysis, design, implementation and
maintenance of software.”

 “ The systematic application of tools and techniques in the


development of computer-based applications.”

 “ Software Engineering is about designing and developing high-


quality software.”
 The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the
application of engineering to software.
Description of the Software
A software is described by its capabilities. The capabilities relate to the
functions it executes, the features it provides and the facilities it offers.

EXAMPLE

 Software written for Sales-order processing would have different functions


to process different types of sales order from different market segments .

 The features for example , would be to handle multi-currency computing,


updating product , sales and Tax status.

 The facilities could be printing of sales orders, email to customers and


reports to the store department to dispatch the goods.
What is Good Software?
 Software has number of attributes which decide
whether it is a good or bad .
 The definition of a good software changes with the
person who evaluates it.
 The software is required by the customer , used by
the end users of an organization and developed by
software engineer.
 Each one will evaluate the different attributes
differently in order to decide whether the software is
good.
What are the attributes of good software?
 The software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
Maintainability
 Software must evolve to meet changing needs
Dependability
 Software must be trustworthy
Efficiency
 Software should not make wasteful use of system resources
Usability
 Software must be usable by the users for which it was
designed
Types of software
The various categories of software are
1. System software
2. Application software
3. Engineering and scientific software
4. Embedded software
5. Product-line software
6. Web-applications
7. Artificial intelligence software
1.System Software
 A collection of programs written to service other programs at
system level.
For example, compiler, operating systems.
2.Application Software:
 Application software is defined as programs that solve a
specific business need.
 Application software is used to control business function in
real time.
Example: Word processing software, spreadsheet
software,multimedia software.
3. Engineering and Scientific Software - Software using “number
crunching” algorithms for different science and applications.
Example: System simulation, computer-aided design.
4.Embedded software
 Resides in read-only memory and is used to control
products and systems for the consumer and industrial
markets.
Examples are software used in instrumentation and
control applications like washing
machines,satellites,microwaves,etc.
 5.Product-lineSoftware:
Designed to provide a specific capability for use by
many different customers, product line software can
focus on the limited and esoteric marketplace or
address the mass consumer market.
 Example: Word processing,Graphics,DBMS
6.Web Application:

 It is a client-server computer program which the client


runs on the web browser.
Example: e-commerce and B2B application,to develop
web based applications like html,php,xml,etc.
7.Artificial Intelligence Software:

 Artificial intelligence software makes use of a non


numerical algorithm to solve a complex problem.
 Application within this area includes robotics, expert
system, pattern recognition, artificial neural network,
theorem proving and game playing.
Software - Characteristics
• Software has a dual role. It is a product, but also a vehicle for
delivering a product.
• Software is a logical rather than a physical system element.
• Software has characteristics that differ considerably from
those of hardware.
1.Software is developed or engineered, it is not manufactured in
the classical sense
2.Software doesn’t “wear out”
3.Most software is custom-built, rather than being assembled
from existing components.
• Software is developed or engineered; it is
not manufactured in the classical sense:
 Although some similarities exist between software
development and hardware manufacturing, few
activities are fundamentally different.
 In both activities, high quality is achieved through
good design, but the manufacturing phase for
hardware can introduce quality problems than
software.
• The software doesn’t “wear out.”:
 Hardware components suffer from the growing
effects of many other environmental factors.
Stated simply, the hardware begins to wear out.
 Software is not susceptible to the environmental
maladies that cause hardware to wear out.
 When a hardware component wears out, it is
replaced by a spare part.
 There are no software spare parts.
• The software continues to be custom-built:
 A software part should be planned and carried out
with the goal that it tends to be reused in various
projects.
 In the hardware world, component reuse is a
natural part of the engineering process.
Software Development Life Cycle (SDLC)
 The Software Development Life Cycle (SDLC) is a process
used by software development organizations to plan, design,
develop, test, deploy, and maintain software applications.
 There are several reasons why organizations use the Software
Development Life Cycle (SDLC) when developing software
applications:
 To provide a structured and organized approach to
software development:
 The SDLC provides a framework for managing the software
development process, which helps to ensure that all
necessary steps are taken and that the final product meets the
requirements.
1.To ensure that the software is of high quality.
2.To manage risks and costs.
3.To improve communication and collaboration.
4.To improve efficiency and productivity.
5.To increase the likelihood of a successful project
outcome.
 The SDLC is a valuable tool for organizations to use
when developing software applications, as it helps to
ensure that the final product is of high quality,
meets the requirements, and is delivered on time
and within budget.
The SDLC typically includes the following phases:
1. Requirements gathering and analysis: This phase
involves gathering information about the software
requirements from stakeholders, such as customers,
end-users, and business analysts.
2. Design: In this phase, the software design is created,
which includes the overall architecture of the software,
data structures, and interfaces. It has two steps:
• High-level design (HLD): It gives the architecture
of software products.
• Low-level design (LLD): It describes how each and
every feature in the product should work and every
component.
3. Implementation or coding: The design is then
implemented in code, usually in several iterations, and this
phase is also called as Development.
Things you need to know about this phase:
• This is the longest phase in SDLC model.
• This phase consists of Front end + Middleware + Back-
end.
• In front-end: Development of coding is done even SEO
settings are done.
• In Middleware: They connect both the front end and
back end.
• In the back-end: A database is created.
4. Testing: The software is thoroughly tested to ensure that
it meets the requirements and works correctly.
5. Deployment: After successful testing, The
software is deployed to a production
environment and made available to end-users.
6. Maintenance: This phase includes ongoing
support, bug fixes, and updates to the software.
• There are different methodologies that
organizations can use to implement the SDLC,
such as Waterfall, Agile, Scrum, V-
Model and DevOps.
CAPABILITY MATURITY MODEL INTEGRATION(CMMI)
Capability Maturity Model Integration (CMMI)
• Developed by SEI(Software Engineering institute)
• Assess the process model followed by an organization and rate the
organization with different levels
• A set of software engineering capabilities should be present as
organizations reach different levels of process capability and maturity
Objectives of CMMI :
• Fulfilling customer needs and expectations.
• Value creation for investors/stockholders.
• Market growth is increased.
• Improved quality of products and services.
• Enhanced reputation in Industry.
• CMMI process meta model can be represented in different
ways
1.A continuous model
2.A staged model
Continuous model:
 Continuous representation improves capability of specific
processes within the organization.
 Lets organization select specific improvement that best
meet its business objectives and minimize risk Levels are
called capability levels.
 Describes a process in 2 dimensions
 Each process area is assessed against specific goals and
practices and is rated according to the following capability
levels.
Six levels of CMMI
 Level 0:Incomplete
 Level 1:Performed
 Level 2:Managed
 Level 3:Defined
 Level 4:Quantitatively managed
 Level 5:Optimized
CMMI
Incomplete
 Process is adhoc . Objective and goal of process areas are not known.
Performed
 Goal, objective, work tasks, work products and other activities of software
process are carried out.
Managed
 Activities are monitored, reviewed, evaluated and controlled.
Defined
 Activities are standardized, integrated and documented.
Quantitatively Managed
 Metrics and indicators are available to measure the process and quality.
Optimized
 Continuous process improvement based on quantitative feed back from
the user.
 Use of innovative ideas and techniques, statistical quality control and
other methods for process improvement.
CMMI - Staged model
 Staged representation matures the organization as a
whole
PROCESS MODELS
• Help in the software development
• Guide the software team through a set of framework activities
• Process Models may be linear, incremental or evolutionary
THE WATERFALL MODEL
• Used when requirements are well understood in the beginning
• Also called classic life cycle
• A systematic, sequential approach to Software development
• Begins with customer specification of Requirements and
progresses through planning, modeling, construction and
deployment.
1.Project initiation & requirement gathering
 What is the Problem to Solve?
 What Does Customer Need/Want?
 Interactions Between SE and Customer
 Identify and Document System Requirements
 Generate User Manuals and Test Plans
2.Planning
 Prioritize the requirements
 Plan the process
3.Analysis and design
 How is the Problem to be Solved?
 High-Level Design
 Determine Components/Modules
 Transition to Detailed Design
 Detail Functionality of Components/Modules
4.Coding and Testing
 Writing Code to Meet Component/Module Design
Specifications
 Individual Test Modules in Isolation
 Integration of Components/Modules into Subsystems
 Integration of Subsystems into Final Program
5.Deployment
• System Delivered to Customer/Market
• Bug Fixes and Version Releases Over Time
Strengths
• Easy to understand, easy to use
• Provides structure to inexperienced staff
• Milestones are well understood
• Sets requirements stability
• Good for management control (plan, staff, track)
• Works well when quality is more important than cost
or schedule
Waterfall Drawbacks
 All projects cannot follow linear process
 All requirements must be known upfront
 Few business systems have stable requirements.
 The customer must have patience.
 Leads to ‘blocking states’
 Inappropriate to changes
When to use the Waterfall Model
 Requirements are very well known
 Product definition is stable
 Technology is understood
 New version of an existing product
 Porting an existing product to a new platform.
THE INCREMENTAL PROCESS MODEL

 Linear sequential model is not suited for projects


which are iterative in nature
 Incremental model suits such projects
 Used when initial requirements are reasonably well-
defined and compelling need to provide limited
functionality quickly
 Functionality expanded further in later releases
 Software is developed in increments
The Incremental Model
 Communication
 Planning
 Modeling
 Construction
 Deployment
THE INCREMENTAL MODEL
• Software releases in increments
• 1st increment constitutes Core product
• Basic requirements are addressed
• Core product undergoes detailed evaluation by the
customer
• As a result, plan is developed for the next
increment. Plan addresses the modification of core
product to better meet the needs of customer
• Process is repeated until the complete product is
produced
THE RAD (Rapid Application Development)
MODEL
• An incremental software process model
• Having a short development cycle
• High-speed adoption of the waterfall model using a component based
construction approach
• Creates a fully functional system within a very short span time of 60 to 90
days
The RAD Model consists of the following phases:
Communication Planning Construction
 Component reuses automatic code generation testing
Modeling
 Business modeling Data modeling Process modeling
Deployment
 integration delivery feedback
THE RAD MODEL
• Multiple software teams work in parallel on different
functions.
• Modeling encompasses three major phases:
Business modeling, Data modeling and process
modeling
• Construction uses reusable components, automatic
code generation and testing Problems in RAD
• Requires a number of RAD teams
• Requires commitment from both developer and
customer for rapid-fire completion of activities
• Requires modularity
• Not suited when technical risks are high
THE SPIRAL MODEL
 The spiral model, initially proposed by Boehm
 An evolutionary model which combines the best feature of the
classical life cycle and the iterative nature of prototype model.
 Each phase in spiral model begins with design goal & ends with
client reviewing.
 Using the spiral model, the software is developed in a series of
incremental releases.
 During the early iterations, the additional release may be a paper
model or prototype. During later iterations, more and more
complete versions of the engineered system are produced.
 Include new element : Risk element. Starts in middle and
continually visits the basic tasks of communication, planning,
modeling, construction and deployment
THE SPIRAL MODEL
• Realistic approach to the development of large scale
system and software
• Software evolves as process progresses
• Better understanding between developer and customer
• The first circuit might result in the development of a
product specification Software Engineering
• Subsequent circuits develop a prototype
• And sophisticated version of software
When to use Spiral Model?
• When deliverance is required to be frequent.
• When the project is large
• When requirements are unclear and complex
• When changes may require at any time
• Large and high budget projects
Advantages
• High amount of risk analysis
• Useful for large and mission-critical projects.
• Cost estimation becomes easy.
• Additional functionality or changes can be done at later stage.
• Development is fast & features are added in a systematic way.
• There is always space for customer feedback.
Disadvantages
• Can be a costly model to use.
• Risk analysis needed highly particular expertise
• Doesn't work well for smaller projects.
Agility and Agile Process model
Agile:
• The term agile means the ability of response to changes from
requirementsb,technology& people.
• When a team is developing a project(the client
requirement,technologies,staff/employees working on project)can
change.hence adopting to those aspects is done here easily &
efficiently.
Agile Process
• "Agile process model" refers to a software development approach
based on iterative development.
• Agile methods break tasks into smaller iterations, or parts do not
directly involve long term planning.
• Hence if any changes are needed then in next iteration they are applied.
Characteristics of Agile Process:
1.Modularity
2.Iterative
3.Time bound
4.Adaptive
5.Incremental
Phases of Agile model:
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
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.
Advantages:
1.Frequent Delivery
2.Face-to-Face Communication with clients.
3.Efficient design and fulfills the business
requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
Disadvantages:
1.Due to the shortage of formal documents, it creates
confusion and crucial decisions taken throughout
various phases can be misinterpreted at any time by
different team members
2.Due to the lack of proper documentation, once the
project completes and the developers allotted to another
project, maintenance of the finished project can become
a difficulty.
Other process models of Agile Development and
Tools
• Crystal
• Scrum
Scrum
• Scrum is aimed at sustaining strong collaboration
between people working on complex products, and
details are being changed or added. It is based upon
the systematic interactions between the three major
roles: Scrum Master, Product Owner, and the Team.
Scrum Master:
 Scrum Master is a central figure within a project. His
principal responsibility is to eliminate all the obstacles that
might prevent the team from working efficiently.
Product Owner
 Product Owner, usually a customer or other stakeholder, is
actively involved throughout the project, conveying the
global vision of the product and providing timely feedback
on the job done after every sprint.
Scrum Team
 Scrum Team is a cross-functional and self-organizing
group of people that is responsible for the product
implementation. It should consist of up to 7 team members,
in order to stay flexible and productive
Crystal
Crystal is an agile methodology for software development.
It places focus on people over processes, to empower
teams to find their own solutions for each project rather
than being constricted with rigid methodologies.
Crystal methods focus on:-
 People involved
 Interaction between the teams
 Community
 Skills of people involved
 Their Talents
 Communication between all the teams

You might also like