Introduction to Distributed Software Development DSD Team.

Slides:



Advertisements
Similar presentations
Prescriptive Process models
Advertisements

The System and Software Development Process Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Software Process Models
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Introduction to Distributed Software Development Stuart Faulk CIS University of Oregon Lian Yu School of Software and Microelectronics Peking University.
Alternate Software Development Methodologies
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
Distributed Software Development Course Review. Outline Characteristics and risks of DSD Role of software engineering Process: coordinating work Requirements:
Gu & Maher University of Sydney, October 2004 DECO2005 Monitoring Team Process.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Globally Distributed Development The Role of Software Processes in DSD DSD Team.
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
IS 421 Information Systems Management James Nowotarski 16 September 2002.
Introduction to Distributed Software Development DSD Team.
Managing Reuse Presented by: Aisha Al-Hammadi. Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges.
Software Architecture in Practice
Copyright  Larry Dribin, Ph.D. SE470_EngFlows_v1.ppt SE470 EngFlows - 1 Excellence in Software Engineering Repeatable Level Defined Level Manage.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Introduction to Distributed Software Development
Defining the Activities. Documents  Goal Statement defines why helps manage expectations  Statement of Work what gets delivered defines scope  Software.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
Software Architecture for DSD The “Uses” Relation.
® IBM Software Group © 2006 IBM Corporation PRJ480 Mastering the Management of Iterative Development v2 Module 3: Phase Management - Inception.
Introduction to Interactive Media 02. The Interactive Media Development Process.
CPSC 871 John D. McGregor Processes – a first iteration Module 1 Session 1.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Module 1 Session 1.1 Visual 1 Managing the Implementation of Development Projects Course Overview and Introduction.
Chapter 2 The process Process, Methods, and Tools
Software Project Management Introduction to Project Management.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
Architecture Business Cycle
Chapter 13: Developing and Implementing Effective Accounting Information Systems
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
16 1 Installation  After development and testing, system must be put into operation  Important planning considerations Costs of operating both systems.
1 Introduction to Software Engineering Lecture 1.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering Foundations.
Review of Software Process Models Review Class 1 Software Process Models CEN 4021 Class 2 – 01/12.
Fifth Lecture Hour 9:30 – 10:20 am, September 9, 2001 Framework for a Software Management Process – Life Cycle Phases (Part II, Chapter 5 of Royce’ book)
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Project Management (SEWPZG622) BITS-WIPRO Collaborative Programme: MS in Software Engineering SECOND SEMESTER /1/ "The content of this.
Requirements Analysis
Unit – I Presentation. Unit – 1 (Introduction to Software Project management) Definition:-  Software project management is the art and science of planning.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CS223: Software Engineering Lecture 16: The Agile Methodology.
Software Engineering Lecture 10: System Engineering.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Building Systems for Today’s Dynamic Networked Environments A Methodology for Building Sustainable Enterprises in Dynamic Environments through knowledge.
Course Overview Stephen M. Thebaut, Ph.D. University of Florida Software Engineering.
RATIONAL UNIFIED PROCESS PROCESS FRAMEWORK OVERVIEW.
Slide 3.1 © The McGraw-Hill Companies, 2002 SOFTWARE LIFE-CYCLE MODELS.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Advanced Software Engineering Dr. Cheng
Chapter 24: Architecture Competence
Lecture 3 Prescriptive Process Models
CS4311 Spring 2011 Process Improvement Dr
Lecture 17 ATAM Team Expertise
Introducing ISTQB Agile Foundation Extending the ISTQB Program’s Support Further Presented by Rex Black, CTAL Copyright © 2014 ASTQB 1.
Presentation transcript:

Introduction to Distributed Software Development DSD Team

Outline Admin –Course purpose –Projects and teams Lecture: Introduction to Distributed Software Development (DSD) 2

Course Format Ten week project course –Lectures: Foundations and background –Projects: Learn how to apply SE concepts to globally distributed software development –Collaborative development: work remotely with computer science students at Peking University –Project Reviews and Presentations: Critique and guidance –Course assessment: help improve course One project, two (large) iterations –First to develop teams, learn tools, establish communication –Second apply skills to globally distributed development

Software Engineering Emphasis Emphasis on life-cycle management and teamwork in a globally distributed context Understand coordination and communication challenges of distributed development Participate in planning and coordination of distributed teams Learn effective software engineering techniques to address DSD risks Learn effective communication and collaboration skills supporting distributed teamwork © S. Faulk

Projects Two iterations of the Schematic Map project, each 5 weeks Iteration 1: instructor guided –Instructors will provide most of the supporting infrastructure such as detailed requirements, document templates –Focus on developing effective collaboration-at-a-distance Learn to use tools Develop teams and teamwork skills Iteration 2: team guided –Students negotiate and define requirements for increment –Work collaborative to deliver software on time –Complete product including documentation and tests © S. Faulk

Teams Team size depends on class size Teams will include both UO and PKU students © S. Faulk

Course Evaluation & Development Experimental course designed to be a model for distribution –New course for the instructors as well as students –Goal is to develop a model course Create lectures, projects, other course materials Provide as “open source” materials for other universities to give similar collaborative courses Hence, assessment is part of the course –Required to do formal assessments of your learning Will have evaluations Will track interactions (e.g., team communication) –Need to get your feedback on what needs improvement © S. Faulk

Questionnaire Purpose –Formation of balanced project 1 teams –Beginnings of evaluation database –Introduction to teammates Fill in –Name (family, given), student id, –Courses: enrolled, finished (grades) –Programming proficiencies & experience Expert, Good, Some, None (experience and knowledge) –Strongest skills, weaknesses, best contribution

Weekly Schedule Monday and Wednesday lectures –Mix of lectures, discussions, group exercises –Some lecture times or parts thereof will be used for team meetings and project discussions Meetings with the professor –Design reviews –Progress reviews –Course assessment

Grading TBD © S. Faulk

Introduction to Distributed Software Development Purposes of DSD Issues and Risks Introduced The Role of Software Engineering © S. Faulk

Growth of DSD Increasingly used by companies of all but the smallest size Outsourcing growth by an order of magnitude over past few years Over half of the Fortune 500 companies –Software industry: Google, Microsoft, IBM, etc. –Other industry: telecom, cell phone, etc. © S. Faulk

> 10 Sample of Development of 52 Major Projects at Avaya 2006 # Sites # Projects Approximately 75% multi-site development and growing

Rationale for DSD Expanded pool of trained workforce Necessity of getting closer to customers and using locality specific expertise to customize/localize the products National policy in some countries where the government may be a customer requiring suppliers to locate R&D facility in that country as a condition of sale or a favorable tax treatment Difference in development costs Promise of round-the-clock development that could lead to shorter intervals © S. Faulk

Evolution of DSD © S. Faulk

DSD is Different… In co-located projects, people build up ways of coordinating work –Shared process view (implicit or explicit) –Common vocabulary, viewpoint –Clear idea of expertise, responsibility –Free flow of information through informal channels –Common language, culture, backgrounds allay miscommunication –Relatively good understanding of relationships People to tasks Task dependencies Professional and social © S. Faulk

DSD is Different… In DSD many of the mechanisms for coordinating work are absent or disrupted –Much less communication Temporal distance Socio-cultural distance, e.g., language Spontaneous communication declines rapidly with distance –Less effective communication Fewer overlapping work hours Low bandwidth links (e.g., and other asynchronous) –Lack of awareness Lack context hence knowledge of history, relationships What people are doing day to day, concerns, availability –Incompatibilities Differ in tools, processes, work products Leads to confusion, misunderstandings, inconsistencies Some issues are observed with even small distances (e.g., 30 meters) © S. Faulk

Software Development Problems Manifests as problems in coordination and control of software development –Difficulty establishing requirements (eliciting, understanding, negotiating) –Difficulty effectively distributing work –Difficulty detecting and correcting conflicting assumptions –Difficulty detecting and correcting slips in schedule –Difficulty managing change (especially requirements) –Difficult managing development resources (schedule, personnel, budget) Similar to traditional SE problems, but more so –Work takes longer –Requires more effort © S. Faulk

Useful to View as Risks Risks due to communication and control difficulties Building the correct software (behavior or qualities) –Fully understand (or misunderstand) the requirements Developers build the wrong thing Inadequate verification, validation –Decomposing the work into work assignments that together address behavioral and developmental goals –Ensuring each team builds what is needed by others Managing development (budget, schedule, personnel) –Balancing workload, skills across sites to meet developmental and quality goals –Developing common understanding of who should be developing what in which timeframe © S. Faulk

The Role of Software Engineering 20

Purpose of SW Engineering The purpose of software engineering is to gain and maintain intellectual and managerial control over the products and processes of software development. –“Intellectual control” means that we are able make rational technical choices based on an understanding of the downstream effects of those choices –Managerial control means we are able to make rational choices about development resources (budget, schedule, personnel) to deliver software on time and within budget © Stuart Faulk

Application to DSD Risks: in DSD communication difficulties and context difference lead to coordination and control problems Approach: apply software engineering processes, methods, and tools to mitigate risks Examples: –Software processes –Software architecture © S. Faulk

Process Definition Process: A set of artifacts, activities, and roles –Activities produce artifacts and are performed by roles –A designer produces a design document as part of creating the design The process determines –What activities are done –The order in which they are done –Who does them Different processes address different goals and risks 23

Characterizing processes: The Spiral Model Process viewed as repeating cycles of increasing scale –Identify risks & values & determine (next set of) requirements, build next version by extension, increasing scale each time –Early iterations may be prototypes 24

Characterizing processes: The Iterative Model Process viewed as a sequence of iterations, each building on the last Build minimal useful subset, test, release, build next version by extension Early iterations may be prototypes 25 IBM

Discussion: Role of Process How can process help address DSD risks associated with communication and control? –How might it help to have a well-defined process? Sequence of activities? Clearly delineated roles? Well-defined products? –How might the choice of process help? © S. Faulk

Software Architecture © S. Faulk

Working Definition “The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them.” * Architecture divides the system into parts and defines –The relationships among the parts –The interface for each part Familiar in terms of decomposing a system into classes/objects –Defining relations, e.g., inheritance, calls –Defining interfaces, e.g., service 28 *From Software Architecture in Practice, Bass, Clements, Kazman

© Stuart Faulk Fit in the Development Cycle Software Design System Integration and Testing Coding Deployment Maintenance and Evolution Requirements Analysis Software Architecture “…The earliest artifact that enables the priorities among competing concerns to be analyzed, and it is the artifact that manifests the concerns as system qualities.”

Influence of Architecture on DSD How can architecture help address risks associated with DSD? How might the decomposition into modules with well- defined interfaces affect the need for communication? –How does software decomposition influence communication? –How does software decomposition influence work breakdown structure? © S. Faulk

How should components be distributed among teams? Module Team A System Module Team B Team C Goal: distribution of work on components requiring least inter-team communication

Some SE Topics Covered Topics presented (roughly) in order needed for projects Software processes and project planning –Which life cycle model to use –What kinds of activities and roles support distributed development –How to allocate work to distributed teams Software architecture –How to use architecture to manage dependencies –Which design principles and methods support concurrent development –Role of interfaces as contracts Software requirements –How to ensure mutual understanding of expected behavior and system qualities Software verification and validation –The role of feedback in maintaining control –Effective reviews –Distributed testing 32

The Development Environment 33 © S. Faulk 2009

The Development Environment Effects of the development environment –Incompatible development infrastructures can result in inconsistencies between collaborating teams –Common environment can support communication and coordination Our projects will use a common environment (Assembla) –Provides common development workspace –Tools for synchronous and asynchronous communication , IM Wicki, document management –Source control –Some scheduling

Required for Collaboration Use of Assembla tools is required for collaboration Ensures common tools Gives instructors visibility into emerging difficulties Provides a record for measurement and assessement © S. Faulk

Questions? © S. Faulk