Composition of the program team
The program team refers to the collection of personnel in the software development process, which is a collection of all participants developed within a certain period of time during the software life cycle. The roles included are:
Project Manager (Leader)
Market staff (Product Descriptor)
System Analysis (System Analysis)
Software / Hardware Designer (Software / Hardware Desinger)
Tester (Tester)
User (CUSTOMER)
Software developer organizes structural examples
There are two main classes that can be found in the literature, one is collaborative organization, and the other is leader organization.
Collaborative organizational characteristics are a number of status, such as software groups, test groups, and quality assurance groups. They help each other, but also mutual restrictions, and teams have certain autonomy, in team internal affairs including design and work. Relatively flexible. Leading organizations is characterized by the specific transactions of software development being responsible by leaders in one or several people. Other teams completed the leaders' tasks. From this perspective, collaboration and leaders are complementary, there is no absolute collaborative organization and absolute leader. The standards of dividing these two types of organizational structures are to see the main status of collaboration during software development, or leadership accounts for main positions.
The typical leader organization is a "surgical" team. The team served as a leader (Primary Designer), a secondary designer as a backup and staff of Leader, a helper responsible for daily management, one to two dataman and several auxiliary programmers. It is characterized by clear and efficient. Disadvantages is that it is not conducive to personal creativity and requires high requirements for Leader.
Another common leading organization is "layered management". The team leads by a head lead, the team consists of several groups leading by senior programmers. The team of this structure is often divided into groups, such as software groups, hardware groups; also by transaction, forming a module development group. Group collaboration is coordinated by the total person in charge.
The classmate organization is a "free software" development model. Since the developer of free software is unsure prior, the leader's functions (allocation tasks) do not exist. The leader in free software is actually just an administrator and a powerful programmer. His status and functions may change in collaboration. The development model of free software seems to be confusing, there is no rules, but often produces a very efficient development team. This is also an inevitable product of software developers working together to coordinate each other. The disadvantage of this organization mode is obvious. Software development is high. Whether the team can effectively rely on team self-regulation capabilities, this adjustment is almost unpredictable at time and cost. Its advantages are to give full play to the creativity of software developers, and the software team is more energetic.
Collaborative organizations with leadership intervention are common in commercial development teams, which is a variant of layered management. Here, the responsibilities of the leaders are reduced, and this part of the responsibilities are completed by the discussion and coordination between the groups. Or there is no general leader, which is completely coordinated by the group. It can be said that it is a collaboration based on leader organizations, but collaboration is leading.