现代软件工程 第十一章 【软件设计与实现】 练习与讨论

一、            如何避免在产品开发后期不断有重大修改,导致其他模块的连锁反应?

我认为首先前期的需求分析要尽可能完善并确定,需求变更是程序员所不能承受生命之重。另外题目中谈到的设计模式变更方法,是个很好的控制策略。项目早期采用Tell-mode,可以先行设计并编码,有较高的自由度;到了项目稳定阶段,采用Ask-mode,默认不同意变更设计,需要等待肯定答复,有效避免了修改的频繁,避免其他模块的连锁反应。

二、            每周进度报告

报表可以帮助我们掌控项目进度,把握项目目标。如果你看到每个人每天花费的时间在不断增加,但是真正需要解决的Task和Bug都没有变化,甚至缓慢增加,则意味着团队离目标越来越远。

三、            如何避免诧异反应

1.解决客户对功能诧异问题:PM的分析和说明能力要可靠,甚至敢于拒绝。需求说明中要从用户的角度去描述和解决方案,鼓励用户经常参与设计和计划。

2.解决各模块功能不配合问题:利用“场景驱动”方法,首先保证典型的用户场景能够实现;从场景出发,各模块更容易相互集成。

3.解决新手无法开发问题:任务估计值乘以4,或者分配其他工作比如测试,这也是很好的贡献。

四、            团队成员不给力

软件工程其实就是“人”的问题,在软件开发过程中要恰当得处理人与人之间的关系。实际中各个角色不一定能各司其职。一方面因为个人利益拖三拖四,从编码到测试都落后于原来的计划,更何况当初的需求定义的本就不合理;另一方面,有人的能力不够,比如语言不通,或者没有开发过完整的大程序,势必会拖全组后腿。前一点大家都容易克服,也依赖PM的领导能力;而技术水平与经验不可一蹴而就,大家既然在这专业混,如果技术让人唏嘘的话,脸上也无光啊!

五、            解决问题OR搭架构

文章吐槽了Java程序员出现的一些问题,Java的使用方式影响了人们对它的好感。每个人都把自己想象成架构师,淋漓尽致的发挥面向对象特性,这不是在解决问题,而是计划问题,导致有非常多的层次和大量的抽象概念以及样本化代码,别人很难理解这些代码在做什么。可能我们在荒野中看到的大部分Java代码,很多是非常差的开发者写出来的。Java已经最大程度的被OO束缚,从代码到整个Java生态系统。即使越来越多的开发者意识到这些问题,并重返编程本质,也难以挣脱现在的局面,Android工程师依旧被使用Java困扰。

时间: 2024-10-28 14:31:09

现代软件工程 第十一章 【软件设计与实现】 练习与讨论的相关文章

现代软件工程 第十一章 练习与讨论

1  如何避免在产品开发后期不断有重大修改,导致其它模块的连锁反应? DCR Tell mode vs. Ask mode设计变更 在项目早期,如果大家觉得要做一个设计变更,便可以采用告知模式(Tell-mode)的形式,也就是说,修改方必须通告所有关系人:“我在这里修改了某某界面, 我在某个API 增加了一个参数.”但是修改方不必取得其他关系人(或者模块)的事先同意,就是说可以先行设计并编码.当然,如果其他关系人不同意,修改还是不能签入. 当项目进行到稳定阶段,例如达到了代码完成(CC)阶段,

软件工程—第十一章

第十一章—软件演化 软件系统在交付之后仍然在不断的演化,即进入软件的运行维护阶段,以保证软件长期处于可用状态,并能够适应实际业务的不断变化. 软件在更改过程中的演化特性具体如下:1.软件维护是一个必然的过程2.软件的不断修改会导致软件的退化3.软件系统的演化特性是在早期的开发阶段建立起来的4.软件开发的效率与投入的资源无关5.在软件系统中添加新的功能不可避免地会产生新的缺陷. 软件维护可以分为三种类型:改正性维护.适应性维护.完善性维护.软件维护的特点:1.软件维护受开发过程影响大2.软件维护困

软件工程概论第十一章--软件演化

软件演化是软件进入使用期对软件的维护和升级,本章主要讲了软件演化的特性.软件维护和软件再工程. 软件演化的特性包括软件维护是必然的.软件的不断修改会导致软件退化.在早期开发建立起来.软件开发效率与投入的资源无关及软件升级是对软件缺陷的修补. 软件维护讲了软件维护的概念是软件运行或维护阶段对软件产品所进行的修改,可分为三个类型改正性维护.适应性维护和完善性维护.软件维护的特点是软件维护受开发过程影响大.软件维护困难多和软件维护成本高.软件维护过程主要包括建立维护组织.报告与评估维护申请.实施维护流

《软件工程概论》第十一章 软件演化

软件演化特性 1.软件维护是一个必然的过程 2.软件的不断修改会导致软件的退化 3.软件系统的演化特性是在早期的开发阶段建立起来的 4.软件开发的效率与投入的资源无关 5.在软件系统中添加新的功能不可避免地会产生新的缺陷. 软件维护的概念: 1.改正性维护 2.适应性维护 3.完善性维护 软件维护的特点: 1.软件维护受开发过程影响大 2.软件维护困难多 (1)读懂别人的程序是很困难的 (2)文档的不一致性是软件维护困难的又一个因素 (3)软件开发和软件维护在人员和时间上存在差异 (4)软件维护

软件工程概论第九章--软件实现

软件实现是软件产品由概念到实体的一个关键过程,本章主要讲了程序设计语言.软件编程规范.软件编码案例分析.软件代码审查,详细的讲了软件实现中的相关知识. 程序设计语言主要讲了编程语言的发展演化过程,从计算机问世到现在编程语言的的高级化编程语言已经发展了很久.同时讲到选择一种合适编程语言的重要性. 软件编码规范讲了文件命名与组织和代码的版式,本节是以Java语言为例介绍一些通用的编码规范,文件命名与组织讲了Java语言中源文件的规范并用实例讲述.代码的版式讲到了适当的空行.代码行及行内空格.分行.对

第十一章 软件演化

主要介绍的是软件演化的特征,软件维护和软件再工程. 软件维护是必然的,软件的不断修改会导致软件的退化,开发效率与投入资源无关.软件维护指软件运行或维护阶段对软件产品所进行的修改.软件维护分为改正性维护.适应性维护.完善性维护.软件维护受开发过程影响大.困难多.成本高.软件维护过程包括维护申请.维护分类.影响分析.版本规划.变更实施.软件发布等步骤.软件再工程是将现有系统重新构造成为新的形式.软件再工程包括对象选择.反向工程.文档重构.代码重构.数据重构和正向工程等活动.

现代软件工程 第四章 【结对编程】练习与讨论

4.7.2  性格对合作的影响 人和人不一样,在和别人合作的时候,要注意各人表达观点的方式和思考的方式不尽相同.请看网上关于MBTI的文章,测试并分享各自的MBTI类型,讨论不同性格类型对合作有多大的影响, 在合作的各个阶段应该如何应对. ISTJ 安静.严肃,通过全面性和可靠性获得成功.实际,有责任感.决定有逻辑性,并一步步地朝着目标前进,不易分心.喜欢将工作.家庭和生活都安排得井井有条.重视传统和忠诚. ISFJ 安静.友好.有责任感和良知.坚定地致力于完成他们的义务.全面.勤勉.精确,忠诚

第十、十一章

第十章 典型用户和场景 1.典型用户的模版 Persona/典型用户 (1)名字(越自然越好) (2)年龄(不同年龄和收入的用户有不同的需求) (3)收入 (4)代表的用户在市场上的比例和重要性(比例大不等同于重要性高) (5)使用这个软件的典型场景 (6)使用本软件/服务的环境 (7)生活/工作情况 (8)知识层次和能力 (9)用户的动机.目的和困难 (10)用户的偏好 2.规格说明书 (1)软件功能说明书 (2)软件技术说明书 3.功能说明书 (1)定义好相关的概念 (2)规范好一些假设 (

构建之法第十一章读后感

本周进行了构建之法的第十一章软件设计与实现的学习: 第十一章主要讲了典型的开发流程,常见的分析和设计方法:ERD,DFD,UML,开发阶段的一些管理方法:每日构建,小强地狱,构建大师: 分析和设计方法包括以文字为主的文档,以图形为主构造的模型,用数学语言的描述,用类自然语言+代码构造的描述,原代码加注释也能描述: 图形模型和分析方法:1表达实体与实体之间的关系如思维导图,实体关系图,Use Case Diagram.2.表达数据的流动.3.表达控制流.4.统一的表达方式. 其他的设计方法包括形式