Software engineering faces several dilemmas. It has comprehensive goals, but limited tools. It demands broad perspectives, but depends on narrowly focused practitioners. It places a high premium on quality, but often has insufficient inputs to its problem-solving process. As a field, software engineering has yet to define theories and frameworks that adequately combine the disciplines of software and hardware technology with related business and social science disciplines to attack real-world problems optimally.
Despite advances, software engineering tends to remain code driven and is burdened in testing for bugs, program errors, and verification, even though reusable objects, reusable applications, and CASE tools have long been available. The engineering of software entails inviting software technology to help tackle human problems rather than just shoehorning human problems into a software solution. This requires reordering the relation between people and computers; computer programs are understood to play an important but limited role in problem-solving strategy. Such an approach to software engineering would still be software driven in the sense that it was driven by the need to develop software for automated as opposed to manual problem solving; however, it would view problems and evaluate solutions from a broadly interdisciplinary perspective in which software was understood and used as a tool.
Requirements engineering is supposed to address the problem part of software engineering, but it is part of the traditional view that looks at the problem-solving process as a phase in the software development life cycle, rather than at the software development life-cycle as part of the problem-solving process. The software development life cycle never ends with a solution, but only with a software product. Although one may assume that a software product should be the solution, in practice this never happens because software systems are only part of a total organizational context or human system; one cannot guarantee that these solutions are effective independently of their context.
Implications of the New Business Model
The following consequences result when one refocuses from engineering software for the sake of the technological environment to engineering software for people’s sake:
- Solutions will evolve only from carefully understood problems. The resulting solutions will be guided by their originating problems and considered successful only if they are able to solve those problems. The solution is never solely the software product, but everything needed to solve the problem.
- Problems will not be defined in terms of what the people want the software to do for them. Problem definition will address the relevant human needs regardless of the role of the software in meeting those needs. Subsequent to an interdisciplinary definition of the problem, an interdisciplinary solution will be proposed that will utilize the available, relevant human, financial, informational, technological, and software resources.
- The iterative software development process will become part of the synchronized business process and will in turn deliver business process total solutions. Thus, the business process will shape the software process in terms of its goals, metrics, and requirements.