Software Engineering. Natallia Kokash email: nkokash@liacs.nl. N. Kokash, Software Engineering

Similar documents
Software Engineering. Hans van Vliet Vrije Universiteit Amsterdam, The Netherlands

Software Life Cycle. Main issues: Discussion of different life cycle models Maintenance or evolution

CS4507 Advanced Software Engineering

Software Development Life Cycle (SDLC)

Agile Projects 7. Agile Project Management 21

Vragen. Software development model. Software development model. Software development model

COMP 354 Introduction to Software Engineering

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

Using Simulation to teach project management skills. Dr. Alain April, ÉTS Montréal

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

A Capability Maturity Model (CMM)

Advanced Software Engineering. Software Development Processes

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

ASSESSMENT OF SOFTWARE PROCESS MODELS

Software Development Life Cycle Models - Process Models. Week 2, Session 1

In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

A Comparison between Five Models of Software Engineering

To introduce software process models To describe three generic process models and when they may be used

Introduction to Agile Software Development

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

How To Understand The Limitations Of An Agile Software Development

A Quick Overview of Software Engineering. Paul Klint

CS435: Introduction to Software Engineering! " Software Engineering: A Practitioner s Approach, 7/e " by Roger S. Pressman

Basic Trends of Modern Software Development

Singhania University, Jhunjhunu, Rajasthan, India. 2 Department of Information Technology King Abdul Aziz University, Jeddah, Saudi Arabia

Development. Lecture 3

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

Software processes that are:

SOFTWARE PROCESS MODELS

Agile Development Overview

Development Techniques. CSE301 University of Sunderland Harry R. Erwin, PhD

Unit 1 Learning Objectives

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Processes in Software Development. Presented by Lars Yde, M.Sc., at Selected Topics in Software Development, DIKU spring semester 2008

Agile and the role of the business analyst

Software Engineering Design and Accounting Process

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Objectives. The software process. Basic software process Models. Waterfall model. Software Processes

CS4507 Advanced Software Engineering

A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

6. Software Lifecycle Models. A software lifecycle model is a standardised format for planning organising, and running a new development project.

Quality Assurance Software Development Processes

Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology

SEEM4570 System Design and Implementation Lecture 10 Software Development Process

Best-Practice Software Engineering: Software Processes to Support Project Success. Dietmar Winkler

A Comparison Between Five Models Of Software Engineering

Corso di Laurea Magistrale in Informatica, Università di Padova Tecnologie open-source, Anno accademico 2010/2011. Development Processes 1 / 51

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

Rapid software development. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 17 Slide 1

ABHINAV NATIONAL MONTHLY REFEREED JOURNAL OF RESEARCH IN SCIENCE & TECHNOLOGY

Agile Software Development Methodologies and Its Quality Assurance

AGILE METHODOLOGY IN SOFTWARE DEVELOPMENT

Agile Software Development. Mohsen Afsharchi

AGILE vs. WATERFALL METHODOLOGIES

Practical Agile Requirements Engineering

Agile project management: A magic bullet?

Software Life Cycle Processes

Agile So)ware Development

Lean vs. Agile similarities and differences Created by Stephen Barkar -

Alternative Development Methodologies

Outline. Agile Methods. Converse of Conway s Law. The Silver Bullet Fantasy (Brooks, 1986)

Software Engineering. Introduction. Lecturer: Giuseppe Santucci

Whitepaper. Agile Methodology: An Airline Business Case YOUR SUCCESS IS OUR FOCUS. Published on: Jun-09 Author: Ramesh & Lakshmi Narasimhan

Hamid Faridani March 2011

Software Development Process

Comparing Plan-Driven and Agile Project Approaches

Introduction to Software Engineering. Week 1

How To Plan A Project

Agile Methodologies and Its Processes

Non-Technical Issues in Software Development

CSE 435 Software Engineering. Sept 16, 2015

An Assessment between Software Development Life Cycle Models of Software Engineering

(Refer Slide Time: 01:52)

Waterfall vs. Agile Methodology

Agile Requirements Generation Model: A Soft-structured Approach to Agile Requirements Engineering. Shvetha Soundararajan

Agile Models. Software Engineering Marco Scotto Software Engineering

SCEA 2010 EST06. Estimating Issues Associated with Agile. Bob Hunt. Galorath Incorporated

Software Requirements and Specification

Chapter 2 Software Processes

Software Engineering. What is a system?

Comparing Agile Software Processes Based on the Software Development Project Requirements

Software Engineering. Objectives. Designing, building and maintaining large software systems

Software Engineering. Software Development Process Models. Lecturer: Giuseppe Santucci

Software Engineering

Comparative Study of Agile Methods and Their Comparison with Heavyweight Methods in Indian Organizations

Elite: A New Component-Based Software Development Model

Software Development Methodologies

And the Models Are System/Software Development Life Cycle. Why Life Cycle Approach for Software?

How to manage agile development? Rose Pruyne Jack Reed

Moonzoo Kim CS Division of EECS Dept. KAIST

Extreme Programming, an agile software development process

Agile Processes and Methodologies: A Conceptual Study

A Viable Systems Engineering Approach. Presented by: Dick Carlson

SECC Agile Foundation Certificate Examination Handbook

Software Development with Agile Methods

How To Understand Software Engineering

Transcription:

Natallia Kokash email: nkokash@liacs.nl 1

Introduction Course overview Logistics Literature Practical assignment Evaluation What is Software Engineering? What does Software Engineer do? Software Engineering Processes 2

Natallia Kokash, researcher at LIACS Research experience Postdoc at Centrum Wiskunde & Informatica (CWI), Amsterdam Ph.D. from University of Trento, Italy (2008) Research in Software Engineering Semantics of Modeling Languages Software Design and Verification Service-Oriented Computing Industrial Experience Collaboration with large international companies Thales-France, Telcordia-Poland, PWC. Two years of experience as Software Engineer Development of banking systems 3

4

What will you learn? Engineering = skill + knowledge This course 70% knowledge and 30% skills Basic concepts & vocabulary of SE Main activities in SE projects Main methods and techniques excluding: programming Guest lectures by professionals 5

Literature 70% - H. van Vliet, Software Engineering: Principles and Practice, 3 rd ed., 2008. A. Shalloway and J.R. Trott, Design Patterns Explained (2004) WWW Check my course web page http://homepages.cwi.nl/~kokash/courses.html These slides are based on the slides by Prof. Dr. Hans van Vliet 6

Course overview Theme Course Overview, Introduction to Software Engineering (SE) & Software Development (SD) Lifecycle Chapter 1, 2, 3.1-3.2 Requirements Engineering & Configuration Management 4, 9 Software Modeling 3.3-3.9,10 Software Design & Architectural Styles 11, 12 Software Quality Assurance & Metrics 6 Team Organization & Global SD 5, 20 Software Reuse, Component-based & Service-oriented Computing 17, 18,19 Design Patterns & Refactoring Software Testing 13 Software Maintenance 14 Cost Estimation, Planning & Control 7, 8 Empirical Research in SE tbd tbd 7

Logistics Lecturer (B.Sc. Informatica & Economie, Den Haag) Dr. Natallia Kokash Lecturer (B.Sc. Informatica, Leiden) Drs. Werner Heijstek Werkgroepdocent, Leiden Christoph Johann Stettina, M.Sc Course Manager Dr. Michel R.V. Chaudron You may take hoorcolleges (but not werkcolleges) at either location The schedule for Leiden can be found at www.liacs.nl Check slides by Drs. W. Heijstek http://www.liacs.nl/~heijstek/se11-slides/ 8

Team of 3-4 people Focus on a proper development process Results: requirements specification, software design, implementation, documentation and testing report Any tools or programming languages (pointers to useful tools & libraries will be given) 9

Problem Convert a picture of a UML class diagram (.bmp,.jpg) to a UML class diagram in XMI format 10

Details Retrieve images of UML class diagrams from Google images Recognize basic shapes (rectangles, arrows) Use optical character recognition (OCR) tools to recognize names of classes, attributes, annotations, etc. Create a graph-based representation of a recognized class diagram Write an XMI file 11

Final evaluation 50% written exam But > 5.5 50% practical assignment 25% Requirement specification 25% Software architecture and design 25% Implementation 25% Quality evaluation 12

Software Crises The major cause of the software crisis is that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem. Edsger Dijkstra, The Humble Programmer, Communications of the ACM (1972) 13

Who is Edsger Dijkstra? Born in Rotterdam in 1930. Studied theoretical physics at the University of Leiden where he became interested in programming Received numerous awards including Turing Award in 1972 1.300+ publications Helped the emancipation of computer science as a science Best known for his "shortest path algorithm and his hate to the goto operator. 14

The crisis manifest Projects running over-budget Projects running over-time Software was very inefficient Software was of low quality Software often did not meet requirements Projects were unmanageable and code difficult to maintain Software was never delivered 15

The beginning of Software Engineering 1968/69 NATO conferences: introduction of the term Software Engineering Idea: software development is not an art, or a bag of tricks Build software like we build bridges 16

Definition Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software 17

Famous software failures Military Mariner 1 rocket (1962) Cost: $18.5 million Soviet anti-missile warning system (1983) Patriot missile system (1991) 28 soldiers dead, 100 injured Medicine Therac-25 (1985) (3 dead, 3 critically injured) Radiation therapy software by Multidata Systems (2000) (8 dead, 20 critically injured) 18

Famous software failures Finance Wall Street Crash (1987) caused by the NYSE computer system EDS Drops Child Support (2004) Cost: 540 million Airspace and flight control ARIANE 5, Flight 501 crash (1996) Cost: $500 million Mars Climate Orbiter crash (1998) Cost: $125 million 19

ARIANE Flight 501 Disintegration after 39 sec Caused by wrong data being sent to On Board Computer Large correction for attitude deviation Software exception in Inertial Reference System after 36 sec. Overflow in conversion of a variable from 64-bit floating point to 16-bit signed integer Of 7 risky conversions, 4 were protected Reasoning: physically limited, or large margin of safety In case of exception: report failure and shut down 20

Explanations Inadequate testing Specification does not contain trajectory data In tests, components that measure altitude and movements of the launcher were simulated by software modules Wrong type of reuse If a component works perfectly well in one environment, it doesn t necessarily do so in another Ariane 5 is much faster than Ariane 4, and horizontal velocity builds up more rapidly excessive values for parameter in question This software doesn t have any purpose for the Ariane 5, but was still kept Wrong design philosophy If something breaks down, it is caused by a random hardware failure Action: shut down that part There is no provision for design errors! 21

Further information Ariane 5: IEEE Computer, January 1997, p. 129-130 http://www.cs.vu.nl/~hans/ariane5report.html 20 Famous Software Disasters http://www.devtopics.com/20-famous-softwaredisasters/ 22

Is SE = Engineering? Software is logical, rather than physical Progress is hard to see (speed progress) Software is not continuous Further reading: Henry Petroski, Design Paradigms: Case Histories of Error and Judgement in Engineering A. Spector & D. Gifford, A Computer Science Perspective of Bridge Design, Communication of the ACM 29, 4 (1986) p 267-283 23

Quo Vadis? It takes at least 15-20 years for a technology to become mature Software engineering has made tremendous progress There is no silver bullet 24

The CHAOS report 1994 1996 1998 2000 2002 2004 2006 2009 Successful 16% 27% 26% 28% 34% 29% 35% 32% Challenged 53% 33% 46% 49% 51% 53% 46% 44% Failed 31% 40% 28% 23% 15% 18% 19% 24% http://www.projectsmart.co.uk/docs/chaos-report.pdf 25

Famous Engineering Disasters Tacoma Narrows bridge (1940) (1 dog dead) Hyatt Regency Hotel Walkway Collapse (1981) 114 dead, >200 injured 26

Famous Engineering Disasters Chernobyl Nuclear Power Plant (1986) (at least 5000 dead, 336000 relocated) Air crashes: DC10-S (1979) (271 dead) Aloha Airlines Flight 243 (1988) (1 dead) 27

Percent of total cost Software Engineering Relative distribution of software/ hardware costs 100 Hardware Development 60 Software 20 Maintenance 1955 1970 1985 Year 28

Types of Software Custom For a specific customer Generic Sold on open market Often called COTS (Commercial Off The Shelf) Shrink-wrapped Embedded Built into hardware Hard to change 29

Types of software Real time software E.g. control and monitoring systems Must react immediately Safety often a concern Business Information Systems Data processing Used to run businesses Accuracy and security of data are key 30

Central themes LARGE programs COMPLEX programs Software EVOLVES Software COSTS Software is developed by TOGETHER by many people Software must EFFECTIVELY support users SE depends on knowledge transfer from DIFFERENT disciplines SE is about finding a BALANCE 31

Simple life cycle model Problem Requirements specification Design System requirements engineering design implementation testing Working system maintenance 32

Requirements Engineering Yields a description of the DESIRED system: which functions possible extensions required documentation performance requirements Includes a feasibility study Resulting document: requirements specification 33

Design Earliest design decisions captured in software architecture Decomposition into parts/components; what are the functions of, and interfaces between, those components? Emphasis on what rather than how Resulting document: specification 34

Implementation Focus on individual components Goal: a working, flexible, robust, piece of software Not a bag of tricks Present-day languages have a module and/or class concept 35

Testing Does the software do what it is supposed to do? Are we building the right system? (validation) Are we building the system right? (verification) Start testing activities in phase 1, on day 1 36

Maintenance Correcting errors found after the software has been delivered Adapting the software to changing requirements, changing environments,... 37

Global distribution of effort design 15% coding 20% requirements engineering 10% specification 10% testing 45% Rule of thumb: 40-20-40 distribution of effort Trend: enlarge requirements specification/design slots; reduce test slot Beware: maintenance alone consumes 50-75% of total effort 38

Distribution of maintenance activities corrective 21% perfective 50% adaptive 25% preventive 4% Corrective maintenance: correcting discovered errors Preventive maintenance: correcting latent errors Adaptive maintenance: adapting to changes in the environment Perfective maintenance: adapting to changing user requirements 39

SE in a nutshell 40

What does Software Engineer do? individually interacting with clients in a team programming, documenting, planning, presenting, reviewing, reporting listening, explaining, proving feedback, selling Microsoft 1978 Specializing in different roles designing, programming, testing, brainstorming discussing planning 41

Hammurabi s Code 64: If a builder builds a house for a man and does not make its construction firm, and the house which he has built collapses and causes the death of the owner of the house, that builder shall be put to death. 73: If it cause the death of a son of the owner of the house, they shall put to death a son of that builder. 42

Software Engineering Ethics Act consistently with the public interest Act in a manner that is in the best interest of the client and employer Ensure that products meet the highest professional standards possible Maintain integrity in professional judgment Managers shall promote an ethical approach Advance the integrity and reputation of the profession Be fair to and supportive of colleagues Participate in lifelong learning and promote an ethical approach 43

A broader view on SD information planning boundary conditions documentation input program software people output program procedures 44

Contents of project plan Introduction Process model Organization of project Standards, guidelines, procedures Management activities Risks Staffing Methods and techniques Work packages Resources Quality assurance Budget and schedule Changes Delivery 45

Project control Time, both the number of man-months and the schedule Information, mostly the documentation Organization, people and team aspects Quality, not an add-on feature; it has to be built in Money, largely personnel 46

Managing time Measuring progress is hard ( we spent half the money, so we must be halfway ) Development models serve to manage time More people less time? Brooks law: adding people to a late project makes it later 47

Managing information Documentation Technical documentation Current state of projects Changes agree upon Agile projects: less attention to explicit documentation, more on tacit knowledge held by people 48

Managing people Managing expectations Building a team Coordination of work 49

Managing quality Quality has to be designed in Quality is not an afterthought Quality requirements often conflict with each other Requires frequent interaction with stakeholders 50

Managing cost Which factors influence cost? What influences productivity? Relation between cost and schedule 51

Software Development Methods Projects are large and complex A phased approach to control it is necessary Traditional models are document-driven: there is a new pile of paper after each phase is completed Evolutionary models recognize that much of what is called maintenance is inevitable 52

Waterfall model Requirements eng. Iteration V&V Feedback Validation Are we building the right system? Verification Are we building the system right? Requirements are fixed as early as possible Design V&V Implementation V&V Testing V&V Maintenance V&V 53

V-model Requirements engineering Acceptance testing Global design Integration testing Detailed design Unit testing Coding Problems Too rigid Developers cannot move between various abstraction levels 54

Evolutionary model Waterfall Model (Mid 70ies) Evolutionary Models (80ies) Time Requ. Eng. & Architecting Specification Design Implementation Test Increments (Spiral cycles) Iteration Scope 55

Win-Win Spiral Model 1. Identify next-increment stakeholders 2. Identify stakeholders objectives and win conditions / values Emphasizes continuous stakeholder alignment 3. Reconcile win conditions Establish next-increment objectives, constraints & alternatives (Boehm, 1998) 7. Verify & commit 6. Implement product & process definitions 4. Evaluate product and process alternatives Resolve risks 5. Define next-increment of product & process, inclusive partitions 56

Incremental development A software system is delivered in small increments The waterfall model is employed in each phase The user is closely involved in directing the next steps Incremental development prevents over-functionality 57

Incremental development delivered system design build install evaluate first incremental delivery increment 1 design build install evaluate second incremental delivery increment 2 design build install evaluate third incremental delivery increment 3 Each component delivered must give some benefit to the stakeholders 58

Velocity tracking Measure team productivity Unit of work hours, days, story points, ideal days Interval week, month 59

Prototyping Requirements elicitation is difficult software is developed because the present situation is unsatisfactory however, the desirable new situation is as yet unknown Used to obtain the requirements of some aspects of the system Should be a relatively cheap process use rapid prototyping languages and tools not all functionality needs to be implemented production quality is not required 60

Prototyping as a tool for SE Requirements engineering design design implementation implementation testing testing maintenance 61

Prototyping approaches Throwaway prototyping: the n-th prototype is followed by a waterfall-like process Evolutionary prototyping: the n-th prototype is delivered 62

Prototyping, advantages The resulting system is easier to use User needs are better accommodated The resulting system has fewer features Problems are detected earlier The design is of higher quality The resulting system is easier to maintain The development incurs less effort 63

Prototyping, disadvantages The resulting system has more features The performance of the resulting system is worse The design is of less quality The resulting system is harder to maintain The prototyping approach requires more experienced team members 64

Recommendations for prototyping The users and the designers must be well aware of the issues and the pitfalls Use prototyping when the requirements are unclear Prototyping needs to be planned and controlled as well 65

The plan 66

Reality 67

Recent developments Rise of agile methods Shift from producing software to using software Software development becomes more heterogeneous Success of open source software 68

The Agile Manifesto (2001) We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.. 69

12 principles of Agile SE: Customer satisfaction by rapid delivery of useful software Welcome changing requirements, even late in development Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Sustainable development, able to maintain a constant pace Close, daily co-operation between business people and developers Face-to-face conversation is the best form of communication (co-location) Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances 70

Popular agile methods Rapid Application Development (RAD) & Dynamic System Development Method (DSDM) Extreme Programming (XP) Feature Driven Development (FDD) Unified Processes: Agile Unified Process (AUP) Open Unified Process (OpenUP)/Basic Essential Unified Process (EssUP) Scrum 71

RAD Evolutionary development, with time boxes: fixed time frames within which activities are done; Time frame is decided upon first, then one tries to realize as much as possible within that time frame; Other elements: Joint Requirements Planning (JRD) and Joint Application Design (JAD), workshops in which users participate; Requirements prioritization through a triage; Development in a SWAT team: Skilled Workers with Advanced Tools 72

DSDM Dynamic Systems Development Method, #1 RAD framework in UK Fundamental idea: fix time and resources (timebox), adjust functionality accordingly One needs to be a member of the DSDM consortium 73

DSDM phases Feasibility: delivers feasibility report and outline plan, optionally fast prototype (few weeks) Business study: analyze characteristics of business and technology (in workshops), delivers System Architecture Definition Functional model iteration: time-boxed iterative, incremental phase, yields requirements Design and build iteration Implementation: transfer to production environment 74

DSDM practices Active user involvement is imperative Empowered teams Frequent delivery of products Acceptance determined by fitness for business purpose Iterative, incremental development All changes are reversible Requirements baselined at high level Testing integrated in life cycle Collaborative, cooperative approach shared by all stakeholders is essential 75

Extreme Programming (XP) Everything is done in small steps The system always compiles, always runs Client as the center of development team Developers have same responsibility w.r.t. software and methodology 76

13 practices of XP Whole team: client part of the team Metaphor: common analogy for the system The planning game, based on user stories Simple design Small releases (e.g. 2 weeks) Customer tests Pair programming Test-driven development: tests developed first Design improvement (refactoring) Collective code ownership Continuous integration: system always runs Sustainable pace: no overtime Coding standards 77

Differences Developers Lightweight (Agile) Knowledgeable, collocated, collaborative. Heavyweight Plan-driven, adequate skills, access to external knowledge. Customers Requirements Architecture Size Dedicated, knowledgeable, collocated, collaborative, representative, empowered Largely emergent, rapid change Designed for current requirements Smaller teams and products Access to knowledgeable, collaborative, representative, empowered customers Knowable early, largely stable Designed for current and foreseeable requirements Larger teams and products Primary objective Rapid value High assurance 78

Heterogeneity Old days: Software development department had everything under control Nowadays: Teams scattered around the globe Components acquired from others Includes open source parts Services found on the Web 79

Producing software means using software! Builders build pieces, integrators integrate them Component-Based Development (CBSD) Software Product Lines (SPL) Commercial Off-The-Shelves (COTS) Service Orientation (SOA) 80

Software engineering is a balancing act, where trade-offs are difficult Solutions are not right or wrong; at most they are better or worse Most of maintenance is (inevitable) evolution SD project control concerns: time, information, organization, quality, money There are many lifecycle models Agile projects do less planning than document-driven projects 81

Homework Which SE model is the most suitable for the assignment project and why? Write down your development plan Use RUP Software Development Plan template Read chapters 1,2 & 3.1-3.2 82

Software Engineering (3 rd Ed.) 1. Introduction 2. Introduction to Software Engineering Management 3. The Software Life Cycle Revisited 4. Configuration Management 5. People Management and Team Organization 6. On Managing Software Quality 7. Cost Estimation 8. Project Planning and Control 9. Requirements Engineering 10. Modeling 11. Software Architecture 12. Software Design 13. Software Testing 14. Software Maintenance 17. Software Reusability 18. Component-Based Software Engineering 19. Service Orientation 20. Global Software Development 83