The steps that I use for initial design (getting to a class diagram), are:
-
Requirements gathering. Talk to the client and factor out the use cases to define what functionality the software should have.
-
Compose a narrative of the individual use cases.
-
Go through the narrative and highlight nouns (person, place, thing), as candidate classes and verbs (actions), as methods / behaviors.
-
Discard duplicate nouns and factor out common functionality.
-
Create a class diagram. If you’re a Java developer, NetBeans 6.7 from Sun has a UML module that allows for diagramming as well as round-trip engineering and it’s FREE. Eclipse (an open source Java IDE), also has a modeling framework, but I have no experience with it. You may also want to try out ArgoUML, an open source tool.
-
Apply OOD principles to organize your classes (factor out common functionality, build hierarchies, etc.)