CS 561 – Software Engineering - Classes

offbeatnothingSoftware and s/w Development

Dec 2, 2013 (3 years and 10 months ago)

83 views

CS 561


Software
Engineering Review

Carlos Jensen

Introduction


What is Software Engineering?



How is Software Engineering different from
Programming/development?



What do Software Engineers do?



Ethical considerations as Software Engineers

What Do Software Engineers
Do?


Requirements


Gathering


Analysis


Design


Project management


Staffing


Progress


Development methods


Risk management


Evaluation


Documentation


Support



Missing Anything?



Which parts have you
been involved in?



Which parts have you
not been involved in?



Requirements definition



System design



Sub
-
system development



System integration



System installation



System evolution



System decommissioning







From Sommerville, p25+28+29

Software Engineering Process

Life
-
cycle models

Waterfall Model
Royce 1970
System &
SW Design
Requirements
Definition
Implementation
& Unit Testing
Integration &
System Testing
Operation &
Maintenance
What about mistakes?
refinement?
Life
-
cycle models

Waterfall Model
Royce 1970
System &
SW Design
Requirements
Definition
Implementation
& Unit Testing
Integration &
System Testing
Operation &
Maintenance
What about mistakes?
refinement?
complete
targeted
requirements
Step
n
:
Analyze
requirements
Step
n+3
:
Test
Step
n+2
:
Implement
Step
n+1
:
Design
Product:
class
models +
Product:
requirements
specifications
Product:
code +
Product:
test results +
Adapted from
Software Engineering: An Object
-
Oriented Perspective
by Eric J.
Braude
(Wiley 2001), with permission.
Life
-
cycle models

Waterfall Model
Royce 1970
System &
SW Design
Requirements
Definition
Implementation
& Unit Testing
Integration &
System Testing
Operation &
Maintenance
What about mistakes?
refinement?
complete
targeted
requirements
Step
n
:
Analyze
requirements
Step
n+3
:
Test
Step
n+2
:
Implement
Step
n+1
:
Design
Product:
class
models +
Product:
requirements
specifications
Product:
code +
Product:
test results +
Adapted from
Software Engineering: An Object
-
Oriented Perspective
by Eric J.
Braude
(Wiley 2001), with permission.
Life
-
cycle models

Waterfall Model
Royce 1970
System &
SW Design
Requirements
Definition
Implementation
& Unit Testing
Integration &
System Testing
Operation &
Maintenance
What about mistakes?
refinement?
complete
targeted
requirements
Step
n
:
Analyze
requirements
Step
n+3
:
Test
Step
n+2
:
Implement
Step
n+1
:
Design
Product:
class
models +
Product:
requirements
specifications
Product:
code +
Product:
test results +
Adapted from
Software Engineering: An Object
-
Oriented Perspective
by Eric J.
Braude
(Wiley 2001), with permission.
Life
-
cycle models

Waterfall Model
Royce 1970
System &
SW Design
Requirements
Definition
Implementation
& Unit Testing
Integration &
System Testing
Operation &
Maintenance
What about mistakes?
refinement?
complete
targeted
requirements
Step
n
:
Analyze
requirements
Step
n+3
:
Test
Step
n+2
:
Implement
Step
n+1
:
Design
Product:
class
models +
Product:
requirements
specifications
Product:
code +
Product:
test results +
Adapted from
Software Engineering: An Object
-
Oriented Perspective
by Eric J.
Braude
(Wiley 2001), with permission.
?

Agile/Extreme Programming?


What is Agile/XP?


Key techniques & practices of XP


Iterative development cycle


Test
-
first mentality


Pair
-
programming


Prototyping



Why is Agile/XP popular/interesting?


How is Agile/XP different?


How is Agile/XP the same?


Project & Risk management

Sources of uncertainty


Requirements


Match (UI/interface)


Changing Environment


Resources


Management (support & talent)


Supply Chain


Politics


Conflict


Innovation


Scale

What is risk management?


Risk discovery



Exposure analysis (probability * cost/damages)



Contingency planning



Mitigation



Ongoing transition monitoring

Core Risks

1.

Inherent scheduling flaw

2.

Requirements inflation

3.

Employee turnover

4.

Specifications breakdown

5.

Poor productivity

Project & Risk Management

cost

capability

duration

defect

density

Target
:

$70K

Target
:

30 wks

Target
:

4 defects/Kloc

Target
:

100%


Managing expectations & Trade
-
offs


Planning for the unforeseen

Project & Risk Management

cost

capability

duration

defect

density

Target
:

$70K

Target
:

30 wks

Target
:

4 defects/Kloc

Target
:

100%

cost
capability
duration
defect
density
Target
:
$70K
Actual
:
100%
Target
:
30 wks
Target
:
4 defects/
Kloc
this
project
Actual
:
1 defect/
Kloc
Actual
:
20 wks
Actual
:
$90K
Target
:
100%

Managing expectations & Trade
-
offs


Planning for the unforeseen

Work breakdown & scheduling


Activities, milestones & deliverables


Task dependencies & scheduling


Activity networks


Gantt charts


Margins for error (slack in the schedule)

Managing team


Costs/problems of adding new
programmers to existing project


Diminishing returns on programmer
productivity


Problems to be overcome in adding new
people to a project

Optimal Size for Interaction

Number of people with whom
developer must frequently interact

Developer
communicates
regularly with eleven
people.

Communication time
outweighs benefits of
interaction

Developer communicates
regularly with no one.

No communication time
lost, but developer is too
isolated and has no help.

Key:

= engineer

Approximate

optimal range

3

7

Effectiveness
per developer

Cost estimation


Types of costs


Hardware Costs


Travel & Training costs


Effort costs


KLOC


Function points


Object points


Magnitude, overhead, margins


General approaches to cost estimation

Requirements

Requirements gathering


Ethnographic methods


Interviewing


Questionnaires


Focus groups


Studying documentation and artifacts


Participatory design


Prototyping


Goal
-
oriented analysis


…etc

Requirements analysis


Scenarios


Use
-
cases


“Profiles”


IEEE requirements specification
documents



Goal
-
oriented analysis


Prototypes

Modeling requirements


Data
-
flow model


Composition model


Architectural model


Classification model


State transition model


Problems with requirements?


Consistency problem


Completeness problem


Ambiguity/lack of clarity problem


….



Solution?


Formal specifications…?