Software development

Diomidis Spinellis
Department of Management Science and Technology
Athens University of Economics and Business
Athens, Greece
dds@aueb.gr

The Software Development Process

A software process defines the following practices: of software-intensive products and services.

It can be divided into three phases:

  1. Project definition (what?)
  2. Implementation (how?)
  3. Support (change)
A process also defines a number of cross-cutting areas:

Process Maturity

CMU's Software Engineering Institute has defined the following process maturity levels:
  1. Initial
  2. Repeatable
  3. Defined
  4. Managed
  5. Optimising
Every level encompasses the elements of the previous one.

Software Process Models

Some well-known process models include the following:

Requirement Types

Product / process

Product Requirements

Levels of Detail

Requirement Drivers

Main specification drivers are: Specifications are also affected by:

Elicitation Techniques

Elicitation of nuclear power plant requirements

Non-functional Requirements

Product requirements

Process requirements

External requirements

Non-functional Requirement Metrics

Requirement Management

Advantages of Prototype Development

Prototypes help in In research examining 39 projects involving prototype development managers gave as advantages:

Prototype Development Techniques

The Visual Basic programming environment
The Visual Basic programming environment

Implementation Guidelines

(after Kernighan and Plauger 1976, Davis 1995)

Development Tools

The vim editor
The vim editor

An application wizard
An application wizard

A debugger environment
A debugger environment

The Java class documentation
The Java class documentation

Domain-specific Languages

Reuse Methods

Reuse: the Pros and Cons

Pros

Cons

Optimisation

Optimise only when: Common techniques:

Database Optimisation Techniques

Portability

Portability is hindered by: Porability can be enhanced by:

Internationalisation and Localisation

Internationalisation
Making software usable in different locales
Localisation
Adjusting the software for a given locale
Common elements of concern:

Principles of Testing

Automated testing using the JUnit framework
Automated testing using the JUnit framework

Maintenance Types and Strategies

Research has shown that maintenance effort is roughly divided into: Effort on software system can involve:
Maintenance
Fixes and new functionality
Refactoring
Architectural changes without important functional changes
Re-engineering
Re-implementation often without new architectural or functional changes

Configuration Management

Configuration management addresses the following problems: Under configuration management we typically put:

Project Management Pitfalls

Software is Different

The most important pitfalls encountered in a software development effort are (Boehm 1991):

Project Management

Project management involves addressing four elements:

Project Staffing Case Study

NuMega (Sullivan 2001) organises product development around two teams:
  1. Main team; responsible for
  2. Support team; responsible for
To a project manager report the following: The project manager is responsible for: The development manager has a reporting manager for every major functional requirement. The development manager is responsible for: A manager for each major functional requirement oversees programmers and is responsible for:

Cost Models

10 Productivity Aphorisms

(IEEE Software, Vol 4, No 5, Sept 1987, pp 84-85).

Agile Development

Manifesto for Agile Software Development

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: That is, while there is value in the items on the right, we value the items on the left more.
(From the Agile Manifesto web site (http://agilemanifesto.org/))

eXtreme Programming

Extreme programming is an agile development methodology valuing It involves the following practices:

Bibliography