The Software Development Process

Software is?

  • requirements specification documents
  • design documents
  • source code
  • test suites and test plans
  • interfaces to hardware and software operating environment
  • internal and external documentation
  • executable programs and their persistent data

Software effort

  • Specification
  • Product reviews
  • Design
  • Scheduling
  • Feedback
  • Competitive information acquisition
  • Test planning
  • Customer surveying
  • Usability data gathering
  • Look and feel specification
  • Software architecture
  • Programming

Customer requirements

  • The software development team must determine what the customer wants.
  • How can you do this?
  • Guess?
  • Collect detailed information from surveys?
  • Get feedback from a previous version of the software?
  • Read reviews in magazines?
  • Get information about the competition?
  • Other ways?
  • The collected data is used to guide the specification effort.

Specification

  • The specification takes the data from the customer requirements and other sources and defines:
    • The features of the software (functional requirements).
    • The constraints on these features (non-functional requirements).
  • Specifications can be:
    • formal (e.g., aerospace industry), rigid
    • informal (e.g., a .com startup), on a cocktail napkin or a whiteboard.

Schedules

  • The goals of scheduling are to know:
    • What work needs to be completed?
    • How much work is left to do?
    • When will the work be finished?
    • Who will finish each task?
    • Other measurable queries.
  • A Gantt chart is a popular type of bar chart that illustrates a project schedule

Design

Before coding begins on non-trivial software projects, a set of design documents are created to serve as blueprints.

  • Software Architecture
  • Data flow diagram
  • State transition diagram
  • Flowchart
  • Commented code

Source code … of course

  • The ultimate specification of the software!
  • ‘Code is king’ philosophy is still prevalent.
  • Many programming languages and tools to choose from.

Test documents

  • Test plan
    • Quality objectives, resource needs, schedules, assignments, methods, etc.
  • Test cases
    • Inputs and expected outputs.
  • Bug reports
    • E.g., the Bugzilla web-based bug tracker.
  • Test tools and automation
  • Metrics, statistics, and summaries
    • Number of unresolved bugs, mean time to repair a bug, etc.

Software Project Staff

  • Project managers
    • Write product specification, manage the schedule, critical decision tradeoffs
  • Software architects, system engineers
    • Design the software, work closely with programmers
  • Programmers, developers, coders
    • Write code, fix bugs
  • Testers, quality assurance staff
    • Find bugs, document bugs, track progress of open bugs
  • Technical writers
    • Write manuals, online documentation
  • Configuration managers, builders
    • Packaging and code, documents, and specifications

Was this article helpful?

Related Articles