Contents
Planning For Fun In Game Programming - Part 2
 
 
Printer-Friendly VersionPrinter-Friendly Version
 
Latest News
spacer View All spacer
 
November 22, 2009
 
Video Game Watchdog National Institute On Media And The Family Shutting Down [11]
 
Modern Warfare 2 Infinity Ward's 'Most Successful PC Version' Yet [12]
 
New Tech, Design Details Of Project Natal To Emerge At Gamefest In February
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
November 22, 2009
 
Trion Redwood City
Sr. Environment Artist
 
Trion Redwood City
Sr. Evnironment Modeler
 
Sucker Punch Productions
3D Environment Artist
 
Sucker Punch Productions
Network Programmer
 
Sucker Punch Productions
Texture Artist
 
Sucker Punch Productions
Character Artist
 
Crystal Dynamics
Sr. Level Designer
 
Monolith Productions
Sr. Software Engineer, Engine - Monolith Productions - #113767
spacer
Latest Features
spacer View All spacer
 
November 22, 2009
 
arrow Upping The Craft: Susan O'Connor On Games Writing [6]
 
arrow Small Developers: Minimizing Risks in Large Productions - Part II [7]
 
arrow iPhone Piracy: The Inside Story [49]
 
arrow And Yet It Grows: Analyzing the Size and Growth of the European Game Market [5]
 
arrow NPD: Behind the Numbers, October 2009 [13]
 
arrow Reflecting On Uncharted 2: How They Did It [5]
 
arrow Sponsored Feature: Rasterization on Larrabee -- Adaptive Rasterization Helps Boost Efficiency
 
arrow Postmortem: Wadjet Eye's The Blackwell Convergence [2]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
November 22, 2009
 
Time Fcuk [1]
 
Accepting the Inherent Value of Games
 
Planckogenesis, Part II: Song Structure & Gravy Train [1]
spacer
About
spacer News Director:
Leigh Alexander
Features Director:
Christian Nutt
Editor At Large:
Chris Remo
Advertising:
John 'Malik' Watson
Recruitment/Education:
Gina Gross
 
Features
  Planning For Fun In Game Programming - Part 2
by Tom Hammersley
0 comments
Share RSS
 
 
June 24, 2009 Article Start Previous Page 4 of 4
 

Goals and Softgoals

This is a technique for linking functional requirements to nonfunctional requirements (Mylopoulos et al 2001). It is based on the concept of goals, which are used to measure the satisfaction of a functional requirement, and softgoals, which measure the satisfaction of a nonfunctional requirement.

Firstly, we break down our functional requirements into goals and subgoals. Goals are objective and discrete; we have either satisfied them, or not. So, a functional requirement is subdivided into all the required components of that functionality, and whether we have satisfied it or not.

Advertisement

Softgoals are similar to goals, but they are not black and white, absolute measures. Instead, we measure the extent we have satisfied that softgoal. We say we have met a softgoal when there is sufficient contribution towards it, and insufficient contribution against it. They are therefore suited to nonfunctional requirements, which are often subjective or relative properties of software.

Usability is a good example. We can list requirements to help make our software user-friendlier, but equally other non-functional requirements such as security may make the software less easy to use. Whether the software is ultimately considered usable is a question of the balance of the two.

So, we use softgoals and subsoftgoals as a way of decomposing our nonfunctional requirements and measuring our implementation or requirements against them.

Having identified the hierarchy of possible goals, subgoals, softgoals and subsoftgoals we then identify the relevant ones to target to satisfy our requirements. From this set, we can identify the relationships between them and the set we need to satisfactorily implement our features.

Object Life Histories

One of the key principles behind object-oriented development is that any system has a number of key objects or concepts that can be implemented as software entities. These objects will typically be created with an initial set of conditions and then experience many interactions and events that change their state throughout their life span.

We can represent these states, and the transitions between them as a state machine diagram. This state machine diagram can be used to help find functional requirements. This technique is known as Object Life Histories (Robertson & Robertson, p296-297)

Consider the example of a car in a typical racing game. This car may begin life on the grid, undamaged with a full tank of fuel. Throughout the course of the race a number of events can happen to the car. For instance, a car may run low on fuel and need to enter the pits to continue. A car may be struck by another car and become damaged. The car may be repaired following a visit to the pits. This set of example illustrates states (initial state, damaged state) and events (refuel, hit by another car) serving as transitions between those states.

We can use the states and transitions between states to discover functional requirements. For instance, the ability to repair damage to a car during a pit stop is a functional requirement. The ability for the car to become damaged following a collision is a nonfunctional requirement.

By adopting a different perspective of what could happen to an object during its lifetime, rather than the use-case oriented view of what changes we can affect to an object we can discover a whole new set of requirements that we may otherwise miss.

Volere Template

The Volere Template is a comprehensive document detailing a requirements specification template covering all aspects of the requirements engineering process, developed by James and Suzanne Robertson.

The template contains sections covering issues such as the driving forces behind a project, the project's constraints, functional requirements, non-functional requirements and project issues.

The Volere Template is a comprehensive document; however, it does not have to be used verbatim. The template can be trimmed to those areas most important to your project, or even simply used as a checklist or guide to structure other processes.

The Volere template can be found at www.volere.co.uk

Wikis

Wikis are a superb tool for all aspects of requirements analysis. Wikis are a participative, collaborative method of capturing, refining and communicating information. Wikis can be used to obtain input from a wide range of perspectives and sources, breaking down political, power or functional lines. Furthermore, as the history is stored, we can retrieve information such as how design decisions were taken.

Conclusion

Formally or informally, explicitly or implicitly, consciously or unconsciously, requirements engineering is a core software engineering activity that is always practiced at some level. Introducing cohesive requirements engineering processes can help us avoid wasting time and cost building the wrong software and ensure the software we build is high quality and satisfies our customers.

References

Robertson, S. and Robertson, J. (2006), Mastering the Requirements Process, Addison-Wesley

Mylopoulos, J., Chung, L., Liao, S., Wang, H. and Yu, E., 'Exploring Alternatives during Requirements Analysis', IEEE Software, January/February 2001

Alexander, I., 'Misuse Cases Help to Elicit Non-Functional Requirements', Computing & Control Engineering, February 2003

---

Title photo by 3:19, used under Creative Commons license.

 
Article Start Previous Page 4 of 4
 
Comments

none
 
Comment:
 


Submit Comment