Software Engineering is the science of engineering to the design, development and maintenance of software systems. And these software systems undergo a complete life cycle of initiation, development, implementation, maintenance and retirement before being replaced by a better software subsystem. This paper primarily deals with the vital role of software process management that identifies and examines the development models which are also known as software development life cycle namely Waterfall, Iteration, V-Shape and Spiral and then conceptualize a better software process model. These software development life cycles provide a conceptual way of managing the development of software systems. A new better and efficient software process model is being presented in the paper which uses the concept of reusability of software components and will show effect of the same in project scheduling, staffing and project size by using the renowned COCOMO model. Also, there is a comparative analysis between all models along with the proposed model showing how the drawbacks of the models are covered up by the proposed model.
Software Engineering in today’s scenario has become utterly important as it has been used in all the domains namely medicine, industry, commerce, education and also in agriculture. Software engineering is responsible for building up software systems which are being developed from a tool used for analyzing information or solving a problem which is a product in itself [4-6]. Software engineering is constantly moving up and reaching great heights from past two decades, various software development models have come out to match the multidimensional demands of the software industry. Software process management plays a keen role in conceptualizing the managerial role in the development of the software systems with the help of software development life cycles. These cycles lay out a rational flow of initiation, development, implementation, maintenance and retirement of the software systems. These cycles are also responsible for the specification, design, evolution and validation of the software systems [9].
Software systems need to be upgraded or changed from one generation to other and so does the software development models to get better of the fast growing changing environment in the market. So, software engineering as a whole can be reduced to developing new and better systems on one hand and maintenance of existing systems on the other hand. The ultimate aim is to produce and make software systems efficient with minimal cost and labor [7, 10]. In developing the new software, the high-level requirement is to predict and describe the correct abstractions which are later being implemented in the form of software systems. Whereas during maintenance, the problem is to correct the abstractions and put those abstractions into their right form [8].
The paper is dedicated to implementing reusability in the software systems and developing a new reusability enabled software development model, which encourages the use of correct and trusted software components that can be utilized in the software development.
This paper tries to answer the following questions: What are the shortcomings in the current software development models? How the new model is better than the previous models? What are the effects of implementing these components in the software development cost and labor used? How the components software mentioned above will be implemented in the software systems?
Software process models present an abstract description of specification, design, validation and evolution of the software systems. They merely provide a conceptual way of managing the development and rationalizing the process. General software process models are as under,
The waterfall model is one of the oldest software process models. This is the most widely used model mainly used in government projects and in many major companies. This model gives main emphasis on the documentation of the project, early planning of the project is done, flaws are to be figured out before the development of the project. The model begins with the establishment of the system and software requirements and continues with design, implementation, coding, testing and maintenance. This model serves as a baseline for other software process models. Figure 1 shows the basic diagram of the Waterfall Software Process Model [12-15].
Figure 1. Waterfall Model [3]
There are many characteristics of Waterfall Model and some of them are listed below:
V-Shape software model is just like the waterfall model as it follows the sequential execution of processes. Each phase in this model is to be completed before the previous phase. This model mainly focuses on the testing of the software system. Test cases and procedures are made before the actual building of the software system. Similar to the waterfall model, this model starts from the software and system requirement phase. This model is basically divided into two parts, Analysis and Design and Test and Integration. In the Analysis and design, requirement gathering, designing and coding is done, whereas in Test and Integration, all the testing is being carried out. Figure 2 shows the detailed diagram of the VShape Software Process Model.
Figure 2. V-Shape Model [3]
V-Shaped model is devoted to the testing of the projects. And among many of its features, few are listed below:
Spiral software process model gives main emphasis on risk analysis of the software systems. The model is divided into 4 main phases planning, risk analysis, development or engineering and evaluation or next phase planning. In the planning phase all the requirements are gathered. In the risk analysis phase, a process is undertaken to identify the risks and alternate solutions. In the development of engineering phase, the project or the prototype is being made. And lastly in the evaluation and next phase planning, the customer reviews the prototype. Figure 3 shows the detailed diagram of Spiral Software Process Model.
Figure 3. Spiral Model [1]
Some of the characteristics of Spiral Model:
Agile development model is a recent software process model. It ensures that quality software is made with less development time. This is the only software model which enables customization of plan but not much. Customer interaction is high in agile development model. But there is one limitation in agile development model about its inability of reusing the software components. Figure 4 shows the detailed diagram of Agile Software Development Model.
Figure 4. Agile Development Model [18]
Some of the characteristics of Agile Development Model:
COCOMO (Cost Constructive Model) is a software cost and efforts estimation model. Different phases of COCOMO model are based on the phases of waterfall model. COCOMO model provides effort estimation for development of life cycle phase such as software design, programming and integration and test [16, 17].
COCOMO model has 3 versions: Basic, Intermediate and Detailed. Here we will be referring to Intermediate only, because it is mostly used in the software development process and also the intermediate version includes 15 cost drivers to account for the cost estimation. Intermediate is also further divided into 3 types of software development type according to the project sizes and other features of the project namely Organic, Semi- Detached and Embedded.
Table 1 shows the Formulas used for estimating cost, staff requirement, and project time duration in COCOMO model:
Productivity = KLOC/Effort
Avg. Staffing = Effort/ Schedule
PM: Person Month
KLOC: Line of Code (In thousand)
TD: Time Duration
This can be seen in the example shown:
Lines of Code = 200,000
Effort: PM= 2.4(200)1.05 = 626 PM
Productivity: 200,000/626 PM = 320 KLOC/PM
Time Duration: TD = 2.5(626)0.38 = 29 Months
Avg. Staffing: 626/29 = 22 FSP (Full Time Staff)
The example uses 2 lakh lines of code, to find out the effort, productivity, time duration and avg. staffing for the project.
Table 1. COCOMO Model Estimation Formulas [16]
There is no software process model present as such which involves the concept of reusability in it. But no matter any software process model the authors choose, they always apply reusability in it, whether in form of completely reusing the code from the previous or from other software or taking the code from other software and changing it according to the need of current software. Thus, it affects the overall planning of the software. The cost, staff and time duration, all the data which comes out using any method of determining is not accurate and reliable.
All the software process models present analyses of the complete software as a whole, not component wise, leaving no scope of customization if any component wishes to do so [11]. There should be separate planning of all the components taken one at a time, such that if a software wants to reuse some components from their previous projects, it can do so or if they want to customize the component which leads to the betterment of the software, they can do so.
The main objective of the paper is to design a software process model which also accounts the concept of reusability of software components or of software codes.
The main features of the proposed software process model are:
Considering the above features, the new WAVY MODEL for software process model enabling reusability of software components and component wise building up software is shown below:
The project should be divided into N modules/ components. Here the project is divided into 4 components.
New Components: Component I, Component II and Component IV
Reused Component: Component III
Figure 5 shows an abstract diagram of the Wavy Software Process Model. The components with high magnitude are represented for new software components to be developed, whereas the components with less magnitude are represented for reused software components. Similarly the whole project is divided into two class new software components and reused software components.
Figure 5. Wavy Software Process Model
Figure 6 is for software components which will be reused in the project. And considering the same, the cycle of the component will be changed accordingly.
Figure 6. Wavy Software Process Model (Reusing Software Component)
Figure 7 shows the lifecycle of the new software component to be developed. For a new software component, all the steps will remain same as for traditional process model, but Wavy Model adds a part of customization to it.
Figure 7. Wavy Software Process Model (New Software Component)
Software Reusability is a very important aspect to be considered. It is very important to check and verify the reliability and accuracy of the software component, because if we do not check the software we are reusing, then it might be possible that the whole software crashes in between. And the amount we are saving much more than that is again required for rebuilding the software.
Software needs to be broken into modules or components before applying this software process model. Enabling software modularity, customization during the development cycle becomes very easy and other parts are not affected with it and also with the same, the development of the components becomes very convenient.
Basic formulas for determining effort, productivity, time duration and staff requirements as given in COCOMO model are mentioned below [16]:
Person Month= 2.4(KLOC)1.05
Time Duration= 2.5(PM)0.38
Productivity = KLOC/Effort
Avg. Staffing = Effort/ Schedule
Let's derive the results with the help of COCOMO model for an organic software system (other software process models):
Lines of Code = 128,000
Effort: PM= 2.4(128)1.05 = 392 PM
Productivity: 128,000/392 PM = 372 KLOC/PM
Time Duration: TD = 2.5(392)0.38 = 24 Months
Avg. Staffing: 392/24 = 16 FSP (Full Time Staff)
Results with the help of COCOMO model for an organic software system (Wavy Software Process Model)
Line of Code = 128,000
Reusable Line of Code= 40,000
Net Line of Code = 88,000
Effort: PM= 2.4(88)1.05 = 264 PM
Productivity: 88,000/264 PM = 333 KLOC/PM
Time Duration: TD = 2.5(264)0.38 = 20 Months
Avg. Staffing: 264/20 = 13 FSP (Full Time Staff)
It is seen from the above results that Waterfall Model takes 24 months and 16 persons to complete the development of a software system, where as Wavy Model takes only 20 months and 13 person to complete the same task.
The bar- graph represents how the reusability effects the time duration of the whole project, which is not taken into account in any software process model.
Comparing the time taken by different software process models in the development of a software system, it can be seen in Figure 8 that Wavy Software Process Model takes the least time. And it is also seen above that Wavy Model is highly cost efficient.
Figure 8. Comparison between models on Time Duration
Comparison on the basis of features present in the models:
Table 2 compares different models on different features that are must in every software process model namely customization, modularity, component reusability, risk analysis, intense testing and customer involvement. And it can be seen in the table that in Wavy Model all the features are present whereas other model lacks one or more.
Table 2. Comparison Between Different Models
In the last decade, the authors observed the tremendous evolution of software systems and corresponding software process models they account for the relationship between software products and production process. The software process models we are using were developed in th the 20 century. Therefore, new software process models are required which considers the multidimensional demands of the present, and plans an effective cost and effort efficient software process models. Wavy software process model is designed considering the demands and urgency of people with a cost effective estimation of the software system. This model basically uses two things: reusability and modularity/component wise distribution of software systems, which is built of the limitations of the traditional software process models.
Some topics suggested for future scope of work: