Skip to main content

The Surgical Team - Summary

The main objective of devising new software development techniques is to develop a software product that:
  1. Is bug-free
  2. Delivered on schedule
  3. 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:
  1. Split a large problem into smaller segments.
  2. Divide these segments among teams.
  3. Only one member of the team i.e. Cheif Programmer then further splits the segment into even smaller parts.
  4. The rest of the team works on the given part and supports each other.
Mills not only proposed a process for developing the software product but also suggested the actors, a team of 10 members should consist of and their roles:
  • 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
A surgeon is provided with a complete access to the computing system, where using the Structure Programming Language he can derive the problem specifications, run and save versions of tests, easily update files and text edited documents.
  • 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

Popular posts from this blog

Software Architecture Views and Structures

Description of Views: In the year 1995 Kruchten presented his 4+1 architectural view model consisting of the following five types of views: Logical Development Process Physical Scenario Later with further development and research in the domain of architectural view following new views were developed to represent their respective structures: Views Sub-View of Description Logical None Highlights the functionalities provided by the system to the end-users. Unified Modeling Language (UML) diagrams such as the Class diagram, Domain diagram, Use Case diagram, State diagrams and Activity diagrams can be used to represent the logical view of the architecture. Development None It is also known as an implementation view. It is mainly concerned with the software project management. It represents the system with the programmer’s perspective. Process None It deals with the representation of...

Overview of MISRA C++ (2008)

Introduction Software to Control Autonomous Car MISRA C ++ is a software development standard for C and C++ programming language that aims to facilitate code portability and reliability in the context of embedded systems, specifically those systems programming in ANSI C. Its mission is:  “   To provide assistance to the automotive industry in the application and creation within vehicle systems of safe and reliable software ” MISRA - A Brief History In 1998 MISRA targeted only the automotive industry but later released it focus on generic rules for developing safety-critical applications such as: anti-lock braking system  (ABS), and auto-pilot software system etc. No major changes have been made to the MISRA C++ standard after the version released in the year 2008. Every autonomous vehicle developed can only be allowed for commercial or industrial use if each of its hardware and software component adheres to the required standards. ...

How traceability of non-functional requirements is managed throughout the software development process?

1. Requirements Traceability: Requirements traceability is the process of describing and keeping track of a set of requirements throughout the system’s lifecycle. The process assists in managing changing requirements of a particular software product. Requirements traceability of is two types, forward traceability where a particular requirement involved during the design and implementation phases of the software system, and backward requirement traceability where a particular requirement is being traced back to its source. 2. Proposed Solutions for the Traceability of Non - Functional Requirements : The author J. Merilinna [8], proposed a framework supported by a tool to trace the non-functional requirements in both forward and backward direction. The proposed method is based on the context of DSM (Domain Specific Modeling).  The NFR+1 framework involved are used for the elicitation, definition and redefinition of the system’s non-functional requirements. The...