Team programming

Team programming

In software engineering, team programming is a project management strategy for coordinating task distribution in computer software development projects, which involves the assignment of two or more computer programmers to work collaboratively on an individual sub-task within a larger programming project. In general, the manner in which this term is used today refers to methods currently in vogue within the software development industry where multiple individuals work simultaneously on the same activity; in these systems, programmers are often grouped in pairs at the same computer workstation, one observing the other working on the software and alternating roles at time intervals.

Traditional team management methods

Traditional software development has nearly always involved multiple programmers working on separate parts of a computer system for any project of significant scope and scale -- a method of division of labour. Clearly, it is unreasonable to imagine that a single programmer could adequately complete all the required work for a complex system working entirely on their own within a viable timescale; and as development projects become more complex, specialised expertise becomes of paramount importance in aspects such as systems analysis, quality assurance, and technical challenges posed by individual components. Initially this tended to be an informal process, but with the rise of commercial software development as a viable industry, a more industrial and systematic approach became necessary.

Paper-orientated systems methodologies originally designed for undertaking governmental projects, such as the Structured Systems Analysis and Design Method (SSADM), assigned individual people to carry out individual tasks, and specified the role of designers as being clearly separate from that of the programmers in the waterfall software development model. This methodology also clearly separated each of the individual "life-cycle" stages through which a system development project progressed. The resulting "paper trail" for a systems development project could take so long to build that often parts of the analysis documentation -- or sometimes its entirety -- was out of date by the time of actual development, rendering them worse than useless.

Modern trends: multiple programmers to one sub-task

Difficulties were experienced with these older methods, such as costs spiralling out of control as systems grew, and schedules failing to meet time-to-market targets. These issues gave rise to techniques such as pair programming, along with new systems lifecycle structures such as the Boehm spiral. Specification of these new approaches began in the mid-1980s and continues today. Many of these strategies involve multiple programmers working collaboratively on the "same" piece of source code as opposed to being "individually" responsible for individual tasks. For example, in "pair programming", responsibility for the resulting product is equally shared between two programmers who work on their assigned sub-task together. Benefits of this approach include the ability for deficiencies in knowledge and ability in specific areas to be compensated for by the other programmer; in addition, the shared responsibility is thought to increase incentives for meeting project deadlines and quality targets.

This technique is frequently used in newer programming methodologies that are focused around object-oriented programming techniques, such as the Rational Unified Process and Extreme Programming (acronym "XP"), often in combination with design documentation methods such as the Unified Modelling Language (UML). In object-oriented programming languages, software functionality forms modular, discrete units (termed classes for the functional elements, and packages for constellations of interlinked classes that carry out a particular function); the two most well-known of these are C++ and Java. This lends itself well towards the division of programming projects into sub-teams, although issues are still often encountered in integrating the resulting product following completion of each sub-task.

References


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать реферат

Look at other dictionaries:

  • Programming language theory — (commonly known as PLT) is a branch of computer science that deals with the design, implementation, analysis, characterization, and classification of programming languages and programming language features. It is a multi disciplinary field, both… …   Wikipedia

  • Programming productivity — refers to a variety of software development issues and methodologies affecting the quantity and quality of code produced by an individual or team. Key topics in productivity discussions have included:* Amount of code that can be created or… …   Wikipedia

  • Team Sleep (album) — Infobox Album Name = Team Sleep Type = studio Artist = Team Sleep Released = May 9, 2005 (Europe) May 10, 2005 (United States) Recorded = 2002–2004 Genre = Alternative rock, ambient, experimental, electronic Length = 53:59 Label = Maverick… …   Wikipedia

  • Team Galaxy (TV series) — infobox television show name = Team Galaxy caption = The Young Trio (Yoko, Brett and Josh) format = Animated series| runtime = approx. 22 minutes director = Stephane Berry starring = Katie Griffin Tabitha St. Germain Kirby Morrow Cathy Weseluck… …   Wikipedia

  • Team Sportscast Network — The Team Sportscast Network, or TsN, was an online broadcast and media organization. TsN was originally named the Tribes Shoutcast Network and was founded in 1999 by the players and Tribalwar members Megaboris, Wonderdog, Beatstick, and… …   Wikipedia

  • Computer programming — Programming redirects here. For other uses, see Programming (disambiguation). Software development process Activities and steps …   Wikipedia

  • Modular programming — Programming paradigms Agent oriented Automata based Component based Flow based Pipelined Concatenative Concurrent computin …   Wikipedia

  • Extreme Programming — (XP), auch Extremprogrammierung, ist eine Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Diese Vorgehensweise definiert ein… …   Deutsch Wikipedia

  • Extreme programming — (XP), auch Extremprogrammierung, ist eine agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Die Extremprogrammierung… …   Deutsch Wikipedia

  • Xtreme Programming — Extreme Programming (XP), auch Extremprogrammierung, ist eine agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und dabei einem formalisierten Vorgehen geringere Bedeutung zumisst. Die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”