These notes are taken almost verbatim from Paul Baumgarten’s page here. Some material and ideas have been added using the resources at IB Compsci Hub
At university level for a Computer Science course, the design cycle for software is known as the SDLC: System development life cycle (some books substitute “system” with “software”).
The major sections of the SDLC are:
We will examine each section for what needs to occur. ON this page, we will be focusing on Requirements Analysis.
Aim of phase 1: Figure out what the project needs to accomplish.
There are typically 4 elements to this:
Find out exactly what it is you have to do
A scope document allows all parties to agree in writing as to what is and is not included within the project. It effectively becomes the contract, and establishes common expectations for client and creator.
Scoping should be SMART
Ensure your scopes identify time, financial and resource constraints!
It is inevitable that a project scope will change over time. Make sure that your scope doesn’t get more vague over time - if it changes, it should change in a way that makes it more clear and specific!
Possible strategies for obtaining requirements from stakeholders
Failure to involve all relevant stakeholders may lead to software that is not suitable for its intended use! (The manager doesn’t necessarily always know what the clerical staff do!)
Effective collaboration and communication between all parties: client, developer, end users.
Consultation should occur continually throughout the lifecycle to identify problems early.
Be aware of privacy issues – being able to get honest, frank information from a stakeholder without fear of retribution (eg: a staff member who might have valuable insight into how some part of the system doesn’t work the way management thinks it does) – create an environment where you can extract those valuable nuggets
Your requirements are generally split into functional and non-functional requirements.
Split off into pairs - one taking the role of customer, one taking the role of developer. Customer comes up with an app/software project they want the developer to “design”. Developer must ask questions to ascertain:
Reverse roles when ready.
Save these project outlines as we will continue to use them.
You will go through these steps with your client as part of the first step of your IA.
Who are the stakeholders for this system?
What are some strategies you might use to gather requirement information from these various stakeholders?
If some of the stakeholders are in conflict about their desires, which stakeholders do you think should be prioritized in this system?
What are some functional requirements of such a system?
what are some possible non-functional requirements of such a system?
Mr. Griswold worked for a textbook company a few years ago; he worked on writing a statistics textbook and accompanying web applications to support the learning in the textbook. After discussion, it was decided to make most of the web apps available for anybody to use - they can be found at http://stats.cpm.org.
Who were some of the stakeholders for this system (the system being the book + apps)?
When Mr. Griswold joined the team, he was given three requirements for his textbook writing:
Which of these were functional requirements and which were non-functional requirements?
Partway through the project, Mr. Griswold was asked to work on a website where students and teachers using the textbook could click a button and generate sample problems and tests automatically. The program was already partially completed, and Mr. Griswold was making it more attractive and adding features. Here were some of the requirements laid on in his scope statement:
Which of these were functional and which were non-functional requirements?
What are some steps Mr. Griswold and his team might have gone through in the initial research stage before writing the book?