Top Banner
CSE 308 Software Engineering Software Engineering Strategies
35

CSE 308 Software Engineering Software Engineering Strategies.

Dec 31, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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