Team programming: Difference between revisions

Content deleted Content added
m fix incorrect link to island using AWB
Lightbot (talk | contribs)
Units/dates/other
Line 11:
== 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 (programming language)|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.