Date post: | 20-Feb-2015 |
Category: |
Documents |
Upload: | balaram-papana |
View: | 239 times |
Download: | 0 times |
1
Basic Concepts of Software Project Management-
An Overview of Software Project Management
Presenter
Ambili P K
2
A successful software project results in a software that customers are happy with and can use to their benefit.
The project team works together and is responsible for achieving project success.
overall responsibility of project success lies with the project manager, who performs the project management activities required to co-ordinate team efforts.
What is project success?
What is project success?
Project management activities should aim at ensuring that the project meets the following.
It is completed within the scheduled time.
It is completed within the budgeted cost.
It results in a good-quality product that fulfills customer requirements.
3
4
Project Management Activities
The following project management activities are performed to achieve project success.Planning: The project manager plans the project such that if the plan is followed, project success is ensured. Monitoring and control: The project manager manages project execution to ensure that work is done as per the plan. This helps to ensure that the project is completed successfully.
Understanding the project scope
5
The project manager needs to clearly understand the scope of a project in order to plan effectively.
The project scope identifies the purpose of the software product or system.
The scope of the project must be well defined and bounded.
Understanding the project scope
6
Without clarity about the scope, the project manager would not know what to plan for. An unclear scope leads to problems in interpretation,miscommunication, and ambiguities.
Defining the components and activities is necessary to plan the project.
Lack of clarity about the scope can render planning ineffective.
Estimation
7
Estimation is the first step of planning.
The project manager needs to estimate for a project after understanding the project scope.
In a software project, the effort required is the main component of cost.
8
In the initial stages, estimation is done for:
The effort required for the project
The overall schedule for delivering the product being built.
Estimation
Factors Affecting Estimation
9
Estimation is based on an understanding of the work to be done. The work depends on:
• The characteristics of the product being built, such as its size and complexity
• The factors that affect the project, such as the development environment and the constraints
Note: Even good estimation cannot be expected to be within +/- 20 percent of the actual results—at least in the beginning of a project—because there are many changes in most projects.
Schedule and Cost Constraints
10
Effort and schedule estimates should be based on the work to be done.
One of the most common problems faced by project managers is that they are expected to finish the project within an impractical time frame.
This approach can be explained using a three-layer depiction of software engineering.
Software Engineering Layers
11
In order to estimate the effort and the schedule for a project, we need to understand the work to be done in the project. A project is executed using a defined process, and the relevant methods, technology, and tools.
Software Engineering Layers
12
The layers can be described as given below:
• Process: A definition of the activities, tasks, milestones, work products, and quality assurance (QA) checkpoints required to accomplish software engineering work
• Methods: A description of the technical methods (for example, design methods) that enable software engineers to do their work
• Tools: A description of automated support for the process and the methods
Common Process Framework
13
To reduce the time and effort required to define the process for each project separately, some organizations establish a common process framework (CPF).The CPF is a generic and comprehensive process that can be adapted for any project being executed in the organization
14
Common Process Framework
Activities of a CPF (Contd…)
15
A CPF contains two broad sets of activities—Framework and Umbrella. Framework Activities are major software engineering functions.
A generic set of framework activities is communication, planning, modeling, construction, and deployment.
Activities of a CPF (Contd…)
Umbrella Activities are essential activities that encompass the entire process.
For example, software project management, formal technical reviews (FTR), software quality assurance (SQA), software configuration management (SCM), documentation preparation and production, reusability management, measurement, and risk management are all umbrella activities
16
Activities of a CPF (Contd…)
17
Adapting the CPF
18
Each of the framework and umbrella activities within the CPF applies to every project.
Within each activity, the actions and the task set for each action are selected based on the project characteristics.
Modern implementations of CPF provide the adaptation as a menu-driven facility, which captures the project characteristics and uses them to select the recommended task sets.
Planning using process definition
19
A process definition is required for planning because it gives information about the tasks that have to be performed.
The activities in the process definition impact the plan.
SCMSCM encompasses all the tasks required to manage and control changes. Because changes happen throughout the software project, SCM is an umbrella activity.It impacts project planning in terms of the people and skills required, project organization, estimation of the total effort, identification of specific activities, the inclusion of these activities in the schedule, and the mechanisms to monitor and control these activities.
20
Planning for Quality Incorporating quality in a product is something that has to be done all through the process.Therefore, SQA, which consists of tasks such as setting standards and processes and conducting formal technical reviews, is another umbrella activity that impacts planning. The project manager should plan for SQA activities throughout the software process and also decide as to how much of the total project effort should be spent on quality-related activities such as reviews.
Planning Considerations
While planning, a project manager determines the work to be done and assesses how best it can be done within the cost and schedule constraints
Planning Considerations
The aspects that the project manager needs to consider while planning are as given below.The people: What skills are required in the people? How do we organize people into an effective team? How does the team interact with other interested parties?The product being built: Is the scope of the project clearly defined and understood? Are the necessary skills and resources available to achieve the scope?The process: Has an appropriate process model been selected? Has the process been adapted to the needs of the product and the project? Have the software engineering activities, umbrella activities, checkpoints, and milestones been defined?
Preparing a project scheduleA schedule specifies the start date, the end date, and the resource requirement for each task.Scheduling is a part of detailed planning. It is a complex activity that is well supported by tools.
Documenting a plan
The planning done is documented as a software project plan.The project plan defines a roadmap for a project and provides a practical way in which the project objectives can be achieved. It specifies the resources needed for the project and how they will be used.
Documenting a plan The Institute of Electrical and Electronics Engineers (IEEE) definition of a project plan indicates what a documented project plan is intended for and what it should address. IEEE standard defines a project plan as:‘ A document that describes the technical and management approach to be followed for a project. The plan typically describes the work to be done, the resources required, the methods to be used, the procedures to be followed, the schedules to be met, and the way the project will be organized.‘
Contents of a Project Plan The plan should contain sufficient information to provide an understanding of the technical as well as the management approach to be followed in the project. It should typically include the following components:
The scope of the work to be done An estimate of the resources required The way the project will be organized The processes, procedures, standards, and
methodologies to be used The schedule
Reviewing the Project Plan Planning is done at the beginning of a project so that all the resources required for the project are identified and the work is done using a systematic and pre-determined approach right from the beginning. Planning also ensures that each individual involved with the project understands what is expected and how the individual roles fit into the project.Typically, the plan is reviewed and approved by the senior management and other stakeholders.
Monitoring and control Monitoring progress against the plan is essential to be able to find deviations, take corrective actions, and stay on track.
The intention of monitoring is to detect deviations from the plan and to identify new problems, risks, and changes in project characteristics that may affect plans.
Monitoring helps the project manager in identifying the areas that require replanning. The information obtained by monitoring is used to control the project.
The basis for monitoring Monitoring is based on the administrative and technical information collected by the project manager. Administrative informationTime sheetsWeekly or monthly reportsMeetings with team members Technical informationReview reportsTest reportsReports from the configuration managerInformal discussions with the team members
Monitoring and control Monitoring progress against the plan is essential to be able to find deviations, take corrective actions, and stay on track.
The intention of monitoring is to detect deviations from the plan and to identify new problems, risks, and changes in project characteristics that may affect plans.
Monitoring helps the project manager in identifying the areas that require replanning. The information obtained by monitoring is used to control the project.
Project control The information gathered during monitoring is used for performing two types of project control activities.
Administrative controlTechnical control
Project control Administrative controlRevising the schedule to accommodate the current project status based on the actual progressDeveloping a schedule for the tasks that are underway or are yet to be started such that the product delivery date is metTaking other measures to increase productivity and manage risksRequesting for additional resources or a change in the product delivery date
Project control Technical control
Controlling the quality of the product through a series of SQA activities Controlling the impact of change through a series of SCM activities
Measurement and project management
Measurement is an essential aspect that helps a project manager in planning and monitoring a project. It provides factual data on which decisions and plans can be based. It provides factual data on which decisions and plans can be based. Without measurement, the project manager would not have a basis for planning and cannot evaluate whether the progress is satisfactory.
Basic Concepts of Software Project Management-
Project Scheduling
Introduction
A project schedule is a very important part of a project plan.
It is created as part of the detailed planning and forms the basis for actual work allocation and monitoring.
What a Schedule is ?
A schedule is necessary for actual project execution. The schedule helps in the distribution of the estimated effort across the planned project duration. It also helps to establish the sequence in which tasks should be performed.A predefined set of activities such as Common Process Frame work (CPF) and WorkBreak down Structure (WBS) can be used for scheduling.
Approaches followed for scheduling
Two broad approaches are followed for scheduling. These approaches are as given below.Scheduling based on a fixed delivery date: A schedule is developed to help achieve the required delivery date. Typically, the delivery date is as required by the client or is driven by business needs. For a project requiring incremental deliveries, the schedule developed has to cater to these deliveries. Scheduling based on the available resources: A schedule is developed that optimally uses the available resources and helps to achieve the delivery date (not fixed) within the approximate time frame that has been discussed.
Importance of a schedule
A schedule is a very important part of a project plan. The schedule: Forces the project manager and the team to plan all the work tasks, the milestones such as the quality assurance (QA) checkpoints, and the work products against specific calendar dates. Helps the project manager to identify tasks in such a way that each task can be allocated to a team member who will be responsible for it. Establishes a basis for monitoring the progress of the project and helps to check at any point in time whether the required tasks are complete, that is, it provides a clear and unambiguous way for agreeing on the satisfactory completion of a task.
The principles of scheduling
Based on the practice given on the preceding page, we can say that the four principles of scheduling are:
Compartmentalize or decompose a project into manageable tasks. Allocate appropriate time for each task. Define responsibilities for each task. Define an outcome for each task.
The principles of scheduling (contd.)
The other important principles of scheduling are:
Identify the interdependence of tasks: Building a software project is a complex activity and involves problem solving by team effort using interrelated tasks. Some tasks cannot be initiated unless their predecessors are completed, that is, these tasks are dependent on other tasks. Identifying the interdependence of tasks helps in defining the sequence of tasks and when a task can start.
The principles of scheduling (contd.)
The other important principles of scheduling are:
Define milestones based on the completion of a set of tasks: Defining project milestones based on the completion of a set of tasks forms the basis for monitoring the work performed during a project and help both the project team and the stakeholders outside the project to check the progress of the project.
The principles of scheduling (contd.)
The other important principles of scheduling are:
Validate the effort: Validation of effort utilization, at any given point of time in a project, helps the project manager to ensure that the resources utilized in the project are in accordance with the allocated resources.
Granularity while scheduling
The main aspect to be considered while doing this is the task granularity, that is, the timeline resolution of work tasks.
The granularity is important because it determines how 'manageable' a task is and how the work is scheduled, managed, and controlled.
If the granularity is very fine, it makes the tasks too bulky to report and monitor and generates unnecessary data.
On the other hand, if the granularity is too broad, it is difficult to control the project in time
Therefore, tasks must be compartmentalized with the right granularity so that the interdependencies between tasks can be identified,
Defining milestones and the associated deliverables
Another important aspect of scheduling is the identification of milestones. A milestone is achieved if the following are completed: oA work product or a portion of a work product has been created. oThe deliverable has undergone a QA check. oThe deliverable has passed the QA check. oAll the concerned parties agree that the deliverable has passed the QA check. oThe exit condition has been achieved to move on to the next step.
Creating a Schedule
To create a schedule, we require the following:A list of the tasks to be performed in a project Details about the effort and the resources required for each task and its interdependence on other tasks
Steps for creating a schedule
The steps followed to create a schedule are as given below:Define the process to be followed for the project. Identify the tasks for the project by defining the work breakdown structure (WBS) based on the processand the product. Estimate the effort and the time for each task, and define its interdependencies.Create a schedule for the defined tasks using the data gathered. (Use an automated tool, to enter the data about the tasks and their dependencies and create a task network. Then, adjust the network to conform to the required delivery date.)
Steps for creating a schedule
The importance of the critical path
The critical path in the schedule is very important because a delay in any task on this path affects the project schedule.
Some salient points regarding the critical path are:A project can have more than one critical path. A delay in a task on the critical path delays the project. A delay in a task that is not on the critical path does not delay the project if it is within the time limit of the tasks on the critical path. However, beyond this limit, the critical path might change to include the delayed task, and any further delays would delay the project.
Effort allocation for a schedule
Establishing a schedule requires estimating the effort for each task.
The estimation models used to estimate project effort provide a gross figure for the entire project, which needs to be distributed across the various tasks in the project.
The 40-20-40 rule
A common rule of thumb used in software projects for dividing effort in phases is the 40-20-40 rule.Front-end analysis and design are allocated 40 percent of the total effort. Coding is allocated 20 percent of the total effort. Back-end testing is allocated the remaining 40 percent of the total effort.
The 40-20-40 rule is not an exact rule but is indicative of the relative importance of the various software project activities. It makes the point that coding is not a dominant phase. The current trend is that front-end activities should use more than 40 percent of the total project effort.
Project scheduling tools
Project scheduling tools enable a project manager to define work tasks, establish their dependencies, assign human resources to tasks, and develop a variety of graphs, charts, and tables that aid in tracking and controlling the software project
Automated tools typically take in task data and generate outputs in a variety of formats, based on the selection criteria.
They can store the plan, and sometimes even multiple versions of the plan.
They can also store data on the actual progress that can be used to generate reports that show the slippage, if any.
Rescheduling is also possible by using these tools.
Using project scheduling tools for analysis
Project scheduling tools allow managers to experiment with scheduling assumptions. They enable them to do a 'what if' analysis such as: If more or fewer resources are available, how would the project schedule be impacted? If a particular delivery deadline has to be met, what is the resource requirement? If some tasks are constrained (they need to start or finish by some specific date), what is the schedule? If resource utilization has to be optimal, what is the delivery date? If a task estimate is changed, what is the impact on the delivery date? If the delivery date cannot be impacted, which tasks can be delayed and by how much?
Information gathered for tracking
Some questions that a project manager should consider for tracking are:
What tasks have been started or completed? What tasks were planned to start or complete? What variances exist on the work completed to date? What problems exist, and what can be done to resolve them? What is the estimated time and cost to complete the project? Is it on schedule and within the estimated budget?
Information gathered for tracking
Tracking is done by using various information-gathering tools, both formal and informal.
Typically, timesheets and weekly reports from team members are useful for understanding the status of tasks and the amount of effort used.
Basic Concepts of Software Project Management –
Team Organization
Introduction
Software products are built through software projects that are executed by project teams.
The members of a project team work together and perform complex activities to complete a project.
People involved in a software project
The people involved in a software project play an important role in determining its success. They can be categorized as given below. Senior management: Oversees the project and defines the business issues involved Project management: Focuses on achieving the project objectives. It uses the resources assigned to it to plan, organize, and control the project and motivate the team. Practitioners: Perform the required technical activities, as part of the project team, to build the software product Customers: Specify the requirements for the product to be built End users: Use the product once it is ready
The project manager and the team
The project team performs the following activities under the leadership and guidance of a project manager. The software engineering activities required to build a product The umbrella activities required to support the building of a product, throughout the life of the project
Project leadership
The project manager should be able to: •Motivate the team members so that they perform to the best of their ability. •Organize processes and resources so that the project objectives are achieved. •Encourage people to be innovative within the prescribed limits of the project and based on the project characteristics.
Traits of a project manager •Problem solving: To diagnose the technical and managerial issues that are relevant, to systematically structure a solution or motivate practitioners to develop a solution, to apply lessons from the past, and to be flexible in solving problems •Managerial identity: To take charge of the project, to control the project, and to provide technical people the assurance that they can follow their instincts •Achievement: To achieve productivity by suitably rewarding initiative and accomplishment and not punishing controlled risk taking •Influence and team building: To communicate well, to understand and react to verbal and non-verbal signals, and to remain in control in high-stress situations
Roles of team members • Analyst • Designer • Programmer • Tester • SQA specialist • Configuration controller/librarian • Toolsmith • Specialist/area expert
Alternative team structures •It is important to choose a team structure that is suitable for a project so that the team can work effectively.
The three important team structures are: •Democratic decentralized •Controlled centralized •Controlled decentralized
Democratic decentralized • A democratic decentralized team structure emphasizes problem solving and decision-making through group consensus.
•The task coordinators are selected based on their suitability for the task and change from task to task.
•The team members share the overall project responsibility.
•Communication among the team members is horizontal, that is, on the same level.
Democratic decentralized • The team structure is democratic because the team members have equal status, and it is decentralized because authority and power is not centralized in one leader but is shared by the team
Controlled centralized
•This is a hierarchical structure with a clear leadership role.
• The reporting and communication channels are clearly defined—they are vertical and fairly rigid.
•The project manager has a very strong role in such a team structure.
Controlled centralized
•The controlled centralized structure ensures that there is no ambiguity of roles and responsibilities and people work in a structured manner. •It is particularly effective for large and long-duration projects. Problem solving is focused, and the responsibilities are clear and compartmentalized.
Comparing team structures
•While the democratic decentralized team uses a small and competent team and is very effective for small projects, it is, however, not effective for really large projects.
•On the other hand, the controlled centralized team is suitable for very large projects but may lose out on creativity and conceptual integrity.
Controlled Decentralized
•In the controlled decentralized team structure the whole team focuses on problem solving under the leadership of a technical leader. •The focus of the activities in a controlled decentralized team structure is on technical issues and problem solving and not on administration.
Controlled Decentralized
The characteristics of a controlled decentralized team are as given below.
•There is a technical leader who coordinates the major technical tasks. •The technical leader identifies secondary leaders who are responsible for the subtasks. •The entire team works on problem solving.
Controlled Decentralized
The characteristics of a controlled decentralized team are as given below.
•There is a technical leader who coordinates the major technical tasks. •The technical leader identifies secondary leaders who are responsible for the subtasks. •The entire team works on problem solving.
•A controlled decentralized team is like a surgical team.
Roles in a controlled decentralized team structure
one of the first team structures defined was a controlled decentralized structure, which is also known as the 'chief programmer team'. This team structure has the following roles. The senior engineer The backup engineer The technical staff The support staff Specialists and area experts The software librarian
Description
Also called the chief programmer or the technical lead, the senior engineer acts as the technical leader who plans, coordinates, and reviews all technical activities.
•Senior Engineer
•Backup Engineersupports and learns from the senior engineer, and acts as a backup who can replace the senior engineer, if required,
with very little loss in project continuity.
•Technical Staff
The technical staff typically includes two to five people. They solve the major functional elements of a problem, possibly in a compartmentalized manner, under the leadership of the senior engineer.
The support staff includes people such
as technical writers and clerical staff, who support the engineers
•Support Staff
•Specialists & Area Experts
provide input for specific areas. They supplement the team's technical knowledge and area knowledge in specific and relevant areas such as communication and database design.
•Software Librarian
The software librarian acts as the configuration controller for the team.
Communication in a controlled decentralized structure
• There is no rigid organizational structure in a controlled decentralized organization.• The communication among subgroups and individuals is horizontal.• The subgroups may talk to each other without involving the team leader or requiring any concurrence of the team leader.
Selection of a team structure
• Project managers need to select the structure of their team based on the project requirement.•The broad aspects that should be considered while selecting a team structure, so that it is suitable for a project, are:The management style of the project manager The culture and approach of the organization The skills and personalities of the team members The problem characteristics The project characteristics
Project factors for selecting a team structure
• The seven project factors that should be considered while selecting a team structure are as follows:
Difficulty of the problem to be solved by the project Estimated size of the product to be built Duration of the project (team longevity) Degree to which the problem can be modularized Quality and reliability requirements of the system to be built Rigidity of the delivery date Amount of communication required for problem solving
Jelled teams
• A jelled team is one that has a common definition of project success and an identifiable team spirit. It also has a common team culture.• In a jelled team, you can expect the whole to be greater than the sum of its parts. The people in such a team are motivated and significantly more productive than in an average team.
Self-Directed Team
• A self-directed team comprises individuals who have worked together in the past, have good technical skills, and have a desire to collaborate with one another.•Team members have an overall perspective of the project in the context of the organization and can take decisions as a group. •The team members also elect the persons who have handled any interface with external parties, including coordination and reporting. •The role of a project manager is handled by an elected member and involves loose leadership instead of firm and hierarchical direction and control.
Communication
• One of the most important aspects of working as a team is coordination and communication. There are many possible approaches for effective communication. These approaches differ in:The degree of formality—the communication can be formal or informal. The media used—the medium of communication can be oral, written, electronic, etc. The number of people involved—the communication can be one-to-one, one-to-many, discussions, etc.
Communication
The degree of formality—the communication can be formal or informal. The media used—the medium of communication can be oral, written, electronic, etc. The number of people involved—the communication can be one-to-one, one-to-many, discussions, etc.