Software is a computer program that must meet all the requirements of the customer or end-user. This is intangible.
For example: Microsoft office suite
Different types of Software
- System Software - collection of programs written to service other programs. Developed by a computer manufacturer.
- Real-time Software - which monitors real world events. Then and there processes.
- Business Software - Information processing through the largest single software application.
- Personal Computer Software- There should be an expert to develop that software. For example : Games expert software
When considering attributes of software that could be made between internal and external qualities.
External Attributes
Those are features of the software that are externally visible. Also, it can be measured directly when late in the development process.
- Maintainability- This is a critical attribute. It should be written in a way that it can be easily used to meet changing needs of the customer. Also maintenance should be easy.
- Dependability - This should be trustworthy (can we trust the software), reliable, safe and secured ( are we secured when using software). Use of the software should not harm the customer. Dependable software should not cause physical or economical damage to the customer.
- Efficiency- Should be efficient in every way. Also it should not be wasteful of system resources. For example : memory, processing cycle. In addition, memory utilization should be minimum and also processing time is a consideration.
- Acceptability - It must be acceptable to the group of users for which it's designed for. Also it should be understandable, reliable and compatible with other systems they use.
- Correctness- It should meet all the specifications that stated by the customer.
- Reliability - can measure by mean time to failure of the software. Also should not have any defects.
Also, external attributes can be divided into two parts. They are important customer-oriented (such as efficiency, reliability, and usability) and important developer-oriented ( such as maintainability).
Internal Attributes
This can be measured in terms of the product itself.
- Reusability - If able to use the software code with some modifications for different purposes.
- Interoperability- Ability of software to exchange information with other applications.
- Portability- Ability to perform the same function across all environments and platforms, demonstrating its portability.Such as various Java environments.
- Testability - this is relevant to the amount of time and effort needed for testing the software. Also this should be easy.
- Understandability- it should have the ability to understand any level of customer.
- Flexibility - changes in the software should be easy.
Software with a high level of internal attributes makes it easy to change, add new features, and test.
The quality of the software is everything.