1.范围、时间,成本,这三项中哪些是可以由客户控制的?
范围、时间、成本,是项目管理中常说的三角关系。任何一方改变都可能牵扯到其他两方的变动。项目管理的本质,就是在保证质量的前提下,寻求这三者之间的最佳平衡。因为客户是需求方和投资方,客户有权对这三者进行控制,当然客户主要控制范围,即提出他们的需求——项目要实现的功能特性,其次,客户也非常关心能交付的时间和所付出的成本。在满足客户的需求情况下,可以在时间、成本上和客户进行交流、谈判。从项目管理的角度看,最好固定其中一项,其他两项可以根据实际状况来调节保证项目质量。
2.迭代和增量的区别在哪里?
软件开发不是一躇而就,其过程犹如雕琢一件工艺品,由无形到有形、由粗到细,很难一次就能开发出功能完善、强大的一个版本,而往往是分阶段进行,一个版本接一个版本的发布出去。软件开发分阶段可以通过两种模型来描述,即增量模型和迭代模型。 增量模型描述软件产品的不同阶段是按产品所具有的功能进行划分,先开发主要功能或用户最需要功能,然后,随着时间推进,不断增加新的辅助功能或次要功能,最终开发出一个强大的、功能完善的、高质量的、稳定的产品。 迭代模型描述软件产品的不同阶段是按产品深度或细化的程度来划分,先将产品的整个框架都建立起来,在系统的初期,已经具有用户所需求的全部功能。然后,随着时间推进,不断细化已有的功能或完善已有功能,这个过程好像是一个迭代的过程。最终的目标是一致的,也是为了实现一个强大的、功能完善的、高质量的、稳定的产品。
3.如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?
首先要向客户说明,如果在某个时间内去做不可能完成的工作,其结果必然是质量得不到保证,或者所化的成本过大。应该没有客户想做赔本的生意,每个客户都会重视质量,而不愿意损害自己的利益。 然后,和客户一起,按需求重要性、紧急性等对需求进行分类,分为不同的等级,然后从优先级高的需求开始,来估算不同优先级类别的需求实现的工作量。设定几个不同的开发周期或交付时间,从而由用户作出选择,例如: (1)只做优先级最高的那类需求,开发周期需要3个月; (2)做优先级最高和优先级高的那两类需求,开发周期需要7个月; (3)做优先级最高、高和中等的共3类需求,开发周期需要12个月; (4)所有需求都实现,开发周期需要18个月
4.你认为项目中最重要的是哪些过程?
需求分析、设计阶段(也可以加上测试,但千万别说编码或开发阶段),根据《人月神话》的观点:1/3 计划;1/6 编码;1/4 构件测试和早期系统测试;1/4 系统测试,所有的构件已完成。但根据国内目前的状况一般公司不会有很多的分析与设计时间(这取决于公司规模和时间成本),这样在一个工期很紧张的项目中我们应该尽量分配出进度优先级来,首先拿出客户最希望看到的和最能证明成果的东西来,其他的留待2期甚至3期去作,你可以告诉客户需要进一步调试(专业人员的欺骗手段,实际上就是在进行后续的开发)。
5.如果给你一个4-6个人的Team,那么你怎么分配他们、管理他们?
管理能力和经验的综合题,可能没有人有相同的观点,那你可以按照某些思路来侧面解答:我会挑选一个技术过硬的人作为我的替补和项目的轻骑兵,是的团队中必须有机动人员,否则你的项目十有八九会夭折。其他的人会被平均的分配任务。我们会在每周进行全面的任务分配,每个人获取一周的大概工作,然后每天的工作由他自己完成并汇报。(很好,如果答出这些就差不多了,多说可能会出现漏洞)
6.简述常用的软件开发文档。
1)可行×××报告(某些公司或模型没有)
2)项目开发计划
3)软件需求说明书(必有)
4)数据要求说明书
5)概要设计说明书(必有)
6)详细设计说明书(必有)
7)数据库设计说明书(必有)
8)用户手册(一般会有)
9)操作手册(必有)
10)模块开发卷宗
11)测试计划(必有)
12)测试分析报告
13)开发进度月报
14)项目开发总结报告
7.怎样和为什么要在编制项目计划时考虑依赖关系
依赖关系可以通过将任务及其后续任务的标识符进行关联来表示。依赖关系说明了任务之间关联/并列的要求。依赖关系可以是指在另一个任务能开始之前有一个任务必须完成。例如,逻辑模型必须在物理模型前完成。但测试并不是要在所有编程工作完成之后才开始。项目计划加入依赖关系,就能找出项目的关键路径并且能够确定它对项目工期的影响。
8.人员管理的技能---你作为项目经理要做的第一件事情是什么?
除了注意公司的发展方向并从中发现自己的发展道路外,在头脑中要建立项目经理所关注事物(商务,公司,项目,团队,个人,技术和方法论的变化)的优先顺序。因此,和部门经理开会确定优先顺序,安排用户和职员会议,得到全部成员的状态报告和评价。重要的是能尽快处理业务,项目和个人有关的事情。
9.人员管理的技能---你的团队主要是由新手组成的,并且进度已经落后。你将做什么?
需要记住一个项目很少因为在截止时间内没有完成而被取消的。项目被取消,主要是诸如缺少资金,用户支持或不能满足的业务目标。因此,要做的第一件事是培训,无论在室内还是室外,在课堂或通过录像带。另一种附加方法就是让资深的雇员或高级顾问充当教师。举办针对个人评估和辅导的会议。帮助每个员工准确评价他们各自的优点和缺点。同时明确任务,将所有必须遵守的标准或准则阐述清楚。为每个员工提供从成功项目中得到的模板作为指南,还要允许他们发挥自己的才能。如果需要,和他们一起工作。对任何问题或完成的任务做出迅速的反馈。对于较大的任务,看看他们的计划,有助于确定他们是否了解任务的范围和目标,以便了解他们是否能完成任务。倾听员工的观点,也许他们会有完成任务的正确的方法和途径。然而也要防止雇员陷入挫折和士气低落的困境中。
10.项目经理的能力和职能?
项目经理最重要的是协调沟通能力和组织能力,能够安排合适的人到合适的位置,制定较完备的项目计划方案,让项目组成员清楚了解各自的职责、工作量及时间安排,遇到困难能准确找到问题的关键点迅速组织人员解决之。
项目经理不一定要技术最好,但技术好的项目经理在进度推进困难的时候将起到很大的作用。
11.项目实施有哪些主要阶段,每个阶段应该提交什么成果?
这里只是列出几个大的阶段 :
1.需求分析-------提交《项目需求说明书》,并得到双方认可。
2.系统设计-------提交《体系结构设计书》《数据库设计书》《界面设计书》《模块设计书》,均通过审评
3.实现和测试------项目得到成品,并按《项目需求说明书》要求测试完毕,解决了所有已知问题。
4.结项阶段-------客户验收通过。
5.具体实施和维护阶段--实施成功,并合同要求进行维护
12.需求变更管理的手段和与客户沟通的手段?
项目开发过程中,需求变更是不能回避的问题,我们需要一个正规的变更文档来定义每一次变更,并保持各个阶段文档的一致性,避免混乱。
对于需求变更应得到客户在开发成本和进度的认可情况下进行,而不是一未满足客户,导致严重超支延期。
变更这对项目开发一方是很头痛的问题,变更应该有所控制,在双方相互协调、认识统一的前提下进行,与客户的沟通尽量采用可见的通俗易懂的方式方法进行。
但在必要的情况下,应该采取对客户进行相关专业知识的培训手段,避免不合理的要求。
转载于:https://blog.51cto.com/1348916/2394155