Attributes of a well-engineered software


  • The attributes or properties of a software product are characteristics   displayed by the product once it is installed or put into use.

  • These are not the services provided by the product.  Rather, they are concerned with the product’s dynamic behaviour and the use made of the product.

  • Examples of these attributes are efficiency, usability, maintainability, reliability, portability and so on.

  • Optimizing all of the attributes is difficult as some are restricted.  For example, the relationship between cost and improvements in each of these attributes is not linear.  Small improvements in any of the attributes can be expensive.

  • For some kind of systems, efficiency is a prime consideration.  The software may have to run on a computer where weight and size considerations limit the power of the hardware which can be used.  It may have to run in a relatively small memory  with no associated disks.  It may be necessary to optimize efficiency at the expense of the other systems attributes.

  • Almost all software, irrespective of application domain, must have these characteristics.




1.      Maintainability

  ·         It should be possible to evolve software to meet the changing needs of customers.

·         Software maintainability is defined as the ease of finding and correcting errors in the software. While there is as yet no way to directly measure or predict software     maintainability, there is a significant body of knowledge about software attributes that make software easier to maintain. These include modularity, self (internal) documentation, code readability, and structured coding techniques. These same attributes also improve sustainability (the ability to make improvements to the software).

 2.      Dependability

  ·         Software Dependability includes a range of characteristics including reliability, security and safety.

·          Dependable software should not cause physical or economic damage in the event of system failure.

·         It is often defined as the extent to which a program can be expected to perform intended functions which required precision over a given period of time.

·         It is also concerned with the detection and correction of errors in the software; even more, it is concerned with techniques to compensate for unknown software errors and for problems in the hardware and data environments in which the software must operate.

 3.      Efficiency 

·         Software should not make wasteful use of system resources such as memory and processor cycles.

·         Efficiency is the extent to which software uses minimum hardware resources to perform its functions. There are   many other software qualities. Some of them will not be important to a specific software system, thus no     activities will be performed to assess or improve them.  Maximizing some qualities may cause others to be decreased. For example, increasing the efficiency of a piece of software may require writing parts of it in assembly language. This will decrease the transportability and maintainability of the software.

 4.      Usability 

·         This is the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.

·         Software should have an appropriate user interface and adequate documentation.

·         Although developers would like to know what attributes to incorporate in the code to reduce the effort required for use, it is usually impossible to know how users will respond until they have actually experienced use of a prototype system.

·         4 characteristics can be considered usable: Quick and easy to learn; Efficient to use; Allows rapid recovery from errors; Easy to remember. 

5.      Portability 

·         Transportability is defined as the ease of transporting a given set of software to a new hardware and/or operating system environment. 

6.      Availability of Documentation 

·         Properly produced and maintained system documentation is a tremendous aid to maintenance engineers.

·         System documentation includes all of the documents describing the implementation of the system from the requirements specification to the final acceptance test plan.



Make a Free Website with Yola.