Requirements Engineering, CSU Long Beach, Penzenstadler
|Institution||California State University Long Beach|
|Offering(s)||CECS 542, California State University Long Beach, Birgit Penzenstadler, 4th year undergraduate, or graduate|
|Course Overview|| Intermediate/advanced, elective. |
This course aims to equip students to develop techniques of software-intensive systems through successful requirements analysis techniques and requirements engineering.
Students learn systematic process of developing requirements through cooperative problem analysis, representation, and validation.
Lecture 2 hours, Lab 4 hours.
Semester long team project plus midterm and final exam.
|Student Characteristics||15-30 students of mixed backgrounds, some transfer, so not necessarily same software engineering knowledge|
|Prerequisites||basic knowledge about the principles of software engineering and the software lifecycle|
|Infrastructure||classroom, lab, slides, online materials|
This course is the essential stepping-stone for conducting successful large, complex software engineering projects. It introduces students in depth to requirements engineering, which lays the foundation for design and all subsequent development phases. It prepares students for complex projects by introducing them to a variety of techniques that enable to analyze and specify requirements from different application domains and stakeholders. The course provides students with the necessary skillset to communicate, analyze, and negotiate with a wide range of potential stakeholders in a project.
After completing the course students will be able to elicit, analyze, document and verify and validate requirements.
In particular, they will be able to perform:
- Stakeholder identification and analysis
- Goal identification and analysis
- Creating and refining a system vision
- Developing a domain model of all involved application domains
- Developing a usage model (in the form of UML use cases)
- Eliciting and specifying quality requirements
- Quality assurance techniques
- Requirements management
Furthermore, they will be able to navigate a free open source software context with its development processes and best practices.
Methods of Assessment
The students will undertake a semester-long requirements engineering project, composed of individual, written assignments (to practice and demonstrate the skills from the course objectives above). Students may form teams of no more than three members. All members must participate equally, although not necessarily doing the same jobs. Per learning objective, there is a team assignment or an individual assignment that is worked on in lab and then further improved and finalized as homework.
- Eliciting and documenting the stakeholders for a software system.
- Developing a use case in UML.
- Performing a review of quality requirements.
In addition, there are two exams, a midterm and a final. The author usually gives the students the respective midterm and final of the previous year as practice exams.
This course exposes students to the problem of determining and specifying what a proposed software system should do, why and for whom the system is needed, not how the system should do it, which is the topic of downstream software engineering activities such as design and coding. There are some nontechnical aspects of the course, with respect to communication and negotiation with multiple stakeholders. Most of the course covers technical approaches to the requirements problem, such as techniques for eliciting stakeholder goals and requirements, notations and models for documenting and specifying requirements, strategies for negotiating requirements, and techniques for analyzing documented requirements. In detail, the course covers the following topics (1 per week, 2 class meetings per week):
- Why do we need Requirements Engineering and what is it?
- Principles: Definitions, process, roles
- System Models: Decomposition and abstraction, system views
- Frameworks: What reference structures can I use for requirements?
- Business Case Analysis: Why are we building this system?
- Stakeholders: Who are the people to talk to about requirements?
- Goals and Constraints: What are the major objectives for the system?
- System Vision: What exactly do we want to achieve?
- Domain Models: What are the surrounding systems ours interacts with?
- Usage Models: How will the system interact with the user?
- Software quality models: How to determine the quality characteristics?
- Quality requirements: How to specify which qualities need to be met?
- Quality assurance: How to ensure that RE is done in a good way?
- Change management: How to evolve requirements?
The class consists of interactive lectures from faculty and of lab discussion sessions. The assignments that are carried out in teams will be discussed together in class. Students will benefit from structured lectures that cover an adequate number of examples to facilitate student learning and introduce students to the topics covered. The instructor will introduce all requirements engineering methods and techniques in lectures using a number of examples and hands-on collaborative exercises using HFOSS. Also students will be provided with individual and team assignments and projects that are done outside of class or lab.
The following table provides a course overview per week. Each row per week describes the lecture topic and lab topic and activities. Note that this course currently has two meetings per week and CSULB has 15 week semesters, so some topics may have to be shortened in a different course setting.
|Week||Lectures||Labs / Activities||Reading / Resources|
|1|| Course Introduction
||Open source intro and EARS|
|2|| Processes and frameworks
|3|| Artifact-oriented requirements engineering
|6|| System Vision
Slides "Information sources for system visions and quality assurance" (2nd half of same slide set)
|7|| Domain Models
|| (Re-)Engineering a domain model (Activity)
Q & A session
|9|| Usage Models
|| Use cases
|10|| Scaling RE and RE tools
|| Tools and assessment
|11|| Non-functional requirements
|12|| Quality models
|| Quality models
|13|| Quality assurance
||Quality assurance in documentation|
|14|| Requirements management
Slides "Risk management" (2nd half of slide set)
|15|| Research and Recap
Notes to Instructor
- If the whole set of activities seems to much, I have grouped a subset that contains the activities for (Re-)Engineering a Software Requirements Specification that leaves the other aspects (processes, standards, requirements management, etc.) aside.
- Lessons learned
- Students like working with real systems as opposed to "toy systems" they come up with
- Re-documenting a software system is kind of boring, so I'd suggest to find a happy medium in between letting students recover requirements and letting them come up with new ones.
- It seems a little tough to get some open source communities interested in reengineering requirements, as they are focused on moving forward with the system and don't necessarily see a need for higher level requirements.
- Books: Here are a couple of books on requirements engineering as this topic is not covered in depth within this wiki:
For the HFOSS part of the course, please refer to the internal and external references in the table above.
- This course was held for the first time in Spring 2017 in the specific format presented above. The underlying course on requirements engineering has been developed and evolved over the past 10 years.
- The data collected is still under analysis.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License
Materials linked to by this page may be governed by other licenses.