software engineering lecture 1 introduction to software engineering 1

23
Software Engineering Lecture 1 Introduction to Software Engineering 1

Upload: philippa-caldwell

Post on 12-Jan-2016

223 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software EngineeringLecture 1Introduction to Software Engineering

1

Page 2: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software DefinitionSoftware is:

◦A product◦A vehicle for delivering another

productSoftware is collection of:

◦Program◦Documentation◦Data◦Procedure

2

Page 3: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software CharacteristicsSoftware is engineered, not

manufacturedSoftware does not wear outMost software continues to be

custom built

3

Page 4: Software Engineering Lecture 1 Introduction to Software Engineering 1

Failure Curves for software

idealized curve

change

actual curve

Failurerate

Time

increased failurerate due to side effects

4

Page 5: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software MythsMyth: If we get behind schedule, add more

programmers.Reality: Adding people to a late software

project makes it later.

Myth: Software Engineering will make us create many and unnecessary documentation.

Reality: Software engineering is not about creating documents. It is about creating quality. Better quality leads to reduced rework. Reduced rework results in faster delivery times.

5

Page 6: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software CrisisDuring 1960-1970, most software

development faced the following problems:◦Overdue schedule◦Exceeding initial budget◦Inadequate software quality◦High software maintenance cost

6

Page 7: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software EngineeringSoftware engineering is first

coined in 1968 at a software conference organized by NATO at Garmisch, Germany as a solution to the software crisis.

Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. 7

Page 8: Software Engineering Lecture 1 Introduction to Software Engineering 1

Engineering PrinciplesThe engineering principles used

in software engineering comprises:◦Analysis◦Design◦Implementation◦Testing

8

Page 9: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software Engineering Layers

9

Software EngineeringSoftware Engineering

a “quality” focus

process model

methods

tools

Page 10: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software Engineering Layers (cont.)Tools: Software Tools (Word

Processors, Diagramming Tools, Project Tools, Compilers, etc.)

Methods: Modeling methods (DFD, ERD, Gantt Chart,etc.)

Process: Waterfall, Spiral, Incremental, etc.

10

Page 11: Software Engineering Lecture 1 Introduction to Software Engineering 1

Software Engineering PhasesDefinition Phase (What)

◦Systems Engineering, Project Planning, Requirements Analysis

Development Phase (How)◦Software Design, Code Generation,

Software TestingSupport Phase (Change)

◦Correction, Adaptation, Enhancement, Prevention

11

Page 12: Software Engineering Lecture 1 Introduction to Software Engineering 1

Umbrella ActivitiesUmbrella activities are activities

that are applied throughout the software process:◦Project tracking and control◦Software Quality Assurance◦Software Configuration Management◦Document Preparation and

Management

12

Page 13: Software Engineering Lecture 1 Introduction to Software Engineering 1

Capability Maturity ModelCMM is used to determine an organization’s

current state of process maturityFive levels of CMM:

◦ Level 1: Initial (Ad Hoc)◦ Level 2: Repeatable (Basic project

management)◦ Level 3: Defined (Process standardization)◦ Level 4: Managed (Quantitative Management)◦ Level 5: Optimized (Continuous process

improvement)

13

Page 14: Software Engineering Lecture 1 Introduction to Software Engineering 1

CMM Level 1: InitialThe software process is

characterized as ad hoc and occasionally even chaotic. Few processes are defined, and success depends on individual effort.

14

Page 15: Software Engineering Lecture 1 Introduction to Software Engineering 1

CMM Level 2: RepeatableBasic Project Management

processes are established to track cost, schedule, and functionality.

15

Page 16: Software Engineering Lecture 1 Introduction to Software Engineering 1

CMM Level 3: DefinedThe 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”.

16

Page 17: Software Engineering Lecture 1 Introduction to Software Engineering 1

CMM Level 4: Managed

Detailed measures of the software process and product quality are collected.

17

Page 18: Software Engineering Lecture 1 Introduction to Software Engineering 1

CMM Level 5: OptimizedThe process area is adapted and

optimized using quantitative means to meet changing customer needs and to continually improve the efficacy of the process area under consideration.

18

Page 19: Software Engineering Lecture 1 Introduction to Software Engineering 1

Personal Software ProcessThe Personal Software Process (PSP)

emphasizes personal measurement of both the work product that is produced and the resultant quality of work product (Humphrey 1997).

The PSP process model defined five framework activities:◦ Planning◦ High-Level Design◦ High-Level Design Review◦ Development◦ Postmortem

19

Page 20: Software Engineering Lecture 1 Introduction to Software Engineering 1

Personal Software Process (cont.)PSP stresses the need for each software

engineer to identify errors early and, as important, to understand the types of errors that he/she is likely to make.

This is accomplished through a rigorous assessment activity performed on all work products produced by the software engineer.

PSP can improve the productivity and software quality. However, PSP has not been widely adopted throughout the industry due to human nature and organizational inertia.

20

Page 21: Software Engineering Lecture 1 Introduction to Software Engineering 1

Team Software Process (TSP)

TSP is an extension of PSP.The goal of TSP is to build a “self-directed”

project team that organizes itself to produce high-quality software:◦ Build self-directed teams that plan and track their

work, establish goals, and own their processes and plans.

◦ Show managers how to coach and motivate their teams.

◦ Accelerate software process improvement.◦ Provide improvement guidance to high-maturity

organizations.◦ Facilitate university teaching of industrial-grade

team skills. 21

Page 22: Software Engineering Lecture 1 Introduction to Software Engineering 1

Summary

Software Engineering is a discipline that integrates process, methods, and tools for the development of computer software.

The Capability Maturity Model Integration (CMMI) is a comprehensive process meta-model that describes the specific goals, practices, and capabilities that should be present in a mature software process.

Personal and Team Software process emphasize measurement, planning, and self-direction as key ingredients for a successful software process.

22

Page 23: Software Engineering Lecture 1 Introduction to Software Engineering 1

ReferencesPressman, Chapter 1, 2

23