SOFTWARE ENGINEERING PROCESSES Software Engineering Engineering Turning ideas

  • Slides: 31
Download presentation
SOFTWARE ENGINEERING PROCESSES

SOFTWARE ENGINEERING PROCESSES

Software Engineering

Software Engineering

Engineering � Turning ideas into reality � Creating something useful from other things using

Engineering � Turning ideas into reality � Creating something useful from other things using science and math

Software Engineering vs. Other Engineering Disciplines � Maturity �Roman aqueducts 2000 years ago �Software

Software Engineering vs. Other Engineering Disciplines � Maturity �Roman aqueducts 2000 years ago �Software engineering 50 years ago � Startup costs �Barriers to entry � Rate of change

Software Engineering Objective The right software delivered defect free, on time and on cost,

Software Engineering Objective The right software delivered defect free, on time and on cost, every time. Carnegie Mellon Software Engineering Institute

Common Mistakes Over committing (“big eyes”) � Unrealistic schedules � �Training �Access to people

Common Mistakes Over committing (“big eyes”) � Unrealistic schedules � �Training �Access to people or materials �Hours in the day � Level of detail �Vague descriptions �Over specification Not knowing your user � Assuming that you’ll get it right the first time �

Different Types of Projects � Consider 4 different types �COMP 523 projects �Productivity suites

Different Types of Projects � Consider 4 different types �COMP 523 projects �Productivity suites �Commercial web sites �Airplane systems �Pacemakers � How of systems do they differ in criticality? � What does that mean for the development process?

All software projects are different but … Requirements will change. Surprises will happen. Schedules

All software projects are different but … Requirements will change. Surprises will happen. Schedules will slip. Life will happen.

Transparency � Track what you do AND document it � …not as an afterthought

Transparency � Track what you do AND document it � …not as an afterthought � Living, heavily-used documentation

Programming History

Programming History

1960’s � “Cowboys” wrote software anyway that they could � Difference between best programmers

1960’s � “Cowboys” wrote software anyway that they could � Difference between best programmers and worst as high as 28: 1 (many sources) � Start of the “software crisis” � 1968 � Edsger Dijkstra, “GOTO Statement Considered Harmful” (CACM) � Recognition that rules can improve the average programmer

Structuring Software Development Few rules helped immensely � Good rules and practices developed over

Structuring Software Development Few rules helped immensely � Good rules and practices developed over the 70’s and 80’s � If a few rules are good, more are better… � Late 80’s, major focus on process as a key to quality � � ISO 9000 (first published 1987) � Malcolm Baldrige National Quality Award 25 th anniversary) (just celebrated

Why not apply to software development? Companies started codifying their practices � Large documents

Why not apply to software development? Companies started codifying their practices � Large documents and people to manage them � � Rise of the project manager “Honored in the breach” � More large projects and more late or failed projects � � 1995 Standish Group Study � Jerry Saltzer SOSP 1999

1995 Standish Group Study � 50% software projects challenged � 2 x budget �

1995 Standish Group Study � 50% software projects challenged � 2 x budget � 2 x completion time � 2/3 planned function � 30% impaired �Scrapped � 20% success

Jerry Saltzer Presentation � Who is Jerry Saltzer? �Early time sharing (CTSS) �Multics Operating

Jerry Saltzer Presentation � Who is Jerry Saltzer? �Early time sharing (CTSS) �Multics Operating System (“inspired” Unix) �Project Athena ○ Thin client computing ○ Kerberos ○ LDAP ○ Instant messaging

Processes

Processes

Software Engineering Processes � Differ by how often you do the steps � Points

Software Engineering Processes � Differ by how often you do the steps � Points on the spectrum � Differences in overhead � Three fundamental models � Waterfall � Spiral � Iterative � Widely used models � Integrated Product Development � Unified Software Development Process � Extreme Programming

All models address the 4 P’s of Software Engineering People: those doing it �

All models address the 4 P’s of Software Engineering People: those doing it � Product: what is produced � Process: manner in which it is done � Project: the doing of it �

Fundamental Steps � Requirements � Design � Implementation � Test � Deployment � Maintenance

Fundamental Steps � Requirements � Design � Implementation � Test � Deployment � Maintenance

Processes � Differ by �how often you do the steps �Focus and emphasis �

Processes � Differ by �how often you do the steps �Focus and emphasis � Points on the spectrum � Differences in overhead � Three fundamental processes �Waterfall �Spiral �Iterative

Waterfall Do it once � Traditional model � Used for large next version releases,

Waterfall Do it once � Traditional model � Used for large next version releases, � especially when � well understood product � tightly coupled changes �

Waterfall � 1970 s � Built on 1950’s stagewise process � Recognized the need

Waterfall � 1970 s � Built on 1950’s stagewise process � Recognized the need for feedback �Limited �Heavy process

Waterfall � Pros �Simple documentation management �Clean design phase � Cons �Least flexibility �No

Waterfall � Pros �Simple documentation management �Clean design phase � Cons �Least flexibility �No early feedback

Iterative (a. k. a. Agile) Many iterations � Each iteration is on a fixed

Iterative (a. k. a. Agile) Many iterations � Each iteration is on a fixed cycle � � Typically biweekly � Used for projects with � lots of small independent, but well understood, changes � small development team � strong client involvement

Iterative � Reaction to waterfall � Derived from “evolutionary” process �Requirements and specs evolve

Iterative � Reaction to waterfall � Derived from “evolutionary” process �Requirements and specs evolve over time � Two well-known models �Extreme programming �SCRUM

Iterative (a. k. a. Agile) � Pros � Fast feedback on problems � Very

Iterative (a. k. a. Agile) � Pros � Fast feedback on problems � Very adaptable to any changes � Lots of versions to work with � Heavy user involvement � Cons � Document maintenance � Code maintenance � Requires good automation

Spiral � � � Few iterations Each iteration adds new requirements Used often for

Spiral � � � Few iterations Each iteration adds new requirements Used often for projects with less well defined requirements

Spiral � Risk based � Barry Boehm 1988 � “A Spiral Model of Software

Spiral � Risk based � Barry Boehm 1988 � “A Spiral Model of Software Development and Enhancement”

Spiral � Pros �Adaptation to changes based on risks �Good customer interaction �Early version

Spiral � Pros �Adaptation to changes based on risks �Good customer interaction �Early version �Limited iterations provide phase structure � Cons �Document maintenance

Unified (Software Development) Process spiral variant Iterations within phases � 4 phases and core

Unified (Software Development) Process spiral variant Iterations within phases � 4 phases and core workflows for each � � Identifies that iterations differ Inception Elaboration Construction Transition Requirements Analysis Design Implementation Test Also known as Rational Unified Process (Rational products)

Historical Recap � Waterfall: 1970, built on 1950’s stagewise processes Recognized need for feedback

Historical Recap � Waterfall: 1970, built on 1950’s stagewise processes Recognized need for feedback � Iterative (agile): late 70 s, modeled on evolutionary model Didn’t work well for large products � Spiral: 1988, risk-based