Evolution of Software Economics
Software Economics in Software Engineering is mature research area that generally deals with most difficult and challenging problems and issues of valuing software and determining or estimation costs usually involved in its production. Boehm and Sullivan outline these difficulties and challenges and also presented how software economics principles can be applied to improve software design, development, and evolution.
Software economics is basically situated at intersection of information economics and even software design and engineering. Most of software cost models are generally abstracted into function of five basic parameters. These parameters are given below :
- Size –
Size is generally measured or qualified in term of number of source instructions or in SLOC (Source line of code) or number of function points required to realize desired capabilities. The size of end product or result is required to develop or create required functionality.
- Process –
The process is steps that are used to guide all of activities and produce end products, in particular ability and capability of process to avoid or ignore activities that are not adding any value. It also supports heading towards the target or goal and eliminate activities that are not essential or important.
- Personnel –
The capabilities of personnel of software engineering in general, and particularly their experience with issues or problems regarding computer science and issues regarding application domain of project. It emphasizes on team and responsibilities of team.
- Environment –
It is simply made of various tools and techniques and automated procedures that are available and used to support software development and effort in an efficient way.
- Quality –
The required quality along with its features, performance, reliability, scalability, portability, usability, user interface utility, adaptability, and many more.
Between these parameters, relationship and estimated cost can be written in following way :
Effort = (Personnel) (Environment) (Quality) (Size Process)
Generations of Software Development –
There are three generations of software development as described below :
- Conventional Development (1960s and 1970s) –
During this generation, organizations used various custom tools, custom processes, and all components of custom that are built or developed in primitive languages. The size is 100 % custom. At this generation, conventional development is generally considered bad. It is because it was always costly and over budget and schedule. It also does not fulfill requirements that are necessary such as some components, symbolic languages, other languages like Fortran, PL/1, etc. The quality of performance was always poor and less than great.
- Transition (1980s and 1990s) –
During this generation, organizations used various repeatable processes and off-the-shelf tools, and more likely to use custom components) that are generally developed in high-level languages. The size is 30 % component-based and 70 % custom. It is not predictable to decide whether it is bad or good. Transition development is infrequently on budget and schedule. Some of commercial components were simply available such as databases, networking along with operating system, database management system, and graphical user interface. But due to an increase in complexity, all languages and technologies available were not enough for desired business performance.
- Modern (2000 and later) –
Modern development processes are generally measured and managed, integrated automated environments, 70% off-the-shelf components. The size is 70 % component-based and 30 %custom. Modern development is usually in budget and in schedule.
Improved “process” requires “tools” that are improved. The improved process requires environmental support. Various technologies other for environment automation, size reduction, and process improvement are not independent of each other. In the new era, main key is only complementary growth in all these technologies.
Attention reader! Don’t stop learning now. Get hold of all the important CS Theory concepts for SDE interviews with the CS Theory Course at a student-friendly price and become industry ready.