作业
课后阅读1
问题1:时至今日的软件开发过程中是否还存在软件危机中存在的现象?如果存在,软件工程的方法能否解决?未来的AI能否解决?
存在。软件危机中主要存在以下现象:
- 对软件开发成本和进度的估计常常很不准确
- 用户对“已完成的”软件系统不满意
- 软件常常是不可维护的
- 软件通常没有适当的文档资料
随着人们使用软件工程的方法进行软件开发,这些问题逐渐减少,但不会完全消灭。
利用软件工程的方法可以有效解决这些问题,软件工程采用工程的概念、原理、技术和方法来开发和维护软件,进行详细需求分析和规划,使用合适的设计模式和架构,使用版本控制系统等特点可以有效解决上述问题。随着AI的发展,未来AI很有可能具备自主设计程序的能力,如果AI能实现正确理解客户需求,合理开发软件功能,自动维护软件运行,则可以开发出优质软件。
问题2:软件工程的知识体系中,你认为哪几个环节与软件质量相关?
需求分析:只有正确理解客户的需求,才能做出好的软件
软件稳定性和可维护性:当软件在使用中经常出现问题,或需要频繁投入人力进行维护时,意味着软件质量不高。
软件代码的可读性:高可读性的代码可以使软件在维护和升级时更方便。
经过测试:软件需要经过大量的测试才能保证质量。
课后阅读2
- 为何瀑布模型的成功率较低?
模型缺乏灵活性。当软件需求不明确或不准确时,可能会在开发过程中产生问题,由于瀑布模型前后阶段的依赖关系,任何变更可能会牵涉多个阶段,使得改动极为困难。因此,软件很可能因为繁琐的工程变动而无法实现其应有的功能。
模型的风险控制能力较弱。软件只有通过测试阶段才能让用户接触最终产品,如果产品与用户需求有偏差,返工修改的代价比较大。软件开发人员只有在后期才能看见开发成果,有可能造成开发成果与预期不匹配。软件体系结构级别风险只有在整体组装测试之后才能发现,前期的错误也只有在固定的测试阶段才能被发现,这种错误修复需要极大的时间代价。上述风险一旦产生,会对软件的开发进度造成很大影响,极有可能导致项目延期等后果。
模型文档控制问题。瀑布模型的软件活动是由文档驱动的,当阶段之间规定过多文档时,会极大增加系统的工作量,占用开发者的工作时间,拖延工程进度。工作中开发人员可能会根据实际情况做出调整,而未及时更新文档,导致文档与实际开发过程之间存在不一致,当管理者通过文档管理项目的开发进度时可能出现问题。
模型工期长,阶段顺序严格。瀑布模型强调在一个阶段完成后才能进入下一个阶段,这会导致开发者的效率较低,造成很长的开发时间,一旦项目变化,会产生大量时间成本。
作业要求:根据老师提供的作业3 的参考答案,完成以下内容
任务1:给出该系统的软件框架结构(如果已经有代码的小组,请结合小组的代码结构进行表述),15%
任务2:给出该系统的界面设计, 20%
任务3:给出顾客使用空调用例以及前台营业员出账单和出详单用例对应SSD中所有消息的动态结构交互图, 50%
消息1:RequestOn 开机请求, 组员完成服务资源无限制的情况;20%
组长完成服务资源数=3且服务请求数>3的具有调度策略的所有情况(优先级策略+时间片轮询策略) 40%
消息2:ChangeTargetTemp 调温 5%
消息3:ChangeFanSpeed 调风 15%
消息4:RequestOff 关机 10%
消息5:CreateInvoice 产生账单 5%
消息6:CreateDR 产生详单 5%
任务4:给出顾客使用空调用例的静态结构类图、给出前台营业员出具账单和出具详单用例的静态结构类图,10%
任务5:填写工作量表, 5%