
Agile Software Processes for the 24-Hour Knowledge Factory Environment Nathan Denny, Igor Crk, Ravi Sheshu and Amar Gupta Nexus of Entrepreneurship and Technology University of Arizona Abstract The growing adoption of outsourcing and offshoring concepts is presenting new opportunities for distributed software development. Inspired by the paradigm of round-the-clock manufacturing, the concept of the 24-Hour Knowledge Factory (24HrKF) attempts to make similar transformation in the arena of information systems: specifically to transform the production of software and allied intangibles to benefit from the notion of continuous development by establishing multiple collaborating sites at strategically selected locations around the globe. As the sun sets on one site, it rises on another site with the day's work being handed off from the closing site to the opening site. In order to enable such hand-offs to occur in an effective manner, new agile and distributed software processes are needed, as delineated in this paper. 1 INTRODUCTION The industrial revolution led to the concepts of assembly lines, shifts for factory workers, and round- the-clock manufacturing. Advances in information systems now enable us to envision the non-stop creation of new intellectual property using shifts of workers located in different countries. More specifically, a 24-Hour Knowledge Factory (24HrKF) is envisioned as an enterprise composed of three or more sites distributed around the globe in a manner that at least one site is operational at any point of time (Gupta and Seshasai 2004). As the sun sets on one site, it rises on another with the work in progress being handed off from the closing site to the opening site. Earlier papers on the 24-HrKF have broadly classified professional work as being ill-structured, semi- structured, or totally structured (Gupta and Seshasai 2007, Seshasai and Gupta, 2007). CEOs, presidents, and other heads of organizations usually deal with ill-structured work, the pattern of which cannot be predicted in advance. This type of work cannot be easily decomposed into subtasks that a shadow-CEO or a partner-CEO, located in a different part of the world, can complete during the next shift. At the other end, work in industries like call centers is well-structured and can be readily picked up by a colleague coming in to work for the next shift and located in another part of the world. In between these two extremes, there are many examples of semi-structured work where the overall endeavor can be broken into subtasks and a person in the next shift can continue to work on the incomplete task from the previous shift. Software development, in specific, and many IP based industries in general, fall into this intermediate category. In the conventional model of software development, tasks are usually divided on a horizontal basis among teams in different geographies; that is, one team in one part of geography developing one module, and another team in other part of the geography developing the other module. In this model, if one part of the project gets delayed, the developers working on this part end up having to devote extra hours, typically by working late into the night. Colleagues working on other parts of the project are unable to render help, because they are only familiar with their respective parts of the project. In the 24HrKF paradigm, this problem can be overcome by the vertical division of tasks between developers in different geographies. The latter goal can be met only with sustained research of relevant underlying issues, and the development of new agile and distributed software processes that are specially geared for use in the 24HrKF environment. For example, new methodologies are needed to streamline the hand-off between the developer in one shift and the developer in the next shift in order to communicate details of the task in progress, as well as pending issues, in a very rapid and efficient manner in order to reduce the time spent in the hand-off to the minimum possible. Further, new task allocation processes need to be developed to address the reality that the developers will possess different skill sets and dissimilar levels of productivity. Such issues are being researched by a team involving individuals from academia and industry. The research group at the University of Arizona is working closely with colleagues in universities in Australia and Poland under the aegis of a collaborative agreement signed in 2005. The research team at the University of Arizona has designed a process 'CPro' that addresses several of the operational issues related to the 24HrKF environment. The core of CPro is a model of cooperative work called the Composite Persona (CP). A CP is a highly cohesive team of developers that are distributed across the globe. When the problem is decomposed, it is decomposed horizontally as is conventional. However, subcomponent development is now assigned to a CP rather than an individual. The members of the CP work on the vertically decomposed subcomponent in series, each successive shift improving upon the work of the previous shift. Based on the CPro process, a tool, Multimind, has been designed, developed, implemented, and tested. 2 DISTRIBUTED AND AGILE SOFTWARE DEVELOPMENT Agile processes are relatively new to the field of software development and have recently accumulated both popularity among developers and a portfolio of significant, successful applications. "Agilists", as practicioners of agile software processes call themselves, are loosely united under the statements of the agile manifesto (Fowler and Highsmith 2001). This manifesto asks subscribers to place emphasis on processes that are practical, adaptable, and produce artifacts that have value for stake holders. Agile software processes are a class of processes rather than a single, specific technique. While agile processes are sometimes criticized as being reactionary to current software engineering dogma, they are not necessarily orthogonal to traditional "Tayloristic" software development. More specifically, traditional software engineering endeavors to establish highly defined, functionally specialized roles and encode almost all knowledge about the software under development into explicit, formal documents. In contrast, agile processes, although they are numerous and differ between them in fine details, favor informal communication between peers in a relatively small, loosely structured, and almost exclusively co-located group. Most well known agile processes require a representative of the stake-holders to be either co-located with the development team, or at the very least a frequent visitor with direct interaction with the development team. While agile practitioners do not completely shun formal documents, they subscribe to the "just barely enough" guideline for when and how much formal documentation to include. Much emphasis is placed on source code and artifacts that deliver immediate and evolving value to stakeholders. Popular agile methods that have a well-earned reputation for efficacy include extreme programming (XP), scrum, the "crystal" methods, dynamic system development method (DSDM), lean development, and adaptive software development (ASD). Highsmith (2002) presents a summary of agile methods that may be of interest to those new to the study of software processes. We first review current generation of agile software processes. Following that, we discuss some of the relevant literature on distributed software development. We conclude this section with examples of distributed software development projects which employed agile software processes. 2.1 Agile Software Processes Extreme Programming (XP) (Beck 1999) is the most prominent of agile software development methodologies. It provides managers and developers with a prescribed set of practices and principles within the activities of coding, testing, listening, and designing. The practices include fine scale feedback (such as pair programming or test-driven development), continuous integration and improvement (via short iterations), a shared understanding of the project (through collective code ownership and coding standards), and a development pace that is sustainable by the developers. The principles of XP state that feedback is most useful if done rapidly, with help of unit testing, and that each problem ought to be treated as if its solution is simple, which is generally the case when incremental changes are encouraged. Scrum (Takeuchi and Nonaka 1986; DeGrace and Stahl 1988), named after a formation in rugby that effectively restarts the game by physically engaging the competing teams, refers to an agile software development management method. It suggests that small, cross-functional teams can maintain project integrity and productivity through brief daily progress updates and productive sprints through relatively short periods of stability. The basis for the process lies in the assumption that in software development is an empirical process. That is, software development problems are poorly defined and customer expectations are an ever-moving target and thus frequent feedback and control interventions are needed to keep the project on track. These feedback and control interventions are realized in scrum sessions, or brief meetings, which at a basic level attempt to answer the questions of what has been done since the last scrum, what will be done before the next scrum, and what are the obstacles that are to be surmounted in the meantime. Additionally, the
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages15 Page
-
File Size-