0%

四川大学研究生软件项目管理期末考试分析

目标

  • Understanding the role of software project management in software development
  • Understanding why software project management practices are important
  • Knowing good basic software project management practices
  • Possessing basic skills using software management tools and practices
  • Having applied those skills in software developing with realistic challenges

理解软件项目管理在软件开发中的作用
理解为什么软件项目管理实践很重要
了解良好的基本软件项目管理实践
拥有使用软件管理工具和实践的基本技能
将这些技能应用到软件开发中,并具有现实的挑战

Course outline (24 hours)

week 1: Introduction of Software Project Management
week 2: Project evaluation and programme management
week 3: Overview of project planning & Selection of project approach
week 4: Software effort estimation
week 5: Activity planning
week 6: Risk management
week 7: Resource allocation
week 8: Monitoring and control: contracts, people, team, and quality
week 9-17: Team work
week 18: Finial Exam

第1周:软件项目管理的引入
第2周:项目评估和方案管理
第3周:项目规划和项目方法选择的概述
第4周:软件工作评估
星期5:活动计划
第6周:风险管理
第七周:资源分配
第8周:监控和控制:合同、人员、团队和质量
上行线周:团队合作精神
18周:顶尖考试

week 2:Project evaluation and programme management

项目评估和方案管理

We plan to invest 5000 for a project and wish to get 12500 profit after five years. Suppose that there is 2500 profit for every year and the interest rate is 12%. Please compute the NPV and DPBP for the project.
我们计划为一个项目投资5000美元,并希望在五年后获得12500美元的利润。 假设每年有2500美元的利润,利率为12%。 请计算项目的NPV和DPBP。

Year Cash-flow Discount Factor Discount cash flow
0 -5000 1.0000 -5000
1 2500 0.8929 2232.14
2 2500 0.7972 1992.98
3 2500 0.7118 1779.45
4 2500 0.6355 1588.84
5 2500 0.5674 1418.53
NP 7500 NPV 4011.94

净利润

$\text{NP(Net profit)}=sum(\text{cash-flow})=7500$

年平均利润

$\text{average annual profit}=\dfrac{NP}{years}=\dfrac{7500}{5}=1500$

投资回报率

$\text{ROI(Return on investment )}=\dfrac{\text{Average annual profit}}{\text{Total investment}}=\dfrac{1500}{10000}=0.15$

折扣因子

Discount factor
$\text{Discount factor}=1 / {(1+r)}^t$
r is the interest rate (e.g. 10% is 0.10)
t is the number of years

r is the interest rate (e.g. 10% is 0.10)
t is the number of years

$\text{DPBP(Dynamic Pay Back Period)} = \text{year.when(sum(Discount cash flow)>0)}=3 years$

知识点

  • Year 0’ represents all the costs before system is operation
  • ‘Cash-flow’ is value of income less outgoing
  • Net profit value of all the cash-flows for the lifetime of the application

  • Internal rate of return (IRR) is the discount rate that would produce an NPV of 0 for the project

内部收益率

Internal rate of return (IRR)

某项目期初投资200万,以后的10年每年都有30万的现金流,求该项目的内部收益率(IRR)。(注:利率插值区间宽度小于1%即可)
解答:
内部收益率(IRR),是指项目投资实际可望达到的收益率,实质上,它是能使项目的净现值等于零时的折现率。
-200+[30/(1+IRR)+30/(1+IRR)^2+….+30/(1+IRR)^10]=0 , IRR=8.14%
注意:将IRR=8.14%代入上式后结果为0.0375。另外,用Excel函数IRR求得结果为8.14%。

week 3: Overview of project planning & Selection of project approach

第3周:项目规划和项目方法选择的概述

An invoicing system is to have the following components: amend invoice, produce invoice, produce monthly statements, record cash payment, clear paid invoices from database, create customer records, delete customer.

发票系统具有以下组成部分:修改发票,生成发票,生成月结单,记录现金支付,清除数据库中的付款发票,创建客户记录,删除客户。

(a) What physical dependencies govern the order in which these transactions are implemented?
哪些物理依赖关系决定了这些交易的实施顺序?

  1. Create customer 2. Delete customer 3. Produce invoice
  2. Amend invoice 5. Payment 6.Clear paid invoices
  3. Produce monthly statements

(b) How could the system be broken down into increments which would be of some value to the users (hint – think about the problems of taking existing details onto a database when a system is first implemented).
如何将系统分解为对用户有一定价值的增量(提示 - 考虑在首次实施系统时将现有细节带入数据库的问题)。
increment 1: Create customer, Delete customer
increment 2: Produce invoice, Amend invoice
increment 3: Payment, Clear paid invoices
increment 4: Produce monthly statements

知识点


产品分解结构

  • Products CAN BE deliverable or intermediate
    产品可以是可交付的或中间的

  • Could be Products(among other things)
    physical thing (‘installed pc’),
    a document (‘logical data structure’)
    a person (‘trained user’)
    a new version of an old product (‘updated software’)

  • The following are NOT normally products:
    activities (e.g. ‘training’)
    events (e.g. ‘interviews completed’)
    resources and actors (e.g. ‘software developer’) - may be exceptions to this


产品流程图


瀑布模型

imposes structure on the project
every stage needs to be checked and signed off
BUT
limited scope for iteration
“经典”模型
将结构强加于项目
每个阶段都需要检查和签名
但有限的空间迭代

V-process model


Reasons for prototyping
原型设计的理由

  • learning by doing
  • improved communication
  • improved user involvement
  • a feedback loop is established
  • reduces the need for documentation
  • reduces maintenance costs i.e. changes after the application goes live
  • prototype can be used for producing expected results
    在实践中学习
    改进的通信
    改进的用户参与
    建立了一个反馈回路
    减少对文档的需求
    减少维护成本,即应用程序运行后的更改
    原型可以用于产生预期的结果

Prototyping: some dangers
原型:一些危险

  • users may misunderstand the role of the prototype
  • lack of project control and standards possible
  • additional expense of building prototype
  • focus on user-friendly interface could be at expense of machine efficiency
    用户可能误解了原型的作用
    缺乏项目控制和标准
    建筑原型的额外费用
    专注于用户友好的界面可能会牺牲机器的效率

渐进的过程

Incremental approach:benefits
增量的方法:好处

  • feedback from early stages used in developing latter stages
  • shorter development thresholds
  • user gets some benefits earlier
  • project may be put aside temporarily
  • reduces ‘gold-plating’
    开发后阶段使用的早期阶段的反馈
    缩短开发阈值
    用户可以更早获得一些好处
    项目可以暂时搁置
    减少“画蛇添足”

BUT there are some possible disadvantages

  • loss of economy of scale
  • ‘software breakage’
  • steps ideally 1% to 5% of the total project
  • non-computer steps should be included
  • ideal if a step takes one month or less:
    not more than three months
  • each step should deliver some benefit to the user
  • some steps will be physically dependent on others
    规模经济损失
    “软件破损
    each step should deliver some benefit to the user
    some steps will be physically dependent on others
    每一步都应该给用户带来一些好处
    有些步骤将在物理上依赖于他人

V/C ratios:

V is a score 1-10 representing value to customer
C is a score 0-10 representing value to developers


‘Agile’ methods
“敏捷”的方法

structured development methods have some perceived disadvantages:

  • produce large amounts of documentation which can be largely unread
  • documentation has to be kept up to date
  • division into specialist groups and need to follow procedures stifles communication
  • users can be excluded from decision process
  • long lead times to deliver anything etc. etc
    结构化开发方法有一些明显的缺点
    产生大量的文档,这些文档大部分都是未读的
    文档必须保持最新
    划分为专家小组并需要遵循程序抑制沟通
    用户可以被排除在决策过程之外
    交付任何东西的时间很长,等等

The Manifesto for Agile Software Development
敏捷软件开发的宣言
“We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
    That is, while there is value in the items on the right, we value the items on the left more.” by Kent Beck et al.
  • 个体交互优于流程和工具
  • 软件产品优于详尽的文档
  • 客户合作优于合同谈判
  • 对变更作出响应优于计划

Eight core DSDM principles
八个核心共享原则

  1. Focus on business need
  2. Deliver on time
  3. Collaborate
  4. Never compromise quality
  5. Develop iteratively
  6. Build incrementally from firm foundations
  7. Communication continuously
  8. Demonstrate control
    1。专注于业务需求
    2。按时交货
    3。合作
    4。永不妥协的质量
    5。迭代开发
    6。从坚实的基础逐步构建
    7。不断的沟通
    8。显示控制

time-box fixed deadline by which something has to be delivered
时间盒固定期限,必须交付一些东西


Chapter5 Software effort estimation

Chapter5软件工作量评估

Given the project data below:

  1. What items are size drivers?哪些项目是规模驱动的

inputs, outputs, entity accesses (system users for certain aspects)

  1. What items are productivity drivers?哪些项目是生产率驱动的

    Programming language

  2. What are the productivity rates for programming languages x, y and z?
    编程语言 x, y, z的生产率分别是多少

    x: 10 FPs/day y: 7 FPs/day z: 12 FPs/day

    x:[(210x0.58+420x0.26+40x1.66)/30+(469x0.58+1406x0.26+125x1.66)/85]/2
    d)
    y:[(5130.58+12830.26+761.66)/108+(6600.58+23100.26+881.66)/161+(16000.58+32000.26+237*1.66)/308]/3=[7.012+7.015+6.991]=7.006

比例系数需要记住inputs, outputs, entity accesses:0.58,0.26,1.66

  1. What would be the estimated effort for projects X and Y using a Mark II function point count?使用Mark II功能点计数的项目X和Y的估计工作量是多少?

FP of Project X is 261.8 and FP of Project Y is 704.66. Using the productivity rate for programming language y, the estimate for Project X would be 262/7 i.e. 37 days, and for Project Y 705/7 i.e. 101 days.
项目X的FP为261.8,项目Y的FP为704.66。 使用编程语言y的生产率,项目X的估计值为262/7,即37天,而项目Y 705/7,即101天。

  1. What would be the estimated effort for X and Y using an approximate analogy approach? 使用近似类比方法对X和Y的估计工作量是多少?

Project X seems closest to Project 5 which provides an estimate of 22 days, and Project Y seems to be closest to Project 3 which gives an estimate of 108 days.
项目X似乎最接近项目5,其提供22天的估计,而项目Y似乎最接近项目3,其估计为108天。

知识点

estimated effort = (system size) / productivity
e.g.
system size = lines of code
productivity = lines of code per day
productivity = (system size) / effort
based on past projects
估计工作量=(系统大小)/生产率
如。
系统大小=代码行
生产力=每天的代码行数
生产力=(系统大小)/努力

Some models focus on task or system size e.g. Function Points
一些模型关注任务或系统大小,例如功能点
FPs originally used to estimate Lines of Code, rather than effort
FPs最初用于估计代码行,而不是工作


Function points Mark II
功能点马克二世

For each transaction, count
data items input (Ni)
data items output (No)
entity types accessed (Ne)

Chapter6 Activity Planning

Chapter6活动计划


Create a PERT activity network using above data. Calculate the earliest and latest start and end dates and the float associated with each activity. From this identify the critical path.
使用上述数据创建PERT活动网络。 计算最早和最晚的开始和结束日期以及与每项活动相关的浮动。 由此确定关键路径。 Answer:

知识点

Activity ‘write report software’
Earliest start (ES)
Earliest finish (EF) = ES + duration
Latest finish (LF) = latest task can be completed without affecting project end
Latest start (LS) = LF - duration

活动区间(最左下角的值) = 持续时间 + 最右下角的值

Chapter7 Risk Management

第7章风险管理


Using the activity times above:

  1. Calcaulate the expected duration and standard deviation for each activity
  2. Identify the critical path
  3. Draw up an activity diagram applying critical chain principles for this project:
    Local the places where buffers will need to be located.
    Assess the size of the buffers
    Start all activities as later as possible.
    使用上面的活动时间:
    1。对每个活动的预期持续时间和标准偏差进行计算
    2。确定关键路径
    3。为这个项目绘制一个应用关键链原理的活动图:
    本地的缓冲区需要被定位的地方。
    评估缓冲区的大小
    尽可能晚地开始所有活动。

Activity $t_e$ $s$ $b$
A 10 0.67 2
B 15 1.67 5
C 7 0.67 2
D 10 0.67 2
E 6 1.00 3

A: $t_e=\dfrac{(a+4m+b)}{6}=\dfrac{(8+4*10+12)}{6}=10$,$s=\dfrac{(b-a)}{6}=\dfrac{(12-8)}{6}=0.67$,$b=\dfrac{(b-a)}{2}=2.$

Project buffer = sum(b:where b is key point)/2 = (2+5+2+3)/2=6

Subsidiary chain’s feeding buffer=(b:not key point)/2 = 2/2=1



知识点

Using PERT to evaluate the effects of uncertainty
使用PERT图来评估不确定性的影响

Three estimates are produced for each activity
Most likely time (m)
Optimistic time (a)
Pessimistic (b)
‘expected time’
‘activity standard deviation’



What would be the expected duration of the chain
A + B + C?

Answer: 12.66 + 10.33 + 25.66 = 48.65

What would be the standard deviation for
A + B+ C?

Answer: square root of (12 + 12 + 32)= 3.32

Say the target for completing A+B+C was 52 days (T)
Calculate the z value thus z = (T – te)/s

In this example z = (52-48.33)/3.32 = 1.01

Look up in table of z values – see next overhead


Risk exposure (RE)= (potential damage) x (probability of occurrence)

Risk reduction leverage =(REbefore- REafter)/ (cost of risk reduction)

REbeforeis risk exposure before risk reduction e.g. 1% chance of a fire causing £200k damage
REafter is risk exposure after risk reduction e.g. fire alarm costing £500 reduces probability of fire damage to 0.5%
RRL = (1% of £200k-0.5% of £200k)/£500 = 2
RRL > 1.00 therefore worth doing
在降低风险之前,rebefore是风险暴露,例如,1%的可能性发生火灾,造成200 k的损失
REafter是在风险降低后的风险敞口,例如,火灾报警成本为500英镑,将火灾损失的可能性降低到0.5%。
RRL = (1% of £200k-0.5% of £200k)/£500 = 2
RRL > 1.00 因此值得做

Chapter9 Monitoring & Control

Chapter9监测与控制


一个项目涉及到四个软件模块的设计和构建,分别称为A、B、C和D。每个模块的估计工作量为60小时,B为30小时,C为40小时,d为45。
正在进行这项工作的组织假设是为了获得价值分析(EVA),设计占了30%的工作量,编码40%,测试30%。
在这个EVA进行的当天,这个项目应该已经完成了。事实上,情况如下:


实际工作时间显示任务已经完成。
1。计算进度和成本差异。
2。计算成本性能和进度性能指标。
3。从这些数据中可以得出一般的结论这个项目吗?


详细分析

已知
|model|Estimated effort|Estimated design|Design(actual hours)|Estimated code|Code (actual hours)|Estimated test|Test (actual hours)|
|-|-|-|-|-|-|-|-|
|||30%||40%||30%||
|A|60||25||40||Not completed|
|B|30||15||15||15|
|C|40||15||Not completed||Not completed|
|D|45||10||Not completed||Not completed|

首先按题目给的比例 30% of the effort, coding 40% and testing 30%,把 Estimated design、Estimated code 和 Estimated test 填写了:
|model|Estimated effort|Estimated design|Design(actual hours)|Estimated code|Code (actual hours)|Estimated test|Test (actual hours)|
|-|-|-|-|-|-|-|-|
|||30%||40%||30%||
|A|60|18|25|24|40|18|Not completed|
|B|30|9|15|12|15|9|15|
|C|40|12|15|16|Not completed|12|Not completed|
|D|45|13.5|10|18|Not completed|13.5|Not completed|

Planned value (PV) 计划价值

$PV = sum(\text{Estimated effort)} =60+30+40+45=175$

Earned value (EV) 预算成本(不包括没完成的项目)

$EV=sum(\text{Estimated effort)}-\text{Not completed Estimated item}$
eg. EV = 175 - (18+16+12+18+13.5)=175-77.5=97.5

或者

竖着加刚才计算出的那三列,同样不包括没完成的项目
eg. 18+9+12+13.5=52.5 24+12=36 15
52.5+36+15=97.5

Actual cost (AC) 实际成本

$AC=sum\text{(actual hours)}=25+15+15+10+40+15+15=135$

Schedule variance (SV) 进度偏差

$SV=EV-PV=97.5-175=-77.5$

Schedule performance indicator (SPI) 进度绩效指标

$SPI=EV/PV=97.5/175=0.56$

Cost variance (CV) 成本偏差

$CV=EV-AC=97.5-135=-37.5$

Cost performance indicator (CPI) 成本绩效指数

$CPI = EV/AC=97.5/135=72.2$

注意:都是用预算成本 EV 做分子

综上可知

中英词汇对照表

英文词汇 中文解释
Net profit(NP) 净利润

Cost benefit analysis (CBA)| 成本效益分析
Return on investment (ROI) |投资回报率(ROI)
Net present value (NPV) |净现值(NPV)
Internal rate of return (IRR) |内部收益率(IRR)
product breakdown structure(PBS)|产品分解结构
Product description (PD)|产品描述(PD)
PFD(Product Flow Diagram)|PFD(产品流程图)
Gantt charts|甘特图
Function Points(FPs)|功能点
Risk exposure (RE)|风险承担
Risk Reduction Leverage(RRL)|减少风险杠杆(RRL)
Earned Value Analysis (EVA)|挣值分析(EVA)
Planned value (PV) |计划价值
Earned value (EV) |预算成本
Actual cost (AC) | 实际成本
Schedule variance (SV)| 进度偏差
Schedule performance indicator (SPI)| 进度绩效指标
Cost variance (CV)| 成本偏差
Cost performance indicator (CPI)| 成本绩效指数
customized off-the-shelf (COTS) |定制的现成的
Invitation to tender (ITT)|招标(ITT)
Memoranda of agreement (MoA)|备忘录

补充知识

名词解释

名词 解释
项目 项目是一系列具有特定目标,有明确开始和终止日期,资金有限,消耗资源的活动和任务。
检查点 指在规定的时间间隔内对项目进行检查,比较实际与计划之间的差异,并根据差异进行调整。可将检查点看作是一个 固定 “ 采样 ” 时点,而时间间隔根据项目周期长短不同而不同,频度过小会失去意义,频度过大会增加管理成本。常见的间隔是每周一次,项目经理需要召开例会并上交周报。
里程碑 重要的检查点是里程碑,重要的需要客户确认的里程碑,就是基线。在我们实际的项目中,周例会是检查点的表现形式,高层的阶段汇报会是基线的表现形式。
基线 基线是经过评审和批准的配置项的集合,其作用是明确划分项目各阶段,确定各阶段的结束点。在项目的开发过程中,最基本的基线有需求基线、概要设计基线、详细设计基线、代码基线、测试基线、交付基线

CPM|即关键路径法(Critical Path Method),又称关键线路法。|
PERT|Program Evaluation Review Technique计划评审技术,是一种任务工期估算的图示法。|

简答题

请简述项目管理的9个知识领域和5个过程组。
Please briefly describe 9 knowledge areas and 5 process groups of project management.

项目管理的九大知识领域包括项目整体管理、项目范围管理、项目时间管理、项目费用管理、项目质量管理、项目人力资源管理、项目沟通管理、项目风险管理和项目采购管理。
项目管理5个过程组包括启动过程组、规划过程组、执行过程组、监督和控制过程组、收尾过程组。

项目管理有哪些不同类型的组织形式?
What are the different types of organizational forms of project management?

项目管理组织分为:
职能型
矩阵型(包括弱矩阵型、平衡矩阵型、强矩阵型、复合矩阵型)
项目新

请简述项目经理应该具备的素质。
Please give a brief account of the qualities that the project manager should have.

项目经理应具备的素质包括以下几点:
a) 广博的知识:包括项目管理知识、IT行业知识、客户行业知识。
b) 丰富的经历
c) 良好的协调能力
d) 良好的职业道德
e) 良好的沟通和表达能力
f) 良好的领导能力

需求开发过程包括哪些过程?
What processes do the requirements development process include?

需求开发包括:需求获取,需求分析,需求规格说明和需求验证等几个过程。

项目经理在需求变更管理中的职责和目标是什么?
What are the responsibilities and objectives of project managers in requirements change management?

项目经理在需求彼岸管理中的职责是:
a) 负责协调变更的需求并对变更的需求有拒绝的权利
b) 负责对变更的需求部分设计的修改
c) 保证项目的开发与需求的一致性
d) 确定开发进度是否需要进行变更
e) 分配新需求给相关开发人员
项目经理在需求变更管理的目标:
1、相关的干系人必须清楚地了解发生的变更。
2、变更处于有效的管理中。
3、尽量降低变更带来的风险。

什么是项目时间管理?以及项目管理包括哪些主要过程。
What is project time management? And what are the main processes that project management includes.

项目时间管理是:“按时、保质地完成项目”大概是每一位项目经理最希望做到的。但工期托延的情况却时常发生。因而合理地安排项目时间是项目管理中一项关键内容,它的目的是保证按时完成项目、合理分配资源、发挥最佳工作效率。它的主要工作包括定义项目活动、任务、活动排序、每项活动的合理工期估算、制定项目完整的进度计划、资源共享分配、监控项目进度等内容。

综合题

假如您是一个项目经理,负责一个基于web的图书管理系统软件的开发,问:应该如何分解此项目所应该包括的工作?请按WBS为该项目制定一份工作的分解计划。
If you are a project manager, you are responsible for the development of a web based library management system software, and ask: how should you break down the work that the project should include? Please work out a breakdown plan for the project according to WBS.

答:我作为一个项目经理我按如下方式进行项目分解工作,
1、首先做好用户调研计划、调研方式,通过多次迭代方式进行调研,形成最终的用户需求说明书;通过UML工具按模块进行用例图,通过用例图来确定系统范围及边界。
2、同项目组开发人员进行沟通,确定项目所拥有的人力资源,根据建设的内容确定人力资源同项目建设内容搭配,根据模块的特性配备不同技术能力、沟通能力的技术人员,实现技术人员使用最优化。
3、根据项目里程碑时间,以终为始划分项目开发计划里程碑,在做项目开发计划的根据实际情况酌情调整部分时间。
4、做好项目开发计划,公布给项目开发组成员,并且要求严格按照进行执行;在中间发现进度出现问题,及时进行调整。

本站所有文章和源码均免费开放,如您喜欢,可以请我喝杯咖啡