Chapter-1 :软件的本质

1.1 举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用


  1. - 使用“数字汽车仪表板”的软件

  2. - 赋予高科技、高品质的图像的软件

  3. - 广泛的消费类电子产品的软件

  4. - 个人电脑、工业仪器仪表和机器的软件

  5. - 软件分化出的在电子商务方面的应用

1.2 举例说明软件对社会的影响(包括正面影响和负面影响)

1.3 针对1.1节提出的5个问题,请给出你的答案,并与同学讨论


  1. ① 软件需要如此长的开发时间:

  2. - 设施不上线

  3. - 开发工具并不如预期般运作

  4. - 客户提出的新要求,需要重新设计和返工

  5. - 产品依赖与政府的规定,被意外更改

  6. - 严格的要求,与现有系统的兼容性需要超过预期更多的测试、设计和实现

  7. - 多个操作系统下运行的任务需求比预期需要更长的时间

  8. - 软件项目风险管理比预期需要更多的时间

  9. - 以来的技术仍处于开发阶段,从而延长日程安排

  10. ② 开发成本高:

  11. - 比当时预期低得令人无法接受的质量,需要进行更多的测试、设计和实施工作

  12. - 制定了错误的软件功能,需要重新设计和实施

  13. - 开发错误的用户界面,而导致重新设计和实施

  14. - 开发了不需要的额外的软件功能而延长了开发日程安排

  15. ③ 在将软件交付客户使用之前,我们无法找到所有错误:

  16. - 产品依赖于政府监管、意外而改变

  17. - 产品技术标准草案,会意外更改

  18. - 有时会在项目后期添加新的开发人员

  19. - 因为团队内的冲突会导致沟通不畅,而产生糟糕的设计

  20. - 破坏高效调度产生的项目管理成果和无效的规划

  21. - 有时装备部件质量差,导致额外的测试、设计和集成工作,管理额外的客户关系

  22. ④ 软件开发和维护的过程仍旧难以度量:

  23. - 有时该项目的目的不明确

  24. - 有大量的业务所涉及的风险

  25. - 如果产品内置没有装好,我们需要不断检讨我们的工作

  26. - 进行维护检查的时间

  27. - 在整个软件开发过程中要彻底组织项目团队

1.4 在交付最终用户之前,或者首个版本投入使用之后,许多现代App程序都会有频繁的变更.为防止变更引起软件退化,请提出   一些有效的解决措施


  1. # 许多现代应用程序在他们呈现给最终用户之前和第一个版本使用后经常改变,以下几个方面来阻止软件恶化:

  2. - 收集所需的信息

  3. - 设计师和客户定义软件的总体目标

  4. - 识别已知的需求

  5. - 使用现有的程序片段后,有助于监理原型的开发人员的工作计划快速完成

  6. - 只有通过合格的培训或经验和充分揭露相关的不足,才能保持和提高我们的技术能力

  7. - 让他人承担技术任务

  8. - 文件应该被及时制定出来,在文件中应该有标准定义和机制建立

  9. - 完成某一特定阶段的审查工作

  10. - 每一个关键团队成员应该配有一个后备人员

  11. - 检查规避风险的步骤是否正确

  12. - 对未来的风险分析中检查是否有必要收集必要的信息

1.5  思考1.1.2节中提到的7个软件分类。请问能否将一个软件工程方法应用于所有的软件分类?并就你的答案加以解释


  1. - 七个软件分类可应用于同样的方法.

  2. - 软件工程师可以准备通过实例化一个过程,使其有足够的灵活性和适应性,来适应剧烈变化的技术,这技术一定要在未来的很长一段时间被商业规则所接受

Chapter-2:软件工程

2.1 图1-2中,将软件工程的3个层次放在了“质量关注点”这层之上.这意味着在整个开发组织内采用质量管理活动,如“全面质量管理”.仔细研究并列出全面质量管理活动中关键原则的大纲.

2.2 软件工程对构建WebApp是否使用?如果适用,需要如何改进以适应WebApp的独特特点?

2.3 随着软件的普及,由于程序所带来的公众风险已经成为一个愈加重要的问题.设想一个真实场景:由于软件错误而引起“世界末日”搬的重大危害(危害社会经济或是人类生命财产安全)


  1. - 软件错误,造成了重大的电话网络失败

  2. - 航空电子设备故障导致飞机坠毁

  3. - 计算机病毒(如米开朗琪罗)的攻击给主要的电子商务网站造成了巨大的经济损失

2.4 用自己的话描述过程框架.当我们谈到框架活动适用于所有的项目时,是否意味着对于不同规模和复杂度的项目可应用相同的工作任务?请解释


  1. - 过程框架适用于所有的项目,在相同的工作任务,适用于所有项目,无论其规模大小或复杂性

  2. - 一个过程框架涉及大量的与客户沟通来收集需求,这个活动建立了一个软件工程工作计划

  3. - 它涉及到创建模型,这将有助于开发人员了解客户的要求从而进行设计

  4. - 从而涉及构建(代码生成和错误测试)

  5. - 最后,它提供了基于评价的反馈

2.5 在2.4所列举的神话中,增加两种软件神话,同时指出与其相对应的真实情况


  1. ① 测试可以解决所有的程序错误

  2. ② 客户对他们的需求非常了解,他们要什么我就做什么好了

Chapter-3:软件工程结构

3.1  在本章的介绍中,Baetjer说过:“软件过程提供了用户与设计人员之间、用户与开发工具之间以及设计人员与开发工具之间的互动.”对以下四个方面各设计五个问题:

(1)设计人员应该问用户的;

(2)用户应该问设计人员的;

(3)用户对将要构建的软件的自问;

(4)设计人员对于软件产品和建造该产品采取的软件过程的自问;


  1. ① 设计人员询问用户:

  2. - 产品满意吗?或者它需要重新设计或返工吗?

  3. - 征求用户输入来避免不满意和要求返工

  4. - 有新需求吗?

  5. - 该产品比估计的大吗?

  6. - 与预期相比,模块需要更多测试、设计和实行工作来纠正吗?

  7. ② 用户询问设计者的问题:

  8. - 范围明确吗?

  9. - 我们是否有开发工具,和人员开发软件所需要的技能?

  10. - 定义的需求是正确的吗?还有没有额外的需要?

  11. - 特定领域的软件产品比平时花费更多的时间吗?

  12. - 该模块是否需要更多的设计测试?

  13. ③ 用户对将要构建的软件自问的问题:

  14. - 软件产品的范围和目的是什么?

  15. - 该产品比估计的大吗?

  16. - 有优秀的人可用吗?

  17. - 工作人员可靠吗,有没有具备所需要的技能?

  18. - 能保持工作人员的离职率足够低吗?

  19. ④ 设计者对于软件产品和建造该产品采取的软件过程自问的问题:

  20. - 范围和目的文件是什么?

  21. - 要使用什么样的工具?

  22. - 有什么目标和规避风险的优先事项?

  23. - 对风险分析、识别、估计、评价和管理会有什么样的步骤?

3.2  讨论3.1节所描述的不同过程流之间的区别。你是否能够确定适用于所描述的每种通用流的问题类型?

3.3 为沟通活动设计一系列动作,选定一个动作为其设计一个任务集

  # 任务交流活动设置:任务组将定义实际的工作需要,以完成一个软件工程的行动.这些都是对于通信的活动:


  1. - 利益相关者对项目做一个列表

  2. - 邀请所有利益相关者的非正式会议

  3. - 要求他们做出特性和功能列表

  4. - 讨论需求并建立一个最终的列表

  5. - 不确定的优先级和要求注意的地方.这些任务可能是复杂的软件项目,可能包括:

  6. 1)要进行一系列的规范会议,基于相关利益者的输入,建立了初步的功能和特性列表

  7. 2)妖要建立一个股权持有人要求的修订清单

  8. 3)使用质量功能展开技术来满足需求

  9. 4)注意在系统上的约束和限制

  10. 5)讨论验证系统的方法

3.4 在沟通过程中,遇到两位对软件如何做有着不同想法的利益相关者是很常见的问题。也就是说,你得到了相互冲突的需求. 设计一种过程模式(可以是步骤模式),利用3.4节中针对此类问题的模板,给出一种行之有效的解决方法


  1. ① 模式名:

  2. - 利益相关者的需求冲突

  3. ② 意图:

  4. - 此模式描述的方式是解决利益相关者之间在通信框架活动中的冲突

  5. ③ 类型:

  6. - 阶段模式

  7. ④ 初始背景:

  8. - 利益相关者已确定

  9. - 利益相关者和软件工程师已经建立了协作通信

  10. - 软件要解决的主要问题由软件开发团队已建立

  11. - 对已开发的项目范围,基本的业务需求和项目的限制有了初步的了解

  12. ⑤ 问题:

  13. - 对正在开发的软件,利益相关者的需求出现了互相的矛盾

  14. ⑥ 解决办法:

  15. - 所有的利益相关者被要求区分需求的优先级,暂时保证利益相关者的优先级最高,或投票的最多的需 求,从而解决问题

  16. ⑦ 结果:

  17. - 由利益相关方的确定的需求优先顺序列表来指导软件开发团队构件软件初始模型

  18. ⑧ 相关模式:

  19. - 定义指导和协作方针、范围隔离、需求收集、约束描述和混合需求

  20. ⑨ 已知用途/范例:

  21. - 必要的沟通贯通整个软件工程中

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐