CHAPTER TWO 2
2.0 Literature Review
The delivery of projects in an organization primarily occurs through the efforts of small teams. It has been noted that small organizations predominantly undertake small projects, due to the amount of resources available to them. Since the project teams are smaller, the team members may be required to perform the tasks of more than a single role (Schwaber 2004). A team of concise number is also useful, as this enabled the project team to remain adaptable and flexible, though still allowing room to scale for slightly larger projects, with the addition of extra teams as required. The importance of coherence in the team is also noted, as the project is not successfully completed through the efforts of one or two people alone, but on the skills and efforts of the whole team. If the project team has an average of high quality members, then it is most likely possible to achieve a greater level of project success than with just one or two highly trained project team members.
Software solutions need to be delivered in the shortest possible time due to the technological evolution, market demands, rival’s products and competitive pressure of today’s business. Software development industry had started to use the Agile Software Development process and it has become more and more popular at present (Versionone, 2012). One reason for the popularity is the benefits it gives over the Traditional Software Development process such as the ability to absorb frequently changing requirements and frequent deliverables to the customer.
2.1 Concept of Software Development
Software development can be defined as creating new software or fixing the existing one (D’Costa et al. 2004). Technology developments led to increasing demand for software, Industrial Technology (IT) Companies should be able to project well maintenance. The methodology in software development is used in accordance with the company’s needs based on the SDLC (Software Development Life Cycle). Software development methodology is a process of organizing a set of method and notation convention which has been defined to develop software (Fujita et al. 2003).
2.1.1 Software Development Life Cycle
This is the stages of work performed by system analysts and programmers in building an information system. It requires the development and the maintenance process of a software system, which contains models and frameworks to plan and maintain the entire development process (Mordal et al., 2012). It includes phases such as project initiation, design analysis, system design specification, programming and testing, installation and maintenance, and destruction. Software professionals are familiar with software development models designed in software development life cycle. Each model has its own way of handling the software development process. Waterfall model, iterative model, spiral model, V-model, Big Bang Model, Rapid Application Development Model and Prototyping Model were one of popular software development life cycle models (Purcell, 2007).
To meet rapidly changing user requirements, product owner expects the continuous improvement process to enhance the product features. Traditional software development process was not sufficient to satisfy the thirst of customers for their frequently changing requirements in the fast moving globalized world. Therefore, industry, academic and standard organizations have been looking for advanced software development life cycle technique. The advanced software development life cycle method should also be able to deliver the product faster to the customer with high quality, but cost effectively. The stages expected by the analyst are to:
? Conduct a survey and assess the feasibility of information systems development project
? Study and analyze the information systems that are running
? Determine the requests of the information system users
? Select the best solution or problem solving
? Determine the hardware and software.
? Design a new information system
? Build a new information system
? Communicate and implement the new information system
? Maintain and repair / improve the new information system if necessary
2.1.2 Software/ System Management Methodology
System development projects must meet user needs, conform to all the organizational standards, fit the budgetary constraints and be completed on time. A methodology must be used to achieve this, (Wright, 2002). Each of these methodologies, irrespective of how they tend to lead to the same successful results, presents slightly different approaches to management of projects.
The role of methodologies in delivering a successful project is often overlooked. A research paper by Oracle, (2011) noted one of the major project management pitfalls is lack of enforcement of a chosen methodology. It went on to note that the choice of a methodology, whether standardized or organization-specific, is secondary to its usage and adherence during project execution. The guidance, governance and standardization of outlined processes provide an elaborate way of execution hence improving the chances of project success.
Corbin (2003) supports the need for a methodology for information systems development in order to establish a productive software development environment. By ensuring the consistency of techniques, standards and deliverables, a methodology can improve the productivity of development personnel and the quality of the systems developed. As a consequence, minimizing risk and approaching projects in a structured manner, become critical success factors. By using a proper methodology, the project managers increase the probability to deliver what the client wants, while accommodating the time and budget restrictions. Since the mid 1990’s, agile methods have been suggested as a way of maximizing business value through small, self-organizing teams using flexible technologies and early customer involvement to iteratively improve software, (Agile Manifesto, 2001), especially in small software projects, (Rising et al. 2000). Moreover, Hybrid approaches that combine both methods are feasible and preferable, (Caffery et al. 2007). Therefore, research in Software Development Project Management becomes increasingly important, any scientific work in this field having the potential to significantly improve the effectiveness and efficiency of the organizations of this field, has to face the three basic restrictions of time, finance and scope.
2.1.3 Software Developers Pattern for Software Development
In software industry, the major problem is meeting the client’s requirements which are specific, to a software project development in the deliverables that should be promised to the client. The client standardizes himself to a contract and fixes a specific time onto the systems, when the project has to be delivered.
Once the software development contract is signed, the actual task on scheduling the manpower and machine requirements arises. In a software development process, if the manpower is not organized properly then it can cause a great lot in reaching the targets. The major goal of any software development firm is to meet the targets as fast as possible with the least manpower, to get targeted profits. The application training the bugs and their associated test cases that were developed previously also plays a vital role.
The software project management solutions, is an application that kinds itself with the overall standards of managing a project at all levels of its development processes. The application is projected towards the maintenance of data that is utmost necessary to know the state and status of a project that is undergoing through the process of development.
The major intension is to maintain the history of all the components that have been developed for specific projects along with the associated information about the software engineer who has been involved in the process of development of that component. This type of standard always helps the industry not only in managing the human resources properly but also help to keep down the maintenance upon the system. The history of information also helps in keeping the standards of bug tracking and bug management much easier, flexible and faster.
The project has been planned to be having the view of distributed architecture, with centralized storage of the database. The application for the storage of the data has been planned. Using the constructs of MS-SQLServer2008 and all the user interfaces has been designed using the ASP.Net technologies with Visual Studio.Net technologies. The database connectivity is planned using the “SQL Connection” methodology. The standards of security and data protective mechanism have been given a big choice for proper usage. The application takes care of different modules and their associated reports, which are produced as per the applicable strategies and standards that are put forwarded by the administrative staff.
2.2 The Progression in Software Development
As with project management, software development was founded initially in the engineering fields, following the fundamental structure of these disciplines. A classic example of the early style of development is embodied in the waterfall model, which was introduced as a method of producing software that is phase driven. Each phase of the overall development produces a result, which is then used as an input for the next phase (Leffingwell and Widrig 2003). If a phase fails to produce a result or is not completed, then the next phase cannot properly proceed and the development process is delayed. Despite this style is now viewed as obsolete and an inflexible approach to software development, it has been implemented quite successfully in the past, especially for the production of secure operating systems and computing environments for government bodies.
Fig 2.1: The Waterfall Model
However, as technology progressed organizations began to encounter development issues, especially when creating products that required user interaction. A major issue with this model was that, the further along the phases a change or a correction was introduced, the more expensive it was to implement this change. As in the project management field, when initial requirements are less established, such a phase-based system will also encounter problems in the software development field. Eventually organizations realized the inherent drawbacks of the waterfall style of development, and endeavoured to improve the process of software production.
As computing experience progressed, the spiral model was introduced as the concept of incremental development, which quickly became an integral part of software production. This allowed developers to produce a usable prototype of the end product, thus enabling end-users to provide input on how to refine the prototype for the ultimate product (Leffingwell and Widrig 2003).
Fig 2.2: Boehms Spiral model of the software process
This was a break from the traditional method of design-and-build as depicted by the waterfall model, and was an important advance in development techniques. As IT developments progressed, technology and the business opportunities associated with it emerged extremely quickly. The IT industry was progressing so quickly that it was often no longer feasible for a business to practice the more traditional methods of development. The traditional process usually involved planning, designing, and building one or two prototypes to fully test the concept, before releasing the software to the end-user. Organizations now required improved results in an even shorter time frame, and improvements in development methods were therefore required.
2.3 Software Development standards: Their Strengths and Weaknesses
The following standards originate from the field of software development, and are important to the research as they establish the background for the emerging software development methods that cater specifically to smaller software projects.
2.3.1 ISO/IEC 12207:2008 Systems and Software Engineering
The ISO/IEC 12207:2008 international standard has been developed expressly for the purpose of software development, and provides the necessary processes for the control of complex software projects (ISO/IEC-IEEE 2008). This is one of the more important standards in software development, and establishes a framework that is currently in use by many government bodies and corporations. The standard has been formalized by the International Organization for Standardization in cooperation with the Institute of Electrical and Electronics Engineers, and this modular framework can be used for the creation and maintenance of software.
2.3.2 Capability Maturity Model Integration
Another software development standard that has emerged is the CMMI (Capability Maturity Model Integration) model designed by the SEI (Software Engineering Institute). This standard emerged from a set of models developed by the US Department of Defense and the US National Defense Industrial Association, where the initial goal was to produce a united and flexible framework for improved software production (Boehm and Turner 2003). Similar to the ISO/IEC 12207:2008 standard, this model is process oriented and separates the processes of software development into four distinct categories, where similar processes are organized for the control of software projects, one of which is project management (SEI 2006). The CMMI model enables the development of stable and quality software through the use of standardized processes, where measurements and controls can be implemented and tested.
2.3.3 Agile Methodology Introduced
In 2001 a group of developers convened to discuss the future of a new generation of software development methods. These methods were not as process-heavy as earlier methods tended to be, and one of the main results from this meeting was the agreement to the term ‘agile’. This term would be used to represent the kind of method that was able to respond quickly to changes in software project requirements. Another major outcome from this meeting was the establishment of the Agile Manifesto, where the core values of agile development were made clear (Beck et al. 2001a): The principles of the agile community diverged from the traditional development mindset, in that not only would these developers be willing to accept change, even late in the development cycle, but would welcome it and strive to deliver a product that could maximize the benefit to the organization. The main focus of the agile movement is to produce software quickly, without being constrained by the bureaucracy of the traditional methods. Many different styles of agile development have arisen, such as Extreme programming (XP), Scrum, eXtreme Testing, Crystal Family of Methodologies, Dynamic System Development Method (DSDM), Adaptive Software Development (ASD), and Feature-Driven Development (FDD) began to emerge. Since then, the agile software development methods have gained popularity and have become increasingly important to significant number of software development organizations (Beck, K et al. 2001; Benefield, G. 2008), but the most popular are Scrum and Extreme Programming. The early 1990s saw the introduction of Scrum, a popular agile method in the software development field. The name Scrum originates from a rugby term, where a team works closely together for sporting success.
2.4 Agile Software Development Process
Agile software development process is an iterative and incremental software development process. Hyper-productive and self-organizing teams play the key role in the process. Deliver a set of working software to the client after every iteration was the target for a team (Mannila, 2013). The methodologies are more focused on customer satisfaction, project success and risk reduction (Rico, 2008).
The basic idea of the agile software development process is clearly defined in the “Agile Manifesto” with the introduction of four basic agile values, which are listed below (Beck et al., 2001):
1. Individuals and interactions over process and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
Seventeen advocates, who jointly documented the Agile Manifesto in year 2001, had stated that they value the items on the left more than the items on the right (Beck et al., 2001). There are twelve principles (Beck et al., 2001) which follow those four values on the left at the Agile Manifesto. “Individuals and interactions over Process and tools” as the first value emphasized that it value more face-to-face communication among team members, stakeholders and developers than limiting it to e-mails. There was no specific person to command for agile team members. They are expected to be a self-organized and hyper-productive team. This leads to effective teamwork and better chances for innovation and job satisfaction. Second value “Working software over Comprehensive documentation” described that team worked in a product, which developed iteratively. At the end of each iteration, customer has a chance to play with the working software. The comments and feedback with lessons learned, to incorporate at the next iteration. Free from comprehensive documentation, therefore, able to maintain whenever required, depending on the project. The third value “Customer collaboration over the contract negotiation” gives the idea of, this is not just developing what you want, however highly satisfy you. Work was not just a contract, but the close interaction with the customer and it helps to enrich his satisfaction. Finally the fourth value “Responding to change over following a plan” was the most important factor when deals with customer requirements, which always change in this dynamic world. The customer wants the best fit to the current industry to compete with others. Agile software development process was the best fit since it always welcome change environment.
There are dozens of agile development methodologies and customized frameworks under the umbrella of agile software development process. Those methodologies help to strip away the heaviness associated in the traditional software development methodologies (Dyba & Dingsøyr, 2008). Agile software development process techniques align with any situations where other methodologies cannot be used. Such as, it fitted in small projects with two to thirty members group, or in a continuous interaction with customer and software developers, or a product with frequently changing requirements and in a complex situation. Agile software development process is not filled up with heavy documentations as in the traditional software development process (Fathi and Morovat, 2013), but it allows to having required documentation which can differ from project to project, depend on the project requirements. Flexibility and quick response to requirement change, Communication and requirement management were the basic features in the Agile software development process (Siakas et al., 2005; M T Sletholt, 2011). Active customer involvement was one of the very important features in agile software development methodology compared to rest of the software development life cycle methodologies (Oza and Korkala, 2012).
Fig 2.3: Agile Software Development process. Source: Rising, 2009.
2.4.1 Agile vs. Traditional Software Development Process
Waterfall model was relatively simple to understand. Within the process, phases will not be overlapped. At the end of one phase only, the next phase will start. However, all the phases in the agile software development process are based at the same time, iteratively. It absorbs feedback and encourages frequent inspection and adaptation. In traditional software development process, completed software will be delivered mostly at the end of the process. However, in agile software development process development done over the working software and features will be shipped as deliverables within a minor period. traditional software development process has high risk and high probability of failing the project, since after requirements gathering the customer will not get involved with the product, till the product is handed over, other than if there is no any specific requirement gathering. If customer wants any changes towards the final stage of the project, the cost will be high, since it needs more effort and time to consume. However, the ASD process is more reliable than other Software Development processes, since it always welcomes requirement changes at any time during the project lifecycle (Siakas et al., 2005). Oza and Korkala (2012) reveal that the agile adaptation had made a significant impact to product developments and coordination.
Fig 2.4: Cost of change compared to development method. Source: Reiner R. Dumke, 2008, p.1.
Table 2.1: Deductions from Traditional to Agile method, Source: Dyba & Dingsøyr, 2008, pp. 836
According to the Manifesto and its subsequent notes, origin of different agile methods exists based on the areas such as people oriented, embracing changes, focusing on product, simplicity, self-organized team and fast delivery (Javdani et al., 2012). ASD methodologies output an effective, successful software product compared to cost of heavy quality systems (Siakas et al., 2005).
2.5 Scrum Development Framework
Scrum is an Agile software development process that focuses on project management practices and is the only Agile methodology that has been formalized and published as an organizational pattern for software development. The Scrum Development framework is the most popular, commonly used and most adopted (52%) agile software development methodology (Kayes et al., 2013; Gustafsson, 2011). The framework was derived from the best practices of successful companies like Fujixerox, Honda, Canon and Toyota (Sutherland, 2009). Scrum framework allows average teams to self-organize into hyper-productive state with the application of simple constraints (Downey and Sutherland, 2013).
Fig 2.5: Scrum Framework. Source: Mountain Goat Software, 2013
The word Scrum derived from the Rugby sport which denotes the spirit of the teamwork and self managed members in a cross functional team, working together to achieve the product targets (Zoysa, 2011). Yahoo! emphasized as the successful large enterprise adopted for Agile and Scrum practices (Benefield, 2008). Scrum increased the productivity by 5-10 times over industry average and many teams had achieved it (Sutherland, 2009). There were three distributed scrum modules commonly used in practice, namely, Isolate Scrums, Distributed Scrums of Scrums and Fully Distributed Scrums used specially to win the promised benefits of outsourcing (Sutherland, 2009).
2.5.1 The Scrum Software Development Process
Scrum is an iterative and incremental software development method driven by the Product Backlog list, which contains all active product requirements (Schwaber et al. 2013). The Product Backlog is managed by the Product Owner, who is the only person authorized to change priority of the requirements.
Scrum structures product development in cycles of work called Sprints, iteration of work which is typically 1-4 weeks in length. Each Sprint is initiated with a Sprint planning meeting, where the Sprint Backlog is formed. Sprint Backlog is a subset of Product Backlog requirements that defines functionality to be developed in the current Sprint. Every requirement is further broken down into tasks that each takes roughly 4 to 16 hours to finish.
Functionality is developed by the team, which is a group of developers that are collectively responsible for the success of each iteration, and of the project as a whole. Teams are self-managing, self-organizing, and cross-functional, and they are responsible for figuring out how to turn Product Backlog into an incremental of functionality within the Sprint (Boehm, 2005).
The Scrum Master is responsible for managing the Scrum process so that it fits within an organization’s culture and still delivers expected benefits, and for ensuring that everyone follows Scrum rules and practices. The Scrum Master leads a 15-minute daily scrum meeting where every team member answers three questions: “What have you done on this project since the last daily Scrum meeting?”, “What will you do before the next meeting?” and “Do you have any obstacles?” the Scrum Master is also responsible for resolving impediments encountered during the Sprint in order to assure smooth running of the development process (Boehm, 2005).
At the end of the Sprint, a Sprint review meeting is held at which the team presents Sprint results to the Product owner. After the Sprint review and prior to the next Sprint planning meeting, the Scrum Master also holds a Sprint retrospective meeting in order to ensure continuous improvements.
Fig 2.6: The software development processes using the Scrum Method. Source: (Boehm and Turner 2005, p. 33)
A scrum process can help an organization to quickly adjust to fast-changing requirements, while still ending up with a product that helps achieve the determined business goals, which evolve constantly. By using an agile scrum methodology based process, a business will be able to:
1. Improve the quality of its deliverables
2. Anticipate changes and adapt more easily to them
3. Make estimates much quicker and be more accurate
4. Have better control over the whole project state and schedule
2.6 Challenges and Benefits of Scrum Method Adoption
Changing from the traditional waterfall methodology to agile project management requires lots of effort and change management, which may take quite some time (Javdani Gandomani and Ziaei Nafchi, 2015). The process of transition affects all aspects of the company’s software development sector, and as well act as change in the development process. Indeed agile transition involves so many changes in the culture, behaviour and processes of the organization, because of the broad area of change required. Most company sometimes basically experiences many obstacles, challenges and issues related to management, people, and as well as technical and cultural problems during the process of change (Javdani Gandomani and Ziaei Nafchi, 2015).
One potential weaknesses of SCRUM, highlighted in the literature (Highsmith & Cockburn, The Business of Innovation, 2001) is the fact that, when the project is developed for an external client, that has to be involved a lot in the project. The client has to be able and available to test the monthly (or periodical) releases or deliverables, and to suggest new or modified functionalities. Others are: teams whose members are geographically dispersed or part-time, possess very specialized skills and products with many external dependencies and regulated quality control
A scrum process can help an organization to quickly adjust to fast-changing requirement to achieve the determined business goals, which evolve constantly. Further benefits includes: succession planning and ease of audit, On-going collaboration and self-organization of team members is encouraged on projects together with the daily face-to-face communication which enhance discipline. It employs an optimized predictability and control risk of engineering practices that will be used for the purpose of creating quality software in a short period of time.
Task Details Estimation With the Scrum method, the details of the task has been clearly seen at the end of each sprint (2 weeks)
Quality Sprint provides strength for team to undertake the development of software that has been determined in advance, so that the quality of the software is in accordance with the business on the sprint.
Quality Control In terms of quality control it can be evaluated at the end of a sprint, so the quality of the application is visible in the final sprint.
Risk With the Monitoring Board and Online Monitoring Board showed that mistakes happen all the time.
Application View At the end of the sprint, each team demonstrates the task that has been done; therefore at the end of the sprint the display of the software being developed is visible.
Business Change Once the software is demonstrated, if there is any business changes, it will be directly discussed in the final sprint
Customer Feedback Customer sees the software demo and if there is any feedback it will be directly discussed in the final sprint
Project Monitoring With the Monitoring Board and Online Monitoring Board, it provides an ease and the monitoring of the project can be done at any time.
Live (Production) Sprint in the Scrum provides convenience in live applications, where live can be done per product backlog that has been made.
Table 2.2: Benefits in implementation of scrum method
2.7 Relationship Between Scrum Methodology and Project Outcome
Numerous criteria influence success for projects revolving around the system development process, it has been empirically proven that the use of system development methodologies can increase the probability of project success. The use of the methodology results in:
1. Overall delivery on time
2. Overall project cost budget
3. Quality of final packaging and deployment (product)
4. Adherence to agreed initial scope
5. Realization of expected project benefits
6. Stakeholder’s adoption and satisfaction
7. Overall project risk management
2.8 Software Development Product Quality of Scrum Application
Product quality in software has become highly important. Rawat et al., (2012) state that “Given the penetration of computer code into everyday objects like washing machines, automobiles, refrigerators, toys and even things like the mars rover, any system be in a large one or a small system running embedded IC technology, ensuring the highest levels of software quality is paramount”. Therefore, software metrics are becoming part of the software development fabric. It is really in need to understand that, the quality of the software we are building to achieve the expectations (Eeger, 2008). Quality, schedule (time) and cost are key factors for any project. Therefore, use of suitable metrics helps to enhance the project quality, productivity of the team, and for future prediction purposes.
2.9 Factors Considered in Selecting a Methodology
Scrum is a feedback-driven empirical approach which is, like all empirical process control, underpinned by the three pillars of transparency, inspection, and adaptation. All work within the Scrum framework should be visible to those responsible for the outcome; the process, the workflow, progress. In order to make these things visible, scrum teams need to frequently inspect the product being developed and how well the team is working. With frequent inspection, the team can spot when their work deviates outside of acceptable limits and adapt their process or the product under development (Morris, 2017). They includes: Risks, complexity of the project, type of project, resource/ client experience; management support, team commitment, work place tool and technology support, communication, learning and training, courage, focus, openness, respect and plan-driven project.