Upcoming Events
Unite 2010
11/10 - 11/12 @ Montréal, Canada

GDC China
12/5 - 12/7 @ Shanghai, China

Asia Game Show 2010
12/24 - 12/27  

GDC 2011
2/28 - 3/4 @ San Francisco, CA

More events...
Quick Stats
40 people currently visiting GDNet.
2406 articles in the reference section.

Help us fight cancer!
Join SETI Team GDNet!
Link to us Events 4 Gamers
Home » Articles & Resources » Programming » Software Engineering
Intel sponsors gamedev.net search:
Software Engineering

An architect can't build a building without following a defined process. The same goes for software development. This section provides articles on software analysis and design, design patterns, planning, quality assurance, testing, reuse, and project management.

For more information about Software Engineering, check out:

Resources Listed: 68
Code DesignFormal Methods
Design PatternsObject Oriented
Design Patterns LinksViva64
Subcategory: Code Design
Topic Author Description
Removing The 'Tech' From 'Design Document'
[Added: 2/20/2002]
Michael Sikora  Explains what a technical document is, and how it can speed up the development process. 
The C++ Pimpl
[Added: 4/2/2002]
Sobeit Void  Describes a method allowing you to modify the private interface of your class while avoiding recompilation of code using the public interface. 
Using PDL for Code Design and Documentation
[Added: 6/13/2001]
Drew Sikora  Describes how Program Design Language can be used to improve your code design. 
Subcategory: Design Patterns
Topic Author Description
Patterns FAQ
[Added: 6/19/2001]
Kevin Hawkins  Explains the basic concepts behind the patterns listed here. 
Appearance Map
[Added: 6/19/2001]
Zachary Booth Simpson  Isolate Model state from Model appearance to minimize impact on controllers when art changes. 
Context/Virtual Self
[Added: 6/19/2001]
Mat Noguchi  Sharing state data between multiple objects, either to implement a finite state machine or to compose multiple objects to perform a particular task. 
[Added: 6/19/2001]
Zachary Booth Simpson  Update a Model's state based on circumstance. 
Controller State Machine
[Added: 6/19/2001]
Zachary Booth Simpson  Track a complicated state process with a controller. 
Creating a Generic Object Factory
[Added: 5/19/2004]
Robert Geiman  Provides an explanation and implementation of object factories. 
Design Pattern: Variant
[Added: 12/24/2003]
Ernest S. Pazera  Presents a pattern useful in message handling and AI. 
Double Buffered State
[Added: 6/19/2001]
Zachary Booth Simpson  Track an old and new state for multi-Model Controllers. 
[Added: 6/19/2001]
Zachary Booth Simpson  Isolate database changes for index and/or client/server synchronization. 
[Added: 6/19/2001]
Zachary Booth Simpson  Provide each Controller with a chance to execute once per game frame. 
[Added: 6/19/2001]
Zachary Booth Simpson  Store the state of an object which exists in the game world. 
Model Database
[Added: 6/19/2001]
Zachary Booth Simpson  Aggregate the Model objects into one database. 
Reflective Factory
[Added: 6/19/2001]
Chris Hargrove  Treat the class of an object as its own object, serving as both a factory for runtime instantiation and a mechanism for simple reflection services like runtime type identification.  
Render Delegation
[Added: 6/19/2001]
Zachary Booth Simpson  Pass-off special render cases to Model code. 
Spatial Index
[Added: 6/19/2001]
Zachary Booth Simpson  Speed searches by position in a Model Database. 
The One: A Singleton Discussion
[Added: 5/24/2002]
Robin Tan  Discusses some of the problems encountered when using the singleton pattern, and suggests some solutions, including nifty counters and Zerob singletons. 
The Singleton Class Cluster
[Added: 7/6/2005]
Tristam MacDonald  Suggests an optimal implementation of the singleton and a way to combine it with the class cluster design pattern. 
[Added: 6/19/2001]
Zachary Booth Simpson  Provide a simple mechanism for building geometric game puzzles. 
Type Database
[Added: 6/19/2001]
Zachary Booth Simpson  Store information which is common to Model types. 
[Added: 6/19/2001]
Zachary Booth Simpson  Create a simple and safe embedded language with which game designers and (potentially) end-users can build game logic. 
[Added: 6/19/2001]
Zachary Booth Simpson  Render the visible Models given a P.O.V. 
Subcategory: Design Patterns Links
Topic Author Description
Design Patterns Tutorial
[Added: 6/20/2001]
  Gives an introduction to the concept of design patterns in programming. 
Gamasutra: Patterns
[Added: 6/20/2001]
  Game development patterns, updated monthly. 
Patterns Home Page
[Added: 6/20/2001]
  The centralized home of everything patterns. Includes a list of general software pattern resources. 
Subcategory: Formal Methods
Topic Author Description
A Review of Formal Methods
[Added: 8/29/2001]
Robert L. Vienneau  This report overviews the technical basis for formal methods, while critically noting weaknesses. 
An Analysis of two Formal Methods: VDM and Z
[Added: 8/29/2001]
Thomas McGibbon  This paper compares and contrasts the strengths and weaknesses of the Vienna Development Method (VDM) and Z in the software design life cycle phase, and compares and contrasts VDM and Z to other formal models. 
Beyond the black box: Open implementation
[Added: 8/29/2001]
Gregor Kiczales  Open Implementation is a software design technique that helps write modules that are both reusable and very efficient for a wide range of clients.  
Blind Man's Bluff
[Added: 3/20/2004]
Dean Margerison  Provides a brief insight into the current problems that many projects face, and what can be done to transform the situation for the better. 
Game Unified Process
[Added: 5/14/2003]
Kevin Flood  Describes how the author applied Rational and XP development processes to game development. 
Incremental Development
[Added: 6/24/2002]
Drew Sikora  This article will introduce you to a method of development that will supplement skill, knowledge, dedication, and goals in order to enable you to achieve your goals. 
Test Driving Expression Template Programming
[Added: 6/27/2004]
Kent Lai  In this article, you will be introduced to the concept of writing unit tests for your projects, and going a step further, to begin driving your development process with the test first, code later concept. 
Subcategory: Object Oriented
Topic Author Description
A Laboratory for Teaching Object-Oriented Thinking
[Added: 8/29/2001]
Kent Beck and Ward Cunningham  Description of software design technique for both novice and experienced procedural programmers to the anthropomorphic perspective necessary for object-oriented design. 
Building bug-free O-O software: An introduction to Design by Contract
[Added: 8/29/2001]
ISE  The notion of Design by Contract is central in the systematic approach to object-oriented software construction, as embodied in the Eiffel method. This article presents the key ideas.  
Design Principles and Design Patterns
[Added: 8/29/2001]
Robert C. Martin  A brief explanation of the ten Principles of OOD with supporting patterns. 
No Silver Bullet Reconsidered
[Added: 8/29/2001]
Brad Cox  Superdistribution could let software engineers overcome the software crisis as tangible domains surmounted the same problem, by encapsulating complexity so thoroughly that everyone else can forget it. The solution requires enforcing property rights in digital goods as robustly as conservation of mass enforces them for tangible goods. 
Object Oriented Game Programming: Robot Functions
[Added: 5/1/2008]
Paul Stevens  This article explains "Robot Functions," special objects which can be used to automate variable manipulation in your game. 
Object Oriented Game Programming: The GUI Stack
[Added: 5/1/2008]
Paul Stevens  This article explains how a stack data structure can be a useful way to organize interfaces in your game. 
Object Oriented Game Programming: The Scene System
[Added: 5/1/2008]
Paul Stevens  This article presents an object-oriented structure for managing the various scenes in your game, from title screens to option screens to gameplay. 
Object-Oriented Metrics: People and Publications
[Added: 8/29/2001]
Empirical Software Engineering Research Group  This annotated bibliography is meant to offer an authoritative coverage of what is known about measurement of object-oriented technology and its use.  
Object-Oriented Scene Management
[Added: 5/2/2002]
Jeff Kershner  This article will present an abstract, expandable, object-oriented method to handle generic objects for a practical and organized game engine. 
Object-Oriented System Development Method
[Added: 8/29/2001]
Dennis de Champeaux, Douglas Lea, and Penelope Faure  Complete description of a object-oriented software development method. 
Principles of Object-Oriented Design
[Added: 8/29/2001]
Robert C. Martin   
Structuring Use Cases with Goals
[Added: 8/29/2001]
Alistair Cockburn  This paper introduces a theory based on a small model of communication, distinguishing "goals" as a key element of use cases. The result is an easily used, scaleable, recursive model that provides benefits outside requirements gathering: goals and goal failures can be explicitly discussed and tracked; the goals structure is useful for project management, project tracking, staffing, and business process reengineering. The model and techniques described here have been applied and evaluated on a relatively large (50 work-year, 200 use-case) project. 
The UML v1.1 and Beyond: The Techniques of Object-Oriented Modeling
[Added: 8/29/2001]
Scott W. Ambler  This white paper describes the object-oriented (OO) modeling techniques employed on large-scale, mission-critical (MCCR) applications using the Unified Modeling Language (UML) v1.1. 
Subcategory: Viva64
Topic Author Description
32 OpenMP traps for C++ developers
[Added: 7/28/2008]
Alexey Kolosov, Andrey Karpov, Evgeniy Ryzhkov  Since multi-core systems are spreading fast, the problem of parallel programming becomes more and more urgent. However, even the majority of experienced developers are new to this sphere. The existing compilers and code analyzers allow finding some bugs, which appear during parallel code development. However, many errors are not diagnosed. The article contains description of a number of errors, which lead to incorrect behavior of parallel programs created with OpenMP 
A Collection of Examples of 64-bit Errors in Real Programs
[Added: 8/4/2010]
Andrey Karpov  This article is the most complete collection of examples of 64-bit errors in the C and C++ languages. The article is intended for Windows-application developers who use Visual C++, however, it will be useful for other programmers as well 
Adaptation of the technology of the static code analyzer for developing parallel programs
[Added: 3/12/2008]
Andrey Karpov, Evgeniy Ryzhkov  In the article the question of use of the static code analyzers in modern parallel program development processes is considered. Having appeared in 70-80s as an addition to compilers, the static analyzers stopped to be popular with the developers in 90s. The reason was probably the increase of the errors diagnostics quality by the compilers. But in 2000s the interest to the static code analyzers started to increase again. It is explained by the fact that new static code analyzers were created, which started to detect quite difficult errors in programs. If the static code analyzers of the past made it possible, for example, to detect an uninitialized variable, modern static code analyzers tend to detect an unsafe access to data from several threads. The modern tendency of static code analyzers development became their use for diagnosing errors in parallel programs. In the work the situations are considered, where the use of such tools makes it possible to considerably simplify the process of creating parallel program solutions  
AMD64 (EM64T) architecture
[Added: 3/4/2009]
Evgeniy Ryzhkov, Andrey Karpov  The article briefly describes AMD64 architecture by AMD Company and its implementation EM64T by Intel Company. The architecture's peculiarities, advantages and disadvantages are described. 
Building of systems of automatic C/C++ code logging
[Added: 7/28/2008]
Andrey Karpov  Sometimes logging of an application's events is the only debugging method. The logging method's disadvantage is the large size of the code which you have to write manually to save the whole necessary information. The article touches upon the method allowing you to build a system of automatic logging of C/C++ code 
Debugging and optimization of multi-thread OpenMP-programs
[Added: 3/4/2009]
Andrey Karpov, Evgeniy Romanovsky  The task of familiarizing programmers with the sphere of developing parallel applications is getting more and more urgent. This article is a brief introduction into creation of multi-thread applications based on OpenMP technology. The approaches to debugging and optimization of parallel applications are described. 
Detection of vulnerabilities in programs with the help of code analyzers
[Added: 9/3/2008]
Elena Haritonova  At present there are a lot of tools intended for automating search of program vulnerabilities. This article describes some of them. 
Installation of PC-Lint and its using in Visual Studio 2005
[Added: 3/12/2008]
Andrey Karpov  The article is devoted to the first acquaintance with the PC-Lint 8.0 static analyzer of C++ code. The process of the tool installation and its initial setting is described. 
Introduction into 64 bits for the beginners or where's again the 64-bit world?
[Added: 3/4/2009]
Evgeniy Ryzhkov  There were 64-bit processors, the operational systems, some programs. However completely all users have passed to 64 bits still far not. In article the reasons of it are considered. 
Introduction into the problems of developing parallel programs
[Added: 3/4/2009]
Andrey Karpov  As developing parallel software is rather a difficult task at present, the questions of theoretical training of specialists and investigation of methodology of projecting such systems become very urgent. Within the framework of this article we provide historical and technical information preparing a programmer for gaining knowledge in the sphere of developing parallel computer systems. 
It is difficult
[Added: 9/3/2008]
Andrey Karpov  The article concerns the problem of excess of program creation terms as a result of a prejudice that programming is simple and even simpler. 
Optimization of 64-bit programs
[Added: 11/24/2008]
Andrey Karpov  Some means of 64-bit Windows applications performance increase are considered in the article. 
Software Code Metrics
[Added: 1/6/2010]
Anton Milutin  The article describes 7 types of metrics and more than 50 their representatives, provides a detailed description and calculation algorithms used. It also touches upon the role of metrics in software development. 
Some examples of the 64-bit code errors
[Added: 3/12/2008]
Evgeniy Ryzhkov  While porting 32-bit software to 64-bit systems there may appear some errors in the code of applications which were written in C++ language. The cause for these hides in the alteration of the base data types (to be more exact, in the relations between them) with the new hardware platform. 
static analysis, a view from aside
[Added: 3/4/2009]
Andrey Karpov. Konstantin Knizhnik  The article is an interview with Konstantin Knizhnik taken by Andrey Karpov, "Program Verification Systems" company's worker. In this interview the issues of static code analysis, relevance of solutions made in this sphere and prospects of using static analysis while developing applications are discussed 
Testing parallel programs
[Added: 11/24/2008]
Andrey Karpov  Testing parallel software is a more complicated task in comparison to testing a standard program. The programmer should be aware both of the traps he can face while testing parallel code and existing methodologies and toolkit. 
The essence of the code analysis library VivaCore
[Added: 3/12/2008]
Andrey Karpov, Evgeniy Ryzhkov  The article tells developers about VivaCore library, preconditions of its creation, its possibilities, structure and scope of use. This article was written simultaneously with the development of VivaCore library and that's why some of the details of the final realization may differ from the features described here. But this won't prevent the developers from getting acquainted with the general work principles of the library, mechanisms of analysis and processing of C and C++ source code. 
The forgotten problems of 64-bit programs development
[Added: 3/12/2008]
Andrey Karpov  Though the history of 64-bit systems development makes more than a decade, the appearance of 64-bit version of OS Windows raised new problems in the sphere of development and testing applications. In the article there are considered some mistakes connected with 64-bit C/C++ code development to Windows. The reasons are explained according to which these mistakes didn't find their reflection in the articles devoted to the migration tasks and are unsatisfactorily detected by the majority of static analyzers. 
The use of the code analysis library OpenC++: modifications, improvements, error corrections
[Added: 3/12/2008]
Andrey Karpov  The article may be interesting for developers who use or plan to use OpenC++ library (OpenCxx). The author tells about his experience of improving OpenC++ library and modifying the library for solving special tasks. 
 Key: = HTML article hosted here  , = HTML article hosted elsewhere  = link to another web site  = Adobe Acrobat document  = Zip files  = Word or text document