The Software Products, Characteristics and Applications of Software
Software Products:-
{tocify} $title= {Table
of Contents}
We all know of a variety of software such as Microsoft’s Windows Operating System and Office suite, and Oracle Corporation’s 8i database management software. These software are available off-the-shelf for purchase and are used by a diverse range of customers. These are called generic software products since many users essentially use the same software. These can be purchased off-the –shelf by the customers. When a software development company wishes to develop a generic product, it first determines the features or functionalities that would be useful to a large cross section of users. Based on these, the development team draws up the product specification on its own. Of course, it may base its design discretion on feedbacks collected from a large number of users. Typically, each software product is targeted to some market slightly different market segments based on variations of essentially the same software. For example, Microsoft targets desktops and laptops through its Windows 8 operating system, while it targets high-end mobile handsets through its Windows mobile operating system.
In contrast to the generic products, domain specific software products are sold to specific categories of customers and are said to said to have a vertical market. Domain specific software products target specific segments of customers (called verticals) such as banking, telecommunication, finance and accounts and medical. Example of domain specific software products are BANCS from TCS and FINACLE from Infosys in the banking domain and AspenPlus from Aspen corporation in the chemical process simulation.
Programs versus Products
Many toy software are being developed by individuals such as students for their classroom assignments and hobbyists for their personal use. These are usually small in size and support limited functionalities. Further, the author of a program is usually the sole user of the software and himself maintains the code. These toy software therefore usually lack good user- interface and proper documentation. Besides these may have poor maintainability, efficiency, and the reliability. Since these toy software do not have any supporting documents such as users’ manual, maintenance manual, design document, test documents etc., we call these toy software as programs.
In contrast, professional software usually have multiple users and, therefore, have good user- interface, proper users’ manuals, and good documentation support. Since, a software product has a large number of users, it is systematically designed, carefully implemented, and thoroughly tested. In addition, professionally written software usually consists not only of the program code but also of all associated documents such as requirements specification document, design document, test document, user’s manuals, etc. A further difference is that professional software are often too large and complex to be developed by any single individual. It is usually developed by a group of developers working in a team. A professional software is developed by a group of software developers working together in a team. It is therefore necessary for them to use some systematic development methodology. Otherwise, they would find it very difficult to interface and understand each other’s work, and produce a coherent set of documents.
The Characteristics of Software
The following are the important characteristics of software:
- The development of software cannot be compared with the manufacture of other physical goods. It is developed or engineered. There is a fundamental difference between software development and hardware manufacture. The approach is different in both the cases. Quality is important in both the cases but the relationship between number of people employed and work accomplished is entirely different.
- There is no wear and tear associated with software because it is not susceptible to the environmental effects. In case of hardware, most of the manufacturing defects are visible as it is put in use. However, in case of software, some defects remain undetected even after repeated use. If the same type of data is used each time, the defect in the software may not be visible but on changing the data pattern some undiscovered defects may crop up i.e., the output generated may be undesirable. Understood defects will cause high failure rates early in the life of a program. When a hardware components wear out, then it is replaced with spare parts. In case of software, there are no spare parts. A defect in the output indicates the wrong design of the programs. Hence to rectify the defect, the design should be altered.
- In case of hardware components, there is a well set of standard parts and components, which make it easy for the engineer to concentrate only on innovative elements or components of design. With software, the components can be designed and implemented in a number of different programs. For instance, the scientific subroutine libraries can be used in a number of different engineering and scientific applications. In addition, data structures can be used in a number of different applications. For instance, the graphical user interface are developed using reusable components that facilitate the creation of graphical windows, pull- down menus and a wide variety of interaction mechanism.
Some other Characteristics of good software are:
A
software product can be judged by what it offers and how well it can be used.
This software must satisfy on the following grounds:
- Operational
- Transitional
- Maintenance
Well-engineered
and crafted software is expected to have the following characteristics:
Operational
This
tells us how well software works in operations. It can be measured on:
- Budget
- Usability
- Efficiency
- Correctness
- Functionality
- Dependability
- Security
- Safety
Transitional
This
aspect is important when the software is moved from one platform to another:
- Portability
- Interoperability
- Reusability
- Adaptability
Maintenance
This
aspect briefs about how well software has the capabilities to maintain itself
in the ever-changing environment:
- Modularity
- Maintainability
- Flexibility
- Scalability
In
short, Software engineering is a branch of computer science, which uses
well-defined engineering concepts required to produce efficient, durable,
scalable, in-budget and on-time software products.