Software is the general term for information that’s recorded onto some kind of medium.
The major characteristics of software are as follows
1. Software is not manufactured or created, it is developed or engineered.
The other engineering discipline manufacture a product but same is not true with software engineering. This
being an intellectual process involves the brain to a maximum extent.
It is not manufactured in the classical sense. Although some similarities exist between software development and hardware manufacturing, yet the two activities are fundamentally different. We associate the term development with software rather than manufacture. Therefore one cannot manufacture software as it has to be developed or engineered.
2. Software does not wear out but deteriorates due to changes.
With the passage of time the software may become obsolete but does not wear out like any other mechanical product. The life of software is never predictable and changes in it are always bound to happen. Software is not susceptible to the environment maladies that cause hardware to wear out.
Software undergoes changes during its life. As changes are made, it is likely that errors will be introduced causing the failure and thus increased failure rate indicates the decoration of software as a result of change.
Another aspect of Software and Hardware differences caused by wear-out is that is, when a Hardware component wears out; it is replaced by a spare part. There are no software spare parts, Software maintenance involves considerably more complexity than Hardware maintenance.
3. Most Software continues to be custom built i.e. as per the requirements of User.
Although the industry is moving towards Component-based construction, most software continues to be custom built. Most of the time software is developed as per the requirement of the user and start from the search, rather than being assembled from existing components. In hardware industry the components parts are designed to be reusable and can be ordered off the shelf. These are called Standard Design Components. Component use is a natural part of the Hardware engineering process. However in the Software world, it has only begun to be achieved on a broad scale.
A Software component should be designed and implemented so that it can be “Reused” in many different programs. “Reusable Objects” or “Reusable Software Components” enable the Software Engineers to create new applications from reusable parts.
FEATURES OF SOFTWARE
The development of software must include the requirement for the development to be done in a cost effective way, to be constrained by limits on resource and schedule. The most common features of software are as follows;
- Software is never finished. The changing requirements and ease of modification permits the maintenance phase consists of on going design and implementation cycles.
- Software is easily modified. It is natural to use an iterative development process combining requirements elicitation with design and implementation and use the emerging implementation to uncover errors in design
and in the requirements.
- Software is communication. Communication with a machine but also communication between the client, the software architect, the software engineer, and the coder. Software must be readable in oprder to be revolvable.
- Software is flexible in nature. Software is an executable specification of a computation.
- Software is expressive. All computable functions may be expressed in software. Complex event driven systems may be expressed in software.
- Software is huge. An operating system may consist of millions of lines of code.
- Software is complex. Software has little regularity or recognizable components found in other complex
systems and there are exponentially many paths through the code and changes in one part of the code may have unintended consequences in other equally remote sections of the code.
- Software is expensive. Manufacturing cost is zero, development cost is everything. Thus, the first copy is
the engineering prototype, the production prototype and the finished product. It is generally very expensive product.
During the early years of computer generations, the need for a structured, person independent method for creating and maintaining software was not felt.
This was mainly due to the reason that the programs were typically written in machine and assembly language and involved very little logical complexity. The ‘programmers’ were electronics engineers who built the computers and did programming. Thus the engineers who wrote programs and fixed problems found during teh execution.
Essential Features of a good software
Good software is one which satisfies all the requirements of the user. Every good software carries some qualities or features which are not common in other software. Good software is that which should process the following characteristics:
- Good software processes high quality.
- By quality we mean the software is reliable and has minimum number of flaws in it.
- It should be user friendly.
- Ease in use and user friendliness is an important feature of any software.
- Quality should be fitness for the purpose.
- Software must be fit for intended job.
- It should be within the budget of the customer.
- The development cost should be well within the pocket of customer
- It should possess tolerance power.
It is generally expected that software respond to each and every type of input.