Principles of Software Engineering

Harsh Gupta - Tech Writer
Software engineering is the application of science and mathematics by which the capabilities of computer equipments are made useful to man via computer procedure and documentation. Software engineering is the branch of engineering which is used to develop the software in such a manner that it satisfies all the user's requirements and is submitted within budget and time and have the characteristics like maintenance, reliability, efficiency, and adaptability.

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

  • 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.
Intellectual distance is the distance between real world problem and the computerized solution to the problem.

1 Comments

Post a Comment
  • angrykitten12/24/2010

    The 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"

To comment, please sign in to your Yahoo! account, or sign up for a new account.