Following are the principles which have to be followed to develop software in such a manner that it posses all the characteristics like: efficiency, functionality, adaptability, maintainability, and usability.
Make quality number one priority:
First requirement that the user demands is "quality". A customer can't tolerate a poor quality product regardless of how you define quality. "Quality" is the main priority for the customer.
High quality is always possible:
It is always possible to develop high quality software using all the techniques that can enhance the quality. Thus, developing high quality software is always possible.
Give product to customer's early:
The most effective way to ascertain the real customer need is to give user's the product and let them play with it. Better approach is to deliver a quick and dirty prototype. Early in the development stage, gather feedback and write the requirement specification and then proceed with full scale development.
Determine the problem before writing the requirement:
Most engineers rush to offer a solution for the given problem without understanding the problem clearly. If the engineer's perception of the problem is accurate only then the solution may work. Further, before you try to solve the problem, be sure to explore all the alternatives and don't get blind by obvious solutions.
Evaluate design alternatives:
After the requirements are agreed upon you must examine a variety of architecture & algorithms to design the software. You certainly don't want to use architecture because it was used earlier in the requirement specification. The architecture you want is the one that conforms to the requirements.
Use an appropriate process model:
There are dozens of process models like waterfall model, throw away prototype model, increment model, and spiral model, etc. But there is no such process model that works for every project. Each project must select a process that makes the most for that project.
Put technique before tool:
An undisciplined carpenter with a powerful tool becomes a dangerous undisciplined carpenter. Similarly, an undisciplined software engineer with a tool becomes a dangerous undisciplined software engineer. Before you use a tool you should understand and be able to follow an appropriate software technique.
Get it right before you make it faster:
It is far easier to make a working program run faster than to make a fast program work. Don't worry about optimization during initial coding. Any time a component is produced on time and it works reliably, there is a cost for celebration. If the program works everyone on your team will appreciate it.
Inspect code:
Inspecting the detailed design & code is a much better way to find errors than testing. Inspecting can find as many as 82% of all errors, consumes about 15% of development resources and reduces the net development cost by 25%-30%.
Good management is more important than good technology:
The best technology will not compensate for poor management and a good manager can produce great results even with inadequate resources. Good management motivates people to do their best but there is no universal right style of management. Management styles must be adapted to the situation.
People are the key to access:
Highly skilled people with appropriate experience, talent and training are the key to success. The right people with insufficient tools, languages and process will succeed while the wrong people with appropriate tools, languages and process will probably fail.
Take responsibility:
If you develop a system then it is your responsibility to do it right. Take that responsibility. Do it right or don't do it at all.
Minimize the intellectual distance:
Intellectual distance is the distance between real world problem and the computerized solution to the problem. The smaller the intellectual distance, the easier it is to maintain the software. To minimize intellectual distance the software structure should be as close as possible to the real world structure.
Use different language for different for different phases:
Select a different set of technique and language that is best for the phase you are working with. The transition between the phases is difficult and using the same language doesn't help. On the other hand if a language is optimal for certain aspect of two phases then by all means use it.
Follow with care:
Just because everybody is doing something doesn't make it right for you. It may be right but you must carefully access its capability to your environment.
If all the above principles are followed then it will give you the right software with in time and budget and have all the characteristics like maintainability, reliability, etc.
Published by Harsh Gupta - Tech Writer
I am a part time freelancer and writing is my hobby Some of my websites: http://www.GenericArticles.com http://www.JailBreakingiPhone.com View profile
- Guide to Pursuing a Software Engineering Degree OnlineSome helpful information about pursuing software engineering degrees online.
- Software Engineering and Characteristics of Well Engineered SoftwareSoftware crisis leads to the term "Software Engineering." Software engineering is the branch of software that deals with development of well developed software that satisfies all the users.
- Guide to Software Engineering Courses OnlineYour guide to Software Engineering courses online.
Reverse Software EngineeringReverse software engineering is a complex enterprise requiring a deep understanding of modern software- Guide to Software Engineering Courses OnlineFrom software development to overseeing projects and promoting products, software engineering is a large field that has many options for taking courses and earning degrees online.
- Why You Should Take an Online Software Engineering Course
- How to Build Quality Software
- Stock Option Trading Millionaire Principles
- Software Engineering Courses Online: What You Need to Know
- Guide to Software Engineering Courses Online
- Software Engineering Fundamentals
- Pursuing a Degree in Software Engineering Online
- Take that responsibility. Do it right or don't do it at all.
- Highly skilled people with appropriate experience, talent and training are the key to success.

1 Comments
Post a CommentThe mostly-content free commentary actually subtracts from the value of this list of principles lifted from:
http://www.computer.org/portal/web/csdl/doi/10.1109/MS.1994.10057
"Highly skilled people with appropriate experience, talent and training are the key to success." Really? OK. And yet, "a good manager can produce great results even with inadequate resources". So, um, did you even read what you wrote?
p.s. it's "cause" for celebration, not "cost"