Wednesday

Sans Titre

Main Links

Sans Titre

Quick Links


Software Requirements Engineering

The principal problem area in software development and production are the requirements specification and the management of customer requirements. Improving the processes of discovering, documenting, and managing system requirements is critical for future business success.

Requirements Engineering is the term used to cover all of the activities involved in discovering, documenting, and maintaining a set of requirements for a computer-based system. The use of the term “engineering” implies that systematic and repeatable techniques should be used to ensure that system requirements are complete, consistent, relevant, etc.

Textbook and Readings

The following material will be given to each student in the class;
Textbooks:

Course Layout
Introduction
  • Introduction and basic concepts
  • The role of requirements
  • Problems observed in practice
  • Framing the problem
Data requirements styles
  • Data models
  • Entity relationship diagrams
  • Data expressions
Functional requirements styles
  • Human/computer – who does what?
  • Context diagrams
  • Screens and prototypes
  • Use cases and misuse cases
  • Data flow diagrams
Functional details
  • Complex and simple functions
  • Tables and decision tables
  • State diagrams
  • Activity diagrams
  • Class diagrams
  • Collaboration diagrams
  • Sequence diagrams, events, and messages
Quality requirements
  • Quality factors
  • The quality grid
  • Open metric and open target
  • Capacity and accuracy requirements
  • Performance requirements
  • Usability requirements
  • Security requirements
  • Maintenance requirements
Elicitation
  • Survey of elicitation techniques
  • Stakeholder analysis
  • Interviewing
  • Observation
  • Task demonstration
  • Document studies
  • Questionnaires
  • Brainstorming
  • Focus groups
  • Domain workshops
  • Design workshops
  • Prototyping
  • Pilot experiments
  • Study similar companies
  • Negotiation
  • Risk analysis
  • Cost/benefit analysis
  • Goal domain analysis
  • Domain-requirements analysis
Checking and validation
  • Quality criteria for a specification
  • Checking the specification in isolation
  • Contents check
  • Structure check
  • Consistency check and CRUD
  • Checks against surroundings
  • Checklist forms

 

Intended Audience

The course is intended for people who are becoming requirements engineers, for people working as requirements engineers and interested in learning new techniques, for people who want to develop a greater appreciation of the importance of requirements engineering, and for people who will be working closely with requirements engineers and need to understand how they do their jobs.

The Instructor

Software Engineering
Rob Oshana is an adjunct professor at Southern Methodist University. He has designed and taught numerous courses in the School of Engineering and Applied Science. He also has over 23 years of industry software engineering experience managing multiple projects in the defense, commercial, and IT fields. He is a professional engineer, a Senior Member of IEEE and speaks regularly at industry conferences on a wide range of topics.


Prerequisites

This course attempts to be self-contained. We will deal with some mathematical notation and formulas, but no math beyond elementary algebra will be used. Basic familiarity with computer systems is expected. Some programming experience will make some of the techniques we will discuss more meaningful.

Goals

The goal of this class is to provide you with techniques which can help you improve your requirements engineering process. By improving these processes, you will create descriptions of system requirements which are easier to understand and contain fewer errors and inconsistencies. You will also have more effective procedures for managing changes to these requirements and assessing the impact and cost of these changes



Software Engineering Requirements

Related Links

 

Design & Concept by Djordjo Vasic