Avni Verma, 200902040, Assignment-1Part-1 Pair Programming is an agile software development technique1 which allows two programmers to work together at one computer. Remote, virtual or distributed Pair Programming, allows two geographically separated programmers to carry out a collaborative implementation based task2. There are many tools for distributed pair programming which tries to achieve same advantages as Pair Programming at a single location.
These advantages/benefits include:2Better Quality of resulting productReduce implementation Time TeamworkPromotion of Knowledge Transfer and LearningIncrement in employee RetentionRemote Pair Programming Tool:Basic requirements of a tool for Distributed Pair Programming can be as follows:2Shared editors, shared file repositories and other essential components.Developers’ profile information including online status, roles and contributionsCommunications – textual, audio and visual.Easy tool navigation, tutorial and workspace awareness.Easily scalable.In this assignment, rather than discussing traditional Distributed Pair Programming tools, for example Skype, Google hangouts, Eclipse IDEs, Teamviewer, NetMeeting4 etc, I discuss AIDDES, a Distributed Intelligent Pair-Software Development Environment3. It is a synchronous intelligent coding editor coalesced with a shared CASE6 tool helping in both administrative and development areas. Features of AIDDES are as follows:It provides intelligent agents to verify the relevance of comments and identifiers for developer mode using Ontological Program Evaluators (AOP)It provides intelligent agents to mediate process of collaboration using Ontological Discussion Evaluator (ADP).
Unlike other plugin based collaborative tools like Sangam5, AIDDES supports various types of programming languages, manages various exchangeable roles like driver and navigator, logs team members’ elapsed time etc. Once authenticated, new members are authorized to join the collaborative system with a specific role.Potential Pitfall and Solution: The main pitfall of AIDDES is video-conferencing feature. This pitfall has been my main reason for studying this useful tool. Lack of video-conferencing has negligible influence on the performance of a Distributed Pair Programming tool. Video conferencing can be easily overcome in following ways:Integration: Video conferencing can be implemented by integrating another software in AIDDES along with the coding editor and CASE tool.
Asynchronous Feature: Video conferencing can be used as an asynchronous feature.Alternatively using Audio conferencing. Part-2No.
Lean Software Development Principles7, 8Client(Team Outsourcing the work)Vendor(Outsourced Team: Someone who is developing software for Client)1Eliminate waste1) client should be responsible for the overhead. 2) Fix own deliverable cycles so vendor can synchronize with the process. 3) Plan thoroughly for quick response to vendor and avoid waste of time during interactions. 4) Make list of 10-15 top tasks which might cause waste, calculate delay time and interact with vendor discussing these possible delays.1) vendor should be responsible for their overhead and must communicate to the client about the same. 2) Prevent working ahead of commited time which can create changes in plan and cause time waste. 3) Take clear and relevant directions from client. 4) Make list of 10-15 tasks may either require clients opinion or which might take over time and bring it up during discussion.
2Amplify learning1) Periodic feedback from vendor will increase the interaction. 2) Amplify learning by using systematic synchronisation tools. 3) Since its outsourcing, ask what you can provide to make the task easier and faster?1) Periodic feedback from client to enhance the development process. 2) Take suggestions for delivered product. 3) Ask client if work delivered increases their confidence in overall project?3Decide as late as possible1) client should incorporate the plan for any urgent changes. There can be geographical or temporal delays and obstruction might be unavoidable on vendors’ side.
2) Increase involvement in contract structure phase of vendor.1) Robust sequential or concurrent plans to incorporate any change. 2) Execute a phase in which vendor studies contract structure in depth. 3) Phase can be completed only after being passed by client.4Deliver as fast as possibleAnswer vendors’ questions asap and setting up correct initial requirements. 1) Fully functional deliverable 2) Proactive working 3) Complete clients jobs and in between milestones.5Empower the teamThis principle is more applicable on vendor then client.
1) Minimize or group approval at the start of project to reduce team distraction. 2) Increase ownership of team members. Following principles like “amplify learning” will make this process clearer and simpler. 3) No compromise with client’s deliverables due to personal/company issues. Once committed must be delivered – team motto.6Build integrity Within1) Deliverables and clear objectives at the start of the project.
2) Be prepared with your requirements from vendor. 3) Clear intentions with vendors about delivery date.1) Understand deliverables and objectives at the start of project 2) Get these approved clearly. 3) Know your team strength, weaknesses and team count before commiting for the project to client.
4) Once guidelines are committed it will be difficult to go back. There should be no repetition and no extra features.7See the wholeclients should be clear about what they want.
They should see the whole picture and not dwell is some small component is not working or vendor has implementation the same thing with a small acceptable diversion. 1) vendors should have root cause analysis for all issues occurred during overall delivery of project. 2) Overall which interactions with client could have been improved. 3) What was not properly tested? – overall analysis and improvement. References:Wikipedia contributors. “Pair programming.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 25 Nov.
2017. Web. 29 Jan. 2018.Hao, Jingchun. Distributed Pair Programming in Global Software Development.
Diss. Dissertação de Mestrado, School of Informatics, Universidade de Endiburgo, 2011, 94p.de Faria, Eustáquio São José, et al. “AIDDES-Distributed intelligent pair-software development environment.
” Computer Software and Applications, 2008. COMPSAC’08. 32nd Annual IEEE International. IEEE, 2008.
Stotts, David, et al. “Virtual teaming: Experiments and experiences with distributed pair programming.” Conference on Extreme Programming and Agile Methods.
Springer, Berlin, Heidelberg, 2003.Ho, Chih-Wei, et al. “Sangam: a distributed pair programming plug-in for Eclipse.” Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange.
ACM, 2004.Wikipedia contributors. “Computer-aided software engineering.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 4 Dec.
2017. Wikipedia contributors. “Lean software development.
” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 1 Dec. 2017. https://www.slideshare.net/jpvajda/lean-software-development-principles