62
Lecture 2 Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer [email protected] Office FST-B107, Tel. ext. 2740

EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Lecture 2 – Software Processes

EPL603 – Topics in Software Engineering

Efi Papatheocharous

Visiting Lecturer

[email protected]

Office FST-B107, Tel. ext. 2740

Page 2: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Topics covered

Software process models

Waterfall

Incremental

Reuse-oriented

Process activities

Requirements engineering

Coping with change

The Rational Unified Process

An example of a modern software process.

2 Lecture 2: Software Processes 11/9/2012

Page 3: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The software process

A structured set of activities required to develop a software system.

Many different software processes but all involve:

Specification – defining what the system should do;

Design and implementation – defining the organization of the

system and implementing the system;

Validation – checking that it does what the customer wants;

Evolution – changing the system in response to changing customer

needs (correction, adaptation, enhancement, prevention).

A software process model is an abstract representation of a process. It

presents a description of a process from some particular perspective. 3 Lecture 2: Software Processes 11/9/2012

Page 4: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Software process descriptions

When we describe and discuss processes, we usually

talk about the activities in these processes such as

specifying a data model, designing a user interface, etc.

and the ordering of these activities.

Process descriptions may also include:

Products, which are the outcomes of a process activity;

Roles, which reflect the responsibilities of the people involved in

the process;

Pre- and post-conditions, which are statements that are true

before and after a process activity has been enacted or a

product produced.

4 Lecture 2: Software Processes 11/9/2012

Page 5: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Basic activities of process models

Typical activities include:

Requirements: gathering requirements at the strategic business level and at the business area level.

Analysis: understand the nature of the program(s) that need to be built, understand the information domain, as well as, required functionality, behaviour, performance and interface.

Design: focus on the data structure, software architecture, interface representation and procedural (algorithmic) detail.

Implementation: translating the requirements and design into a machine-readable form (code).

Maintenance: changing the software after it is delivered to the customer. Change might occur if the software contains errors, or must be adapted to accommodate changes to its external environment, or because the customer requires functional or performance enhancements.

11/9/2012 Lecture 2: Software Processes 5

Page 6: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Umbrella activities of process models

Software project tracking and control

Formal technical reviews

Software quality assurance

Software configuration management

Document preparation and production

Reusability management

Measurement

Risk management

11/9/2012 Lecture 2: Software Processes 6

Page 7: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Plan-driven and agile processes

Plan-driven processes are processes where all of the

process activities are planned in advance and progress

is measured against this plan.

In agile processes, planning is incremental and it is

easier to change the process to reflect changing

customer requirements.

In practice, most practical processes include elements of

both plan-driven and agile approaches.

There are no right or wrong software processes.

7 Lecture 2: Software Processes 11/9/2012

Page 8: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Generic software process models

The waterfall model

Plan-driven model. Separate and distinct phases of specification

and development.

Incremental development

Specification, development and validation are interleaved. May

be plan-driven or agile.

Reuse-oriented software engineering

The system is assembled from existing components. May be

plan-driven or agile.

In practice, most large systems are developed using a

process that incorporates elements from all of these

models. 8 Lecture 2: Software Processes 11/9/2012

Page 9: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Software process models

Build & Fix

No requirements

No design

No specifications

• Maintenance nightmare

• People-intensive

Lecture 2: Software Processes 9

Source: Schach, S.R.,

Object-Oriented and Classical

Software Engineering, 7th

ed., WCB/McGraw-Hill, 2007.

11/9/2012

Page 10: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The waterfall model

10 Lecture 2: Software Processes 11/9/2012

Source: Schach, S.R.,

Object-Oriented and Classical

Software Engineering, 7th

ed., WCB/McGraw-Hill, 2007.

Example of a plan-driven

approach.

Feedback loops of post-

delivery maintenance.

Testing is inherent in

every phase.

No phase is complete

until documentation &

products for that phase

are approved by the SQA

group.

Page 11: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The waterfall model phases

Enforces a disciplined approach to software development.

There are separate identified phases in the waterfall model:

Requirements analysis and definition

Specifications analysis

Software design

Implementation and unit testing

Integration and system testing

Postdelivery maintenance

Retirement

The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway, since each phase has to be complete before moving onto the next phase.

11 Lecture 2: Software Processes 11/9/2012

Page 12: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The waterfall model drawbacks

Inflexible partitioning of the project into distinct stages:

Makes it difficult to respond to changing customer requirements.

Iterations can be costly and involve significant rework.

It is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

Few business systems have stable requirements.

The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.

In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.

In some cases, after a number of iterations it is normal to freeze parts of the development and not meet user requirements (therefore, evolution will need to take place).

12 Lecture 2: Software Processes 11/9/2012

Page 13: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Rapid Prototype – coping with change

Development is essentially linear.

An initial version of the system is used to demonstrate concepts, try design options and find more about the problem and possible solutions.

Stakeholders experiment with the prototype early.

No maintenance until next prototype created.

Lecture 2: Software Processes 13 11/9/2012

Source: Schach, S.R.,

Object-Oriented and

Classical Software

Engineering, 7th ed.,

WCB/McGraw-Hill, 2007.

Page 14: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Rapid prototyping

Prototyping may be considered a tool for requirements

engineering.

11/9/2012 Lecture 2: Software Processes 14

Throwaway prototyping:

the N-th prototype is

followed by a waterfall-

like process.

Evolutionary prototyping:

the N-th prototype is

delivered.

Source: H. van Vliet, Software Engineering:

Principles and Practice, 3rd rd., John Wiley

& Sons, 2008.

Page 15: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The rapid prototype drawbacks

Customer is unaware that what appears to be a working version of the software needs to be rebuilt into a production product. Insists on applying a “few fixes” and deliver an extended prototype without considering the effects overall on software product or long-term maintainability.

The software engineer often makes implementation compromises to get a prototype working quickly. Inappropriate OS, programming language or tool may be used simply because it is easier, more convenient, available and known, or maybe a less efficient algorithm is used.

System performance, design, quality are compromised.

Team members need to be highly experienced.

11/9/2012 Lecture 2: Software Processes 15

Page 16: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development

16 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software Engineering,

9th ed., Addison Wesley, 2010.

Expose an initial implementation to the user.

Obtain rapid feedback, refine it through many versions until an adequate system is developed.

Phases are interleaved.

Deliver small but usable pieces of software.

Works on small and medium-sized projects (up to 500,000 LOC).

Page 17: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The Rapid Application Development (RAD)

Incremental development emphasizing extremely short development cycles (60-90 days).

“High-speed” rapid development is achieved by using component-based application generation.

Requires sufficient staff to formulate the teams.

Team members need to be committed.

Only applicable to modular systems or highly risky technical systems.

11/9/2012 Lecture 2: Software Processes 17

Source: Pressman, R.S. Software Engineering:

a Practitioner’s Approach. 5Rev Ed. McGraw-

Hill, 2000.

Page 18: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development benefits

The cost of accommodating changing customer reqs is reduced.

The amount of analysis and documentation that has to be

redone is much less than is required with the waterfall model.

It is easier to get customer feedback on the development work that

has been done.

Customers can comment on demonstrations of the software and

see how much has been implemented. It is hard for customers to

go through design documents.

More rapid delivery and deployment of useful software to the

customer is possible.

Customers are able to use and gain value (ROI) from the

software earlier than is possible with a waterfall process. 18 Lecture 2: Software Processes 11/9/2012

Page 19: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development drawbacks (1/2)

The process is not visible.

Managers need regular deliverables to measure progress. If

systems are developed quickly, it is not cost-effective to produce

documents that reflect every version of the system.

19 Lecture 2: Software Processes 11/9/2012

? Vs.

Page 20: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development drawbacks (2/2)

System structure tends to degrade as new increments are added.

Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.

Incorporating further software changes becomes increasingly difficult and costly.

• Refactoring is the disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.

(Fawler)

• “By continuously improving the design of code, we make it easier and easier to work with. This is in sharp contrast to what typically happens: little refactoring and a great deal of attention paid to expediently adding new features. If you get into the hygienic habit of refactoring continuously, you'll find that it is easier to extend and maintain code.”

(Kerievsky, 2002)

20 Lecture 2: Software Processes 11/9/2012

Sources: http://refactoring.com, Fawler

Kerievsky, J. (2004). Refactoring to Patterns. Addison Wesley.

Page 21: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Examples of refactoring techniques (1/2)

Techniques allowing more abstraction

Encapsulate field – force to access a field with getter and setter methods

Generalize type – create more general types to ease code sharing

Replace type - checking code with State/Strategy

Replace conditionals with polymorphism

11/9/2012 Lecture 2: Software Processes 21

Gamma E, Helm R, Johnson R, and

Vlissides J, Design Patterns:

Elements of Reusable Object

Oriented Software, Addison-Wesley,

Reading MA, 1995

Page 22: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Examples of refactoring techniques (2/2)

Techniques for breaking code apart into more logical pieces

Componentization breaks code down into reusable semantic units which present clear, well-defined and simple-to-use interfaces.

Extract Class moves part of the code from an existing class into a new class.

Extract Method, to turn part of a larger method into a new method. By breaking down code in smaller pieces, it is more easily understandable. This is also applicable to functions.

Techniques for improving names and location of code

Move Method or Move Field – move to a more appropriate Class or source file

Rename Method or Rename Field – changing the name into a new one that better reveals its purpose

Pull Up – move to a superclass

Push Down – move to a subclass

11/9/2012 Lecture 2: Software Processes 22

Page 23: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Open source process model

Lecture 2: Software Processes 23 11/9/2012

Two informal stages:

First version; made

available free of

charge.

Expands if sufficient

interest exists.

Individuals work on a

voluntary basis.

Minimum testing.

Source: Schach, S.R.,

Object-Oriented and Classical

Software Engineering, 7th

ed., WCB/McGraw-Hill, 2007.

Page 24: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Agile software process (1/2)

Lecture 2: Software Processes 24 11/9/2012

Source: Abrahamsson, P., Salo, O., Ronkainen, J. and Warsta, J., “Agile Software

Development MethodsL Review and Analysis”, VTT Elektroniikka, 2002.

Page 25: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Agile software process (2/2)

The process consists of 5 phases:

Exploration, Planning, Iterations to Release, Productionizing, Maintenance, Death.

Extreme Programming (XP)

Based on iterative-and-incremental model.

Various features (stories) are first considered.

Then, some features are selected for the next build.

The software is broken into smaller pieces called tasks.

Test cases are made to test each task.

Programmers pair together to complete each task:

• One person coding and the other person checking.

Continuous integration of tasks takes place.

Lecture 2: Software Processes 25 11/9/2012

Page 26: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Reuse-oriented software engineering (1/2)

Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems.

Process stages that differ:

Component analysis; search is made for components that implement specifications, even if no exact match exists.

Requirements modification; reqs are analyzed based on the discovered components. Reqs are modified to reflect available components.

System design with reuse; system framework is designed or existing framework is reused.

Development and integration; software that cannot be procured externally is developed, components and COTS systems are integrated to create the new system.

Reuse is now the standard approach for building many types of business system

Reuse is covered in more depth in later lectures.

26 Lecture 2: Software Processes 11/9/2012

Page 27: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Reuse-oriented software engineering (2/2)

27 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software Engineering,

9th ed., Addison Wesley, 2010.

Page 28: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Types of software components used in reuse

Web services that are developed according to service

standards and which are available for remote invocation.

Collections of objects that are developed as a

package to be integrated with a component framework

(such as .NET or J2EE).

Stand-alone software systems (COTS) that are

configured for use in a particular environment.

28 Lecture 2: Software Processes 11/9/2012

Page 29: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Reuse-oriented software engineering benefits

Reduces the amount of software to be developed and so reduces

cost and risks.

Leads to faster delivery of software.

Requirements are compromised as the system may not meet the

real needs of users.

Some control over the system evolution is lost as new versions of

the reusable components are not under the control of the

organization using them.

Lecture 2: Software Processes 29 11/9/2012

Reuse-oriented software engineering drawbacks

Page 30: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Real process activities

Real software processes are inter-leaved sequences of

technical, collaborative and managerial activities with

the overall goal of specifying, designing, implementing

and testing a software system.

The four basic process activities of specification,

development, validation and evolution are organized

differently in different development processes.

In the waterfall model, they are organized in sequence, whereas

in incremental development they are inter-leaved.

30 Lecture 2: Software Processes 11/9/2012

Page 31: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The requirements engineering process (1/2)

The process of establishing what services are required

and the constraints on the system’s operation and

development.

Requirements engineering process

Feasibility study

• Is it technically and financially feasible/worthwhile to build the system?

Requirements elicitation and analysis

• What do the system stakeholders require or expect from the system?

Requirements specification

• Defining the requirements in detail

Requirements validation

• Checking the validity of the requirements

31 Lecture 2: Software Processes 11/9/2012

Further reading: Chapter 4,

Sommerville, I., Software Engineering,

9th ed., Addison Wesley, 2010.

Page 32: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The requirements engineering process (2/2)

32 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software

Engineering, 9th ed., Addison

Wesley, 2010.

IEEE Software Requirements Specification

Template (SRS)

outcomes/

artifacts

Page 33: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

System models

The process of developing abstract models of a system.

Classic modelling techniques:

Entity-relationship modelling

Finite state machines

Data flow diagrams

CRC cards

Object-oriented modelling: UML diagrams

Activity diagrams

Use case diagrams

Sequence diagrams

Class diagrams

State diagrams

11/9/2012 Lecture 2: Software Processes 33

Page 34: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The requirements engineering process (2/2)

34 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software

Engineering, 9th ed., Addison

Wesley, 2010.

outcomes/

artifacts

Page 35: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Scenarios and Use Cases for reqs specification (1/2)

Scenarios may include: 1. A description of what the

system and users expect when the scenario starts.

2. A description of the normal flow of events in the scenario.

3. A description of what can go wrong and how this is handled.

4. Information about other activities that might be going on at the same time.

5. A description of the system state when the scenario finishes.

Use cases: • Identify the individual

interactions between the system and its users or other systems.

• Can be linked with other models.

• Fundamental feature of the UML notation for describing object oriented system models.

• In their simplest form indentify the actors in an interaction and names the type of interaction.

11/9/2012 Lecture 2: Software Processes 35

Page 36: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Scenarios and Use Cases for reqs specification (2/2)

Scenario example Use case example

• ..more on this during the lab.. 11/9/2012 Lecture 2: Software Processes 36

Source: H. van Vliet, Software Engineering:

Principles and Practice, 3rd rd., John Wiley

& Sons, 2008. Source: Schach, S.R., Object-Oriented and

Classical Software Engineering, 7th ed.,

WCB/McGraw-Hill, 2007.

Page 37: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Software design and implementation

The process of converting the system specification into an

executable system.

Software design

• Design a software structure that realises the specification.

Implementation

• Translate this structure into an executable program.

The activities of design and implementation are closely related and

may be inter-leaved.

37 Lecture 2: Software Processes 11/9/2012

Page 38: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

A general model of the design process

38 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software

Engineering, 9th ed., Addison

Wesley, 2010.

Page 39: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Design activities

Database design, where you design the system data

structures and how these are to be represented in a

database.

Component design, where you take each system

component and design how it will operate.

Interface design, where you define the interfaces

between system components.

Architectural design, where you identify the overall

structure of the system, the principal components

(sometimes called sub-systems or modules), their

relationships and how they are distributed.

39 Lecture 2: Software Processes 11/9/2012

Page 40: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Software Verification and Validation (V&V)

Verification and validation is intended to show that a system

conforms to its specification and meets the requirements of the

system customer.

Involves checking, review processes and system testing.

System testing involves executing the system with test cases that

are derived from the specification of the real data to be processed

by the system.

Testing is the most commonly used V & V activity.

40 Lecture 2: Software Processes 11/9/2012

Page 41: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Stages of testing

Development or component testing

Individual components are tested independently;

Components may be functions or objects or coherent groupings of these

entities.

System testing

Testing of the system as a whole;

Testing of emergent properties is particularly important.

Acceptance testing

Testing with customer data to check that the system meets the customer’s

needs.

41 Lecture 2: Software Processes 11/9/2012

Source: Sommerville, I., Software

Engineering, 9th ed., Addison

Wesley, 2010.

Page 42: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Software evolution

Software is inherently flexible and inevitably can change.

Business changes lead to new and changed system

requirements

New technologies open up new possibilities for improving

implementations

Changing platforms require application changes

Ways already mentioned to handle this change....?

Maintenance loops

Rapid prototyping

Incremental delivery

42 Lecture 2: Software Processes 11/9/2012

Page 43: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Reducing the costs of rework (1/2)

Change avoidance, where the software process includes activities

that can anticipate possible changes before significant rework is

required.

For example, a prototype system may be developed to show

some key features of the system to customers.

Benefits of prototyping

• Improved system usability.

• A closer match to users’ real needs.

• Improved design quality.

• Improved maintainability.

• Reduced development effort

43 Lecture 2: Software Processes 11/9/2012

Page 44: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Reducing the costs of rework (2/2)

Change tolerance, where the process is designed so that changes can

be accommodated at relatively low cost.

It normally involves some form of incremental development.

Proposed changes may be implemented in increments that have not

yet been developed. If this is impossible, then only a single

increment (a small part of the system) may have be altered to

incorporate the change.

44 Lecture 2: Software Processes 11/9/2012

Page 45: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development and delivery

Rather than deliver the system as a single delivery, the development

and delivery is broken down into increments with each increment

delivering part of the required functionality.

User requirements are prioritised and the highest priority

requirements are included in early increments.

Once the development of an increment is started, the

requirements are frozen though requirements for later

increments can continue to evolve.

Evaluate each increment before proceeding to the development

of the next increment.

Normal approach applied in agile methods.

45 Lecture 2: Software Processes 11/9/2012

Page 46: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental development and delivery benefits

Customer value is delivered with each increment because system

functionality is available earlier.

Early increments act as a prototype to help elicit requirements for

later increments.

Lower risk of overall project failure.

The highest priority system services tend to receive the most testing.

11/9/2012 Lecture 2: Software Processes 46

Page 47: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Incremental delivery drawbacks

Most systems require a set of basic facilities that are used by

different parts of the system.

As requirements are not defined in detail until an increment is to

be implemented, it can be hard to identify common facilities

that are needed by all increments.

The essence of iterative processes is that the specification is

developed in conjunction with the software.

However, this conflicts with the procurement model of many

organizations, where the complete system specification is part

of the system development contract.

47 Lecture 2: Software Processes 11/9/2012

Page 48: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Boehm’s spiral model

Process is represented as a spiral rather than as a sequence of activities with backtracking.

Each loop in the spiral represents a phase in the process.

No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required.

Risks are explicitly assessed and resolved throughout the process.

Spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development.

In practice, however, the model is rarely used as published for practical software development.

48 Lecture 2: Software Processes 11/9/2012

Page 49: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Boehm’s spiral model of the software process

49 Lecture 2: Software Processes 11/9/2012

Source: Sommerville,

I., Software

Engineering, 9th ed.,

Addison Wesley,

2010.

Page 50: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Spiral model sectors

Objective setting

Specific objectives for the phase are identified.

Risk assessment and reduction

Risks are assessed and activities put in place to reduce the key

risks.

Development and validation

A development model for the system is chosen which can be

any of the generic models.

Planning

The project is reviewed and the next phase of the spiral is

planned.

50 Lecture 2: Software Processes 11/9/2012

Page 51: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

The Rational Unified Process

A modern generic process derived from the work on the

UML and associated process.

Brings together aspects of the 3 generic process models

discussed previously.

Normally described from 3 perspectives

A dynamic perspective that shows phases over time;

A static perspective that shows process activities;

A practical perspective that suggests good practice.

51 Lecture 2: Software Processes 11/9/2012

Page 52: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

RUP phases

Inception

Establish the business case for the system.

Elaboration

Develop an understanding of the problem domain and the system architecture.

Construction

System design, programming and testing.

Transition

Deploy the system in its operating environment.

52 Lecture 2: Software Processes 11/9/2012

Source: IBM Rational Unified

Process, Copyright 1999-2005 IBM.

Page 53: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

RUP iteration

In-phase iteration

Each phase is iterative with results developed incrementally.

Cross-phase iteration

The loop in the RUP model shows that the whole set of phases

may be enacted incrementally.

Lecture 2: Software Processes 53 11/9/2012

Source: Sommerville, I., Software Engineering, 9th

ed., Addison Wesley, 2010.

Page 54: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Static workflows in the RUP (1/2)

Workflow Description

Business modelling The business processes are modelled using business

use cases.

Requirements Actors who interact with the system are identified and

use cases are developed to model the system

requirements.

Analysis and design A design model is created and documented using

architectural models, component models, object

models and sequence models.

Implementation The components in the system are implemented and

structured into implementation sub-systems.

Automatic code generation from design models helps

accelerate this process.

54 Lecture 2: Software Processes 11/9/2012

Page 55: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Static workflows in the RUP (2/2)

Workflow Description

Testing Testing is an iterative process that is carried out in conjunction

with implementation. System testing follows the completion of

the implementation.

Deployment A product release is created, distributed to users and installed in

their workplace.

Configuration and

change management

This supporting workflow managed changes to the system.

Project management This supporting workflow manages the system development.

Environment This workflow is concerned with making appropriate software

tools available to the software development team.

55 Lecture 2: Software Processes 11/9/2012

Page 56: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

RUP good practices (1/2)

Develop software iteratively

Plan increments based on customer priorities and deliver highest

priority increments first.

Manage requirements

Explicitly document customer requirements and keep track of

changes to these requirements.

Use component-based architectures

Organize the system architecture as a set of reusable

components.

56 Lecture 2: Software Processes 11/9/2012

Page 57: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

RUP good practices (2/2)

Visually model software

Use graphical UML models to present static and dynamic views

of the software.

Verify software quality

Ensure that the software meet’s organizational quality standards.

Control changes to software

Manage software changes using a change management system

and configuration management tools.

Lecture 2: Software Processes 57 11/9/2012

Page 58: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Key points

Software processes are the activities involved in

producing a software system. Software process models

are abstract representations of these processes.

A number of different models have been proposed, each

exhibiting strengths, weaknesses, but all having a series

of generic phases in common.

General process models describe the organization of

software processes. Examples of these general models

include the ‘waterfall’ model, incremental development,

and reuse-oriented development.

58 Lecture 2: Software Processes 11/9/2012

Page 59: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Key points

Requirements engineering is the process of developing a

software specification.

Design and implementation processes are concerned

with transforming a requirements specification into an

executable software system.

Software validation is the process of checking that the

system conforms to its specification and that it meets the

real needs of the users of the system.

Software evolution takes place when you change

existing software systems to meet new requirements.

The software must evolve to remain useful.

59 Lecture 2: Software Processes 11/9/2012

Page 60: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Key points

Processes should include activities to cope with change.

This may involve a prototyping phase that helps avoid

poor decisions on requirements and design.

Processes may be structured for iterative development

and delivery so that changes may be made without

disrupting the system as a whole.

The Rational Unified Process is a modern generic

process model that is organized into phases (inception,

elaboration, construction and transition) but separates

activities (requirements, analysis and design, etc.) from

these phases.

60 Lecture 2: Software Processes 11/9/2012

Page 61: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Readings

Chapter 2, Sommerville, I., Software Engineering, 9th ed., Addison Wesley, 2010

Chapter 2, Schach, S.R., Object-Oriented and Classical Software Engineering, 7th ed., WCB/McGraw-Hill, 2007.

Chapter 2, Pressman, R.S., Software Engineering: a Practitioner’s Approach, 5th Rev. Ed., McGraw-Hill, 2000.

11/9/2012 Lecture 2: Software Processes 61

Credits

Slides adapted from Ian Sommerville Software Engineering, 9/E

(http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/).

Page 62: EPL603 Topics in Software Engineeringcs00pe/epl603/lectures/Lect03-04.pdfLecture 2 – Software Processes EPL603 – Topics in Software Engineering Efi Papatheocharous Visiting Lecturer

Assignment A3

..announced 11/09/2012

Submission date: 25/09/2012

11/9/2012 Lecture 2: Software Processes 62

Course Project

..announced 10/09/2012

Send an e-mail with the names of your team members

and IDs (submission deadline: 18/09/2012)

Example:

To: [email protected]

CC: [email protected]

Subject: [EPL603] [project members]