Hi guys, Well i was just wondering about design issues in real development environment. well i mean how the guys broke it up and then go for the coding.does it starts by recognising various entities involved in project. and then may be these entities can become classes and then may be then the functionality of the classes, which will be methods. and then henceforth.. is this the way by which the things get worked out or i am wrong...? correct me if i am wrong
Hello Harjinder, I think you are right in the concept of going about software development. These are the general steps followed. 1)Statement of Purpose analysed. 2)Posible ways of achieving the goals discussed at longer length. 3)As far Java development goes the architecture is also vital 2 tier or 3 tier. 4)This can be decided by the time,cost,client requirement and the rigidity of the software. 5)After deciding the architecture "use cases" are designed ie how exactly would be the flow.This leads to class-level design. 6)After writng use cases and finalising them the use cases are broken down into "sequence diagrams" where you design each use case in detail breaking it further upto "method" level. 7)After doing all this the actual coding starts.But before this everything should be finalised by the team.Then minor changes can be made during the actual development. It is the genaral practice followed.I think I could elaborate according to your expectation.
There are many other ways of doing this, of course. Extreme Programming (XP), for example, does not wait for all the design to be described down to method level before any coding starts. XP focuses on delivering some important functionality to the customer as soon as possible, growing the project through many small iterations and adapting quickly to changing priorities and requirements. An overall design emerges through constant refactoring and improvement, rather than by up-front guesswork. At every stage, the software is useful to the customer. I especially disagree with your point 7. Assuming that only "minor" changes will be required during development is almost guaranteed to result in a late, buggy, expensive and soul-destroying development.