Software Engineering Unit 1 Software: a) Instructions (Computer Programs) that when executed provide desired features, function, and performance. b) Data structures that enable the programs to adequately manipulate information. c) Documents that describe the operation and use of the programs.
Definition Software Engineering: . “Software engineering is the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed and modified on time and within cost estimates”. Goals of Software Engineering The primary goals of Software Engineering is 1. To improve the quality of software. 2. To increase productivity. 3. To increase the job satisfaction of software engineers. Software engineering engineering is based on the following disciplines 1. Computer Science. 2. Management Science. 3. Economics. 4. Communication Skills. 5. Engineering approach to problem solving. Software Engineering is a labor intensive activity activit y where high degree of communication is required among 1. Customers. 2. Managers. 3. Software Engineers. 4. Hardware Engineers. 5. Other related technologists.
Terms: Programmer: Denote an individual who is concerned with details of implementing, packaging and modifying algorithms, data structures, returning programming languages. Software Engineers: Concern with the issues of 1. Analysis 2. Design 3. Verification &Testing 4. Documentations 5. Software maintenance 6. Project Management
Computer Software: It includes the Source code and all the associated documents and documentation that constitute the software product.
Components of Software products 1. Requirements Documents 2. Design specification 3. Source code 4. Test Plans 5. Principles of Operation 6. Quality assurance procedure 7. Software problem reports 8. maintenance procedures 9. User’s manual 10. Installation Instruction 11. Training Aids. Documentation:
Explains the characteristic of the documents. Internal Documentation of source code - it describes the characteristics of the code. External Documentation --- it explains the characteristic of the documentation associated with code.
Developer:
Developer or Software Engineer is used interchangeable. Customer:
An individual or organization. Software Reliability:
The ability of a program to perform a required function and their stated conditions for a stated period of time.
Some Size Factors: Total effort devoted to software:
H / w S / W c o s t R a t io 150
t s
100
o c f o
50
%
0 year In 1960 the ratio was approximately 80% Hardware cost and 20% Software cost.In 1980 the ratio was reversed. 80 % for software cost and 20% for Hardware cost. The reason is the transistors; Intetpreter circuits have resulted in dramatic decreases in Hardware cost. Distribution of Effort: Life cycle of Software 1. Analyze & Design 2. Implement 3. Test 4. Adapt 5. Enhance 6. Fix The life span of software products is one to 3 years for development 5 to 15 years for maintenance. Software maintenance involves 3 activities. 1. Enhancing the capability of the product. 2. Adapting the products to new processing environments 3.Correcting bugs.
Distribution of Maintenance:
Enhanc e
40 35 30 25 20 Analyze
Test
15
Adap
Fi x
Implem
10
t
5 0
1. Enhancement — 60% 2. Adaptation — 20% 3.Correction ---20% Distribution of effort for development phase 1.Analysis & Design — 40% 2.Implementation, Debugging, unit testing – 2 0% 3.Integration & Acceptance testing — 40% From observations, Software maintenance activities consumed more resources than software development activities. A large percentage of total effort is devoted to software enhancement. Testing requires half the effort during software development. Activities of system testing, enhancement, adaptation consumed ¾ the of total life cycle effort.
Project Size Categories Project Size: - Project size is a major factor that determines the level of management control and the types of tools and techniques required on a software project. There are certain categories of projects depending on the size. 1) Trivial Projects :1. It involves one programmer often working part time. 2. Time spent is few days or few weeks. 3. The program will contain up to 500 lines of code. 4. The software would contain 10 to 20 subroutines 5. They are mostly personal software for exclusive use of the programmer. 6. Very little need for Formal analysis, elaborate design documentation or extensive planning. 2) Small Projects :1. Involves one programmer. 2. Duration of 1 to 6 months. 3. The program can contain 1000 to 2000 lines of code. 4. The total project may contain 25 to 50 routines. 5. They usually do not have interaction between other programs. 6. Generally used for small commercial applications including report gen eration and simple data manipulation. 7. There is negligible interaction between the programmer and customer. 3) Medium size Projects :1. They involve 2 to 5 programmers. 2. Time spent is between 1 to 2 years. 3. Lines of code range from 10,000 to 50,000 LOC. 4. Number of routines used ranges from 250 to 1000. 5. They include assemblers, compliers, process control systems, inventory systems, small MIS software etc. 6. It requires medium interaction between programmers and customers. 7. A certain degree of formality is required in Plan ning, Documentation and Project reviews. 4) Large Projects :1. Requires 5 to 20 programmers. 2. Project duration lies between 2 to 3 years. 3. It can consist of 50,000 to 100,000 LOC. 4. The entire project is a combination of several subsystems. 5. The modules in the project have significant interaction between other programs and software systems. 6. It requires multilevel management. 7. Examples are large compilers, small time sharing systems, graphics software for data acquisition and display, real time control Systems etc. 8. These projects can involve extensive planning, analysis, risk estimation, standardized documentation, formal reviews etc.
5) Very Large Projects :1. It may require 100 to 1000 programmers. 2. Its duration may range from 4 to 5 years. 3. The number of software source instructions may reach 10 lakh LOC. 4. The entire project is divided in to several major subsystems that extensively interact with each other. 5. The subsystems are very complex and are developed separately under expert guidance. 6. The prominent feature of these kinds of projects involves real-time processing, telecommunication and multitasking. 7. Examples include large operating systems, Mega database systems, and Military command & control systems. 6) Extremely large projects :1. They employ 2000 to 5000 programmers. 2. Time period ranges nearly 10 years. 3. There are 1 million to 10 million LOC. 4. The entire project is an integration of seve ral extremely large systems which further consist of several large subsystems. 5. These projects involve mainly real time processing, telecommunications, multitasking and distributed processing. 6. Examples include Air traffic control systems, Ballistic missile defense systems, Military command & control systems etc.
Quality and Productivity factors during Software Development Following are the factors that affect the quality and productivity 1) Individual ability 2) Team communication 3) Product complexity 4) Appropriate notations 5) Systematic approaches 6) Controlling changes 7) Level of technology 8) Required reliability 9) Available time 10) Problem understanding 11) Stability of requirements
12) Required skills 13) Facilities and resources 14) Adequacy of training 15) Management skills 16) Appropriate goals 17) Rising expectations 1) Individual ability: - Production and maintenance of software is a labor intensive activity. So these factors are direct functions of individual ab ility and effort. There are two aspects to ability a) The general competence of the individual and b) Familiarity with the particular application area. 2) Team communication : - The new approach towards software development requires many individuals to be involved. Many recent Innovations in software engineering, like design reviews, structured walkthroughs and code reading exercises improve communication Between the programmers. 3) Product complexity : - There are three generally acknowledged levels of product complexity – a) Application programs, b) Utility Programs and c) System level programs. Application programs have the highest productivity and Systems programs have the lowest Productivity, measured in terms of LOC per programmer day. 4) Appropriate notations : - The representation schemes are of fundamental importance. Good and standardized notations can clarify the relationships and interactions, of any specific interest. 5) Systematic approach : - Following certain standard systematic approach in procedures and techniques makes the software development Process very professional and contribute in improving the qualit y of the software product. 6) Controlling change : - The factors that contribute the factor of change in software are a) Design deficiencies in hardware, b) Change in requirements due to poor understanding of problem, c) External economic and political factors etc. To minimize the change the following suggestions can be utilized a) Use of appropriate notations and standard techn iques, b) Scope of the mechanism to change i.e. flexibility provided to the software, c) During planning process the strategies for controlled changes should b e included, etc. 7) Level of technology : - As the level of technology is changing rapidly hence modern programming languages should be used during Development. Modern programming languages provide – a) Improved facilities for data definition & data usage,
b) User-defined exception handling, c) Concurrent programming etc. Also varied tools are provided such as assemblers and primitive debugging facilities integrated under a single fully integrated development environment. 8) Level of reliability : - High reliability can be achieved b y taking great care during – a) Analysis, b) Design, c) System testing and d) Maintenance. Both human and machine resources are required to increase reliability. Too much reliability causes decreased productivity when measured in LOC produced Per Programmer Month. 9) Problem understanding : - Failure to understand the problem can result in an unsuccessful project. There are some suggestions for Avoiding these problems – a) Careful planning, b) Customer interviews, c) Task observation, d) Prototyping, e) Precise product specifications etc. 10) Available time: - Programmer productivity is sensitive to the, calendar time available for project completion. It is observed that the development time cannot be compressed below 75 percent of the nominal development time. Extending a project beyond some nominal Duration increases the total effort required. 11) Required Skills : - The practice of SE required variety of skills. The requirement definition and design activity are conceptual in nature hence require good creative problem solving skills. Debugging requires deductive or detective kind of skills. Preparations of external documents require good writing and expressive skills. Software Engineers should have good social skills to interact properly with the managers, customers and other en gineers. 12) Facilities and resources : - Through various studies it had been found that workrelated factors such as – a) Good machine, b) Quite place of work, c) Plenty of access to the machine d) Creative challenges, e) Variety of tasks, f) Opportunities for professional advancement etc., creates more satisfaction among the programmers rather than status factors. 13) Adequacy of training : - It is seen that the fresher’s from college do not have the following skills, which are very necessary for becoming a successful software engineer – a) Express oneself clearly in English b) Develop & validate software requirements and design specifications. c) Work with in application area. d) Perform software maintenance. e) Perform economic analysis. f) Work with project management techniques.
g) Work in groups. Hence adequate of training is required for entr y-level programmers. 14) Management Skills : - As the concept of SE is new hence the managers who work in traditional styles are unable to properly manage the SE activities. Also it is seen that during giving promotions if the competency of the candidate is only measured in the technical point of view then there may arise the same kind of problem. So the management skills in a candidate should also include technical and managerial Competency. 15) Appropriate goals : - Setting of appropriate goals is a major contributing factor in successful execution of a project. Generally the mo st common goals include a) Generality, b) Efficiency and c) Reliability. High productivity and quality factors can be achieved by adhering to the goals and requirements established for the software during Project planning. 16) Rising expectations : - Progress is constantly being made in the development of tools and techniques to improve software quality and programmer productivity, equally diversity, size and complexity of software applications are growing at a fast rate but also the expectations and increasing demands. Hence it’s necessary to adhere to the latest that is happening. 17) Stability of requirements : - The requirements of a software project includes a) Manpower, b) Software and c) Hardware. The requirements definition is done during problem analysis phase whe re the amount and type of resources are predicted. In this point if the analysis and prediction is not based on facts, expert guidance and experience from previous projects, then the requirements would change throughout the development process and may extend to maintenance phase. Un-stability of requirements increases the cost, degrades overall quality and reduc es the productivity. Hence great care should be taken during the initial phase of problem identification & problem analysis. Other factors: - There are several other factors that influence the productivity – a) Familiarity to the programming environment, b) Amount and type of access to the computing system, c) Stability of the computing system, d) Memory & timing constrains, e) Experience in that particular area of interest, f) Data-base size etc.
Managerial Issues : Ideal or expected activities of Managers in a firm – 1. Managers should control the resources and the environment in which technical activities occurs. 2. They also have ultimate responsibility for ensuring that software products are d elivered on time and within cost estimates. 3. They have the responsibility of ensuring that the software products exhibit the functional and quality attributes desired by the
Customer. 4. The managers are responsible for project management which includes methods for organizing and monitoring the project progress. 5. Organizing and monitoring a project includes – a) Cost estimation, b) Resource allocation policies, d) Budgetary control, e) Setting project milestones, f) Making schedule adjustments, g) Establishing quality assurance procedures, h) Establishing effective communication between project members, i) Customer communications, j) Development of contractual agreements with customers taking in to view legal obligations and responsibilities.
Planning a Software Project: (i ) Problem Definition There is a need to prepare a concise statement of the problem to be solved and the constraints that exist for its solution in customer’s terminology. Problem definition requires understanding of the problem domain and the problem environment. Techniques for gaining this knowledge include – a) Customer interviews, b) Observation of the problem tasks, and c) Actual performance of the tasks developed by the planner. Here the planner should not be biased in any way and should certainly be technically experienced. After preparing the solutions the successive task includes the determination of the a) Appropriateness of the computerized solution, b) Cost-effectiveness, c) It should avoid displacing existing workers as it may not b e acceptable in the society. Etc. Requirement analysis and Goal determination:Goals: 2) Goals are targets for achievement and serve to establish the frame work for a software development project. 3) Goals apply to both the development process and the work products. 4) Goals can be either qualitative or quantitative. They have the following categoriesa) Qualitative process goal :- the development process should adhere to quality observed under quality assurance. b) Quantitative process goal :- the system should be delivered with in a fixed time. c) Qualitative product goal :- the system should make the user’s job more easy & interesting. d) Quantitative product goal :- the system should reduce the cost of transaction by about 25 %. 5) Other common goals include a) transportability, b) early delivery, c) ease for nonprogrammers etc.
Requirement: They include – a) Functional aspects, b) Performance aspects, c) Hardware aspects, d) Software aspects, e) User interface, etc. They also specify development standards and qual ity assurance standards for both project process and product. Special efforts should be made in the process of developing meaningful requirement statements and methods that will be used to verify those statements. During goal determination and requirement analysis the quality attributes of the software has to be taken in to consideration. According to IEEE standards following are the desired quality attributes of a software product:1) Portability , 2) Reliability, 3) Efficiency, 4) Accuracy, 5) Error, 6) Robustness, 7) Correctness. (ii) Developing a Solution Strategy
1) A solution strategy is not a detailed solution plan. It’s a general statement of solution concerning the nature of possible solutions. 2) A solution strategy should account for all external factors that are v isible to the product users. 3) A strategy should be phrased to permit alternative approaches to product design. 4) Several strategies should be considered before one is adopted. 5) Solution strategies should be generated without regard for feasibility because it’s not possible to be both creative & critical at the same time. 6) Often the best strategy is composite of ideas from several different approaches. And the best solution strategies may become apparent only after all the obvious solutions have been enumerated. 7) The feasibility of each proposed solution strategy can be established by examining solution constraints. Constraints prescribe the boundaries of the solution space. 8) A solution strategy is feasible if the project goals and requirements can be satisfied with in the constraints of available time, resources and techno logy using that strategy. 9) When recommending a solution strategy its extremely important to docu ment the reasons for rejecting other strategies, this provides justification for the recommended strategy and may prevent ill-considered revisions at some later date. A solution strategy should include a priority list of product features. There are several important reasons for stating product priorities. At some later time in the development c ycle it may be necessary to postpone or eliminate some system capabilities due to inconsistencies in the requirements, technical bottlenecks or time and cost overruns.
(iii) Planning the Software Development Processes What is a Life cycle model?
Is a description of the sequence of activities carried out in an Software project and the relative order of these activites. Define,develop,test,deliver,operate & maintain
PROJECT PLAN=LIFECYCLE MODEL+PROJECT PARAMETERS There are100s of different lifecycle models to choose from. (a) Phased Life cycle model (b) Milestones,Documents & Reviews (c) The cost model (d) The Prototype life cyle model (e) Successive version models
(a)Phased Life cycle model:
It is a simplest model, which states that the phases are organiz ed in a linear order. It is widely known
Analysis Phase: Planning – The main aim of the feasibility study activity is to determine whether it would be financially and technically feasible to develop the product. The feasibility study activity involves the analysis of the problem and collection of all relevant information relating to the product such as the different data items which would be input to the system, the processing required to be carried out on these data, the output data required to be produced by the system as well as various constraints on the behavior of the system. Requirement – The aim of the requirement analysis is to understand the exact requirements of the customer and to document them properly. The requirement analysis activity is begun by collecting all relevant data regarding the product to be developed from the users of the product and from the customer through interviews and discussions. During this activity, the user requirements are systematically organized into a software requirement specification (SRS) document. The important components of this document are the functional requirements, the nonfunctional requirements, and the goals of implementation. The SRS document is written in end-user terminology. This makes the SRS document understandable by the customer. After all, it is important that the SRS document be reviewed and approved by the customer.
Design Phase: This phase is concerned with Identifying software components like functions, data streams and data stores. Specifying software structure. Maintaining a record of design decisions and providing blue prints for the implementation phase The are two categories of Design a) Architectural Design – It involves Identifying the software components. Decoupling and decomposing the software components into modules and conceptual data structures. Specifying the interconnection between the various components. b) Detailed Design – It is concerned with details of the implementation procedures to process the algorithms, data structures and Interaction between the modules and data structures. The various activities that this phase includes are Adaptation of existing code. Modification of existing algorithms. Design of data representation and Packaging of the software product. This process is highly influenced by the programming language under the implementation would be carried out. This stage is different from implementation .
Implement Phase:
It involves the translation of the design specifications into source code. It also involves activities like debugging, documentation and unit testing of the source code. In this stage various styles of programming can be followed like built-in and user defined data types, secure type checking, flexible scope rules, exception handling, concurrency control etc.
Testing Phase: It involves two kinds of activities 1. Integration Testing – It involves testing of integrating various modules and testing there overall performance due to their Integration. 2. Acceptance Testing – It involves planning and execution of various types of tests in order to demonstrate that the implemented software system satisfies the requirements stated in the requirements document.
Maintenance Phase: – In this phase the activities include * Corrective Maintenance – Correcting errors that were not discovered during the product development phase. * Perfective Maintenance – Improving the implementation of the system, and enhancing the functionalities of the system according to customer’s requirements. * Adaptive Maintenance – Adaptation of software to new processing environments.
Advantages of Phased Life cycle model (Water Fall model) 1. All phases are clearly defined. 2. One of the most systematic methods for software development. 3. Being oldest, this is one of the time tested models. 4. It is simple and easy to use. Disadvantages of Phased Life cycle model(Water Fall model) 1. Real Projects rarely follow sequential model. 2. It is often difficult for the customer to state all requirements explicitly. 3. Poor model for complex and object oriented projects. 4. Poor model for long and ongoing projects. 5. High amount of risk and uncertainty. 6. Poor model where requirements are at a moderate to high risk of changing. 7. This model is suited to automate the existing manual system for which all requirements are known before the design starts. But for ne w system, having such unchanging requirements is not possible.
(b). Milestones,Documents & Reviews:
· Another view of the software lifecycle g software importance to the milestones, documents and reviews. · Ask the software products evolves through the development phase it is difficult for themanager and team members to determine resources extended to predict schedule delays extra. · Establishing milestones, reviews points, documents and management sign offs can improve project visibility. · The development process becomes more public activity and tangible. · This result is improved · Product quality · Increased programmer productivity. · Better moralae among team members.
(i)PFR -Product feasibility review Refer table 2.5 and 2.6
PFR is held to determine the feasibility to project continuation. The outcome of review may be Termination of the project.
Redirection of the proect. Or continuation of the project as planned.
(ii) SRR - Software requirements reviews Is held to make sure the adequacy of 1. system definition 2. project plan 3. software requirements specification 4. software verification plan 5. preliminary user’s manual.
Software design specification: The design team creates this specification in two stages 1. Architectural design document is created. 2. Following that the preliminary design review is held then the detailed design specification is generated.
A preliminary design review(PDR) Is held to evaluate of adequacy of the architectural design insatisfying the SPS(software Product specification) Another reviews may be required to resolve problems under format sign offs is required of the project manager.
Critical design review: Is held CDR is used determine the acceptablility of the software design specification. A format sign offs is required.
During the design phase , the software verification plan is expanned to include method: To verify that the design is complete and consistent with respect to the requirements. To verify that the source code is complete and consistent with respect to the requirements and design specification.
A software verification review is held to evaluate the adequacy and completeness of the verification plan:
To review the primilinary acceptance test plan(ATP) ATP includes Actual test cases Expected result. Capabilities to be demonstrated by each test. The acceptance plan is initiated during the design phase and completed during the implementation.
During the implementation phased:
Source code is written.
Debug. Unit tested. Standard parcties in the following area Logical structure Coading style Data layout Comments Debugging Unit testing
Source code reviews are held during implementation: This is to ensure that all the code has been reviewed by atleast one person other than programmer. Inspection are conducted during product evaluation to verify the completeness, consistency and suitability of the work products. The users manual the installations and training plans and the software maintenance plans are completed during the implementation phase. A final acceptance review is performed pr ior to product delivery’. Software verification summary is prepared. It describes the results of all the reviews, audits,inspection and test throughout the development cycle.
A project legancy is written: The legancy summarises the project a record of what went well and what went wrong during the project.
and
provides
(C). The cost model: This model is used specify the cost of performing various activities in a Software Project.
· The cost of conducting a Software project is the sum of the cost involved in conducting each phase of the project. The cost involved each phase includes: · The cost of performing the process · Preparing the products of the phase. · Plus the cost of verifying the product of the present phase is complete and consistent with the previous phase. · Cost of producing system definition and project plan =performing planning functions and preparing documents+ cost of verifying the system definition and project plan. · Cost of SRS= Cost of requirements definition and document + Cost of modifying system definition and project plan + Cost of verifying SRS is complete and consistence. · Cost of design= Cost of preparing design specification and test plan+ Cost of modifying and correcting the system definition, project, SRS(Software requirement specification)+cost of verifying design. · Cost of product implementation= Cost of implementing documenting, debugging and unit testing of source code+ Cost of user’s manual, verification plan, maintenance procedure, initialization and training instructions+ Cost of modifying and correcting system definition, project plan,SRS, design specification, verification plan+the Cost of verifying the implementation is complete and consistent. · Cost of system test= Cost of planning and conducting the test+ Cost of modifying and correcting the source code+ Cost of verifying the test. · Cost of maintenance Software= Cost of performing product enhancement +making adaptation to new processing requirements and fixing bugs.
(D) The Prototype life cyle model: Importance to the sources of product request, go/no go decisions points and the use of the prototypes. Prototype is a mock up or model of the Software product. A prototype incorporates components of the actual model. There are several reasons for developing a prototype.
Important reason: It illustrates input data formats, messages, reports and interactive dialogues for the customer. To explore technical problems in the proposed system. In situations where phased model of analysis, design, implementation is not appropriate.
(E) Successive version models Product development by the method of successive versions is an extension of prototyping. In which an initial products skeleton is refined in to increasing the level of capabilities It illustrates the analysis phase followed by interactive design, implementation and assessment of successive version. The dashed line indicates that the assessment of version I may indicate the need for the further analysis before designing version I+1. Version I is the prototype version of the software product. Versions one through N of the product or designed prior to any implementation activities. The dashed line indicates that implementation of the Ith version may reveal the need for further analysis send design before proceeding with implementation of version I+1
(IV) Planning an Organizational Structure: Contains various task The task include - Planning - Product development - Services - Publications - Quality assurance - Support and maintenance
Planning task identifiers:
External customers Internal product needs Conducts feasibility study.
Development Task Identifiers:
design implements debugs test and integrate the product
Service task provides:
Automated tools and computer resources for all other task. Performs configuration. Product distribution
Publication task develops:
User’s manual Initialization instruction Principles of operation Supporting documents
Quality assurance task provides
Independent evaluation of source code. Publications prior to releasing them to customer.
Support task:
Promotes the product. Trainers user. Installs the product.
Maintenance task provides:
(i)
Error connection Enhancement
Project Structure:
(a)Project format It involves assuming a team of programmers. Project team members do 1. Product definition 2. Design the product 3. Implement it 4. Test it 5. Conducts Project review 6. Preparing supporting document.
(b)Functional format: In this approach a different team of programmers perform each phase of the Project The work products pass from team to team as they evolved Functional format involves 3 teams 1. An analysis team. 2. A design team and implementation team. 3. Test formatting and maintenance team.
(c)Matrix format In this format each of the functions has its own management team. This format involves a group of specialist personnel concerned only with that function. Each development project has a project manager concerned only with that Project The Project manager generates and reviews documents. Each functional group participate in each Project Ex: software development team members belongs to the development function similarly testing belong the testing function.
(ii)Programming team structure: Every programming team must have an internal structure. Team structure depends on the nature of the Project and the product Basic team structure includes Democratic team All team members participate in all decisions. The chief programmer team: chief programmer is assisted and supported by other team members. Ex: doctors, surgeon Hierarchical team: In combines the aspects of the democratic team and chief programmer team. Each team should be limited to not more than 5 or 17 members for effective coordination and communication. Democratic team this teams was first described as egoless team. Group leadership rotates from member to member based on the task to be performed and the differing abilities of the team members. A Democratic team differs from an egoless team is that one team members is designated as team leader and occupies the position of first among equals. This is because a team functions best when one individual is responsible for coordinating team activities and for making final decision. Advantages: Opputunities for each team members to contribute to d ecision. To learn from one another Increased job satisfaction Non-threatening work environment. Disadvantages: Weakening of individual and authority. Chief programmer teams: this teams are highly structured. the chief programmer design the product. Implement critical parts of the product Makes all the major technical decision. Work is allocated to the individual programmer b y the chief programmers. A program librarian maintains program listing, design documents, test plans etc. in a central location. The chief programmer is assisted by an administrative program manager. Advantages: Centralized decision making. Reduced communication paths.
Hierarchical team structure: This structure occupies a middle position between the extremes of Democratic teams and chief programmer teams. The Project needed assigns, task, attends, reviews, detects problem areas, balances the word load the participate in technical activities. This structure limits the number of communication paths in the Project
Disadvantages:
The most technical competent programmer tends to be promoted in to management positions. Promotion of the best programmer have the two negative effects. Losing a good programmer. Creating a poor manager.