Presentation on theme: "GDSD AND AGILE PROCESSES Olga Sowinska, Jhon Barreiro, Nafiz Utku."— Presentation transcript:
GDSD AND AGILE PROCESSES Olga Sowinska, Jhon Barreiro, Nafiz Utku
Contents Flexible and distributed software processes: Old petunias in new bowls? Ambidextrous coping strategies in GDS development projects. Agility in globally distributed system development. Can distributed software development be agile?
FLEXIBLE AND DISTRIBUTED SOFTWARE PROCESSES OLD PETUNIAS IN NEW BOWLS? Jhon Barreiro
Introduction What is GSD Why GSD? Advantages/Disadvantages of GSD Problems encountered in software development Flexible processes: Agile methods Advantages of Agile Methods Agile and GSD What experts have to say
Problems in software development Software delivered late and out of budget Software do not meet customer needs Software cannot be used Despite many examples of good practices, there is still lack of professionalism in software engineering that could even be dangerous in safety-critical systems. One of the problems with cutting-edge software is that it is hard to visualise what the system will do
What is GSD? Defined as software work undertaken at geographically separated locations across national boundaries in a coordinated fashion involving real time (synchronous) and asynchronous interaction. Sahay (UiO) Involves communication for information exchange. Involves coordination of groups, activities and artifacts so they contribute to the overall objective. Involves control of groups (adhering to goals and policies) and artifacts (quality, visibility & management).
Why GSD? Globalization and turbulent business environments, Two factors that create significant challenges for software organizations today. In the wake of the IT downturn, many organizations have turned to GSD in their quest for the silver bullet of high quality software delivered cheaply and quickly.
Benefits of GSD Improvements in time-to-market efficiency and access to greater--and less costly--resources Solves local IT Shortage issues Most are attracted by the lower costs
Cons of GSD Communication: time differences makes it difficult to communicate properly Coordination Control issues Increased geographical distance can often increase temporal distance and socio-cultural distance
Flexible Processes Software process flexibility, concerns the current trend in software development to move from traditional plan-based approaches, as suggested by mainstream software engineering and information systems research, towards more agile approaches.
What is Agile? Agile software development is a conceptual framework for software engineering that promotes development iterations throughout the life- cycle of the project. There are many agile development methods; most minimize risk by developing software in short amounts of time. Software developed during one unit of time is referred to as an iteration, which may last from one to four weeks wikipedia.org
Benefits of agile methods Higher quality software Improved control of a project Reduced dependence on individuals and increased flexibility Early detection and cancellation of failing products wikipedia.org
Sample agile methods XP (Extreme Programming) Pitched as: Addressing the specific needs of software development conducted by small teams in the face of vague or changing requirements SCRUM (as in Rugby), first described by Takeuchi and Nonaka in 1986 Pitched as: "Management and control process that cuts through complexity" DSDM (Dynamic Systems Development Method) Pitched as: A framework of controls and best practice for rapid application development Crystal Orange Pitched as: A method to run a cooperative game of invention and communication, with a primary goal of delivery useful working software and a secondary goal of setting up for the next game
What experts have to say? David Parnas: The problem is poor documentation and poor communication Barry Bohem: The problem is not documentation, the problem lies when we try to apply a one-fits-all solution The best way is to use risk as a way to determine where to go agile or document-driven Matthew Simons: Parnas is right, Pure agile development with little or no documentation beyond code is impractical and inefficient
Ambidextrous coping strategies in globally distributed software development projects Olga Sowinska
Strategies for enhancing flexibility and rigor Geographic distance Time separation Cultural differences Language differences Organizational boundaries Functional boundaries Barriers for global software teams
Study 22 globally distributed software projects Analyzed Inputs Global boundaries and barriers Processes Task processes - communication - coordination software quality On time / within budget completion
Study 22 globally distributed software projects analyzed Inputs Global boundaries and barriers Processes Task processes - communication - coordination software quality On time / within budget completion Outputs
Coping strategies for GDSD Timing Initiation Phase Task - common platform shared domain / application knowledge common task process common task context and work environment people - labour organization minimized task dependencies Redundant roles / point persons
Coping strategies for GDSD Technology - technology readiness technology infrastructure integrated project management tool portfolio of collaboration tools Execution phase Task - doing more more and continuous communication extended work hours / shifts more and detailed commun ication tight project control people - labour organization minimized task dependencies Redundant roles / point persons
Coping strategies for GDSD People - awareness / teamwork team awareness task awareness Technology - adaptive use of technology broad usage evolutionary usage
Findings Successful globally distributed software development required not only flexibility / agility but also rigor / discipline in order to sope with complex challenges of global projects. 3 principles: Teams need to build a foundation for future flexibility in global software development Effective global software teams flexibly deploy coping strategies as needed during the execution phase of projects Successful global software teams also exhibit disciplined adherence to the agreed-upon strategies and processes.
Agility in Globally Distributed Systems Development Nafiz Utku
Two challenges in development and deployment of GSD Development perspective - the complexities of coordination, communication, culture and technology creates challenges due to disparate composition of teams in dispersed geographic locations. Deployment perspective firms need to cater for local requirements of the sites spanning the activities of the global business.
Two challenges in development and deployment of GSD GDSD agility requires the ability of IS Development and deployment methods to swiftly adapt to the changing business requirements. This will allow firms to rapidly develop and tap into emerging business opportunities in geographically dispersed locations.
Three independent components of agility in GSD projects Agile IT strategy Agile IT infrastructure Agile project management
Agile project management: 4 skill sets in GSD context System localization 2-Task division and coordination 3-partnership management 4-decentralised knowledge management skills
Generic guidelines to achieve GDSD ability Develop strategic coherence between global business objectives and IT Systems Development and deployment strategies. Update and acquire knowledge on new technologies Standardise IT platform through modularization Utilise local components and expertise, yet keep to global standards. Clearly define rules and responsibilities of each local site in GDSP project. Develop good version control systems components. Understand the interdependant relationship of IT Strategy, IT Structure and project management to achive optimal agility during GDSD process.
Can distributed software development be agile? Jhon Barreiro
Some thoughts Global sourcing and distributed software development have become a common business reality Dynamic business environment requires organisations to develop and evolve software systems at internet speed
GSD and agile are different Agile and distributed processes differ significantly in their key tenets Agile mainly relies on informal processes Tacit Knowledge Puts a large premium to face-to-face communication Accommodates change due to volatile requirements Distributed software processes relies on formal processes Rigorous planning Formal communication
Challenges in GSD and Agile Communication need vs communication independence DSD relies on detailed architectural design and plan (communication need) Agile relies more on informal interaction than explicit communication (communication independence) People vs Process oriented control In DSD control is achieved by formal processes. Agile environments are more people oriented. Formal vs informal agreement Contracts in agile are loosely and informally defined. DSD relies on explicit targets, milestones and detailed specs. Lack of team cohesion In DSD, participants at different sites are less likely to perceive themselves as part of a team. In agile, participants are co-located (good for processes such as XP)
Challenges in GSD and Agile Communication is by far the most important aspect Agile methods can rely heavily on frequent, regular contact and involvement with the client. Hugh Basset-Jones, Senior Web Systems Developer, University of Winchester Sometimes clients do not know what they really want, hence the need for keeping involved in the development process" Matt Renyard Web Systems Developer University of Winchester
Three organisations studied Telco, Manco and Consult Have software development operations in India and the U.S. Agree that it is possible to use agile in GSD environment
The balancing act Continuously adjust the process Skeptical of agile development that does not include adequate upfront design, Manco and Consult devoted the first three iterations to finalize critical requirements and develop a high level architecture. Facilitate knowledge sharing Rather than rely on informal means for project tracking and monitoring, Manco and Telco developed a database to help teams report issues, assign priorities and track project status. However, in the spirit of an Agile process, only minimal documentation was created. Improve communication Using Short Message Service (SMS) and Online chats extensively Build trust Frequent visits by distributed partners, regular visits by customers or surrogates (product managers) with the development team Trust but verify Supplementing informal communication with documentation of critical artifacts.
Conclusion Definitely old petunias in new bowls Software crisis is rather a Chronic problem Careful incorporation of agility in DSD environments is essential in addressing several challenges to communication, control, and trust across distributed teams.