Changing nature of software

The 7 broad categories of computer software present continuing challenges for software engineers:

  • System software

  • Application software

  • Engineering/scientific

  • Software embedded

  • Software product-line

  • Software web-applications

  • Artificial intelligence software

System software

System software is a collection of programs written to service other programs. The systems software is characterized by heavy interaction with computer hardware, heavy usage by multiple users, concurrent operation that requires scheduling, resource sharing, and sophisticated process management, complex data structures, and multiple external interfaces.
E.g. compilers, editors and file management utilities.

Application software

Application software consists of standalone programs that solve a specific business need. It facilitates business operations or management/technical decision making. It is used to control business functions in real-time.
E.g. Point-of-sale transaction processing, real-time manufacturing process control.

Engineering/scientific software

Engineering and scientific applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, from molecular biology to automated manufacturing.
E.g. computer aided design, system simulation and other interactive applications.

Embedded software

Embedded software resides within a product or system and is used to implement and control features and functions for the end-user and for the system itself. It can perform limited and esoteric functions or provide significant function and control capability.
E.g. Digital functions in automobile, dashboard displays, braking systems etc.

Product-line software

Designed to provide a specific capability for use by many different customers, product-line software can focus on a limited and esoteric marketplace or address mass consumer markets.
E.g. Word processing, spreadsheets, computer graphics, multimedia, entertainment, database management, personal and business financial applications.

Web-applications

WebApps are evolving into sophisticated computing environments that not only provide standalone features, computing functions, and content to the end user, but also are integrated with corporate databases and business applications.

Artificial intelligence software

AI software makes use of nonnumeric algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Application within this area includes robotics, expert systems, pattern recognition, artificial neural networks, theorem proving, and game playing.

The following are the new challenges on the horizon

  • Ubiquitous computing

  • Net sourcing

  • Open source

  • The “new economy”

Ubiquitous computing

The challenge for software engineers will be to develop systems and application software that will allow small devices, personal computers and enterprise system to communicate across vast networks.

Net sourcing

The challenge for software engineers is to architect simple and sophisticated applications that provide benefit to targeted end-user market worldwide.

Open source

The challenge for software engineers is to build source that is self-descriptive but more importantly to develop techniques that will enable both customers and developers to know what changes have been made and how those changes manifest themselves within the software.

The “new economy”

The challenge for software engineers is to build applications that will facilitate mass communication and mass product distribution.

Legacy software

Legacy software can be defined as old software developed in the past. This software is still being used in the present era as it performs essential business activities. It may include procedures which are no longer relevant in the newer computing environment. As business requirements are dynamic, the legacy software system undergoes continuous modifications.

These modifications make the software adaptable to the new business requirements and to make it interoperable with the modern computing environments.

Though, legacy software systems are becoming problem-in large organizations because of their high maintenance, they are still being used in the organizations due to the difficulties and risks encountered while replacing these systems in the modern systems. Legacy systems support essential business activities and therefore they are considered as business-critical systems.

Types of changes made to legacy systems

Re-engineering must be carried out on legacy systems so as to make these systems capable of handling the modern business requirements. This can be done by making the following significant changes to the legacy systems,

Making the software adaptable

The software can meet the requirements of new computing environments, by making the software adaptable to the computing environment.

Enhancing the software

The characteristic features of software need to be enhanced so that the software can easily implement the new business requirements.

Extending the software

The software needs to be extended so that it can achieve the interoperability feature.

Redesigning the software

The software needs to be redesigned by making changes to the existing software so as to make the software operable within a network environment.

Reasons for legacy software evolution

Software evolution is an evolutionary process where software is continuously changed over its lifetime in response to changing requirements. This process is carried by ‘change’ and is performed when,

i) The errors identified are corrected.
ii) The software becomes adaptable to new computing environment.
iii) The application re-engineering is performed.

The following important laws are defined, so as to get a brief description about the unified theory for software evolution,

1. Continuing change law

The E-type system software that evolved over time must be continuously adapted so as to make them implement in real world computing environment. The system is capable of meeting the customers’ requirements and satisfying them to the maximum extent only if the system undergoes a continuous modification.

2. Increasing complexity law

During the evolution process of an E-type system software, the level of complexity increases when no measures are used for reducing or maintaining it.

3. Self regulation law

The process of evolving an E-type system is self-regulating with respect to the product distribution and process measures. Its value is approximately equal to the normal value.

4. Conservation of organizational stability law

The average activity rate is constant over the lifetime of a product when an E-type system is being evolved.

5. Conservation of familiarity law

When an E-type system is being evolved, it is necessary to ensure that all the members (i.e., developers, sales personnel, users) responsible for performing the system evolution must maintain the entire information about the evolution process. They should also track the behavior using which a satisfactory evolution is achieved.

6. Continuing growth law

The functionality of an E-type system must increase continuously over the lifetime of the system in response to the customer’s requirements.

7. Declining quality law

The quality of an E-type system will be degraded if the software system doesn’t undergo continuous modification. Due to this, the system fails to meet the requirements of new computing environments.

8. Feedback system law

The evolution process of an E-type system comprises of feedback systems with multilevel, multiloop, multi-agent feature. It is necessary to have such feedback systems for improving the performance of the software