After a two week diversion from normal activities to complete a Final Report on Uncertainty Quantification (UQ), I'm anxious to share thoughts with you on the topic of requirements engineering. Systems engineering function and responsibility in the area of requirements engineering and management are critical and not to be taken lightly. There are, however, some simple ideas surrounding the requirements engineering process. I'd like to share some of those ideas fresh from our UQ requirements work. In addition, I've recently supported the Very Small and Micro Enterprise Working Group (VSME WG) of the International Council on Systems Engineering (INCOSE) development of a draft Requirements Engineering Deployment Package. This product seeks to provide requirements engineering process guidance for small organizations and teams. The basic ideas from these experiences are shared below.
One of the fundamental responsibilities and assets of the systems engineer is requirements. In systems engineering practice, requirements engineering and management are critical to the success of projects. Like so many other artifacts developed by systems engineers (Concept of Operations, Architectures, models, etc), requirements give us something to drive collaboration and understanding. Requirements allow us to create the framework for a project, program or activity that serves as a basis (baseline), which can grow and change as we learn. The impact of requirements engineering on the success of projects is well documented. The Standish Group Chaos Report reported that basic requirements is one of six main causes of project success at all levels.
Requirements engineering focuses our thinking and gives us perspective on the project. With system (project) level requirements we can have meaningful stakeholder discussion and discovery. This discussion helps us move on to operations concepts, use cases, architecture and ultimately design. There are detailed treatments on characteristics of good requirements, sets of requirements, rules and attributes that should be considered by the systems engineer during the requirements engineering process. These policies and guides are useful in building expertise within an organization or team. Use these resources as you evolve your requirements engineering expertise and practice.
The good news is that requirements engineering doesn't need to be complicated. Systems engineers should work with requirements routinely and re-visit them often for updates as necessary. There are no wrong answers when it comes to requirements, just bad requirements that can serve better understanding when they are corrected. Develop core competency in requirements engineering by doing the following:
- Start simple, but start.
- Connect the team.
- Build upon success.
- The clients statement of need.
- Project context and operating environment.
- Client preferences and experiences.
- Scope of the project.
- Functions
- Inputs
- Outputs
- Interfaces
I'll share more on requirements in future posts. Below are a few good references on requirements engineering:
References:
Software Engineering Institute Requirements Engineering and Analysis Workshop Proceedings
Requirements Engineering Wiki
ISO/IEC 15288:2008 Systems and software engineering -- System life cycle processes
No comments:
Post a Comment