CSE 308 Software Engineering Software Engineering Strategies.

35
CSE 308 Software Engineering Software Engineering Strategies

Transcript of CSE 308 Software Engineering Software Engineering Strategies.

Page 1: CSE 308 Software Engineering Software Engineering Strategies.

CSE 308Software Engineering

Software Engineering Strategies

Page 2: CSE 308 Software Engineering Software Engineering Strategies.

Software Project Outcomes

• 2003 study of 280,000 SW Projects

SuccessfulCanceledLate, Over Budget, or Incomplete

Page 3: CSE 308 Software Engineering Software Engineering Strategies.

Course Objectives

• Acquire:–Technical Knowledge

–Managerial Knowledge • people, technology, processes

Page 4: CSE 308 Software Engineering Software Engineering Strategies.

Acquire Technical Knowledge

• Understand System Modeling

• Learn UML

• Practice different modeling methods:

–Use Case Modeling

–Object Modeling

–Dynamic Modeling

• Learn how to use tools

• Component-Based Software Engineering

Page 5: CSE 308 Software Engineering Software Engineering Strategies.

Acquire Managerial Knowledge

• Understand the Software Lifecycle– Process vs. Product

– Different software lifecycles

– Interface Engineering, Reengineering

– Project Management

Page 6: CSE 308 Software Engineering Software Engineering Strategies.

The Best People Managers

• Lead by example, not simply by making demands

• Want their employees to succeed

• Monitor and adjust

• Make sure all team members are:– invested in the project

– busy/utilized

– making positive contributions

• How?– People skills

– Tech skills

– Project management skills

Page 7: CSE 308 Software Engineering Software Engineering Strategies.

Software Engineering

• Analysis: Understand the nature of the problem and break the problem into pieces

• Synthesis: Put the pieces together into a large structure

Page 8: CSE 308 Software Engineering Software Engineering Strategies.

And for problem solving?

• Techniques (methods) – formal procedures for producing results using some well-defined notation

• Tools – instrument or automated systems to accomplish a technique

• Methodologies – collection of techniques applied across software development and unified by a philosophical approach

Page 9: CSE 308 Software Engineering Software Engineering Strategies.

Software Engineering: Definition

• A collection of techniques, tools, and methodologies that help with the production of:

– a high quality software system

– within a given budget, and

– before a given deadline

– … while change occursHow do you measure the

quality of your project?

What is your budget and deadline?

Page 10: CSE 308 Software Engineering Software Engineering Strategies.

Factors Affecting Quality of Software

Complexity:• the system is so complex that no single programmer

can understand it anymore

Change:• the “Entropy” of a software system increases with

each change: Each implemented change erodes the structure of the system

• as time goes on, the cost to implement a change will be too high, and the system will then be unable to support its intended task.

Page 11: CSE 308 Software Engineering Software Engineering Strategies.

Why are Software Systems so Complex?

• Difficult problem domain

• Difficult dev. process

• Software offers extreme flexibility

• Capital investment constraints

Usually leads to tight (impossible?)

deadlines

Page 12: CSE 308 Software Engineering Software Engineering Strategies.

Dealing with Complexity

1. Abstraction

2. Decomposition

3. Hierarchy

Page 13: CSE 308 Software Engineering Software Engineering Strategies.

Abstraction

• Inherent human limitation to deal with complexity– the 7 +- 2 phenomena

– chunking: Group collection of objects

– ignore unessential details: => Models

Page 14: CSE 308 Software Engineering Software Engineering Strategies.

Models Provide Abstractions

• Many layers of models

• Models for different stages:

– System Models

–Task Models

– Issues Models

Page 15: CSE 308 Software Engineering Software Engineering Strategies.

System Models

• Object Model – What is the structure of the system?

– What are the objects and how are they related?

• Functional model– What are the functions of the system?

– How is data flowing through the system?

• Dynamic model

–How does the system react to events?

Page 16: CSE 308 Software Engineering Software Engineering Strategies.

Task Models

• PERT Chart:

–What dependencies are between tasks?

• Gantt Chart

–What order should tasks be scheduled?

• Organizational Chart:

•What is the organization of your team?

Page 17: CSE 308 Software Engineering Software Engineering Strategies.

PERT Charts

Page 18: CSE 308 Software Engineering Software Engineering Strategies.

Gantt Charts

Page 19: CSE 308 Software Engineering Software Engineering Strategies.

Organizational Charts

Page 20: CSE 308 Software Engineering Software Engineering Strategies.

Issues Model

• What are the open and closed issues?

• What constraints were posed by the client?

Page 21: CSE 308 Software Engineering Software Engineering Strategies.

Software Engineering Methodologies

• Build-and-fix model

• Waterfall model

• Rapid prototyping model

• Incremental model

• Synchronize-and-stabilize model

• Extreme programming

• Spiral model

Some texts use the term “prescriptive

process models”

Model to use is based on SW policies of your

company

Page 22: CSE 308 Software Engineering Software Engineering Strategies.

Software Lifecycle Models

• Life-cycle model (formerly, process model)

• The steps through which the product progresses

– Requirements phase

– Specification phase

– Design phase

– Implementation phase

– Integration phase

– Maintenance phase

– Retirement

These phases usually overlap

The problems are:

1. Mistakes can be made during the early phases and

2. The user can change his/her mind

3. “Feature creep”

Page 23: CSE 308 Software Engineering Software Engineering Strategies.

Build and Fix Model

• Problems

– No specifications

– No design

• Totally unsatisfactory

• Need life-cycle model

– Game plan

– Phases

– Milestones

Page 24: CSE 308 Software Engineering Software Engineering Strategies.

Waterfall Model

•Rigid process

– Documentation-driven

Feedback loops are rarely seen when this

process is used

Imagine buying a car by only reading the

specs

Page 25: CSE 308 Software Engineering Software Engineering Strategies.

Rapid Prototype Model• Make a simple prototype first– may be thrown away or completely replaced

– prototype (i.e. research) vs. production teams

• Useful for Game Dev. Projects

• Game Dev Rule of Thumb:– have a game prototype 20% of way through process

• Why?– fun is hard to quantify

– prototype demonstrates core gamplay

Page 26: CSE 308 Software Engineering Software Engineering Strategies.

Incremental Model

• Divide project into builds– system is built incrementally

– testing after each build

• Customer– review (and use) each build

– evaluations may result in a change in requirements (for a subsequent build)

• Builds add implementations of use cases

Incremental model provides financial

flexibility

Ready to ship builds

Page 27: CSE 308 Software Engineering Software Engineering Strategies.

The Incremental Model

Page 28: CSE 308 Software Engineering Software Engineering Strategies.

Synchronize and Stabilize Model

• Microsoft’s life-cycle model

• Requirements analysis

– interview potential customers

• Draw up specifications

• Divide project into multiple builds

• Builds carried out by small teams working in parallel

Page 29: CSE 308 Software Engineering Software Engineering Strategies.

… Synchronize and Stabilize Model

• At the end of the day:

– synchronize (test and debug)

• At the end of the build:

– stabilize (freeze build)

• Components always work together

– Get early insights into operation of product

Page 30: CSE 308 Software Engineering Software Engineering Strategies.

Agile Programming Features

• Early implementation

• Successive builds

• Collaboration with client

• Importance of re-factoring

Newer IDEs contain extensive refactoring

features

Page 31: CSE 308 Software Engineering Software Engineering Strategies.

Extreme Programming

• New approach

• Stories (features client wants)

• Estimate duration and cost of each story

• Select stories for next build

• Each build is divided into tasks

• Test cases for task are drawn up first

• Pair programming

• Continuous integration of tasks

Page 32: CSE 308 Software Engineering Software Engineering Strategies.

Unusual Features of XP

• Computers are put in center of large room

• Client representative is always present

• Cannot work overtime for 2 successive weeks

• No specialization

• Re-factoring

Too soon to evaluate XP, but it appears

questionable for large projects

Page 33: CSE 308 Software Engineering Software Engineering Strategies.

Spiral Model

• Simplified form– waterfall model plus risk

analysis

• Precede each phase by– Alternatives

– Risk analysis

• Follow each phase by– Evaluation

– Planning of next phase

Page 34: CSE 308 Software Engineering Software Engineering Strategies.

Simplified Spiral Model

Page 35: CSE 308 Software Engineering Software Engineering Strategies.

Conclusions• Different life-cycle models– each with own strengths

– each with own weaknesses

• Criteria for deciding on a model include– the organization

– its management

– skills of the employees

– nature of the product (size, scope, complexity)

• Best suggestion– “Mix-and-match” life-cycle model