Syllabus
Calendar Description
Introduces students to the requirements definition phase of software development. Models, notations, and processes for software requirements identification, representation, analysis, and validation. Cost estimation from early documents and specifications.
Overall Goals
CS445/CS645/ECE451 is about the problem of identifying what software to build, such that the end product is useful for stakeholders and users. The course is different from other computing courses in that it focuses on activities and technologies for being efficient and effective in determining what software to build, rather than on knowledge and techniques for how to build the software itself. The course emphasizes people-facing activities of determining requirements (e.g., eliciting needs from stakeholders, seeking user feedback, and negotiation) as well as technical activities, such as requirements analyses, strategies for prioritizing requirements, and notations for modelling and documenting requirements.
Expected learning outcomes include being able to
- elicit requirements using artifact-based, model-based, stakeholder-based, hypothesis-based, and creativity-based techniques
- communicate efficiently and effectively with customers, users, and other stakeholders
- prioritize requirements and determine the scope of the product
- manage risk in software development
- document requirements in a range of informal to formal modelling paradigms
- review and validate requirements
- estimate the cost of development from a requirements specification
Required Background
- Knowledge of finite-state machines (e.g., as used in CS 241 or ECE 351)
- Experience with object-orientation (e.g., experience with OO programming languages like Java or C#)
- Knowledge of propositional and predicate logic (e.g., as used in CS 245 or ECE 108)
If you are concerned about any of these prerequisites, contact the instructor and we will provide some resources that can help you learn and review this material.