Improving software economics

The most significant way to improve affordability and return on investment (ROI) is usually to produce a product that achieves the design goals with the minimum amount of human-generated source material. Component-based development is introduced here as the general term for reducing the "source" language size necessary to achieve a software solution. Reuse, object-oriented technology, automatic code production, and higher order programming languages are all focused on achieving a given system with fewer lines of human-specified source directives (statements). This size reduction is the primary motivation behind improvements in higher order languages (such as C++, Ada 95, Java, Visual Basic, and fourth-generation languages), automatic code generators (CASE tools, visual modeling tools, GUI builders), reuse of commercial components (operating systems, windowing environments, database management systems, middleware, networks), and object-oriented technologies (Unified Modeling Language, visual modeling tools, architecture frameworks).
One caveat is warranted when discussing a reduction in product size. On the surface, this recommendation stems from a simple observation: Code that isn't there doesn't need to be developed and can't break. But this is not entirely the case. The reduction is defined in terms of human-generated source material. In general, when size-reducing technologies are used, they reduce the number of human-generated source lines. However, all of them tend to increase the amount of computer-process-able executable code. So the first part of the observation is true, but the second part is not necessarily true. The bottom line, as experienced by many project teams, is that mature and reliable size reduction technologies are extremely powerful at producing economic benefits. Immature size reduction technologies may reduce the development size but require so much more investment in achieving the necessary levels of quality and performance that they have a negative impact on overall project performance.

3.1.1 Languages

Universal function points (UFPs) are useful estimators for language-independent, early life-cycle estimates. The basic units of function points are external user inputs, external outputs, internal logical data groups, external data interfaces, and external inquiries. SLOC metrics are useful estimators for software after a candidate solution is formulated and an implementation language is known. Substantial data have been documented relating SLOC to function points [Jones, 1995]. Some of these results are shown in Table 3-2.
The data in the table illustrate why people are interested in modern languages such as C++, Ada 95, Java, and Visual Basic: The level of expressibility is very attractive. However, care must be taken in applying these data because of numerous possible
.Improving Software Economics Five basic parameters of the software cost model are 
1.Reducing the size or complexity of what needs to be developed.
 2. Improving the development process.
 3. Using more-skilled personnel and better teams (not necessarily the same thing).
 4. Using better environments (tools to automate the process).
 5. Trading off or backing off on quality thresholds.
 REDUCING SOFTWARE PRODUCT SIZE 
The most significant way to improve affordability and return on investment (ROI) is usually to produce a product that achieves the design goals with the minimum amount of human-generated source material. Component-based development is introduced as the general term for reducing the "source" language size to achieve a software solution. Reuse, object-oriented technology, automatic code production, and higher order programming languages are all focused on achieving a given system with fewer lines of human-specified source directives (statements). size reduction is the primary motivation behind improvements in higher order languages (such as C++, Ada 95, Java, Visual Basic), automatic code generators (CASE tools, visual modeling tools, GUI builders), reuse of commercial components (operating systems, windowing environments, database management systems, middleware, networks), and object-oriented technologies (Unified Modeling Language, visual modeling tools, architecture frameworks). The reduction is defined in terms of human-generated source material. In general, when size-reducing technologies are used, they reduce the number of human-generated source lines.
 OBJECT-ORIENTED METHODS AND VISUAL MODELING 
Object-oriented technology is not germane to most of the software management topics discussed here, and books on object-oriented technology abound. Object-oriented programming languages appear to benefit both software productivity and software quality. The fundamental impact of object-oriented technology is in reducing the overall size of what needs to be developed. People like drawing pictures to explain something to others or to themselves. When they do it for software system design, they call these pictures diagrams or diagrammatic models and the very notation for them a modeling language. These are interesting examples of the interrelationships among the dimensions of improving software economics. 
1. An object-oriented model of the problem and its solution encourages a common vocabulary between the end-users of a system and its developers, thus creating a shared understanding of the problem being solved. 
2. The use of continuous integration creates opportunities to recognize risk early and make incremental corrections without destabilizing the entire development effort. 
3. An object-oriented architecture provides a clear separation of concerns among disparate elements of a system, creating firewalls that prevent a change in one part of the system from rending the fabric of the entire architecture. Booch also summarized five characteristics of a successful object-oriented project. 
1. A ruthless focus on the development of a system that provides a well-understood collection of essential minimal characteristics.
 2. The existence of a culture that is centered on results, encourages communication, and yet is not afraid to fail.
 3. The effective use of object-oriented modeling. 
4. The existence of a strong architectural vision. 
5. The application of a well-managed iterative and incremental development life cycle.
 REUSE
Reusing existing components and building reusable components have been natural software engineering activities since the earliest improvements in programming languages. With reuse in order to minimize development costs while achieving all the other required attributes of performance, feature set, and quality. Try to treat reuse as a mundane part of achieving a return on investment. Most truly reusable components of value are transitioned to commercial products supported by 

Comments

Popular posts from this blog

Evolution of economics