Methodology Tips
My Preference of Order Before Construction
Define use cases (use case analysis) — > Estimation —> Identify application interfaces —> Fix high level architecture —> Create object model from usecases —> Turn objects into classes and refine your design —> Identify objects into layers or packages they belong to —> Identify methods —> Create data model (can be done before object model if you like) —> Network architecture design
Defining the Project
- Document usecases even when the project is small. No need for usecase diagrams.
- Do not repeat terms in every usecase. Have a reference document.
- Prototyping the GUI and signing it off is always a good idea.
Estimation
- Estimate based on the slowest person in the team
- Always consult the person responsible for the task for the estimation.
- Consider time for environment setup, testing, leaves, etc.
- More man power rarely saves a late project! That is because of the increase in communication and coordination. It usually adds more cost and it is better to be done as early as possible.
An Algo for Estimation
- Step 1: For each usecase account for the number of screens in GUI, external application interfaces, database tables, table or file conversions.
- Step 2: Account for analysis, design, development, integration and unit testing time.
- Step 3: Add 20% to your estimate for any additional developer.
- Step 4: Review your estimate over time, consider risk and share it with the others.
Objects Identification
- Identify objects as early as possible. Relations are not that important now.
- Trying to generate code from UML is just a time loss!
- Turn objects into classes
Data Model
- Pay attention to m-m and normal forms. m-m relations may produce extra objects.
Construction Phase
- Do some design even in the fastest agile methods. Do not dive into coding straight away.
- Once the project passed the analysis and high level design then you need a change request control mechanism.
Roles in UML association
At the end of each association the role each object might take is written. It can be applied to other types of association like generalization as well.
page_revision: 20, last_edited: 1221372979|%e %b %Y, %H:%M %Z (%O ago)





