---
# System prepended metadata

title: 'Week 3: Project management'
tags: [ISE]

---

# Week 3: Project management

**Software project management:**

*Activities:*
- Software is delivered on time and on schedule
- Accordance with the requirements of the organisations developing
- Procuring the software

**Success criteria:**

*Important goals for most projects:*
- Deliver the software to the customer at the agreed time
- Keep overall costs within budget
- Deliver software that meets the customer's expectations
- Maintain a happy and well-functioning development team

**Software management distinctions:**

- The product is intangible (Vô hình)
- Many software projects are 'one-off' projects
- Software processes variable and organization-specific (cannot reliably predict)

**Factors influencing project management:**

- Company size
- Software customers
- Software size
- Software type
- Organizational culture
- Software development processes

**Universal management activities:**

- Project planning (responsible for planning, estimating and scheduling project development and assigning people to tasks.)
- Reporting (responsible for reporting on the progress of a project)
- Proposal writing (write *a proposal* (describes objectives of the project) to win a contract to carry out an item of work)
- Risk management (assess risks &rarr; monitor these risks &rarr; take action)
- People management (choose people, establish ways of working)

### **1. Project planning:**

#### 1.1 Project planning:

- One of the most important jobs of a software project manager
- Involing:
    - Break down the work into parts, assign these tasks
    - Anticipate (đoán trước) problems &rarr; prepare tentative solutions
- The project plan:
    - Created at the start of a project
    - How the work will be done, help assess progress on the project.

#### 1.2 Planning stages:

- At the proposal stage (when bidding (đấu thầu) for a contract)
- During the project startup phase
    - Who will work on the project
    - How the project will be broken down into increments
    - How resources will be allocated
- Periodically throughout the project (when modifying plan based on experience gained and information from monitoring the progress of the work)

#### 1.3 Proposal planning:

- Necessary with only outline software requirements
- Goal: to provide information that will be used in setting a price for the system to customers
- Project pricing involves:
    - Estimating software costs to develop
    - Taking fators: staff costs, hardware & software costs,... into account

#### 1.4 Project startup planning:

- Know more about the system requirements ==but do not have design and implementation information==
- Create a plan with ==enough detail== (for project budget and staffing)
- Should define project monitoring mechanisms
- Needed for agile development to allow resources to be allocated to the project

#### 1.5 Development planning:
- The project plan should be regularly amended (sửa đổi) as the project progresses
- The project schedule, cost-estimate and risks have to be regularly revised

#### 1.6 Project planning process:

![image](https://hackmd.io/_uploads/SJFGNl3NR.png)

#### 2.1 Project scheduling:

- How the work in a project will be organized as separate tasks
- Estimate the calendar time needed to complete each task
- Estimate the resources needed to complete each task

#### 2.2 Project scheduling activities:

- Split project into tasks and estimate time and resource
- Organize tasks &rarr; optimal use of workforce
- Minimize task dependencies
- Dependent on project managers intuition and experience

#### 2.3 The projecr scheduling process:

![image](https://hackmd.io/_uploads/B1VdMnhNR.png)

#### 2.4 Project scheduling problems:

- Estimating the difficulty of problems and hence the cost of developing a solution is hard
- Productivity is not proportional to the number of people working on a task
- Adding people to a late project makes it later because of communication overheads
- The unexpected always happens. Always allow contingency (dự phòng) in planning

#### 2.5 Schedule presentation:

- Use graphical notations (ký hiệu) to illustrate the project schedule
- Calendar-based
    - Bar charts (Gantt charts) - most commonly used
    - Show who is responsible for each activity
- Activity networks:
    - Show task dependencies

#### 3.1 Project activities:

Each activy has:
- A duration in calendar days or months
- An effort estimate (show person-days, person-months to complete the work)
- A deadline
- A defined end-point (a document holds a review meeting, the successful execution of all tests)

#### 3.2 Milestone and deliverables:

- Milestones are stages in the project where a progress assessment can be made
- Deliverables are work products that are delivered to the customer

#### 4.1 Estimation techniques:

- Organizations need to make software effort and cost estimates.
- Experience-based techniques:
    - The manager's experience of past projects and the application domain.
    - An informed judgment of what the effort requirements are likely to be.
- Algorithmic cost modeling (COCMO II method):
    - Compute the project effort based on estimates of product attributes

#### 4.2 Estimate uncertainty:

![image](https://hackmd.io/_uploads/rk5eo33E0.png)

### **2. Risk management:**

#### 1.1 Risk management:

- Risk management: Concerned with identifying risks and drawing up plans to minimise their effect on a project
- Software risk management: important because of inherent (vốn có) uncertainties (sự không chắc chắn) in software development
    - Loosely defined requirements
    - Changes in customer needs
    - Estimating the time and resources
    - Differences in individual skills
- Anticipate risks, understand the impact of these risks, take steps to avoid these risks

#### ==1.2 Risk classification:==

- Two dimensions:
    - The type of risk (tenchnical, organizational,...)
    - What is affected by the risk
- Project risks: affect schedule and resources
- Product risks: affect the quality or the performance of the software being developed
- Business risks: affect the organisation developing or procuring the software

#### 1.3 Risk management process:

- Risk identification
- Risk analysis
- Risk planning
- Risk monitoring

![image](https://hackmd.io/_uploads/SytxxThVR.png)

#### ==1.4 Risk identification:==

- Team activities or based on the individual project manager’s experience
- Common risks:
    - Technology risks.
    - People risks.
    - Organisational risks.
    - Tools risks.
    - Requirements risks.
    - Estimation risks.

#### ==1.5 Risk analysis:==

- Assess probability (xác suất) and seriousness of each risk
- ==Probability== may be ==very low, low, morderate, high, very high==
- ==Risk consequences== might be ==catastrophic (Có thể tiêu diệt dự án), serious, tolerable (Chấp nhận được), insignificant==

$\Longrightarrow$ Probability and Risk consequences must be assessed periodic

#### 1.6 Risk planning:

- Consider each risk and develop a strategy to manage that risk
- Avoidance strategies
- Minimistration (Giảm thiểu) strategies
- Contingency (Dự phòng) plans

#### ==1.7 Risk monitoring:==

- Monitor the risks throughout the project
- Assess each identified risks regularly to decide whether or not it is becoming less or more probable (có thể xảy ra).
- Also assess whether the effects of the risk have changed.
- Each key risk should be discussed at management progress meetings.

### **3. Managing people:**

#### 1.1 Managing people:

- People are an organisation’s most important assets
- The tasks of a manager are essentially peopleoriented
- Poor people management is an important contributor to project failure

#### 1.2 People management factors:

- Consistency (Tính nhất quán)
    - Team members should all be treated in a comparable way without favourites or discrimination
- Respect
    - Different personal skills should be respected
- Inclusion
    - Make sure that people’s views are considered
- Honesty

#### 1.3 Motivating people:

- Motivate the people working on a project
- Organizing the work and the working environment to encourage people to work effectively
- Types of motivation based on:
    - Basic needs (e.g. food, sleep,...)
    - Personal needs (e.g. respect, self-esteem)
    - Social needs (e.g. to be accepted as part of a group)

#### 1.4 Human needs hierarchy:

![image](https://hackmd.io/_uploads/HkkgcphEA.png)

#### 1.5 Need satisfication:

- In software development groups, basic physiological and safety needs are not an issue
- Social
- Esteem
    - Recognition of achievements
    - Appropriate rewards
- Self-realization
    - Training - people want to learn more
    - Responsibility

#### ==1.6 Personality types:==

- Personality types:
    - Task-oriented
        - The motivation for doing the work is the work itself
    - Self-oriented
        - Achievement of individual goals
    - Interaction-oriented
        - Presence and actions of co-workers

### **4. Teamwork:**

#### 4.1 Teamwork:

- Most software engineering is a group activity
- A good group is cohesive (gắn kết) and has a team spirit
- Group interaction is a key determinant of group performance
- Flexibility in group composition is limited

#### 4.2 Group conhesiveness:

- In a cohesive group, ==members consider the group to be more important than any individual in it==
- Advantages:
    - Group quality standards can be developed
    - Team members learn from each other and get to know each other's work
    - Knowledge is shared
    - Refactoring (Tái cấu trúc) and continual improvement is encouraged

#### 4.3 Effectiveness of a team:

- The people in the group
- The group organization
- Technical and managerial communications

#### 4.4 Selecting group members:

- Create a cohesive group and organize their group so that they can work together effectively

#### 4.5 Assembling a team:

- May not be possible to appoint ( bổ nhiệm) the ideal people to work on a project
    - Project budget
    - Unavailable experience staffs
    - Develop employee skills
- Managers have to work within these constraints especially when there are shortages of trained staff

#### 4.6 Group composition (thành phần):

- Members who share the same motivation can be problematic (có vấn đề)
- A balance of all types
- Difficult to achieve software engineers are often task-oriented
- Interaction-oriented people can detect and defuse tensions (căng thẳng) that arise