đź§­

ITPM - Final Exam

Week 1 - Intro

Why do software projects fail?

  1. People begin programming before they understand the problem (feel of making progress, start to code early and see early gains, more and more complex later and project bogged down, code too soon will lead to good project solving wrong problems).
  1. The team has unrealistic ideas about how much work is involved (too optimistic when solving problems).
  1. Defects are injected early but discovered late (project solves wrong needs, incorrect requirements, design/architecture/code can be tech-flawed, inappropriate test plan).
  1. Programmers have poor habits - and they don’t feel accountable for their work (bad source code managing, confusing code, devs don't test their code, the team doesn't have a good sense of what is called project health).
  1. Managers try to test quality into the software (rely too much on testers, programmer arrogance).

How can we make sure that our projects succeed?

  1. Make sure all decisions are based on openly shared information (transparency is needed, people need to feel comfortable when finding information, people who need something should have what they need, decisions are made with well-supported and explained).
  1. Don’t second-guess your team members’ expertise (managers need to trust team members, don't veto ideas if don't have good reasons).
  1. Introduce software quality from the very beginning of the project (review and test everything, but don't rely too much on review, the review is important).
  1. Don’t impose an artificial hierarchy on the project team (all members are equal, a manager should not assume something is more difficult than others, just ... not assume).
  1. Remember that the fastest way through the project is to use good engineering practices (managers and teams often want to cut important parts: estimation, review, requirements gathering, testing... but cutting them out → cost time and reduce quality).

Week 2 - Planning

Who needs software?

Most software is built-in organizations for people with specific needs

Who builds software?

Typically by software engineers

Project Manager in Project Management

The PM plans and guides the software project

Identifying Needs

The PM drives the scope of the project

Vision and Scope Document

Outline

Project Plan

Defines the work that will be done on the project and who will do it

Statement of Work

Is a detailed description of all the work products which will be created over the course of the project.

Resource List

A resource can be a person, hardware, room, or anything else that is necessary for the project but limited in its availability

Estimates & Project Schedule

Risk Plan

A risk plan is a list of all risks that threaten the project → having this will mitigate some/all risks

Week 3 - Estimation

What is estimation?

A Sound/Reasonable Estimate

A PM must have:

Assumptions make Estimates more Accurate

The team member make assumptions about the work to be done

Wideband Delphi

Is a process that a team can use to generate an estimate. The PM chooses an estimation team and gains consensus. WD is a repeatable estimation process as it consists of a straightforward set of steps that can be performed the same way each time.

  1. Choose the team: about 3-7 members, including a mod - who should be familiar with the Delphi process but should not involve in the outcome of the session. The PM should not be a mod, be in the estimation team instead.
  1. Kickoff Meeting: make sure everyone understands the process, scope, vision, documentations, needs... writes down assumptions, brainstorms, WBS, agreements.
  1. Individual Preparation: each member prepares their own plans - estimates, efforts required, assumptions...
  1. Estimation Session: during this, the team comes to a consensus on the effort required for each task in the WBS. Each fills out an estimation form containing their estimates. Then the rest of the time is about group discussion. Then the mod collects the forms, plots the sum of efforts for each form. The team then resolves any issues or disagreements. Each revises their estimates then, the mod plot again. Loop this until a consensus has been made.
  1. Assemble Tasks: the PM works with the team to collect the estimates from the team members that the end of the meeting and complies final tasks list, estimates, and assumptions.
  1. Review Results: the PM reviews the final task list with the estimation team.

Other estimation techniques: PROBE, COCOMO II, The Planning Game,

Week 4 - Project Schedules

What is a project schedule?

Is a part of the Project Plan and is a calendar that links tasks with the resources that will do them. The PM must have a WBS before + estimates.

Building a Project Schedule

  1. Allocate resources: for each task in the WBS, one or more resources are assigned. Choose person/people based on qualifications, familiarity, and availability. Take overhead into account when calculating the duration.
  1. Identify dependencies: a task can have a dependency = it involves something that is required by other tasks, one of the reasons is that they require the same resource. (4 combinations of Finish-Start)
  1. Create the schedule: the Gantt Chart can be used.
    1. Reconcile the schedule: once the resources are allocated, the final date can be calculated, if it's unacceptable, the Project Plan must be changed (more resources or the scope got cut down)
    1. Add review meetings to the schedule: progress reviews are held regularly to check the progress, milestone reviews are held for the PM to schedule in advance.
  1. Optimize the schedule: a critical path is a sequence of tasks that requires the minimum time to complete ⇒ any task that is only on the critical path will delay the project if it is delayed. A resource is over-allocated if more than 100% of resources are allocated simultaneously (if it is, it means there is a dependency between two tasks which was not discovered)

Don’t abuse buffers

Buffers are tasks added to the schedule with no specific purpose except to account for unexpected delays

Project Metrics

Week 5 - Reviews

When are reviews needed?

Types of Review: Inspections

Type of Review: Deskchecks

Type of Review: Walkthrough

Type of Review: Code Review

Type of Review: Pair Programming

Week 6 - Requirements

Software Requirements

Are documents that completely describe the behavior that is required of the software before the software is designed built and tested. The requirements analysts build the requirements specifications through requirement elicitation.

Discussion Summary

Discussion Summary Outline

  1. Project background: a. Purpose of project; b. Scope of project; c. Other background information.
  1. Perspectives: a. Who will use the system? b. Who can provide input about the system?
  1. Project Objectives: a. Known business rules; b. System information and/or diagrams; c. Assumptions and dependencies; d. Design and implementation constraints.
  1. Risks.
  1. Known future enhancements.
  1. References.
  1. Open, unresolved, or TBD issues.

Use Cases

Functional Requirements

Define the outward behavior required of the software project. The goal: is to communicate the needed behavior in as clear and unambiguous a manner as possible. Material: lists, bullets, equations, pictures, references to external documents, and any other material that is easy to understand.

Nonfunctional Requirements

Define characteristics of the software which do not change its behavior. About: how good is the software, how quickly, reliable.

Software Requirements Specification - SRS

Represents a complete description of the behavior of the software to be developed. It includes a set of use cases, all functional/non-functional requirements

Requirements vs Scope vs Design

Change Control

A method for implementing only those changes that are worth pursuing, prevent unnecessary or overly costly changes. It is an agreement between the team and the managers.

A change control board - CCB, is made up of the decision-makers, PM, stakeholders or users, and team members.

Process:

  1. Write down the potential benefit of the change
  1. If it’s worth, the PM updates the plan with new estimates
  1. The CCB will decide to continue with the changes or not.

Week 7 - Design and Programming

Review the Design

Version Control

Is a system that allows the programmers to keep track of every revision of all source code files.

There are two kinds: copy-modify-merge (multiple) and lock-modify-unlock (one person can modify any file at a time)

Refactoring

Unit Testing

Before a build is delivered, the software should be tested via unit tests to verify each unit functions work properly.

Programmers create suites of unit tests, which can be a small block of code containing a specific challenge.

Most people use a framework as its convenience: auto and reports.

Everyone is responsible for the quality

Many kinds of testing for many kinds of purposes.

Many programmers are confused about what exactly the testers do, then the PM should help to clarify for them.

Project Automation

Many quality problems happen because the team is inconsistent in the way of building the software or tracking the health of the code. Automation can reduce these errors: a version control, run unit tests, reviews tool.

Week 8 - Software Testing

Quality

Quality means “conformance to requirements”

Test Plans

Is to establish the list of tasks that, if performed, will identify all of the requirements that have not been met in the software.

Test Cases

Is a description of a specific interaction that a tester will have in order to test a single behavior of the software. Test cases are very similar to use cases, in that they are step-by-step narratives that define a specific interaction between the user and the software.

A typical test case includes:

Test cases must be repeatable.

Test Execution

Happen: after the alpha build is delivered, or when the programmers think the build is complete.

Alpha build: should be of high quality, ready for release.

There are many iterations:

  1. Focus on new functionality
  1. Focus on the changes
  1. Test again all the test cases.
  1. At least 2 loops of regression tests.

Defect Tracking

Is a program that testers use to record and track defects. Everything is recorded and tracked

Smoke Tests

Is a subset of the test cases that is typically representative of the overall test plan. Is to verify a proper deployment or non-invasive changes, or is ready to send to test. But it cannot replace actual functional testing.

Test Automation

Is a practice in which tests employ a software tool to reduce or eliminate repetitive tasks. But it is expensive to build, so consider it thoroughly.

Postmortem Reports

Is an overall account of the team’s exp in building the software, and of the exp of the users/stakeholders in working with the team. This is to highlight the team’s successes and identify any problems which should be fixed in future releases.

Week 9 - How to diagnose and fix a troubled software project

Lack of Leadership

It takes more than a talented and motivated team to make a successful project

Lack of leadership manifests itself in the team member suffering from:

The Mid-Course Correction

A change in project priorities throws the team into disarray

This usually comes from a lack of understanding of the scope of the project

When the engineers don't understand the users’ and stakeholders’ needs, they build the wrong software.

The Detached Engineering Team

There is an artificial wall between developers and users.

They simply don't understand each other and throw false assumptions.

Fixing Planning Problem

If lack of leadership ⇒ The Mid-Course Correction and the Detached Engineering Team are the problems.

Then: use the vision and scope document to define the needs, project plan to keep everyone informed, risk plan to keep the plan realistic.

Padded Estimates Generate Distrust

Programmers add extra time to their estimates, because of unknowns, or they have often been late in the past.

Then the PM needs the answer from them for their estimates, and the dev does not have good answers!

Self-Fulfilling Prophecy

The PM under pressure can impose the deadline and unrealistic estimates

Then the team works nights and weekends to meet the deadlines

The PM feels vindicated.

The team eventually gets frustrated and disillusioned.

Fixing Estimation Problems

Padded estimates and the self-fulfilling prophecy are estimation problems

Then: use a repeatable estimation process like Wideband Delphi, writing down assumptions, then be able to handle risks without padding the time

Working Backwards From a Deadline

The PMs approach a non-negotiable deadline for a project by working backward

Misunderstood Predecessors

The PM doesn't take the time to understand how task depends on others.

Problems are discovered partway through the project.

Delays cascade through the project

Some devs are stuck waiting with nothing to do, while other works overtime

Fixing Scheduling Problems

Working backward and misunderstood predecessors are symptoms of underlying scheduling problems

Then: adopting good planning and estimation practices and creating a project schedule, some techniques as critical path analysis can help.

Problems Are Found Too Late

There are preventable defects in the software that aren't caught until late.

Big, Useless Meetings

The PM who has the big problems before try to avoid falling into the same trap, then he:

The Indispensable “Hero”

One critical person is seen as the clear top programmer, and all-important work is sent through him.

Fixing Review Problems

Problems are found too late, big and useless meetings and the indispensable hero are problems which can be solved with reviews.

Then: review can catch the defects early, so it’s cheap to fix, a review meeting only includes who actually involved, code reviews can help the hero spread his expertise and knowledge.

Week 10 - Continue

Iteration Abuse

Iteration can be a useful tool, but it is often abused.

The programmer uses it as a guessing game: programmers deliver build after build with small different changes, the devs like it because they can dive in, users and stakeholders like it because they don't have to read documents or think about their needs.

Scope Creep

After the programming has started, users and stakeholders make changes. Each change is easy to describe and sounds small, then eventually the project slows to a crawl. It could be faster if the devs know what to do in the beginning.

Fixing Requirements Problems

The Iteration Abuse and Scope Creep are problems of having insufficient and specified requirements.

Then: the team can adopt software requirements engineering practices to write done most of the changes before doing, and/or to use a change control process.

Haunted by Ghosts of Old Problems

Devs find that old bugs suddenly reappear without warning, because of the growing code - hard to keep under control, or problem with shared folders.

Broken Builds

The devs deliver a build that does not work - the testers then cannot do anything.

The devs get frustrated because they feel that they put a lot of effort in. And they blame the QA.

Spaghetti Code

Maintaining old code is a boring and tedious job in many organizations. Spaghetti code is often used as an excuse to do an unnecessary rewrite.

Fixing Programming Problems

The three problems above are results of bad programming habits.

Then: adopt good habits instead, get control over the versions and subversions, use unit tests and test-driven development to increase the quality of the build, use refactoring.

Requirements Haven’t Been Implemented

The team delivers the software missing behavior or entire features.

Obvious Bugs Slipped Through

Inexperienced testers are expected to just bang on the software.

Technical support staff, junior devs, end-users, outside temps, and salespeople are drafted as testers.

Even when experienced testers are used, they’re not given time to plan.

Decisions about release readiness are made based on the schedule rather than quality.

“But It Worked For Us!”

When a product is not tested in all environments in which it will be used, the tests will be thrown off.

Defects are missed when testers can’t adequately replicate the environment in which the software will be used.

Test data may not resemble actual production data

Fixing Testing Problems

If the code is delivered with too few requirements implemented and too many bugs included, the team needs better testing practices.

Then: software testers must be involved in every stage of development, test planning must be given adequate time on the schedule, sufficient budget must be provided for a testing environment.

Common Problems Can Be Avoided!

Week 11 - Understanding Change

Why Change Fails

The short answer: politics

Change is Uncomfortable

Common Excuses

How to Make Change Succeed

Progress comes from making smart changes

Understand how people in your organization think about and react to changes, then prepare your organization, sell your change, account for common excuses in your pitch.

1. Prepare Your Organization

2. Plan for Change

Create a vision and scope document: similar to the old one, except it describes the scope of the change, inspect and approve the document to build consensus, add the changes to the schedule.

3. Push for Consensus

Get the project team members on board first, cause the managers are more likely to approve a change if the entire team is behind it.

Help people recognize the problem, they show that you have a solution.

Organizations do not change overnight.

Why Change Fails

The short answer: politics

Change is Uncomfortable

Common Excuses

How to Make Change Succeed

Progress comes from making smart changes

Understand how people in your organization think about and react to changes, then prepare your organization, sell your change, account for common excuses in your pitch.

1. Prepare Your Organization

2. Plan for Change

Create a vision and scope document: similar to the old one, except it describes the scope of the change, inspect and approve the document to build consensus, add the changes to the schedule.

3. Push for Consensus

Get the project team members on board first, cause the managers are more likely to approve a change if the entire team is behind it.

Help people recognize the problem, they show that you have a solution.

Organizations do not change overnight.

Week 12 - Management And Leadership

Responsibility, authority, and accountability

Delegation

Transparency

Manage the Organization

Manage Your Team

Week 13 - Managing an Outsourced Project

Prevent Project Failure

Estimate the Work

Vendors often estimate the work as part of contract negotiation: this happens before the team is assigned, when the team is assembled, it may be necessary to re-estimate the work, unrealistic estimates cause the project to fail.

Actively Manage the Project

A hands-off PM is usually surprised when the software is delivered, and it’s never a pleasant one.

It’s not enough to just have weekly status meetings with no follow-up: the PMs must know the team well.

The Vendor’s Management

Build a relationship with the vendors’ management

The Project Team

Build the relationship with the team

Collaborate With The Vendor

Plan and manage the project scope:

Maintain Tracking and Oversight

Don’t depend on the vendor to maintain the project plan and project schedule → It must be a PM.

Hold reviews and inspections: use a collaborative inspection process that has been optimized for outsourced projects.

Design and Programming

Don’t delegate the entire design and programming of the project to the vendor.

Software Quality

Take responsibility for the quality of the software

Don’t Blindly Trust the Vendor

Week 14 - Process Improvement

Life Without a Formal Process

Many process improvement - PI, experts see the world as black and white

Teams can be effective without a formal software process.

An organization that produces software always has a software process

A team without a formal process does not scale up easily

If there are no complaints about the way the team is building software, then there’s no reason to change!

Expanding the team is not the only place a formal process is useful: also helps where the experts, users, stakeholders... are no longer readily available to the programmers.

Software Process Improvement

Frameworks and Methodologies

Capability Maturity Model

Defines the characteristics of a mature, capable process in a way that can be measured and compared to processes at other organization

ISO 9000

Is a family of quality management standards defined by the International Standards Organization. It is based on core principles:

Six Sigma

Is an approach to improving quality in manufacturing and business processes, Six Sigma means “six standard deviations from the mean”

DMAIC is a 5-phases approach to Six Sigma improvement: Define opportunities, Measure performance, Analyze opportunity, Improve performance, Control performance.

Extreme Programming

Consists of a set of rules and practices that govern all areas of software development: planning, designing, coding, testing.

Goals: is to lower the cost of change, may need iterations.

Is a disciplined and well-defined process by making the stakeholders part of the team, XP addresses the problem of the hands-off customer.

Rational Unified Process

RUP Is a popular off-the-shelf process based on the idea of highly iterative development.

Includes a disciplined approach to requirements management that is based on the idea of managing changes. (Using UML, visual modeling system)

One of the core elements is the continuous assessment of the quality of the system