3 Primary Goals of Software Development-
During Software development of new project or extending existing project , 3 primary goals to be considered are -to make the software faster, better, cheaper.These 3 goals viz faster, better, cheaper correspond to Time, Features and Money respectively.
Faster - The software has to meet a market window. Competitive organizations set that time
Better - The software has to serve the requirements of the process it supports.
Cheaper - The software has to be less expensive to produce and maintain
Interestingly, All three of these goals, compete against each other.
Understanding how these three goals compete against each other -
The three goals create a negative perpetual cycle. More features means the project takes more time. More time means the project costs more money. More money means that the client wants more features. The cycle has now come full circle and repeats itself.
How to break the negative perpetual cycle due to Faster,Better, Cheaper goals-
1) Scoping the project
First Simple Solution to the above problem is Scoping the project. The project can be delivered on time and with lower cost by limiting the entire set of features to three main features.Now this might seem like a scary idea at first but consider this-Most software projects throw every idea possible into the mix because "it must have this feature". Of course this results in a huge feature set and the project is doomed before it has even begun. A wiser way to determine the features required is to only pick the ones that will help achieve the primary purpose of the software. This should be no more than three main features.
Benefits of Scoping the project or lowering expectations (by limiting feature set) -
By reducing your feature set and shipping on time you won't have wasted years developing a product then finding out you got it wrong or all those "must have features" are not even used. This will save you money, time and your sanity.You will also know exactly what you must do next for version 2 of your product. Again you pick the 2-3 most important features and ship them. Then you will receive more information and a positive feedback cycle is starting to occur.
2) Software Reuse
Software reuse can cut software development time and costs.
Software reuse is defined as the process of creating software systems from predefined software components.
Software specifications, designs, tests cases, data, prototypes, plans, documentation, frameworks, and templates are all candidates for reuse.
The major advantages for software reuse are to:
Software reuse is defined as the process of creating software systems from predefined software components.
Software specifications, designs, tests cases, data, prototypes, plans, documentation, frameworks, and templates are all candidates for reuse.
The major advantages for software reuse are to:
- Increase software productivity.
- Shorten software development time.
- Improve software system interoperability.
- Develop software with fewer people.
- Move personnel more easily from project to project.
- Reduce software development and maintenance costs.
- Produce more standardized software.
- Produce better quality software and provide a powerful competitive advantage.