The Development Process

Dr Andy Evans & Dr Kirk Harland

[Fullscreen]

Development Processes

  • Considerable debate around how best to manage software development.
  • Most proposed 'processes' have a parentage in the 'Waterfall Model'; roughly:
    • Requirements
    • Design
    • Coding
    • Testing
    • Installation
    • Maintenance
  • Like a good many parents who try their best, its children have nothing good to say about it.

Critiques

  • Largely focused on the fact that software was never fully completed, but always being re-visited at different scales. In particular, it is unhelpful not to go back to users and consult once a basic system is drafted.
  • Popular alterative is Iterative and Incremental development, where, after initial Requirements are outlined, there is a cycling through the development units, taking important and high-risk elements first.
  • This is sometimes combined with the Waterfall model as the 'Iterfall model'. Experience suggests the broad sweep of this matches with beginner's natural inclinations.

New processes

  • Based on the Iterative and avoiding the over-management of the Waterfall method: Agile software development processes include:
    • Rational Unified Process
    • Extreme Programming
    • Kanban and SCRUM for communication
    • Short development sprints
    • Continuous Integration
  • Main issue is to concentrate on user needs.

UML

  • An intrinsic part of the development process.
    • From: Use Cases
    • Through: Class Diagrams
    • To: Activity Diagrams

Development stages

  • Refining user requirements.
  • Dividing code (e.g. by important high-risk functions first).
  • Keeping users informed.
  • Development.
  • Usability testing.
  • Bug hunting.
  • Refactoring.
  • Alpha and Beta testing.
  • Releases.
  • Deciding on the next set of functions to tackle.
Increasingly releases tackle a few functions on a short timescale rather than major releases with a longer gap ("RERO").

Licensing

Different options on a spectrum:

  • Open source.
  • Maintenance contracts.
  • Open standards.
  • Community built.
  • Freeware.
  • Adware.
  • Commercial.

Computer Ethics

  • Rapidly growing field:
  • Traditional elements:
    • Privacy and data protection
    • Copyright and Piracy
    • Software supplier responsibilities
  • Newer:
    • Big Data use
    • Robotic ethics
    • Control by computers
    • Integrating computers into our worldview
  • A good starting point for the newer stuff is Floridi et al.

Installing

  • Three parts to installation...
    • Get the files to them.
    • Check they have the JDK.
    • Let them run the program.
  • Ideally we want to let them run by double-clicking a name or icon...
    • Can get them to set this up as a shortcut themselves.
    • Can compile as a .exe.
    • Can use a self-executing jar file.
    • Can use a .bat file or wrapping exe.

Summary

  • Getting a strong project outline at the start will help you resource a project, as will having a clear delimitation of coding activities.
  • However, project frameworks need to have flexibility built in to cope with project evolution. Start with an ordered list of functionalities, but consult with users frequently.
  • Look into formal software development processes if you have to work with teams.