Announcements • Class website http://sunset.usc.edu/classes/cs578_2014/ • TA Office hour Location still TBD By-appointment until we get an office • Exam schedule Exam #1: October 15th (Wednesday) Exam #2: December 1st (Monday) Both exams during the regular class time – 9:30 to 10:50 AM • Homework 3 + 1; last one being the project HW1 has been posted HW1 USC CSCI 578, Fall 2014 Jae young Bang ([email protected]) September 8th, 2014 HW1 • You be a software architect! • From high-level design to more in-depth, detailed design • Specific problems in the homework description • BOINC Case Study – may be used throughout all HWs What is BOINC? • Berkeley Open Infrastructure for Network Computing • An open-source software for volunteer computing and grid computing • Originally developed for SETI@home Analyzing radio telescope data from outside of the Earth Searching for extraterrestrial intelligence Large computation resource needed Computation resource is expensive Volunteer Computing • Computation resource donation Participants who are interested in a project could donate their computation resource (CPU time, storage, etc.) Taking advantage of the idling cycles of personal computers • Volunteer computing performance SETI@home (July 23, 2014) 320,121 active participants 512,197 active computers 6.6 petaFLOPS How It Works – Participant How It Works – Project BOINC Server What You Will Be Doing • Pick two architectural styles • An architectural Expand the BOINCstyle taskis: server into a “level 2” architecture in each of the styles you chose • Discuss your decisions • A named collection of architectural design decisions that (1) are applicable in a given development context, Why did you choose those styles? (2) constrain architectural design decisions that are specific What are the pros and cons of your choices? to a particular system within that context, and Compare two styles (3) elicit the beneficial qualities in each resulting system. Which one is better in which perspective? • • For example, - What Client-server are the key architectural challenges that are NOT covered - by Batch-sequential your architectures? - Publish-subscribe Upgrade your architectures - And many more … Find flaws in your architectures We’ve gotten richer. Let’s throw in a cloud into our computation. There is NO “one and only” right answer. Introduction to Collaborative Development USC CSCI 578, Fall 2014 Jae young Bang ([email protected]) September 8th, 2014 Collaborative Software Development • Complex modern software development often involve multiple stakeholders • Common challenges Different expertise Different goals Miscommunication Not fully knowing each others’ work Geographic distribution • Stakeholders make conflicting decisions! 12 Why The Conflicts Are Bad • Conflicts persist long (several days) [6] • Work done after a conflict was introduced might need to be reverted in the process of resolving the conflict • Wasted time and effort – increased cost “We often face inconsistencies between components developed by different engineers at later stages. Half of the cases lead to full-scale reverting to earlier stages, and local patches are made for the other half” [4] – A quote from an interview with a practicing professional architect [4] Bang, J. et al. “How Software Architects Collaborate: Insights from Collaborative Software Design in Practice.” CHASE 2013. [6] Brun, Y. et al. “Early Detection of Collaboration Conflicts and Risks.” TSE 2013. 13 Collaborative Software Development Environments • Conventional “sandbox” Version Control Systems (VCSs) • Copy-edit-merge Loose connection between users Pros: parallel work from users Cons: conflicts occur Examples: CVS, Subversion (SVN), Git, Mercurial Synchronized group editors Shared whiteboard Tight connection / rich communication between users Pros: may prevent having conflicts Cons: could distract users and lose parallelism Examples: Google Docs, ShareJS, DerbyJS Conflict Scenario • • • • Heavily test-driven project Capable of running simulations Estimating memory usage at runtime Hard requirement on memory usage Master Repo Commit Working Copy Jane Conventional version control system (VCS) Commit Update Update Working Copy John 15 Conflict Scenario • Jane and John make conflicting changes They found they have made changes that [3]: 1. Are not compatible and cannot be merged together or 2. Can be merged but together violate system’s intended rules time Commits the change • • Master Repo Commits the change Makes a change Finds no issue in memory usage • • Working Copy Jane Remove Makes a change Finds no issue in memory usage Working Copy Too much memory usage! Code Update John [3] Bang, J. et al. “Enabling Workspace Awareness for Collaborative Software Modeling.” Future of Collaborative Software Development 2012. 16 Conflict Scenario • Jane and John make conflicting changes They found they have made changes that [3]: Synchronization [2, 3]: 1. Higher-order [3, 6]: 2. • Are not compatible and cannot be merged together or Can be merged but together violate system’s intended rules Other names of synchronization conflicts Textual conflicts [6] Direct conflicts [18] • Other names of higher-order conflicts Indirect conflicts [18] [2] Bang, J. et al. “CoDesign – A Highly Extensible Collaborative Software Modeling Framework.” ICSE 2010. [3] Bang, J. et al. “Enabling Workspace Awareness for Collaborative Software Modeling.” Future of Collaborative Software Development 2012. [6] Brun, Y. et al. “Early Detection of Collaboration Conflicts and Risks.” TSE 2013. [18] Sarma, A. et al. “Empirical Evidence of the Benefits of Workspace Awareness in Software Configuration Management.” FSE 2008. 17 “Software design is an activity that creates a system’s software architecture – its set of principal design decisions.” – R. N. Taylor, N. Medvidović, and E. M. Dashofy 18 Collaborative Software Design 19 Detecting Conflicts via Models • Design decisions are conceptual, so are design conflicts • Detecting conflicts via tangible software models • What is a software model? An artifact documenting some or all of the architectural design decisions about a system [19] • Design decisions documented as software models • Designs are done for modular systems, merged later [4] • Partial models are created, merged, checked for conflicts [4] Bang, J. et al. “How Software Architects Collaborate: Insights from Collaborative Software Design in Practice.” CHASE 2013. [19] Taylor, R. N. et al. “Software Architecture: Foundations, Theory, and Practice.” John Wiley & Sons, 2009. 20 Collaborative Modeling • Voluminous previous research Software model merging Software model inconsistency detection Software model version control Collaborative software design tools 21 Dealing with Conflicts • The negative consequences of having conflicts could become worse if we identify and resolve them late. • What if we detect them earlier? Dealing with Conflicts Early • Proactively deal with conflicts Workspace awareness “The up-to-the-minute knowledge of other participants’ interactions with the shared workspace” [11] Speculative analysis “Anticipating actions a developer may wish to perform and executing them in the background” [6] Positive results from experiments [18] and actual use [6] Commonality Detecting conflicts earlier in a proactive way Preventing software developers from “deviating” far • Not yet mature to be widely adopted in industry [6] Brun, Y. et al. “Early Detection of Collaboration Conflicts and Risks.” TSE 2013. [11] Gutwin, C. et al. “Workspace Awareness for Groupware.” CHI 1996. [18] Sarma, A. et al. “Empirical Evidence of the Benefits of Workspace Awareness in Software Configuration Management.” FSE 2008. 23 Questions?
© Copyright 2024