- Introduction to Software Engineering
- The Evolving Role Of Software
- Changing Nature Of Software
- Software Myths
- A Generic View of Process
- Software Engineering- A Layered Technology
- A Process Framework
- The capability maturity model integration (CMMI)
- Process Patterns
- Process Assessment
- Personal And Team Process Models
- Process Models
- The Waterfall Model
- Incremental Process Models
- Evolutionary Process Models
- The Unified Process Model
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