hi i m bachelor student i want to know about different methodologies used to develop certain software. i know little about waterflow process model, spiral process model, V process model. i know the name of object oriented model bt dont have any knowlegde about that. i m trying to develop a software for a company which manufacture some brushes. i have to made all data record keeping and report generation online. can anyone guide me that which model should i follow. and wat are the pros and cons. as i am the beginner so there can b a lot of mistakes.
You forgot step zero:
0. Talk to a person who has a fuzzy idea of what they want the computer to do for them.
0a. And unrealistic expectations of how involved they have to be during development.
0b. And unrealistic expectations of how long it will take to finish.
0c. And unrealistic expectations of how much it will wind up costing.
Almost forgot: Software Development Lifecycle <> Project Management Methodology <> Program Design and Development Methodology.
Think of what you have done before and what mistakes you did and why, how you succeeded and reasons for that. Do plan to avoid mistakes and do one better in successful strong points. The project work is other pro(cess/blem).
After this you realize that you realy should really understand what is your goal. Don't forget to analyze what you will not do and write documents of that approved by customer.
Finally really that point most most hate is the most important: documentation, documentation, documentation. And in realizing the plan using use case/testing driven development is my favorite. Everything is very much depending from your total situation and qualities of everybody involved.
In my class (all one of them), the instructor taught us to use the Top Down design method. In a nutshell:
1) Study the problem, better than you believe you need to
2) Put off all the details you can, for now.
3) On paper, note the functional separations you'll need, probably:
4) Note the parameters each functional part will need to work with, and make rough functions in code. Just reasonably close for now, and pseudo code or plain language, is fine.
5) Check that you have all the big parts of the program, included.
6) Start with main(), and work with each function in the order the program will, and start replacing the plain language and pseudo code, with actual code. All the details that you can put off still, put off. Only the essentials right now.
7) Once you have the flow of the program down right, go back and get enough details that the accuracy of your calculations can be confirmed. Things like appearance are still being put off. This applies to all functions except those dealing with appearance and other details.
8) When the above is OK, then get into all the details that you put off. NOW is the time to make your output, really shine.
The advantage is that the important things are done first, and the numerous lines of code dedicated to less important issues, are relegated to later. Things move along faster.
Oddly, this tends to improve those details, because by the time you are writing that code, you know better how you want them to be done.
Evolutionary model you can go back an alter different stages of the development at any point which is good because requirements and interface designs will more than likely change. It lets you make something that is closer to what the user wants in the long run . . . usualy, but it might get confusing if too many changes are made to previous sections during the life cycle.
perfect for students, i used it in my 3rd year project for my degree because i missed loads of stuff out of the requirements and changed the interface completely after trying to implement the orignal one
For any N methodologies of software development, we can construct a methodology that is as good as the best of the N. Hire N teams to develop the product in parallel, each using a different methodology. When one of them finishes, stop. Your costs will differ from the best methodology's costs by a constant factor, N, which as computer scientists we know is not important.