"Software Engineering Project Management" by Richard Thayer Cal. State University, Sacramento 2000 CEN5016: Software Engineering © Dr. David A. Workman January 16, 2007 Reference Sources Software Engineering Project Management,2nd. Edited by Richard Thayer and Edward Yourdon IEEE Computer Society, 2000 January 16, 2007 Dr. David Workman 2 Functions of Management Weihrich: " Management performs the same functions (below) regardless of the position in the organization or the enterprise being managed." "Management functions are characteristic duties of managers; management practices, methods, activities, and tasks are specific to the enterprise or the job managed." Management Planning Organizing Staffing Selecting and training people for positions or roles in the organization. Directing Controlling Establishing, measuring, and evaluating performance of activities toward planned objectives. Arranging the relationships among work units for the accomplishment of objectives and the granting of responsibility and authority to obtain these objectives. Creating an atmosphere and environment that will assist and motivate people to achieve desired end results. Predetermining a course of action for accomplishing organizational objectives. January 16, 2007 Dr. David Workman 3 Planning a Project Activity Description Set Objectives and Goals Determine the desired outcome for the project. Develop Strategies Decide major organizational goals and develop a general program of action for reaching those goals. Develop Policies Make standing decisions on important recurring matters to provide a guide for decision making. Forecase Future Scenarios and Situations Anticipate future events or make assumptions about the future; predict future results or expectations from courses of actions. Conduct Risk Assessment Anticipate possible adverse events and problem areas; state assumptions; develop contingency plans; predict results of possible courses of action. Determine possible courses of action. Develop, analyze, and/or evaluate different ways to conduct the project. Make planning decisions Evaluate and select a course of action from among alternatives. Establish procedures and rules Establish methods, guidelines, and limits for accomplishing the project activities. Develop project plans Establish policies, procedures, rules, tasks, schedules, and resources necessary to complete the project. Prepare budgets Allocate estimated costs to project functions, activities, and tasks. Document project plans Record policy decisions, courses of action, budget, program plans, and contingency plans January 16, 2007 Dr. David Workman 4 Planning a Project Types of Plans Description Objectives The project goals toward which activities are directed. Strategic The overall approach to a project that provides guidance for placing emphasis and using resources to achieve the project objectives. Policies Directives that guide decision making and project activities. Policies limit the freedom in making decisions but allow some discretion. Procedures Directives that specify customary methods of handling activities; guides to actions rather than guides to decision making. Procedures detail the exact manner in which a project activity must be accomplished and allow very little discretion. Rules Requirements for specific and definite actions to be taken or not taken with respect to particular project situations. No discretion is allowed! Plan The interrelated set of goals, objectives, policies, procedures, rules, work assignments, resources to be used, and other elements necessary to conduct a software project. Budget A statement of the constraints on resources, expressed in quantitative terms such as dollars or staff-hours. January 16, 2007 Dr. David Workman 5 Organizing a Project Activity Description Identify and group project functions, activities, and tasks Define, size and categorize the project work. Select organizational structures Select the appropriate organizational structures to accomplish the project and to monitor, control, communicate, and coordinate. Create organizational positions Establish title, job descriptions, and job relationships for each project role. Define responsibilities and authority Define responsibilities for each organizational position and the authority to be granted for the fulfillment of those responsibilities. Establish position qualifications Define qualifications for persons to fill each position. Document organizational decisions Document titles, positions, job descriptions, responsibilities, authorities, relationships, and position qualifications. January 16, 2007 Dr. David Workman 6 Organizing a Project Project Tasks Organizational Entity Determine software system requirements. Partition and allocate software requirements to software components. Develop software architecture design Identify and schedule tasks to be done. Software System Engineering Establish and maintain external and internal interfaces Control the software development process. Verify and validate the software process and product. Analyze software components for product-k requirements Design components of product-k Implement product-k software components Software Engineering Application (k) Prepare documents Support verification and validation Prepare software verification and validation plan Conduct verification and validation activities Software Verification & Validation Prepare and support software testing Establish software quality assurance plan Conduct software quality activities Software Quality Assurrance Document results of software quality activities January 16, 2007 Dr. David Workman 7 Organizing a Project Functional Project Organization System Engineering Software Engineering Team #1 General Management Software Engineering Team #1 Verification & Validation SW Quality Assurance Personnel in each organizational unit perform the same function – basically they have the same job descriptions although they may vary in experience and leadership roles. When a work product is produced or reviewed by members of one organizational unit, it is passed to some other organizational unit for further development or review. There is no single project supervisor over the whole project, but there is typically a project coordinator and/or customer/user liason. January 16, 2007 Dr. David Workman 8 Organizing a Project Project Oriented Organization Project #1 Manager Program Management Project #2 Manager Project #2 Manager System Engineering Staff #1 System Engineering Staff #2 System Engineering Staff #3 Software Engineering Staff #1 Software Engineering Staff #2 Software Engineering Staff #3 V&V Staff #1 V&V Staff #2 V&V Staff #3 SQA Staff #1 SQA Staff #2 SQA Staff #3 The organization is organized around projects – each project headed by a Project Manager that has the responsibility to hire, discharge, train, and promote people within the project. Each project has its own staff organized around similar personnel functional roles. January 16, 2007 Dr. David Workman 9 Organizing a Project General Management Matrix Organization System Engineering Software Engineering Team #1 Software Engineering Team #2 Verification & Validation SW Quality Assurance Project A SysEng SWEng SWEng VVEng SQEng Project B SysEng SWEng SWEng VVEng SQEng Project C SysEng SWEng SWEng VVEng SQEng SysEng SWEng SWEng VVEng SQEng Personnel in each functional unit are assigned to work on a given project – some may not be assigned to any project (pool resources). Each project is managed by a Project Manager who has authority over work assignments, but does not have authority to hire, discharge, train, or promote personnel – this authority resides in the manager of each functional unit. This structure is more efficient in its use of human resources but frequently results in management control conflicts. January 16, 2007 Dr. David Workman 10 Organizing a Project Types of Project Teams – Egoless Programming Teams. Typically consists of 10 – 12 members. Discussions and decisions are made by consensus. Group leadership rotates; there is no permanent central authority. Obsolete– Chief Programmer Team. Typically consists of three or four permanently assigned members – the chief, the assistant (or backup), the librarian, and perhaps other assistant programmers. The Chief manages all technical aspects of the project and makes all managerial and technical decisions. The librarian maintains all documents, code, and data, and performs all administrative work. Most – Hierarchical Team. Typically consists of a senior project leader overseeing two Common or more junior leads who, in turn, oversee a small group of software engineers. Obsolete Cardinal Rule of Project Management: On any team of five (5) or more individuals, the team leader (manager) is a full-time job and should not expect to carry any share of the technical work. January 16, 2007 Dr. David Workman 11 Staffing the Project Staffing Issues – Project managers are frequently selected for their ability to perform engineering tasks rather than their ability to manage a group of people. – The productivity of various technical people varies greatly from individual to individual (as much as 25:1). Similarly, teams may vary as much as 4:1. – High turnover rate among personnel (especially in a Matrix Organization) – Universities are not producing a sufficient number of computer science graduates who understand the software engineering process or project management. – Training plans for individual software developers are not developed or maintained – and training is usually too little and too late. January 16, 2007 Dr. David Workman 12 Staffing a Project Activity Description Fill organizational positions Select, recruit, or promote qualified people for each project position. Assimilate newly assigned personnel Orient and familiarize new people with the organization, facilities, and tasks to be done on the project. Educate or train personnel Make up deficiencies in position qualifications through training and education. Provide for general development of the organization Improve knowledge, attitudes, and skills of the project personnel. Evaluate and appraise personnel Record and analyze the quantity and quality of project work as the basis for personnel evaluations. Set performance goals and appraise personnel periodically. Compensate personnel Provide wages, bonuses, benefits, or other financial remuneration commensurate with project responsibilities and performance. January 16, 2007 Dr. David Workman 13 Directing a Project • Major Issues – Failure to have effective communication – Money is not a sufficient motivator for software developers. – Companies and managers do not have the proper tools and techniques to motivate software engineers. – Customers and manager do not recognize the potential software impact caused by a seemingly trivial change, for example, they believe it is "just a simple matter of programming." January 16, 2007 Dr. David Workman 14 Directing a Project Activity Description Provide leadership Create an environment in which project members can accomplish their assignments with enthusiasm and confidence. Supervise personnel Provide day-to-day instructions, guidance, and discipline to help project members fulfill their assigned duties. Delegate authority Allow project personnel to make decisions and expend resources within the limitations and constraints of their roles. Motivate personnel Provide a work environment in which project personnel can satisfy their psychological needs. Build teams Provide a work environment in which project personnel can work together toward common project goals. Set performance goals for teams as well as for individuals. Coordinate activities Combine project activities into effective and efficient arrangements. Facilitate communication Ensure a free flow of correct information among project members. Resolve conflicts Encourage constructive differences of opinion and help resolve the resulting conflicts. Manage changes Stimulate creativity and innovation in achieving project goals. Document directing decisions Document decisions involving delegation of authority, communication and coordination, conflict resolution, and change management. January 16, 2007 Dr. David Workman 15 Directing a Project Motivational Models And Techniques Description Frederick Taylor Workers will respond to an incentive wage. Elton Mayo Interpersonal (group) values override individual values. Personnel will respond to group pressure. Kurt Lewin Group forces can overcome the interests of an individual. Douglas McGregor Managers must understand nature of people in order to be able to motivate them. Abraham Maslow Human needs can be categorized in a hierarchy. Satisfied needs are not motivators. Frederick Herzberg A decrease in environmental factors is dissatisfying; an increase in environmental factors is not satisfying; an increase in job content factors is satisfying. Chris Argyris The greater the disparity between company needs and individual needs the greater the dissatisfaction. Rensis Likert Participative management is essential to personal motivation. Arch Patton Executives are motivated by the challenge of work, statis, the urge to achieve leadership, the lash of competition, fear, and money. Theory Z A combination of American and Japanese management style. People need goals and objectives, otherwise they can easily impede their own progress and the progress of their company. TQM (Total Quality Mgmt) A strategy for continually improving performance at each level and area of responsibility. January 16, 2007 Dr. David Workman 16 Directing a Project Self Actualization Esteem and Recognition Social Needs Security and Safety Biological Survival Maslow's Hierarchy of Human Needs January 16, 2007 Dr. David Workman 17 Staffing a Project Job Attractors Job Dissatifiers Salary Company Mismanagement Chance to Advance Poor Work Environment Work Environment Little Feeling of Accomplishment Location Poor Recognition Benefits Inadequate Salary Facilities/Equipment Poor Chance to Advance Job Satisfaction Poor Facilities/Equipment Company Management Poor Benefits Job Responsibility Poor Career Path Definition January 16, 2007 Dr. David Workman 18 Controlling a Project • Major Issues – Measuring progress by budget expenditures without consideration of work accomplished. – Progress is not always visible nor quantifiable. – Quality is optional, not monitored or measured, nor controlled. – Standards and procedures are not written down or not enforced. – The body of knowledge represented by "software metrics" is not fully developed, particularly when applied to software quality. January 16, 2007 Dr. David Workman 19 Controlling a Project Activity Description Develop Standards of Performance Set goals that will be achieved when tasks are correctly accomplished. Establish Monitoring and Reporting Systems Determine necessary data, who will receive it, when will they receive it, and what will they do with it to control the project. Measure and Analyze Results Compare achievements with standards, goals, and plans. Initiate Corrective Actions Bring requirements, plans, and actual project status into conformance. Reward and Discipline Praise, remunerate, and discipline project personnel as appropriate. Document and Control Methods Document the standards of performance, monitoring and control systems, and reward and discipline mechanisms. January 16, 2007 Dr. David Workman 20 Controlling a Project Method of Monitoring a Project Description Formal (milestone) Reviews Periodic, preplanned reviews of work products by developers, customers, uses, and management in order to assess progress. Budget Reviews A comparison of estimated budget with actual expenditures in order to determine compliance with or deviations from plan. Independent Auditing An independent examination of a software project for the purpose of determining compliance with plans, specifications, and standards. Binary Tracking System A method of measuring progress on a work package by accepting only 0 or 100% completion. SQA (Software Quality Assurrance) A planned and systematic pattern of all actions necessary to provide adequate confidence that the development process and the work products conform to established standards. Unit Development Folder A specific form of development notebook that provides an orderly approach to the development process and ensures the work products of a software project conform to established standards. Configuration Management A method for controlling and reporting on the status of work products generated by the project. Testing The controlled exercise of the program code in order to expose errors. Verification & Validation The process of assuring that each phase of the development life cycle correctly implements the specifications from the previous phase and that each work product satisfies its requirements. Walk-throughs and Inspections Systematic examination of software work products by the producer's peers, conducted for the purpose of finding errors. January 16, 2007 Dr. David Workman 21