34
Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Embed Size (px)

Citation preview

Page 1: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.1

Unit 5:

Alternate Software Development Methodologies

Software Engineering Process - II

Page 2: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.2

What are your expectations from this unit?

Before You Begin…

Page 3: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.3

Unit Objectives

Describe rapid software development approaches.

Explain incremental and iterative software development.

Identify the advantages and disadvantages of incremental development.

Explain the principles of agile development methods.

Explain the features of extreme programming and its practices and benefits.

Explain the use of software prototyping.

Page 4: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.4

Why Rapid Software Development (RSD)

There are many reasons to use RSD. Some of them include:

Businesses have to respond to new opportunities.

It is impossible to specify the complete requirements.

As the requirements change, the system design has to be reworked.

RSD processes can produce useful software quickly.

Page 5: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.5

Characteristics of RSD

Some characteristics of RSD include:

Specification, design, and implementation are concurrent.

The design documentation is minimum or generated automatically.

The requirements specifications describe the major requirements of the system, and must be complete for each program increment.

Page 6: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.6

Characteristics of RSD (cont.)

Software is developed in a series of increments.

Changes and new requirements that emerge on evaluation of increments are included in later versions.

User interface is developed using an interactive development system.

Page 7: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.7

Incremental Development

Involves delivery of system in the form of increments.

Delivers the important functionality first.

Ensures that customer gets value from the system in the initial stages of development.

Facilitates the use of first increment for requirements evaluation.

Increases the probability of meeting customer requirements.

Ensures commitment from users.

Page 8: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.8

RAD – An Iterative Development Process

Page 9: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.9

Class Activity - 1

Discuss and list the limitations of incremental development.

Page 10: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.10

Limitations of Incremental Development

For large systems, process models that generate regular deliverables are preferred to assess progress easily.

Incremental development may require new tools and skills to ensure quick delivery.

It may be difficult to design a satisfactory contract for lack of formal system specification.

Independent validation is difficult as the specification and development is interleaved.

Continuous changes may corrupt the structure of the software.

Finding maintenance people for specialized RAD tools may become difficult in future.

Page 11: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.11

Prototyping in Large/Critical Systems

A prototype can be used to explore requirements and experiment with design solutions.

With experience, you can have confidence that client requirements are being met.

Prototype is not intended for deployment but for generating common understanding.

Page 12: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.12

Prototyping and Incremental Development

In incremental approach, the best understood requirements are implemented first.

The architectural structure has to be robust and easy to maintain for years.

Throw-away prototyping is used to understand the vague set of requirements.

Throw-away prototypes need not be maintainable and reliable.

Page 13: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.13

Agile Methods

For small and medium-sized business systems, traditional methods may not be suitable because the overheads involved are high.

Agile methods focus on software by using an iterative development process for specification, development, and delivery.

Agile methods support business development where the requirements change rapidly.

The main aim of agile methods is to deliver the working software quickly to customers.

Page 14: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.14

Agile Methods - Principles

Customer involvement

Incremental delivery

People not process

Accommodate change

Maintain simplicity

Page 15: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.15

Class Activity - 2

Discuss and list the problems in implementing the principles of agile methods.

Page 16: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.16

Extreme Programming (XP)

Features of XP include:

Good practices like iterative development and customer involvement are used to extreme levels.

Requirements are given as user stories and are implemented as tasks.

Programmers work in pairs and develop test before starting development of a task.

Tests are executed before a new task is integrated into the system.

Gap between each release is short.

Page 17: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.17

Extreme Programming (XP)

Page 18: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.18

XP Practices

Incremental planning

Small releases

Simple design

Test-first development

Refactoring

Pair programming

Collective ownership

Continuous integration

Sustainable pace

On-site customer

Page 19: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.19

Testing in XP

The features of testing process are:

Test-first development

Scenario-based incremental test development

User involvement in test development and validation

Use of automated test harnesses

Page 20: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.20

Testing in XP (cont.)

Test-first development is one of the most important innovation of XP.

Writing test first, defines the interface and the functionality behavior.

Problems of requirement misunderstanding are minimized.

Scenario-based requirements are broken down into tasks. Each task describes a discrete feature of the system and one or more unit tests are designed for the task.

Page 21: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.21

Testing in XP (cont.)

Acceptance testing by the customer is incremental.

The customer helps in developing acceptance tests for the next release.

Testing is automated and the testing component is stand-alone. It simulates the submission of input and checks for the output as specified.

Page 22: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.22

Pair Programming - Implementation

Programmers work in pairs to develop the software.

It does not always involve same pair of people.

Pairs are created dynamically.

All team members get to work with others.

Page 23: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.23

Pair Programming – Advantages

Pair programming:

Helps develop common ownership and responsibility for the system.

Supports discussion of the working of software before starting development so there are fewer false starts and less rework.

Works as inexpensive informal review process as each line of code is checked by two people.

Helps code improvement through refactoring.

Page 24: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.24

Refactoring

Refactoring is a technique for restructuring an existing body of code.

It aims to alter the program’s internal structure without changing its external behavior.

Issues with refactoring can be:

A sequence of transformations can result in significant restructuring.

Each small transformation is less likely to go wrong.

The system needs to be kept working after each small refactoring.

Page 25: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.25

Class Activity - 3

Explain how the practices of XP fit into the principles of agile methods.

Page 26: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.26

RAD

RAD:

Evolved from fourth-generation languages in the 80s.

Used for business applications that are data intensive.

Organized as a set of tools that help to create, search, display, and present data using different formats.

Provides powerful facilities for screen definition and report generation.

Page 27: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.27

RAD (cont.)

Page 28: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.28

RAD – Screen Generation

Screen generation facility of a RAD tool must provide for:

Interactive form definition, where the developer defines the fields and their organization on the form.

Form linking, where the developer defines which field invokes a subsequent form.

Field verification, where the developer defines the applicable value ranges or the data types.

Page 29: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.29

RAD – Advantages and Limitations

Advantages:

Enables quick development of simple applications with small teams.

Implements a lot of functionality at a very low cost.

Users familiar with the technology do not have to learn new features.

Limitations:

No explicit system architecture and dependencies between parts of system.

Difficult to implement nonstandard user interfaces.

Page 30: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.30

Software Prototyping

A software prototype is an initial version of a software system and can be used to get some benefits of the incremental development process.

It helps:

Demonstrate concepts

Try out design options

Explore more about the problem and possible solutions

Page 31: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.31

Software Prototyping

Software prototypes can be used to:

Elicit and validate requirements.

Explore software solutions and to support user interface design.

Run back-to-back tests with the final system that will be delivered to the customer.

Page 32: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.32

Prototype Development Process

Page 33: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.33

Advantages of Prototyping

Improved system usability

More likelihood of meeting customer requirements

Improved design quality

Improved maintainability

Reduced development effort

Page 34: Software Engineering Process - II 5.1 Unit 5: Alternate Software Development Methodologies Software Engineering Process - II

Software Engineering Process - II 5.34

Summary

What was your key learning from the unit?