-written by Tom Mayberry, Dataram Storage Blog Team Member
Whether you’re developing the software for SAN Optimization Appliance or for a Sales CRM system, most of us would agree on the importance of using a well-defined process to develop that software. There are many standard processes to choose from, including ISO, CMMI, RUP, Six Sigma and TQM, just to name a few. Since there have already been volumes written on the relative merits of each of these process methodologies, I would like to consider something different. What exactly do we want in a software process? I think you’ll find that it isn’t really much of a secret. The following is a list of the key attributes to consider when developing or selecting a software development process:
- Usefulness – We, of course, want a process that satisfies the needs and wants of the developers. That is, a set of requirements must be established before acquiring or creating a process.
- Cost Effectiveness – The cost of process development and process execution must be considered to insure that it satisfies the business requirements of the organization and the needs of the developers.
- Maintainability – The process must be easily modifiable to fix issues or to react to changing conditions.
- Extensibility – We must be able to add features to our process as new requirements are revealed.
- Usability – Our process must not be so complex that it becomes unusable by all but the experts. Ease of use is an important attribute of any process.
- Efficiency – This is a measure of how quickly the process can be executed in order to solve the particular developer’s problem. This can also be considered the “performance” of the process.
- Reliability – Finally, our process must be reliable. It must yield the same positive results regardless of the developer or the conditions in which it is being used. Reliability is often expressed as dependability or quality.
As I would suspect, these attributes are probably already familiar to you. If you were to re-read the bullets above but this time replace the word “process” with “product” and the word “developer” with “customer” this would look a lot like a list of the key attributes for the software product under development. Although the resulting deliverables and artifacts may be different, the characteristics of a product and the process used to develop it are not really much different.
So when it’s time to choose a software development process (or to produce a product for the marketplace), keep the above attributes in mind. They will serve you well in either activity.