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