The main objective of devising new software development techniques is to develop a software product that:
- Is bug-free
- Delivered on schedule
- Using limited resources i.e. a smaller software development team
Young programming managers prefer a small and sharp team of highly skilled people rather than a large team of people with a medium level of skills required. This type of a software development team is good enough for the product development as long as it's not a large-scale project with a defined schedule.
Although the programming managers have the capacity to recognize wide productivity variations between good and poor programmers, the actual scenario is rather astonishing. No correlation has been found between the performance and the experience of a programmer as there still exists a variation with respect to the performance even among the group of experienced programmers.
In order to achieve the main objective discussed above, the programming managers decided to apply brute force to the software development process, and the results were slow and costly development process with an end product that was not conceptually integrated. This led to only one conclusion; if a larger software development team with a lot of managers is involved in the development of a software product, then fire two-thirds of the team and let the managers get involved into the software development process itself.
Following cases were being discussed in this chapter:
CASE #1: Teams consisting of more than ten programmers requires two levels of management and increased number of financial and other types of resources.
CASE #2: Larger software development teams applying brute force in software development process failed to produce the demanded system.
CASE #3: Smaller teams were more efficient, requiring fewer resources but were found to be slow when developing larger systems.
These cases are the reason for desiring a few good minds doing design and construction for efficiency and conceptual integrity and for larger systems, to set aside considerable manpower to bear its production process while delivery the end product according to the defined schedule.
Mills's proposal suggested a more efficient way to develop the software product:
- Split a large problem into smaller segments.
- Divide these segments among teams.
- Only one member of the team i.e. Cheif Programmer then further splits the segment into even smaller parts.
- The rest of the team works on the given part and supports each other.
- Surgeon (i.e. Chief Programmer): Given the problem segment, the surgeon is responsible for driving its problem specifications:
- Functional Requirements
- Non-Functional (i.e. Performance) related Requirements
- Co-Pilot:
- He is a less experienced team member as compared to a surgeon but is still able to do any part of the job.
- He is responsible for representing his team.
- Sharing, evaluation, and discussion of design among the team members are also a part of the Co-Piolet's responsibilities.
- He is responsible for keeping track of the code generated by the team and may even take part in writing the code himself but is not responsible for any part of the code.
- He is to cooperate with the rest of the teams.
- He acts as an insurance against the disasters that might occur during the development of the software.
- Administrator:
- Control of all the resources required for the development of the software is under an administrator.
- He is to play his role as a full-time employee for projects with potential otherwise can also act as an administrator for two or more project.
- Editor: recruits the script provided by the surgeon with more details and references.
- 2-Secritaries: are required for assistance by the administrator and the editor. They are responsible for handling project correspondence and non-project files.
- Program Clerk:
- Program Clerk is also trained with the secretaries due to the possession of the same responsibilities as that of the secretaries.
- Maintenance of all the data is his major responsibility.
- His objective is to identify all the programs and the data to be used during the development of the software.
- Publication of the data required by the team is to be done by the program clerk.
- Ensures proper performance of often neglected tasks, and teams valuable assets, its work-products.
- Duties of a program clerk may change but do not end.
- Tool-Smith:
- Ensure the adequacy of the basic services such as file editing, text-editing and interactive debugging services etc.
- The tool-smith develops, customizes, maintains and updates the special tools - mostly interactive computer services required by the team for the development of the software product.
- Tester:
- Acts as an adversary, devising system test cases from the given functional specifications.
- Acts as an assistant, devising test data for the day-by-day debugging of the generated code.
- He is responsible for planning test sequences and setting up the scaffolding required for the component test.
- Language Lawyer:
- Primarily a system designer who delights in the mastery of the intricacies of a programming language and thinks representation.
- He is responsible for consultancy required by the client with regards to the software product.
- He can guide a neat and efficient way to use the language to do difficult, obscure, or tricky things.
- One language lawyer can serve two or more surgeons.
Comparison of the surgical team with the conventional team:
Conventional Team
|
Surgical Team
|
Design and implementation did individually by the team members
|
Design and implementation are done with the involvement of the entire team
|
Team partners are equal i.e. possess equal rights of judgment.
|
Collective decision was taken at each step of software development
|
Resources divided among team members
|
Saves the labor of allocating space and disk access etc.
|
Costly
|
Cost efficient
|
Possible communicational gaps leading to failure in software components integration
|
Software components integration easily possible
|
Comments
Post a Comment