INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La...

Post on 26-Dec-2015

221 views 0 download

Tags:

Transcript of INTROSE Introduction to Software Engineering Raymund Sison, PhD College of Computer Studies De La...

INTROSE Introduction to Software Engineering

Raymund Sison, PhDCollege of Computer Studies

De La Salle University

sisonr@dlsu.edu.ph

Software: Definitions, Myths, and Process Models

What is software?

Software is a set (configuration) of computer programs and associated documentation and data.

(Sommerville, 2001)

What is software?

Software can be… System software Business software Engineering and scientific software Embedded software Personal productivity software Web-based software (Web apps) Artificial intelligence software

What is software?

Software… Is engineered, not manufactured Doesn’t wear out, but it does deteriorate

(see next slide) Is still usually custom-built, though

reusable components that are reliable and easy to use are steadily increasing

Wear vs. Deterioration

From (Pressman, 2001)

Software Myths

Management myths:• All that my people need to develop good

software are state-of-the-art computers.• All that my people need to develop good

software are documented in a book of standards and procedures.

• If we get behind schedule, we simply add more programmers.

• If I decide to outsource a software development project to another firm, I can just relax and let that firm do it.

Software Myths

Customer myths:• A general statement of objectives is

sufficient to begin writing programs – we can fill in the details later.

• Project requirements continually change, but change can be easily accommodated because software is flexible.

Software Myths

Practitioner’s myths:• Once we write the program and get it to work,

our job is done.

• Until I get the program “running”, I have no way of assessing its quality.

• The only deliverable work product for a successful project is the working program.

• Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down.

What is software engineering?

Software engineering is the production of quality software (and the study of approaches to all aspects thereof).

Software Process

A software process is a set of activities that produce a software product.

Generic Software Activities

Specification Planning Requirements analysis

Development Design Coding Verification and validation

Maintenance (a.k.a. Evolution) Correction Adaptation Enhancement

Support Software Activities

Complementing the generic software processes are the following umbrella activities:

• Software project tracking and control• Formal technical reviews• Software quality assurance• Software configuration management• Document preparation and production• Measurement• Risk management

Software Process Model

A software process model is a simplified description of a software process.

Some Software Process Models

Some software process models: Linear Evolutionary Iterative

• Incremental

• Spiral

• Unified Process

• Agile

Formal

Some Software Process Models

1. Linear (a.k.a. Waterfall) – oldest and most widely used

Requirementsdefinition

System andsoftware design

Implementationand unit testing

Integration andsystem testing

Operation andmaintenance

From (Sommerville, 2001)

Some Software Process Models

Drawbacks of the Waterfall model:• It is often difficult for customers to state all

requirements explicitly. Accommodating change is difficult in Waterfall. Therefore this model is appropriate only when

requirements are well understood.

• The customer must have patience.

Some Software Process Models

2. Evolutionary

From (Pressman, 2001)

Some Software Process Models

Drawbacks of the Evolutionary Prototyping model

• The customer might think that only a few fixes need to be made to transform the working prototype to a working product.

• The developer might get so used to hastily made prototype implementation decisions (e.g., an inefficient algorithm) that he becomes lazy to change these to more appropriate/efficient ones.

Some Software Process Models

3. Incremental (Iterative)

From (Pressman, 2001)

Some Software Process Models

4. Spiral (Iterative)

From (Boehm, 2006)

Some Software Process Models

5. Unified Process (Iterative)

Some Software Process Models

6. XP (Iterative)

Some Software Process Models

6. XP (Iterative)

Some Software Process Models

Other generic process models: Formal methods – used when a

mathematical specification is to be developed

Component assembly – used when reuse is a development objective

Impact of Process Model

If appropriate, can improve:

• development speed

• quality

• tracking & control

• client relations

can minimize:• overhead

• risk exposure

If inappropriate, can make some

work:• slow

• unnecessary

• redundant

• frustrating

Brooks’ “No Silver Bullet”

Software engineering involves: Essential tasks

• The fashioning of the complex conceptual structures that compose the abstract software entity

Accidental tasks• The representation of these abstract entities

in programming languages and the mapping of these onto machine languages within space and speed constraints

Brooks’ “No Silver Bullet”

For “accidental” tasks, increase productivity through automation

For “essential” tasks, increase productivity through:• Great designers

• Rapid prototyping

• Evolutionary development

• Software reuse