Вы находитесь на странице: 1из 99

SOFTWARE ENGINEERING

V – Sem(III Year)

Department of IT
Stanley College of Engineering & Technology for Women

Dr K Ramakrishna
Professor & Head, R&D
krkrishna.csit@stanley.edu.in
Software Engineering
• SE is an Engineering Approach to Develop a Quality
Software by Analyzing , Designing, Constructing,
Testing and Deploying as a product to user
requirements.

• Software: A software is a collection of instructions, Data and


Programs to accomplish a task on the Computer.
SDLC: Software Development Life Cycle

• The Software Development Lifecycle is a systematic


process for building software that ensures the
quality and correctness of the software
built. SDLC process aims to produce high-quality
software which meets customer expectations

• In SDLC, various models are designed and defined.


These models are called as Software Development
Process Models.
On the basis of project motive, the software
development process model is selected for
development.
Software Process Models
• Software Process Models
Each model represents a process from a specific
perspective. These generic models are abstractions
of the process that can be used to explain different
approaches to the software development.
A generic process
framework
A generic process framework for software engineering
defines five framework activities—communication,
planning, modeling, construction, and deployment. In
addition, a set of umbrella activities—project tracking
and control, risk management, quality assurance,
configuration management, technical reviews, and
others—are applied throughout the process.
Process flow
process flow—describes how the framework activities
and the actions and tasks that occur within each
framework activity are organized with respect to
sequence and time
A linear process flow
A linear process flow executes each of the five
framework activities in sequence, beginning with
communication and culminating with deployment
An iterative process flow
An iterative process flow repeats one or more of the
activities before proceeding to the next
An evolutionary process flow
An evolutionary process flow executes the activities in
a “circular” manner. Each circuit through the five
activities leads to a more complete version of the
software
A parallel process flow
• A parallel process flow executes one or more
activities in parallel with other activities (e.g.,
modeling for one aspect of the software might be
executed in parallel with construction of another
aspect of the software)
Framework Activities
• The following framework activities are carried out
irrespective of the process model chosen by the
organization.

1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
CMM
• The Capability Maturity Model Integration (CMMI)
• The Software Engineering Institute (SEI) has
developed a comprehensive process meta-model
that is predicated on a set of system and software
engineering capabilities that should be present as
organizations reach different levels of process
capability and maturity. To achieve these
capabilities, the SEI contends that an organization
should develop a process model that confirms to
The Capability Maturity Model Integration (CMMI)
guidelines.
• The CMMI represents a process meta-model in two
different ways: (1) as a Continuous model and (2)
as a staged model. The continuous CMMI meta-
model describes a process in two dimensions. Each
process area (e.g., project planning or requirement)
is formally assessed against specific goals and
practices and is rated according to the following
capability levels:
• Level 0: Incomplete. The process area (e.g.,
requirements management) is either not performed
or does not achieve all goals and objectives
defined by the CMMI for level capability.

Level 1: Performed. All of the specific goals of the


process area (as defined by the CMMI) have been
satisfied. Work tasks required to produce defined
work products are being conducted.
• Level 2: Managed. All level I criteria have been
satisfied. In addition, all work associated with the
process area conforms to an organizationally
defined policy; all people doing the work have
access to adequate resources to get the job done;
stakeholders are actively involved in the process
area as required; all work tasks and work products
are “monitored, controlled, and reviewed; and are
evaluated for adherence to the process
description”
• Level 3: Defined. All level 2 criteria have been achieved.
In addition, the process is “tailored from the
organization’s set of standard processes according to
the organization’s tailoring guidelines, and contributes
work products, measures, and other process-
improvement information to the organizational process
assets.”
Level 4: Quantitatively managed. All level 3 criteria have
been achieved. In addition, the process area is
controlled and improved using measurement and
quantitative assessment. “Quantitative objectives for
quality and process performance are established and
used as criteria in managing the process.”
• Level 5: Optimized. All capability level 4 criteria
have been achieved. In addition the process area
is adapted and optimized using quantitative
(statistical) means to meet changing customer
needs and to continually improve the efficacy of
the process area under consideration.”
Process pattern
• A process pattern describes a process-related
problem that is encountered during software
engineering work, identifies the environment in
which the problem has been encountered, and
suggests one or more proven solutions to the
problem.

Patterns can be defined at any level of abstraction.2 In some cases, a pattern


might be used to describe a problem (and solution) associated with a
complete process model (e.g., prototyping). In other situations, patterns can
be used to describe a problem (and solution) associated with a framework
activity (e.g., planning) or an action within a framework activity (e.g., project
estimating).
Pattern Name.: The pattern is given a meaningful
name describing it within the context of the software
process (e.g., TechnicalReviews).

Forces.: The environment in which the pattern is


encountered and the issues that make the problem
visible and may affect its solution.

Type. : The pattern type is specified. Ambler [Amb98]


suggests three types: Stage, Task, Phase Patterns
• Stage pattern:—defines a problem associated with a
framework activity for the process. Since a framework
activity encompasses multiple actions and work tasks, a
stage pattern incorporates multiple task patterns (see
the following) that are relevant to the stage (framework
activity). An example of a stage pattern might be
Establishing Communication. This pattern would
incorporate the task pattern Requirements Gathering
and others.
• Task pattern:—defines a problem associated with a
software engineering action or work task and relevant to
successful software engineering practice (e.g.,
Requirements Gathering is a task pattern).
• Phase pattern: —define the sequence of framework
activities that occurs within the process, even when the
overall flow of activities is iterative in nature. An example
of a phase pattern might be Spiral Model or Prototyping
• Initial context. Describes the conditions under which
the pattern applies
• Problem. The specific problem to be solved by the
pattern.
• Solution. Describes how to implement the pattern
successfully.
• Resulting Context. Describes the conditions that will
result once the pattern has been successfully
implemented. Upon completion of the pattern
• Related Patterns. Provide a list of all process patterns
that are directly related to this one.
Different software development process
models:
1) Big-Bang model
2) Code-and-fix model
3) Waterfall model
4) V model
5) Incremental model
6) RAD model
7) Prototype model
8) Iterative model
9) Spiral model
10) Agile model
Perspective Process Model
• The name 'prescriptive' is given because the model
prescribes a set of activities, actions, tasks, quality
assurance and change the mechanism for every
project.
Perspective Process Models
• There are three types of prescriptive process
models. They are:

1. The Waterfall Model


2. Incremental Process model
3. RAD model
Waterfall Model
• The waterfall model is the classic model or oldest
model and is known as mother of all the model. It is
widely used in government projects and many vital
projects in company.
• The waterfall model is also called as 'Linear
sequential model' or 'Classic life cycle model'.
• In this model, each phase is executed completely
before the beginning of the next phase. Hence the
phases do not overlap in waterfall model.
• This model is used for small projects.
• In this model, feedback is taken after each phase
to ensure that the project is on the right path.
• Testing part starts only after the development is
completed.
Phases
• Following are the phases in waterfall model:

i) Communication
The software development starts with the
communication between customer and developer.

ii) Planning
It consists of complete estimation, scheduling for
project development.
Phases
• iii) Modeling
• Modeling consists of complete requirement analysis
and the design of the project i.e 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.
• iv) 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 checks that the program provides
desired output.
• v) Deployment
• Deployment step consists of delivering the product
to the customer and taking 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.
'linear sequential model' is
as follows:
Advantages of Waterfall
model
• The waterfall model is simple and easy to
understand, to implement, and use.
• All the requirements are known at the beginning of
the project, hence it is easy to manage.
• It avoids overlapping of phases because each
phase is completed at once.
• This model works for small projects where the
requirements are easily understood.
• This model is preferred for those projects where the
quality is more important as compared to the cost
of the project.
Disadvantages of the
Waterfall model
• This model is not good for complex and object
oriented projects.
• In this model, the changes are not permitted so it is
not fit for moderate to high risk changes in project.
• It is a poor model for long duration projects.
• The problems with this model are uncovered, until
the software testing.
• The amount of risk is high.
2. Incremental Model
• The incremental model combines the elements of
waterfall model and they are applied in an iterative
fashion.
• The first increment in this model is generally a core
product.
• Each increment builds the product and submits it to
the customer for suggesting any modifications.
• The next increment implements the customer's
suggestions and add additional requirements in the
previous increment.
• This process is repeated until the product is
completed.
For example, the word-processing software is
developed using the incremental model.
Phases
• i) Communication
The software development starts with the
communication between customer and developer.

ii) Planning
It consists of complete estimation, scheduling for project
development.

iii) ModelingModeling consists of complete requirement


analysis and the design of the project like algorithm,
flowchart etc.
• The algorithm is a step-by-step solution of the problem
and the flow chart shows a complete flow diagram of a
program.
• iv) 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 checks that the program provides desired output.

• v) Deployment
• Deployment step consists of delivering the product to the
customer and taking 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.
Advantages of
Incremental model
• This model is flexible because the cost of
development is low and initial product delivery is
faster.
• It is easier to test and debug in the smaller iteration.
• The working software is generated quickly in the
software life cycle.
• The customers can respond to its functionalities
after every increment.
Disadvantages
• The cost of the final product may cross the cost
initially estimated.
• This model requires a very clear and complete
planning.
• The planning of design is required before the whole
system is broken into smaller increments.
• The demands of customer for the additional
functionalities after every increment causes
problem in the system architecture.
3. RAD Model
• RAD is a Rapid Application Development model.
• Using the RAD model, software product is
developed in a short period of time.
• The initial activity starts with the communication
between customer and developer.
• Planning depends upon the initial requirements
and then the requirements are divided into groups.
• Planning is more important to work together on
different modules.
• The RAD model consist of following phases:

1. Business Modeling
• Business modeling consist of the flow of information
between various functions in the project.
• For example what type of information is produced
by every function and which are the functions to
handle that information.
• A complete business analysis should be performed
to get the essential business information.
• 2. Data modelingT
• he information in the business modeling phase is
refined into the set of objects and it is essential for
the business.
• The attributes of each object are identified and
define the relationship between objects.
• 3. Process modeling
• The data objects defined in the data modeling
phase are changed to fulfil the information flow to
implement the business model.
• The process description is created for adding,
modifying, deleting or retrieving a data object.
• 4. Application generationIn the application
generation phase, the actual system is built.
• To construct the software the automated tools are
used.
• 5. Testing and turnoverThe prototypes are
independently tested after each iteration so that
the overall testing time is reduced.
• The data flow and the interfaces between all the
components are are fully tested. Hence, most of the
programming components are already tested.
Incremental Models
• Incremental Model is a process of software
development where requirements are broken down
into multiple standalone modules of software
development cycle. ... Once the core product is
analyzed by the client, there is
plan development for the next increment.
Evolutionary Process
Model
• Evolutionary Software Process Model Evolutionary
software models are iterative. ... 1 -
Incremental Model A model where
the software specification, design, implementation
and testing is broken down into a series of
increments which are developed and delivered
• Evolutionary models are iterative type models.
• They allow to develop more complete versions of
the software.
• Following are the evolutionary process models.

1. The prototyping model


2. The spiral model
3. Concurrent development model
1. The Prototyping model
• Prototype is defined as first or preliminary form using
which other forms are copied or derived.
• Prototype model is a set of general objectives for
software.
• It does not identify the requirements like detailed
input, output.
• It is software working model of limited functionality.
• In this model, working programs are quickly
produced.
Phases
• 1. Communication
In this phase, developer and customer meet and discuss the
overall objectives of the software.
2. Quick designQuick design is implemented when
requirements are known.
• It includes only the important aspects like input and output
format of the software.
• It focuses on those aspects which are visible to the user rather
than the detailed plan.
• It helps to construct a prototype.
• 3. Modeling quick designThis phase gives the clear idea about
the development of software because the software is now
built.
• It allows the developer to better understand the exact
requirements.
Advantages of
Prototyping Model
• Prototype model need not know the detailed input,
output, processes, adaptability of operating system
and full machine interaction.
• In the development process of this model users are
actively involved.
• The development process is the best platform to
understand the system by the user.
• Errors are detected much earlier.
• Gives quick user feedback for better solutions.
• It identifies the missing functionality easily. It also
identifies the confusing or difficult functions.
Disadvantages of
Prototyping Model:
• The client involvement is more and it is not always
considered by the developer.
• It is a slow process because it takes more time for
development.
• Many changes can disturb the rhythm of the
development team.
• It is a thrown away prototype when the users are
confused with it.
2. The Spiral model
• Spiral model is a risk driven process model.
• It is used for generating the software projects.
• In spiral model, an alternate solution is provided if
the risk is found in the risk analysis, then alternate
solutions are suggested and implemented.
• It is a combination of prototype and sequential
model or waterfall model.
• In one iteration all activities are done, for large
project's the output is small.
The description of the phases of the spiral model is same as that of the process mo
Advantages of Spiral
Model
• It reduces high amount of risk.
• It is good for large and critical projects.
• It gives strong approval and documentation
control.
• In spiral model, the software is produced early in the
life cycle process.
Disadvantages of Spiral
Model
• It can be costly to develop a software model.
• It is not used for small projects.
3. The concurrent
development model
• The concurrent development model is called as
concurrent model.
• The communication activity has completed in the first
iteration and exits in the awaiting changes state.
• The modeling activity completed its initial
communication and then go to the underdevelopment
state.
• If the customer specifies the change in the requirement,
then the modeling activity moves from the under
development state into the awaiting change state.
• The concurrent process model activities moving from
one state to another state.
Advantages of the concurrent
development model
• This model is applicable to all types of software
development processes.
• It is easy for understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current state
of a project.
Disadvantages of the concurrent
development model
• It needs better communication between the team
members. This may not be achieved all the time.
• It requires to remember the status of the different
activities.
Specialized Process Models
• The customer and the developer must both agree
that the prototype is built to serve as a mechanism
for defining requirements

• SPM Take on many of the characteristics of one or


more of the conventional models & Tend to be
applied when a narrowly defined software
engineering approach is chosen
1. Component-Based Development
A Spiral Model, Evolutionary in nature, Demands Iterative approach
to create a software
Software components are parts of a system or
application. Components are a means of breaking the complexity
of software into manageable parts. Each component hides the
complexity of its implementation behind an interface.
Steps:
• Available component-based products are researched and
evaluated for the application domain in question
• Component integration issues are considered
• A software architecture is designed to accommodate the
components
• Components are integrated into the architecture
• Comprehensive testing is conducted to ensure proper
functionality
• Relies on a robust component library
• Capitalizes on software reuse, which leads to documented
savings in project cost and time
2. The Formal Methods Model

• The formal methods model encompasses a set of


activities that leads to formal mathematical
specification of computer software.

• Formal methods enable a software engineer to


specify, develop, and verify a computer-based
system by applying rigorous, mathematical notation

• A variation on this approach is called clean-room


software engineering.
The Formal Methods Model
• When formal methods are used during development,
they provide a mechanism for eliminating many of the
problems that are difficult to overcome using other
software engineering paradigms.

• Ambiguity, incompleteness, and inconsistency can be


discovered and corrected more easily, not through ad
hoc review, but through the application of mathematical
analysis.

• Although not a mainstream approach, the formal


methods model offers the promise of defect-free
software.
The Formal Methods Model

• The development of formal models is currently quite
time-consuming and expensive.

• Because few software developers have the


necessary background to apply formal methods,
extensive training is required.

• It is difficult to use the model as a communication


mechanism for technically unsophisticated
customers.
3. Aspect-oriented Software Development.

• Regardless of the software process that is chosen,


the builders of complex software invariably
implement a set of localized features, functions and
information content.

• These localized software characteristics are


modelled as components and then constructed
within the context of a system architecture.
Aspect-oriented software development
• As modern computer-based systems become more
sophisticated and complex, certain concerns, customer
required properties or areas of technical interest, span the
entire architecture.

• Aspect-oriented software development (AOSD), often


referred to as aspect-oriented programming (AOP), is a
relatively new software engineering paradigm that provides a
process and methodological approach for defining,
specifying, designing, and constructing aspects.
AOSD / AOP
• A distinct aspect-oriented process has not yet matured.
However, it is likely that such a process will adopt
characteristics of both the spiral and concurrent process
models.

• The evolutionary nature of the spiral is appropriate as


aspects are identified and then constructed.

• The parallel nature of concurrent development is


essential because aspects are engineered
independently of localized software components and
yet, aspects have a direct impact on these components.
The Unified Process.
• In some ways the unified process (UP) is an attempt to draw on
the best features and characteristics of conventional software
process models, but characterize them in a way that implements
many of the best principles of agile software development.

• The unified process recognizes the importance of customer


communication and streamlined methods for describing the
customer’s view of a system.

• It emphasizes the important role of software architecture and


helps the architect focus on the right goals, such as
understandability, reliance to future changes, and reuse.

• It suggests a process flow that is iterative and incremental,


providing the evolutionary feel that is essential in modern software
development.
Personal and Team Process Model
• Personal software process is focussed on individuals.

• Process Software Process Model, Process consists of


methods, forms and tricks to guide software
engineers in doing their development work improve
their performance.

• Team Software Process Model, process consists of


programming strategies which will help a software
engineering team to build better quality products.
Personal Process Model
• The developers can
o Manage the quality of the product
o Make commitment to meet expectations in time
o Improve estimate and plan
o Reduce defects in their products
o Record and analyze the errors and develop
strategies to eliminate them
Activities
• Planning
• High level design : Abstract Level Design
• High level design review to over come errors
• Development
• Postmortem
Team Process Model
• The Developers can:
o Establishing Goals
o Defining Team roles
o Assessing risks
o Producing a Team plan
o Ensure Quality Software Products(SP)
o Create Secure Software Products.
o Improve Process management in organization
Activities of TSP
o Launch High Level Design
o Implementation
o Integration
o Test
o Postmortem
Process Technology
• Software Engineering Process
Technology (SEPT) produces checklists and
templates in the information technology (IT) field to
help companies comply with software
process standards.

• Their checklists can aid any software organization in


meeting the requirements of a software process
standard.
Product & Process
• Product: In software engineering,
a software development process is the process of
dividing software development work into distinct
phases to improve design product management,
and project management.

• Process : Process, which means how we're actually


building our product. The flow of standards
framework activities followed to develop a product
is called software process.
An Agile Process View
• Agile software Engineering combines a philosophy
and a set of development guidelines. The
philosophy encourages customer satisfaction and
early incremental development of software.

• Software engineers and other project stakeholders(


managers, end-users, customers ) work together as
an agile team-A team that is self-organizing and in
control of its own destiny.

• An agile team fasters communication and


collaboration among all who serve on it.
• Agile software engineering represents a reasonable
alternative to conventional software engineering for cert
ain classes of software and certain types of software
projects.
• Agile development is best termed as “Software
Engineering lite” thebasic frame work activities
o Customer Communication ,
o Planning,
o Modeling,
o Construction,
o delivery,
o and Evolution
• .
What Is Agility ?
• An agile team is a nimble team able to appropriately respond to
changes.

• Changes in the software being built, changes to the team


members, changes to because of new technology, changes of
all kinds that may have an impact on the product they built or
the projects that creates the project.

• Support for changes should be built –in everything we do in


software.

• An agile team recognizes that software is developed by


individuals working in teams and that skills of these people, their
ability to collaborate is at the core for the success of the project.

• Agility is more than an effective response to change. It also


encompasses the philosophy of the agile.
The agile alliance defines12 principles for those who want
to achieve agility :

• 1.Our highest priority is to satisfy the customer through


early and continuous delivery of valuable software.
• 2.Welcome changing requirements, even late in
development. Agile processes harness change for
the customer’s competitive advantage.

• 3.Delivery working software frequently, from a couple


of weeks to a coupe of months, with a preference to
the shortest time scale.

• 4.Business people and developers work together


daily throughout the project
5. Build projects around motivated individuals. Give
them the environment and support they need and
trust them to get the job done.

6. The most efficient and effective method of


conveying information to and with in an development
team is face-to-face conversation.

7. Working software is the primary measure of progress


• 8. Agile processes promote sustainable development. The sponsors,
developers, and users should be able to maintain a constant pace
indefinitely.

• 9. Continuous attention to technical excellence and good design


enhances agility.

• 10. Simplicity – The art of maximizing the amount of work not done-is
essential.

• 11. The best architectures, requirements, and designs emerge from self-
organizing teams.

• 12. At regular intervals, the team reflects on how to become more


effective, then tunes and adjust its behavior accordingly.

• Agility can be applied to any software process. To
accomplish this, it is essential that the process be
designed in a way that allows the project team to
adapt tasks and to streamline them, conduct
planning in a way that understands the fluidity of an
agile development process. Item phasize an
incremental delivery strategy that gets working
software to the customer as rapidly as feasible for
the product type and operational environment.
An Agile View of Process
• Agile principles
• The highest priority of this process is to satisfy the
customer.
• Acceptance of changing requirement even late in
development.
• Frequently deliver a working software in small time
span.
• Throughout the project business people and
developers work together on daily basis.
• Projects are created around motivated people if
they are given the proper environment and
support.
• Face to face interaction is the most efficient
method of moving information in the development
team.
• Primary measure of progress is a working software.
• Agile process helps in sustainable development.
• Continuous attention to technical excellence and
good design increases agility.
• From self organizing teams the best architecture,
design and requirements are emerged.
• Simplicity is necessary in development.
Agile Process Models:
• Scrum is a framework for developing and sustaining
complex products. Ken Schwaber and Jeff
Sutherland developed Scrum. Together, they stand
behind the Scrum Rules.

• Scrum is a framework within which people can


address complex adaptive problems, while
productively and creatively delivering products of
the highest possible value.
• Scrum is a process framework that has been used to
manage complex product development since the
early 1990s. Scrum is not a process or a technique
for building products; rather, it is a framework within
which you can employ various processes and
techniques. Scrum makes clear the relative efficacy
of your product management and development
practices so that you can improve.
• The Scrum framework consists of Scrum Teams and
their associated roles, events, artifacts, and rules.
Each component within the framework serves a
specific purpose and is essential to Scrum’s success
and usage.

• The rules of Scrum bind together the events, roles,


and artifacts, governing the relationships and
interaction between them.
Sprint
• The heart of Scrum is a Sprint, a time-box of two
weeks or one month during which a potentially
releasable product increment is created. A new
Sprint starts immediately after the conclusion of the
previous Sprint. Sprints consist of the Sprint planning,
daily scrums, the development work, the Sprint
review, and the Sprint retrospective.
• In Sprint planning, the work to be performed in the
Sprint is planned collaboratively by the Scrum Team.

• The Daily Scrum Meeting is a 15-minute time-boxed


event for the Scrum Team to synchronize the
activities and create a plan for that day.

• A Sprint Review is held at the end of the Sprint to


inspect the Increment and make changes to the
Product Backlog, if needed.
• The Sprint Retrospective occurs after the Sprint
Review and prior to the next Sprint Planning. In this
meeting, the Scrum Team is to inspect itself and
create a plan for improvements to be enacted
during the subsequent Sprint.

Вам также может понравиться