Requirements Engineering, CSU Long Beach, Penzenstadler

(Difference between revisions)
Jump to: navigation, search
m
m
Line 83: Line 83:
 
| Course Introduction  
 
| Course Introduction  
 
* [http://foss2serve.org/index.php/File:2017_spring_542CourseSyllabus.pdf Syllabus]
 
* [http://foss2serve.org/index.php/File:2017_spring_542CourseSyllabus.pdf Syllabus]
* Why do we need Requirements Engineering and what is it? [https://www.slideshare.net/kamikitty/requirements-engineering-introduction| Slides "Introduction to RE"]  
+
* Why do we need Requirements Engineering and what is it?  
* Introduction to natural language requirements [https://www.slideshare.net/secret/NOcw2ahpblic2g EARS - "Easy Approach to Requirements Syntax"]
+
[https://www.slideshare.net/kamikitty/requirements-engineering-introduction| Slides "Introduction to RE"]  
 +
* Introduction to natural language requirements  
 +
[https://www.slideshare.net/secret/NOcw2ahpblic2g EARS - "Easy Approach to Requirements Syntax"]
 
| Open source intro and EARS
 
| Open source intro and EARS
 
* Brief overview of HFOSS and the planned activities
 
* Brief overview of HFOSS and the planned activities
Line 98: Line 100:
 
| 2
 
| 2
 
| Processes and frameworks
 
| Processes and frameworks
* [https://www.slideshare.net/kamikitty/requirements-engineering-process-roles Principles: Process and roles]
+
* What is the general process and what are the roles that perform RE?
* [https://www.slideshare.net/kamikitty/requirements-engineering-frameworks-standards Frameworks, templates, and standards] (What reference structures can I use for requirements?)
+
[https://www.slideshare.net/kamikitty/requirements-engineering-process-roles Principles: Process and roles]
 +
* What reference structures can I use for requirements?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-frameworks-standards Frameworks, templates, and standards]  
 
|
 
|
 
Activity [[Requirements engineering process]] (to be filled in, lab2)
 
Activity [[Requirements engineering process]] (to be filled in, lab2)
Line 129: Line 133:
 
| 4
 
| 4
 
| Stakeholders
 
| Stakeholders
* [https://www.slideshare.net/kamikitty/requirements-engineering-stakeholders Stakeholders: Who are the people to talk to about requirements?]
+
* Who are the people to talk to about requirements?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-stakeholders Stakeholders]
 
|
 
|
 
Activity [[(Re-)Engineering stakeholders, goals & questions]] part 1 (to be filled in, lab)
 
Activity [[(Re-)Engineering stakeholders, goals & questions]] part 1 (to be filled in, lab)
** Make list of stakeholders in HFOSS project
+
* Make list of stakeholders in HFOSS project
** Make stakeholder model (deliverable)
+
* Make stakeholder model (deliverable)
 
|
 
|
 
* Onion model paper (link)
 
* Onion model paper (link)
Line 140: Line 145:
 
| 5
 
| 5
 
| Goals
 
| Goals
* [https://www.slideshare.net/kamikitty/requirements-engineering-goals Goals and Constraints: What are the major objectives for the system?]
+
* What are the major objectives for the system?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-goals Goals and Constraints]
 
|
 
|
* Lab: [[(Re-)Engineering stakeholders, goals & questions]] part 2 (to be filled in)
+
Activity [[(Re-)Engineering stakeholders, goals & questions]] part 2 (to be filled in)
** Make list of goals in HFOSS project
+
* Make list of goals in HFOSS project
** Make goal model (deliverable)
+
* Make goal model (deliverable)
 
|
 
|
 
* Sustainability goal model paper (link Penzenstadler2013b)
 
* Sustainability goal model paper (link Penzenstadler2013b)
Line 151: Line 157:
 
| 6
 
| 6
 
| System Vision
 
| System Vision
* [https://www.slideshare.net/kamikitty/requirements-engineering-system-vision System Vision: What exactly do we want to achieve?]
+
* What exactly do we want to achieve?
* [https://www.slideshare.net/kamikitty/requirements-engineering-system-vision Information sources for system visions and quality assurance] (2nd half of same slide set)
+
[https://www.slideshare.net/kamikitty/requirements-engineering-system-vision System Vision]
 +
* What information sources do I need?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-system-vision Information sources for system visions and quality assurance] (2nd half of same slide set)
 
|
 
|
* Activity: [[(Re-)Engineering a system vision]] (to be filled in)
+
Activity: [[(Re-)Engineering a system vision]] (to be filled in)
 +
* Making a rich picture for the future OpenMRS
 
|
 
|
 
* Monk & Howard paper on Rich Pictures (link)
 
* Monk & Howard paper on Rich Pictures (link)
Line 162: Line 171:
 
| 7  
 
| 7  
 
| Domain Models
 
| Domain Models
* [https://www.slideshare.net/kamikitty/requirements-engineering-domain-models Domain Models: What are the surrounding systems ours interacts with?]
+
* What are the surrounding systems ours interacts with?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-domain-models Domain Models]
 
|
 
|
* Activity: [[(Re-)Engineering a domain model]] (to be filled in)
+
Activity: [[(Re-)Engineering a domain model]] (to be created)
 
|
 
|
 
* read this
 
* read this
Line 172: Line 182:
 
| Midterm
 
| Midterm
 
* Recap, questions and answers  
 
* Recap, questions and answers  
* Practice exam (pdf)
 
 
* Actual exam (pdf)
 
* Actual exam (pdf)
 
|
 
|
* Activity: [[(Re-)Engineering use cases]] (to be filled in)
+
Q & A session
 
|
 
|
* read this
+
* Practice exam (pdf)
  
 
|- style="text-align:left; color:black"
 
|- style="text-align:left; color:black"
 
| 9
 
| 9
 
| Usage Models  
 
| Usage Models  
* [https://www.slideshare.net/kamikitty/requirements-engineering-usage-models Usage Models: How will the system interact with the user?]
+
* How will the system interact with the user?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-usage-models Usage Models]
 
|
 
|
 
* Activity: [[(Re-)Engineering use cases]] (to be filled in)
 
* Activity: [[(Re-)Engineering use cases]] (to be filled in)
Line 192: Line 202:
 
| 10
 
| 10
 
| Scaling RE and RE tools
 
| Scaling RE and RE tools
* [https://www.slideshare.net/kamikitty/requirements-engineering-scaling-re-requirements-refinement Scaling RE, refining requirements, and system models]
+
* How to adapt RE for a specific procejt setting?
* [https://www.slideshare.net/kamikitty/requirements-engineering-re-tools RE Tools]
+
[https://www.slideshare.net/kamikitty/requirements-engineering-scaling-re-requirements-refinement Scaling RE, refining requirements, and system models]
 +
* How to select RE tools?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-re-tools RE Tools]
 
| Tools and assessment
 
| Tools and assessment
 
* Activity: try out requirements engineering tools
 
* Activity: try out requirements engineering tools
Line 203: Line 215:
 
| 11
 
| 11
 
| Non-functional requirements
 
| Non-functional requirements
* [https://www.slideshare.net/kamikitty/requirements-engineering-nonfunctional-requirements Classification of non-functional requirements]
+
* How to deal with requirements that are not about functionality?
 
* How to specify which qualities need to be met?
 
* How to specify which qualities need to be met?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-nonfunctional-requirements Classification of non-functional requirements]
 
|
 
|
 
* Activity: [[(Re-)Engineering Quality requirements]] (to be filled in, NFR-lab)
 
* Activity: [[(Re-)Engineering Quality requirements]] (to be filled in, NFR-lab)
Line 213: Line 226:
 
| 12
 
| 12
 
| Quality models
 
| Quality models
* [https://www.slideshare.net/kamikitty/requirements-engineering-quality-models Software quality models]
 
 
* How to determine the quality characteristics?
 
* How to determine the quality characteristics?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-quality-models Software quality models]
 
|
 
|
 
* Activity: Perform peer review of non-functional requirements elaborated by other team and give feedback on how to improve them.
 
* Activity: Perform peer review of non-functional requirements elaborated by other team and give feedback on how to improve them.
Line 223: Line 236:
 
| 13
 
| 13
 
| Quality assurance
 
| Quality assurance
* [https://www.slideshare.net/kamikitty/requirements-engineering-quality-assurance Quality assurance]
 
 
* How to ensure that RE is done in a good way?
 
* How to ensure that RE is done in a good way?
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-quality-assurance Quality assurance]
 
| Quality assurance in documentation
 
| Quality assurance in documentation
* Activity: [[Documentation Quality Assurance]] (to be filled in, QA lab)
+
Activity: [[Documentation Quality Assurance]] (to be filled in, QA lab)
 
|
 
|
 
* IEEE 830-1998  
 
* IEEE 830-1998  
Line 235: Line 248:
 
| 14
 
| 14
 
| Requirements management
 
| Requirements management
* [https://www.slideshare.net/kamikitty/requirements-engineering-requirements-management Change management]
 
 
* How to evolve requirements?
 
* How to evolve requirements?
* [https://www.slideshare.net/kamikitty/requirements-engineering-requirements-management Risk management] (2nd half of slide set)
+
[https://www.slideshare.net/kamikitty/requirements-engineering-requirements-management Change management]
 
* How to anticipate and plan for risks.
 
* How to anticipate and plan for risks.
* [https://www.slideshare.net/kamikitty/requirements-engineering-wrapup-putting-it-all-together Wrap-up]
+
[https://www.slideshare.net/kamikitty/requirements-engineering-requirements-management Risk management] (2nd half of slide set)
 
* How to put it all together
 
* How to put it all together
 +
[https://www.slideshare.net/kamikitty/requirements-engineering-wrapup-putting-it-all-together Wrap-up]
 
|
 
|
 
* Activity: Bug tracker activity (to be linked)
 
* Activity: Bug tracker activity (to be linked)

Revision as of 10:09, 20 July 2017

Contents

Overview

Course Requirements Engineering
Institution California State University Long Beach
Instructor(s) Birgit Penzenstadler
Term 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. Letter grade only (A-F).

Course Length {{{courselength}}}
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


Learning Objectives

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.

Sample assignments:

  • 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.

Course Outline

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):

  1. Why do we need Requirements Engineering and what is it?
  2. Principles: Definitions, process, roles
  3. System Models: Decomposition and abstraction, system views
  4. Frameworks: What reference structures can I use for requirements?
  5. Business Case Analysis: Why are we building this system?
  6. Stakeholders: Who are the people to talk to about requirements?
  7. Goals and Constraints: What are the major objectives for the system?
  8. System Vision: What exactly do we want to achieve?
  9. Domain Models: What are the surrounding systems ours interacts with?
  10. Usage Models: How will the system interact with the user?
  11. Software quality models: How to determine the quality characteristics?
  12. Quality requirements: How to specify which qualities need to be met?
  13. Quality assurance: How to ensure that RE is done in a good way?
  14. 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
  • Syllabus
  • Why do we need Requirements Engineering and what is it?

Slides "Introduction to RE"

  • Introduction to natural language requirements

EARS - "Easy Approach to Requirements Syntax"

Open source intro and EARS
  • Brief overview of HFOSS and the planned activities
  • Review HFOSS projects for interest: [1]
  • Activity: Practice EARS approach for OpenMRS requirements
2 Processes and frameworks
  • What is the general process and what are the roles that perform RE?

Principles: Process and roles

  • What reference structures can I use for requirements?

Frameworks, templates, and standards

Activity Requirements engineering process (to be filled in, lab2)

  • Identify the requirements engineering process steps used in HFOSS project
  • Compare to traditional requirements engineering phases and artifact-oriented requirements engineering.

Activity Mapping Requirements Specification Standards (to be filled in, lab3)

  • Research the ISO RE standard 29148 and requirements specification templates.
  • Find the requirements documented for OpenMRS and sort the information into a requirements specification template.
3 Artifact-oriented requirements engineering

Activity Exploring artifact models (to be filled in)

  • AMDiRE article (link)
4 Stakeholders
  • Who are the people to talk to about requirements?

Stakeholders

Activity (Re-)Engineering stakeholders, goals & questions part 1 (to be filled in, lab)

  • Make list of stakeholders in HFOSS project
  • Make stakeholder model (deliverable)
  • Onion model paper (link)
5 Goals
  • What are the major objectives for the system?

Goals and Constraints

Activity (Re-)Engineering stakeholders, goals & questions part 2 (to be filled in)

  • Make list of goals in HFOSS project
  • Make goal model (deliverable)
  • Sustainability goal model paper (link Penzenstadler2013b)
6 System Vision
  • What exactly do we want to achieve?

System Vision

  • What information sources do I need?

Information sources for system visions and quality assurance (2nd half of same slide set)

Activity: (Re-)Engineering a system vision (to be filled in)

  • Making a rich picture for the future OpenMRS
  • Monk & Howard paper on Rich Pictures (link)
  • Online tutorial by TheOpenUniversity (link)
7 Domain Models
  • What are the surrounding systems ours interacts with?

Domain Models

Activity: (Re-)Engineering a domain model (to be created)

  • read this
8 Midterm
  • Recap, questions and answers
  • Actual exam (pdf)

Q & A session

  • Practice exam (pdf)
9 Usage Models
  • How will the system interact with the user?

Usage Models

  • Cockburn Use Case Template
10 Scaling RE and RE tools
  • How to adapt RE for a specific procejt setting?

Scaling RE, refining requirements, and system models

  • How to select RE tools?

RE Tools

Tools and assessment
  • Activity: try out requirements engineering tools
  • Write an assessment of one other requirements engineering tool
  • IEEE SW article on tool review
11 Non-functional requirements
  • How to deal with requirements that are not about functionality?
  • How to specify which qualities need to be met?

Classification of non-functional requirements

  • Martin Glinz, "Rethinking the notion of NFRs" (link)
12 Quality models
  • How to determine the quality characteristics?

Software quality models

  • Activity: Perform peer review of non-functional requirements elaborated by other team and give feedback on how to improve them.
  • Software quality, the elusive target (Kitchenham)
13 Quality assurance
  • How to ensure that RE is done in a good way?

Quality assurance

Quality assurance in documentation

Activity: Documentation Quality Assurance (to be filled in, QA lab)

  • IEEE 830-1998
  • ISO 25010 Standard for Software Quality Models
  • IEEE 730-2014 Standard for Software Quality Assurance Processes
14 Requirements management
  • How to evolve requirements?

Change management

  • How to anticipate and plan for risks.

Risk management (2nd half of slide set)

  • How to put it all together

Wrap-up

  • Activity: Bug tracker activity (to be linked)
  • Requirements Rationales (lab discussion on article)
  • IEEE Software article on requirements rationales
15 Research and Recap Final exam practice
  • Practice exam
  • Nuseibeh paper
  • Cheng & Atlee paper


Notes to Instructor

  • 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:
    • Karl Wiegers and Joy Beatty: “Software Requirements”
    • Axel van Lamsweerde: “Requirements Engineering”
    • Klaus Pohl: “Requirements Engineering”

For the HFOSS part of the course, please refer to the internal and external references in the table above.

Moving Forward

  • This course was held for the first time in Spring 2017.
  • The data collected is still analysis.

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

CC license.png


Materials linked to by this page may be governed by other licenses.

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox