This paper concentrates on the primary theme of Factors Affecting the Choice of Software Life Cycle Models in the Software Industry-An Empirical Study in which you have to explain and evaluate its intricate aspects in detail. In addition to this, this paper has been reviewed and purchased by most of the students hence; it has been rated 4.8 points on the scale of 5 points. Besides, the price of this paper starts from £ 40. For more details and full access to the paper, please refer to the site.
Factors Affecting the Choice of Software Life Cycle Models in the Software Industry-An Empirical Study
1Rupa Mahanti, 2M.S. Neogi and 3Vandana Bhattacherjee
1Department of Computer Consultancy, Tata Consultancy Services, USA
2Department of I and M, Xavier Institute of Social Service Ranchi, India
3Department of CSE, Birla Institute of Technology, Ranchi, India
Abstract: Problem statement: The aim of this study was to present the results of the survey conducted with software professionals in a few Indian software companies. Approach: The study initially presents an overview of the common software life cycle models used in the software development. Results and Conclusion: The survey results revealed that the level of understanding of the user requirements is the most important fact in the choice of the life cycle model used in the software project. Project Complexity is the second most important factor. Man-machine Interaction is the least important factor in the choice of the life cycle model used in the software project. This study will be valuable for developers, analysts and project leaders in software organizations. This study was carried out with some boundaries like the number of companies, available resources, time constraints and so on.
Key words: Incremental model, cycle process, important factor, agile methodologies, software project, employee strength, software development, software life cycle models
INTRODUCTION
Large software systems, developed over several years, are the backbone of industries such as banking, retail, transportation, defense, healthcare and telecommunications. In other words, software has become an integral part of our life.
Developing software, which is within cost and time
schedule, fulfils customer requirements and is reliable, seems to be the ultimate challenge for today’s software professionals and calls for a systematic approach to software development. Once upon a time, software development consisted of a programmer writing code to solve a problem or automate a procedure. In those days, whenever a developer was tasked to perform programming or coding, he immediately would jump to it, start programming with or without full knowledge of what the system would look like, how the features were arranged. This was feasible because systems were very simple. However, nowadays, systems are so big and complex that teams of architects, analysts, programmers, testers and users must work together to create the millions of lines of custom-written code that drive our enterprises. In the absence of a proper software development plan, the developer is full of ideas, he/she wants to implement them all, but tends to forget about them because other features need to be prioritized. To manage this, a number of System Development Life Cycle (SDLC) models have been created. The advantage of adhering to a life cycle
model is that it follows a systematic and discipline manner. It saves time, features of the system are well documented and above all, there is proper management and execution of plans. Without a life cycle model in place, the probability of chaos and project failure would have been very high (Russell,
2002; Ghezzi et al., 2002).
A lot of research has been reported on the evolution of software life cycle models. Agile methodologies are emerging and gaining popularity in industry (Manhart and Schneider, 2004; Cockburn and Highsmith, 2001; Coram and Bohner, 2005; Huo et al., 2004; Boehm,
2002; Highsmith, 2002, Kadary et al., 1989; Konito et
al., 2004). Research has been reported regarding the suitability of different life cycle models and comparison of different software life cycle models (Davis et al.,
1988). Some research has been reported on the
relationship between project categories and life cycle models (Archibald and Vladmir, 2003; 2004; Archibald et al., 2003; Archibald, 2004b; Desaulniers et al.,
2001). However, no empirical study has been reported regarding the importance of the factors affecting the choice of software life cycle models in the software industry. This study begins with an overview of the common software life cycle models used in the software development. This is followed by the research methodology. A survey was conducted in the Indian software organizations to study the factors affecting the
Corresponding Author: Rupa Mahanti, Computer Consultancy, Tata Consultancy Services, USA
choice of software life cycle models in the Indian software industry. This is followed by the presentation of the results the survey.
However, there is no universal life cycle model,
which is considered adequate in all situations in the development environment . Plan driven approaches like the waterfall model assume that requirements are static. Other iterative methods like spiral model and evolutionary model count on change. Agile methodologies consider software development as an empirical process and that
people play the most important role in it. It has also been
observed that agile practices do not compromise the quality of software products (Huo et al., 2004). A detailed description of traditional and agile methodologies can be found in literature (Brooks, 1995; McConnell, 1996; Szyperski, 1998; Pressman, 2004; Ghezzi et al., 2002; Jalote, 2005; Beck, 2000; Cockburn, 2001; Jeffries et al.,
2000; Martin, 1991; Salo, 2004; Siponen et al., 2005; Scacchi, 2002; Neogi et al., 2007).
Overview of software life cycle models: The fundamental principle of software engineering is to design software products that minimize the intellectual distance between the problem and solution. Today methodical approaches to software design have evolved and design notations have proliferated. Many steps are involved in the successful development and deployment of computer software. Taken together, all these steps are referred to as the software life cycle.
From the IEEE Standard Glossary of Software Engineering Terminology, 1983, software life cycle is defined as follows.
‘The period of time that starts when a software product is conceived and ends when the product is no longer available for use. The software life-cycle typically includes a requirements phase, design phase, implementation phase, test phase, installation and checkout phase, operation and maintenance phase and sometimes, retirement phase’
The purposes of designing and documenting the
overall project life cycle process for each project category are to:
Enable all persons concerned with creating, planning and executing projects to understand the process to be followed during the life of the project Capture the best experience within the organization so that the life cycle process can be
improved continually and duplicated on future
projects
Enable all the project roles and responsibilities and the project planning, estimating, scheduling,
monitoring and control methods and tools, to be appropriately related to the overall project life cycle management process (Archibald, 2003; Archibald, 2004a)
Life cycle models for software development provide the basic guidelines for developing software using engineering technique. The first task of a software life cycle model is to determine the sequence of stages in software development and evolution and to establish the transition criteria for progression from one stage to the next. There are several life cycle models and many companies adopt their own models, but all have very similar patterns. Different life cycle models are the Code and Fix model, Classical Waterfall model, Iterative Waterfall model, Incremental model, Throwaway Prototyping Model, Evolutionary Prototyping model, Spiral model, Agile model, Extreme programming:
Code and Fix Model: In the beginning of the software era, software process models included simply writing some code and trying to fix the problem. This is called code and fix model. It is a two-phase model. The first phase is to write the code and next phase is to fix it (Connell et al., 1993) Classical Waterfall Model: The Classical Waterfall Model was popularized in 1970 and is the backbone of many other software life cycle models. This process model is structured as a cascade of phases, where output of one phase acts as the input to the next phase. The classical waterfall model is an unrealistic one since there is no provision of detecting and rectifying the error at any stage of the life cycle. However in practical developments, there is always chance of errors, due to various reasons, in almost every phase of the life cycle. Therefore in any practical software development work, it is not possible to strictly follow the classical waterfall model (Royce, 1987) Iterative Waterfall Model: Iterative waterfall model suggests feedback paths in the classical waterfall model from every phase to its preceding phases. It allow for the correction of the errors committed during a phase that are detected in later phases. After detecting the error in later phases, it would be necessary not only to rework the design, but also to appropriately redo the coding and the system testing, thus incurring higher cost (Ghezzi et al., 2002)
V-Shaped Model: Like the waterfall model, the V- Shaped model is sequential path of execution of processes i.e., linear in nature. Each phase must be completed before the next phase starts. However,
emphasis on testing in this model is more than that in the waterfall model (Raymond, 2005) Throwaway prototyping model: It was advocated by Brooks. It is useful in in situations where requirements and user’s needs are unclear or poorly specified. The approach is to construct a quick and dirty partial implementation of the system during
or before the requirements phase (Brooks, 1995; Gomma and Scott, 1981; Jalote, 2005)
Evolutionary prototyping model: This is kind of mix of Waterfall model and prototyping. Presuppose gradual refinement of the prototype until a usable product emerges. Might be suitable in projects where the main problem is user interface requirements, but internal architecture is relatively well established and static (Jalote, 2005) Rapid Application Development (RAD): Rapid Application Development model was proposed in
1980 by IBM. This model is based on an evolving prototype that is not thrown away. . Rapid Application Development model is the first model, which emphasizes a short development cycle e.g.,
60 to 90 days. It is a “high-speed” adaptation of the waterfall model, in which rapid development is achieved by using component based construction approach (Butler, 1994; Martin, 1991)
Unified Process Model: During late 1980’s and early 1990’s, James Rumbaugh, Grady Booch and Ivar Jacobson developed the Unified Process, a framework, which is “use-case driven, architecture-centric, iterative and incremental” (Jacobson et al., 1999). The Unified Process Model consists of five phases
Inception phase incorporates both customer communication and planning activities and emphasizes on refinement and development of use- cases as primary model
Elaboration phase consist of customer communication and design activity
Construction phase produces an implementation model that translates design classes produced during elaboration phase into software components that will be built to realize the system.
Transition phase transfers the software from the developer to the end-user for beta testing and acceptance.
Production phase in which on-going use of software is monitored and infrastructure support is provided (Jacobson et al., 1999)
Incremental Model: It is decomposition of a large development effort into a succession of smaller
components. The life cycle is also referred to as the successive versions or evolutionary model. Incremental model is an intuitive approach to the waterfall model. Multiple development cycles take place here, making the life cycle a “multi- waterfall” cycle. Cycles are divided up into smaller, more easily managed iterations. Each iteration passes through the requirements, design, implementation and testing phases. A working version of software is produced during the first iteration, so you have working software early on during the software life cycle. Subsequent iterations build on the initial software produced during the first iteration (Jalote, 2005; Pressman,
2004; McDermid, 1993)
Spiral Model: Boehm proposed the Spiral model in
1988 (Boehm, 1988). It involves repetition of the same set of life-cycle phases such as plan, develop, build and evaluate until development is complete. The main emphasis is given on risk analysis. It encounters almost all the different types of risks such as cost overruns, change in requirements, loss
of intelligent project personnel, unavailability of
necessary hardware, competition from other software developers, technological drawbacks which obsolete the project and many more (Boehm et al., 1998; Boehm et al., 2000; Boehm and Hansen, 2001)
Agile Software Development: In 2001, Kent Beck and 16 other noted software developers proposed an agile view of process. Agile software engineering combines a philosophy and a set of development guidelines. The philosophy encourages customer satisfaction and early incremental delivery of software, small, highly motivated project teams, informal methods, minimal software engineering work products and overall development simplicity. The development guidelines stress on delivery over analysis and design and active and continuous communication between developers and customers (Beck, 2000). The term ‘agile’ refers to a philosophy of software development. Extreme Programming, Scrum, Crystal, Adaptive Software Development (ASD) are agile methodologies (Boehm, 2002; Cockburn,
2001; Highsmith, 2002)
Research methodology: Research methodology can be viewed as the process taken to accomplish the key objectives of the research undertaken. The objectives of this research project were:
To study the awareness/importance of software life cycle models in the Indian software Industry
To identify the factors affecting the choice of the software life cycle models in the software/IT industry
To determine the importance of factors affecting the choice of the software life cycle models
Authors have undertaken a survey-based approach to assess use software life cycle models in Indian Software Industry. In a survey based approach the usual proceeding to gather information is the usage of questionnaires or interviews. These are applied to a representative sample group and the outcomes are then analyzed. The aim is to derive conclusions that are descriptive, exploratory or explanatory. With the use of generalization the result from the sample is mapped to the whole group. It is, however, not possible to manipulate or control the samples. Nevertheless it is practicable to compare the result with similar outcomes of other surveys. Both qualitative as well as quantitative data can be derived from this strategy. Which one it is depends on the data that is being collected through the questionnaires or interviews and whether statistical analysis methods are applicable or not. Questionnaire survey methodology was preferred for this research since it is a reliable and economical method for data collection. In addition to the questionnaires, telephonic interviews were conducted to understand the relation between the factors affecting the choice of software life cycle models and the each individual software life cycle model.
Questionnaire survey methodology was preferred for this research since it is a reliable and economical method for data collection. An email survey was used to gather survey data. The advantages of the email survey approach to data collection are (Neuman, 2003; Sarantakos, 1998):
Inexpensive
Results are produced quickly
Questionnaires are completed in the respondents’
convenience
Anonymity is greatly assured; and
Respondents are at liberty to provide objective views on sensitive issues,
The questionnaire used in this study consisted of three parts:
The software personnel information The background of the company The software process information
Table 1: Survey questionnaire
Notation Factors F1 Nature/type of project
F2 Project size
F3 Project duration
F4 Project complexity
F5 Level and type of expected risk
F6 Level of understanding of user requirements F7 Level of understanding of the application area F8 Customer involvement
F9 Experience of developers
F10 Team size
F11 Man-machine interaction
F12 Availability of tools and technology
F13 Versions of the product
F14 Level of reliability required
The first part dealt with the software personnel information such as experience and his/her designation. The second part was primarily aimed to understand some of the fundamental issues such as the size of the company and service areas. Third part of the questionnaire dealt with understanding the type of projects, processes and life cycle models. 14 factors affecting the choice of software life cycle models were derived mainly from the literature (Pressman, 2004; Ghezzi et al., 2002; Jalote, 2005; Martin, 1991; Archibald and Vladmir, 2004) and discussions with software quality professionals as shown in Table 1 below.
All factors were ranked on a five-point scale (1 =
not very important, 2 = not important, 3 = important, 4
= very important and 5 = critical). The list of companies was obtained from National Association of Software
and Services Companies (NASSCOM) database as well
as using search engines (www.google.com). In this study, a total of 100 questionnaires were sent by email
to software companies. The response rate from the
companies was 51% (i.e., 51companies).
Results of the empirical investigation: The service areas of the companies participating in the survey comprised of Internet, software consultancy and services, data warehousing, IT enabled services, data mining, embedded technology, training and education, advanced databases, software vendor, telecommunication, ERP, mainframe technology, engineering design services and transportation sector services. 60% of the companies participating in the survey had multiple service areas. The rest 40% had only one service area. 50% of the companies had software consultancy and services as one of their service area. As shown in Fig. 1, 52% of the participants of the Software Development Life Cycle model survey were big companies with more than 1000 employees; 18% of the respondent hailed from companies with employee strength between 501 and
1000; 12% of the respondents were companies with
301-500 employees. 12% of the respondents were
companies with 301-500 employees. The remaining 6%
of the companies had employee strength of less than
- 100. Figure 2 shows the total work experience of the participants of survey. Figure 3 shows the designations
of the individuals participating in the survey. All the respondents had worked in more than multiple projects
in different technologies and business domains in the
software industry. 50% of the respondents had worked on Commercial software projects; 30% had worked on open source software projects and web applications respectively; 25% had worked on ERP projects; 15% had worked on mission critical software projects; 10% of the respondents had worked on embedded software projects as shown in Table 2.