Advertisement

OO Analysis and Design

Started by July 03, 2003 03:45 PM
3 comments, last by TheOne1 21 years, 6 months ago
I was just wondering, how many of you who create games either with a team or self use the UML? Like Use Cases and the iterative software design or Waterfall method of 1. Analysis 2. Design 3. Implementation and 4. Testing.
----Me: So do you know any computer languages?Friend: Ummm....yeah, I used to know l337 talk.Me: ok....
The vast majority of people who frequent this site have no formal software engineering instruction or experience. Most of them aren''t even formally instructed in computer science - this is a hobbyist site, after all. Most of our members don''t know what UML or a use case is, and most don''t care.

Then there are a few like me, who have had the instruction but just don''t care for it. Software engineering principles sometimes introduce "over-design" and rigidity into a very fluid process. Developing a game is a process of continuous evaluation and rebalancing, so you can''t build a start-to-finish implementation guide, though implementation guides, interaction diagrams and mini-waterfall cycles for different portions of the game are good ideas. I used to receive Game Developer Magazine and I still read post mortems on GamaSutra, and I can''t recall formal software engineering principles being mentioned once, so I don''t think there''s a lot of emphasis put on it by professional game developers either. I might be wrong or misinterpreting things, though.

Finally, you have the SE faithful, who even have their own forum on this site. From the activity in it, though, you can see how few they are...

The Game Design forum contains very few people who are even good programmers, by their own admission. I don''t think you''ll find a lot of respondents to polls and queries about UML, etc here.

I might also add that I frequently like to disabuse people of the notion that what the majority does is in any way relevant to what you do or should do. Employ your skills and knowledge to create a methodology that suits you. I hardly write code these days, but when I do I use extensive prototyping (typically in my choice of dynamic-typing/scripting language at the moment, currently Python) and then optimize or convert portions to C++ as necessary. Laziness is the fundamental tenet of my programming: if you wait a bit or dig around, you may find someone else who''s already done the work for you.

Good luck.
Advertisement
I work at a company that does military simulations (similar to games), and we have a fairly lightweight development process with a more strict testing (and fixing) process.

We use UML to implement our designs, but we only do enough design such as to say, "I''ve thought this through, and this is how I think it is best to implement this particular component". It shows you have a plan and that you have thought through the problem at hand.

We also do use cases as well, but we have specific people assigned to them. Use cases are excellent for coming up with a good test plan.

Our overall development cycle varies from project-to-project depending on the needs of the project and the needs of the team. In our current project, we are introducing a component-based architecture in which it''s been decided that the best way to convert to the new architecture is to go through an iterative build lifecycle. Every build is from approximately 4-5 weeks in length and includes requirements, design, coding, and testing. This way we can make adjustments if we find problems in the architectural design throughout the project''s lifecycle.

Just a hint, the standard waterfall model is not for games. It''s for well-defined systems whose requirements have been determined and solidified before the project enters the analysis and design phase. Typically, monolith software projects use this model, but it is certainly not a good model to follow if you plan on rapid product development. As for what is good? Iterative, the V model, and the spiral come to mind. You can look at them as the waterfall model broken down into many cycles (well, except the V).

Also, I have applied software engineering best practices to a small team that developed a small game. The most important word to remember is "plan". It''s the tenet of software engineering and the basis of everything else in the field. i.e. the reason you perform requirements analysis is to plan your design and your testing, the reason you perform design is to plan your implementation (your code) and more of your testing.

Anyway, it''s well past 5:00 now. I have plenty more to say, but it''s the weekend. Ask questions if you want more.


Kevin "Khawk" Hawkins
CEO and News Director, GameDev.net
Software Engineer, Raydon Corporation
Author, OpenGL Game Programming
Contributing author, Game Development: Tricks of the Trade, "Using the UML in Game Development"
Developer Diary

Admin for GameDev.net.

I''ve been creating UML object relationship diagrams, but I haven''t developed any use cases yet.

I think the iterative method of software design is a theoretical notion, and not one that people actually use (at least, I hope not). Since I''m a new programmer myself, I''m concentrating a lot on the analysis and design phase before I even do too much coding since I want to see how relationships between objects and the game logic itself works out.

I''ve discovered that as I develop the objects, they in turn make me question the need for other objects or of splitting rather large objects into sub-objects (I seem to mostly be using aggregation and composition principles rather than inheritance or muliple inheritance to create objects).

For example, while trying to figure out how I was going to do my hybrid turn-based and real time system, I realized that I''d need some sort of organization manager which handled Commanders (the game agents which actually take command inputs from the player and in turn actually control the units) as well as a turn manager which sorted through the Commander manager to look at the outcomes. Sort of a primitive multi-tasking system in a way I guess. I didn''t realize I''d need this until I started poking around the capabilities of Commanders, how the Player issued orders, and how the Commanders would need information about the Orders they were given AND the world around them to make their Plans_of_Action.
The world has achieved brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants. We know more about war than we know about peace, more about killing than we know about living. We have grasped the mystery of the atom and rejected the Sermon on the Mount." - General Omar Bradley
BTW, as Oluseyi pointed out, most of the people that come to this forum in particular have no formal software engineering instruction...including me. So far I''ve been self-taught, though I''ll be attending a Univerity come August so I''ll no longer be in that category

I think that for me personally, I''m not a very good coder, and I''ve always thought one of my better skills was not so much answering questions...but asking questions. Hence I think I''m stronger in the analysis and design phases precisely because they are about asking the right questions.

Actually, I was wondering if anyone has any experience with some good UML tools that will work with Linux. I''ve played with Argo and Dia''s limited UML capabilities, but I was wondering if anyone knew of other UML tools? It doesn''t have to be Linux, though I would prefer it to be open-source/freeware/shareware.
The world has achieved brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants. We know more about war than we know about peace, more about killing than we know about living. We have grasped the mystery of the atom and rejected the Sermon on the Mount." - General Omar Bradley

This topic is closed to new replies.

Advertisement