Software Engineering Phases l Definition What l Development

  • Slides: 20
Download presentation
Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l

Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities: Throughout lifecycle Dillon: CSE 470: SE, Process 1

Definition l Requirements definition and analysis » Developer must understand – Application domain –

Definition l Requirements definition and analysis » Developer must understand – Application domain – Required functionality – Required performance – User interface Dillon: CSE 470: SE, Process 2

Definition (cont. ) l Project planning » Allocate resources » Estimate costs » Define

Definition (cont. ) l Project planning » Allocate resources » Estimate costs » Define work tasks » Define schedule Dillon: CSE 470: SE, Process l System analysis » Allocate system resources to – Hardware – Software – Users 3

Development l Software design » User interface design » High-level design – Define modular

Development l Software design » User interface design » High-level design – Define modular components – Define major data structures » Detailed design – Define algorithms and procedural detail Dillon: CSE 470: SE, Process 4

Development (cont. ) l Coding » Develop code for each module l Integration »

Development (cont. ) l Coding » Develop code for each module l Integration » Combine modules » System testing » Unit testing Dillon: CSE 470: SE, Process 5

Maintenance l Correction - Fix software defects l Adaptation - Accommodate changes » New

Maintenance l Correction - Fix software defects l Adaptation - Accommodate changes » New hardware » New company policies l Enhancement - Add functionality l Prevention - make more maintainable Dillon: CSE 470: SE, Process 6

Umbrella Activities l Reviews - assure quality l Documentation - improve maintainability l Version

Umbrella Activities l Reviews - assure quality l Documentation - improve maintainability l Version control - track changes l Configuration management - integrity of collection of components Dillon: CSE 470: SE, Process 7

Software Engineering Costs Dillon: CSE 470: SE, Process 8

Software Engineering Costs Dillon: CSE 470: SE, Process 8

Software Engineering Costs Dillon: CSE 470: SE, Process 9

Software Engineering Costs Dillon: CSE 470: SE, Process 9

Relative Costs to Fix Errors Dillon: CSE 470: SE, Process 10

Relative Costs to Fix Errors Dillon: CSE 470: SE, Process 10

Waterfall Process Model Requirements Design Coding Testing Maintenance Dillon: CSE 470: SE, Process 11

Waterfall Process Model Requirements Design Coding Testing Maintenance Dillon: CSE 470: SE, Process 11

Prototyping Process Model Requirements Quick Design Prototype Evaluate Design Dillon: CSE 470: SE, Process

Prototyping Process Model Requirements Quick Design Prototype Evaluate Design Dillon: CSE 470: SE, Process 12

When to use prototyping? l Help the customer pin down the requirements » Concrete

When to use prototyping? l Help the customer pin down the requirements » Concrete model to “test out” » Often done via the user interface l Explore alternative solutions to a troublesome component » e. g. , determine if an approach gives acceptable performance l Improve morale » Partially running system provides visibility into a project Dillon: CSE 470: SE, Process 13

Spiral Process Model Planning Customer Evaluation Dillon: CSE 470: SE, Process Risk Analysis Engineering

Spiral Process Model Planning Customer Evaluation Dillon: CSE 470: SE, Process Risk Analysis Engineering 14

Process Models l Idealized views of the process l Different models are often used

Process Models l Idealized views of the process l Different models are often used for different subprocesses » may use spiral model for overall development – prototyping for a particularly complex component – waterfall model for other components Dillon: CSE 470: SE, Process 15

Capability Maturity Model l Level 1: Initial l » success depends on people l

Capability Maturity Model l Level 1: Initial l » success depends on people l Level 2: Repeatable » track cost, schedule, functionality l Level 3: Defined Level 4: Managed » collect detailed metrics l Level 5: Optimizing » continuous process improvement » “built-in” process improvement » use standardized processes Dillon: CSE 470: SE, Process 16

Why is software development so difficult? l Communication » Between customer and developer –

Why is software development so difficult? l Communication » Between customer and developer – Poor problem definition is largest cause of failed software projects » Within development team – More people = more communication – New programmers need training Dillon: CSE 470: SE, Process l Project characteristics » Novelty » Changing requirements – 5 x cost during development – up to 100 x cost during maintenance » Hardware/software configuration » Security requirements » Real time requirements » Reliability requirements 17

Why is software development difficult? (cont. ) l Personnel characteristics » » » l

Why is software development difficult? (cont. ) l Personnel characteristics » » » l Ability Prior experience Communication skills Team cooperation Training Facilities and resources l Management issues » » » » Realistic goals Cost estimation Scheduling Resource allocation Quality assurance Version control Contracts » Identification » Acquisition Dillon: CSE 470: SE, Process 18

Summary l Software lifecycle consist of » Definition (what) » Development (how) » Maintenance

Summary l Software lifecycle consist of » Definition (what) » Development (how) » Maintenance (change) l Different process models concentrate on different aspects » Waterfall model: maintainability » Prototype model: clarifying requirements » Spiral model: identifying risk l Maintenance costs much more than development Dillon: CSE 470: SE, Process 19

Bottom Line l U. S. software is a major part of our societal infrastructure

Bottom Line l U. S. software is a major part of our societal infrastructure » Costs upwards of $200 billion/year l Need to » Improve software quality » Reduce software costs/risks Dillon: CSE 470: SE, Process 20