Software Engineering for Game Developers
  • Software Engineering for Game Developers
  • Software Engineering for Game Developers

Software Engineering for Game Developers

by Ph.D., John Flynt John P
     
 

Software engineering leads to better software products. This book teaches readers how to develop games according to a design and follow a standardized approach to game development. It provides a multitude of exercises that show just how software engineering practices can improve your game. All the basic categories of software engineering are covered. Programmers,

See more details below

Overview

Software engineering leads to better software products. This book teaches readers how to develop games according to a design and follow a standardized approach to game development. It provides a multitude of exercises that show just how software engineering practices can improve your game. All the basic categories of software engineering are covered. Programmers, designers, architects, generalists, software engineers, and game developers seeking knowledge about standard frameworks for games and their relative merits will find this text more than satisfying. Three frameworks (function, object-oriented, and patterned) are presented, contrasted, and fully described through design documents.

Product Details

ISBN-13:
9781592001552
Publisher:
Cengage Learning
Publication date:
11/08/2004
Edition description:
New Edition
Pages:
862
Product dimensions:
7.40(w) x 9.08(h) x 2.16(d)

Related Subjects

Table of Contents

Introductionxxxiv
Chapter 1Getting into the Game1
Software Engineering and Game Development1
Engineering2
Cottage Industries and Formalized Disciplines3
Repetition and Perfection4
To Engineer Is...5
The Path7
Integrity10
Answering Risk with Design11
Game Design and Software Design13
Design and Development14
Class Design and Implementation16
Refactoring and Patterns17
Development and Testing19
Code Documentation21
Learning and Capabilities21
Maintenance and Revision23
Measurement23
The Industry23
Profession and Craft25
Conclusion26
Chapter 2Requirements-Getting the Picture27
Essential Notions28
What Are Requirements?28
Where Do Requirements Originate?29
Who Gathers Requirements?31
Why Do You Need Requirements?32
What Results from Requirements?33
Avoiding Difficulties with Requirements35
Establish the Scope of the Project36
Identify Your Customers38
Feasibility38
Uncontrolled Growth39
What Makes a Good Requirements Specification?40
Make Requirements Complete41
Make Requirements Correct41
Necessary Requirements Only42
Consider the Feasibility of a Requirement42
Requirement Priorities43
Eliminate Ambiguity43
Verify and Validate Requirements43
Manage Requirements for Change44
Engineering Requirements44
Iterative Increments44
Cycles of Requirements Development45
Eliciting Requirements46
The Requirements Specification Document47
Using the Design Document for the Game52
Using Mod Requirements55
Preliminaries of Use Case Exploration55
Exploration58
Using Use Case Diagrams and Scenarios59
The Sixty-Seconds-of-Play Use Case Diagram60
Making a Starting Specification List61
Finding Potential Class Names63
Using a TOR Chart63
Analysis64
Using Use Cases to Analyze Actions65
Activity Diagrams68
Refinement, Verification, and Validation68
Using Use Cases for Tests69
Using a Requirements Matrix70
Refining Specification Dependencies70
Anticipating and Managing Change71
Change Procedures and Reviews71
Document Control72
Conclusion72
Chapter 3A Tutorial: UML and Object-Oriented Programming75
UML History75
A UML Diagram and Its Elements76
Why Bother with Symbols?77
Starter Terms79
UML Diagrams80
Use Case Diagrams83
Use Cases Tell Stories84
What If?85
Different Use Cases87
Activity Diagrams89
Class Diagrams91
Class and Object Basics92
Class Diagrams in Practice93
Diagramming a Class94
Class Relations and Class Diagrams96
Generalization99
Associations102
Aggregation and Composition105
Different Types of Association106
Object Diagrams107
Links, Dynamic Modeling, and Messages109
Message Types110
Message Arrows110
Message Parameters111
Sequence Diagrams112
Objects and Lifelines112
How to Read Messages113
Collaboration Diagrams113
State Chart Diagrams114
Events, States, and Transitions115
More on State Transitions116
Component Diagrams116
Package Diagrams118
Deployment Diagrams118
Conclusion119
Chapter 4Software Design-Much Ado About Something121
Beginning Design122
Why Design?122
Architecture and Design125
Designing for Quality132
Maintainability133
Portability133
Usability134
Performance134
Testability134
Efficiency134
Reliability135
Finding Elements and Relationships135
CRC Cards137
Using the TOR Chart138
Generating Operations140
Moving to a Sequence Diagram140
Reframing Operations with a Collaboration Diagram142
Low-Level Design Tools143
Class Diagrams143
Operation Specifications145
Component/Package Diagrams146
Presenting the System Design146
The SDD Template147
How to Set Up the SDD147
Introducing an SDD148
Conceptual or Use Case View150
Behavioral or Implementation View150
Logical View150
Component View150
Deployment View151
Designing the System in Stripes151
Increments and Iteration in Stripes151
Team Efforts at Designing System Stripes152
A First Stripe from Ankh154
Beginning a Stripe155
The Use Case for the First Stripe156
Starting with a Context156
Discovering a Component157
Moving to a Scenario158
Stripe Collaboration Diagram160
Refining Operations and Generating Classes160
Creating the Component Diagram162
Verification162
Conclusion163
Chapter 5Old Is Good-The Library Approach165
Libraries and Reuse in General165
Open C++ Libraries167
Game Engine Libraries167
Profiled Engines168
Criteria for Reuse169
What Qualifies for Reusable170
The Problems of Creating Reusable Code171
Taking a Class Approach172
Using Standard Class Forms173
Class Implementation175
Making Code Efficient178
Needless Declaration178
Needless Copying179
Reference Counting180
Exceptions and Errors182
Try and Catch183
Declaring Exception Classes184
Defining Exception Classes184
Throwing Exceptions187
Compatibility and Maintainability188
Reducing Redundancy188
The Danger of Early Optimization191
Using Shallow Hierarchies191
Installation and Ease of Use191
The Boost and STL Libraries193
Using the STL194
Using Boost195
Documentation and Deployment196
Watch for Cut-and-Paste Code196
Do Not Address Obvious Things196
State the Common Use First197
Show How to Do Things197
Avoid Preaching198
Self-Documenting Code198
Conclusion199
Chapter 6Object-Oriented Fantasies and Realities201
Class Beginnings201
The Concept of Class202
Scope202
Construction203
Interface203
Abstract205
Abstract States205
Abstract Behavior205
Encapsulation206
Cohesion207
Responsibilities208
Coupling208
Decoupling209
Inheritance210
Generalization210
Specialization211
Associations213
Aggregation or Hierarchy?213
Aggregation214
Composition214
Abstract Classes215
Polymorphism216
Coupling Problems with Collections of Classes217
Points on Class Design and Implementation218
Information Hiding219
Refactoring220
Modularity220
What Destroys Modularity?222
General Remedies223
Using Refactoring224
Practices of Refactoring224
Specific Ills and Remedies225
Conclusion230
Chapter 7P Is for Pattern233
Patterns and Their Contexts234
The History of Patterns234
Patterns and Objects237
Pattern Origins238
GoF239
Kinds of Patterns240
A Short List of Patterns241
How to Document Patterns244
Applied Patterns248
Singleton249
Composite Pattern Features251
Chain of Responsibility Pattern Features252
State Pattern Features253
Strategy Pattern Features254
Observer Pattern Features255
Facade Pattern Features257
Memento Pattern Features258
Command Pattern259
Boss Pattern261
Boss Implementation262
Conclusion267
Chapter 8Risk Analysis269
The Story of Risk269
Applied Risk Analysis271
External Risks272
Internal Risks273
What Promotes Risk Assessment?274
General Attitudes Toward Risk and Risk Management274
Things That Foster Awareness277
Goals279
Strategies280
The Paradigm281
Identifying Risks282
Scope Risk Identification283
Schedule Risks Identification286
Resource Risk Identification287
Estimating Risk290
Scope Risk Estimation290
Schedule Risk Estimation291
Resource Risk Estimation293
Evaluating Risk294
Evaluating Risks That Are Associated with Scope294
Evaluating Schedule Risks295
Evaluating Resource Risks296
Planning for Risks297
Planning and Scope298
Planning and Scheduling298
Planning and Resources299
Controlling Risks299
Scope Control300
Schedule Control300
Resource Control300
Monitoring Risks301
Scope Monitoring301
Schedule Monitoring301
Resource Monitoring301
Conclusion302
Chapter 9Iterating Design303
Iterative Design Basics304
Applied Design305
Software Systems and Gravity307
Reversing Gravity307
Conceptualizing Iteration307
Ankh Development Using Stripes30

Read More

Customer Reviews

Average Review:

Write a Review

and post it to your social network

     

Most Helpful Customer Reviews

See all customer reviews >