需求工程
3.1 需求工程的重要性是什么?举出身边由于需求分析失败而造成整个项目失败的例子。
答:需求工程的重要性就是需求工程需要解决的问题,即需求工程是应用已证实的有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题,评估可行性,协商合理的解决方案、无歧义的规约方案、确认规约以及将规约转换到可运行的系统时的管理要求。需求工程是整个软件项目的重点和最核心的步骤,只有成功的进行需求分析才能够准确的构建出合理的软件实行方案。《人月神话》中就提到巴比伦塔工程的失败,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,但巴比伦塔同时也是第一个彻底失败的工程。即使是人力物力充足,但是缺乏有效的沟通和协商,没有进行有效的分析和规约。没有真正形成可行的建模方案。最终导致了项目的失败。在自己开发的针对家庭的网上相册分享系统时就没有进行正确的需求分析,只是凭着自己的想象中的各种情景和需求进行开发。最后导致项目的返工拖期最后还是不能开发出满足大多数人使用的系统。
3.3 一个系统分析员应该具备哪些思想素质和基础知识?请说明理由。
1)扎实的计算机相关基础知识
在进行系统分析时要考虑到技术方案的可行性,如果没有扎实的计算机技术的基础就会脱离技术分析需求,有可能导致后期实现方案不可行或者不是好的方案。
2)良好的沟通协作能力
在进行系统分析时需要频繁的进行需求的协商、谈判。系统分析员是一个多面手需要与管理人员、软件开发人员、用户都要进行良好的协商与沟通。
3)良好的应变能力和快速的学习能力
系统分析员需要能适应环境带来的变化,还要学习相关的领域知识才能较好的进行相关领域的系统分析。这样就需要有很强的学习能力才行。
4)广泛的知识体系
因为系统分析员需要与很多不同类型的人和不同领域的项目打交道,所以必须要有广泛的知识体系,懂的与人沟通,能够适当的把握项目所涉及的法律、经济方面的知识。
5)强烈的责任感和良好的职业道德
因为系统分析员是软件项目的核心人员之一,他们的工作直接影响到软件项目的质量。必须要承担起系统分析员的工作职责才能促进软件项目的成功实施。
3.5 对于下面的每个场景,思考在需求获取期间什么是最有用的信息来源。
(1)开发一个系统取代现有的销售订单处理系统。
信息来源:现有的销售订单处理系统信息、销售人员反馈信息、其他相似系统的相关信息。
(2)开发软件控制充当外科医生的机器人
信息来源:医生对手术流程以及规范的约定、病人的反馈、类似系统的借鉴、医生对手术中各种情况的叙述。
(3)开发软件操作出租车仪表。
信息来源:出租车公司的规定,有关政府部门的要求以及相关政策。司机的反馈、乘客的反馈。
(4)为国防部开发一个安全的战场通信系统
军队各级部门和各军种对战场通信的需求。战场各种场景对通信等级以及容错度的要求。国内国际相似系统的规格和评判标准。
《人月神话》书评:http://www.umlchina.com/book/man-month/Reviews.htm