The Need for Customer-Oriented Software Development (Part II)
02/06/2005
By Dr. Sofia Passova, Chief Scientist & Technology Officer, Sofea, Inc.
Customer Oriented Software Development (COSD) describes a new software development paradigm which fundamentally changes the entire software development process, altogether eliminating the core software problems discussed in this paper.
What makes COSD fundamentally different? COSD shifts the focus to supporting and improving the process of "ideation" (the forming of ideas) and the transformation of idea to reality.
3.1 Theoretical and Practical Foundation
Theoretical and Practical Foundation
One should first consider the software development process philosophically. What is it?
Fundamentally, it is a process of transforming elements of the ideal world into elements of the material world, with human participation. It is the transformation of ideas into a finished product.
Today, this "Idea to Product Transformation Process" consists of 3 main stages:
1. Stage I: Idea > Requirements (Ideation Stage);
2. Stage II: Requirements > Design (Design Stage); and
3. Stage III: Design > Final Product (Coding Stage).
It is essential to analyze these stages in some depth.
3.1.1. Stage 1 Idea < Requirements
This stage is the most important, because at this stage the first embodiment of the idea emerges in the material world.
3.1.1.1 Business Analysis and Requirements
Originally, in the beginning of the programming era, programmers themselves could understand, create and implement ideas. This was possible because the first programming tasks were usually expressed mathematically and therefore had formal representation.
Later, as result of the continued development of our technological civilization, more and more complex ideas and idea systems needed to be transformed into software. A growing problem for software development inevitably emerged: how can one communicate complex ideas properly and what sort of specialist can understand and translate such communication?
For example, if a customer needs to create software for a complex business system, how does one effectively explain to programmers the essential business needs, concepts and processes being addressed? The conceptual worlds of business people and programmers are very different. One side is a "world of ROI" and the other side is a "world of statements and loops". The communication gulf is understandably enormous.