# 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 → monitor these risks → 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 → 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:

#### 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 → optimal use of workforce
- Minimize task dependencies
- Dependent on project managers intuition and experience
#### 2.3 The projecr scheduling process:

#### 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:

### **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

#### ==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:

#### 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