views:

91

answers:

4

I want to develope and big project but I really don't know what is the best way to model my project. do I even need to model my project? What are the most practical OOP software modeling methods in real world projects? what are the bests one and most useful ones?

please guide on this.

A: 

Agile methodology is currently what is recommended. If you add a slice of UML then it would be better :-)

Agile is a software development lifecycle model, not a software modeling method. I think he's asking about modeling the software itself.
Ryan Hayes
@Ryan Haye to be more precise, Agile is set of principles or set of development methods, the sdlc is iterative-incremental.
Gabriel Ščerbák
+1  A: 

Many times its needed to capture the complex structure of classes you have in you OO system, so class diagrams from UML are used for modeling. You can also want to describe interactions of classes, for that sequence diagrams are useful. There are also other UML diagrams and each has its purpose. If you are looking for an approach to modeling, try looking at Unified Process, which is adevelopment method, which is created by authors of UML and uses UML quite heavily and also describes how UML can be used.

Gabriel Ščerbák
A: 

Modeling (design) is the most important part of every project. In fact as times goes by, we sacrifice performance to gain higher level of design. Why .NET framework is popular (compare to old tools) ? In most cases its libraries are wrappers over traditional win32 APIs, a waste of performance, instead it provides better design, which makes it easy to learn and use. So if your project have a good design it would be easy to understand, develop, debug, maintain and extend. Another example is OOP itself which has classes, interfaces... and bunch of constructor/destructor calls. OOP concepts are borrowed from psychiatry and the way human being see the world.

Here are two different concepts: 1) Design methodology 2) Project management methodology

There are many and I don't name good or bad. Each of them fits a scenario. About design methodology I prefer DDD (Domain Driven Design) as it maps the industry domain terminology and concepts. So if you have a decision problem about what to do if A->B->C happened, simply you can ask a domain professional and he will say what they do in real world. DDD is good for old enough industries that have cumulative wisdom. I'm not gonna write more about design since we don't know about the project.

Project management methodologies (like agile) are the way you build the building from the map (design). The goal of project management is to use resources optimal (time, money, human resources...). This is done through work breakdown structure and make work as parallel as possible. The most known project management methodology is the traditional one in which we do everything in sequence, as civil engineers do (foundation, structure, walls...). This was good for many centuries until last decades (software industry), since in traditional project management you know where you are, where you want to go, and how to reach there. This way you can buy your furniture for a home that's a land yet ! Software industry has very rapid changes in tools and methods because is was new and no best practices were founded on thousands of failed projects. Many times when a project started it has changes because of changes in developing tools and frameworks. Other source of change is the scope of the project (where to go). Software is an intangible product so you fall in the trap of time estimations easily. For software development best practice are iterative methodologies. Iterative methodologies suggest, a working incomplete solution which you make more complete in next iterate, rather than a non working partially complete one. This has a time overhead, instead, you sure the solution works and if any problem, you find in early stages. That's why we have nightly builds !

Xaqron
Question is about "software modeling methods". UML is just a language. It doesn't tell you how to think, it helps you to share your thoughts in a standard manner with others who know this language.Thanks for negative vote !
Xaqron
A: 

The best is Visual Studio 2010 Ultimate others are too cumbersome. Otherwise use light tools like yuml see http://askuml.com for samples.

Rebol Tutorial