软件基础第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc20
这个作业的目标 阅读《构建之法》中的内容,用合理的方式提出问题并思考
姓名-学号 <阮梦帆>-<2018330301059>

软件基础第二次作业

问题一

我看了书中如下内容:

什么是好的软件工程思想?一个工程使开了博客,转发了很多别人的文章,这算有思想么?另一个工程师坚持做任何设计都要画UML图,这算有思想么?

——P45 3.1 软件工程师的成长

我的问题是:

什么是 UML 图?它在软件开发的哪个环节起到什么作用?它与程序流程图有何区别?为何作者要在这里对坚持画 UML 的做法提出质疑?

通过查阅资料,我知道了 UML-Unified Modeling Language 指统一建模语言,是用来对软件密集系统进行可视化建模的一种语言。它是一种在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的方法,践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。

通过比较,我认为 UML 图与程序流程图的主要区别在于, UML 图适用于面向对象的建模,描述的是类、对象、成员等之间的关系;而程序流程图是由顺序、选择、分支结构组成的逻辑流程。

我仍不明白的是,看起来 UML 在软件开发过程中是一种挺有效挺重要的方式,为何作者对凡事画UML图的做法存疑呢?现在的软件开发中难道已经很少用 UML 了吗?

img

问题二

书中这样写道:

结对编程中有两个角色:

1.驾驶员(Driver):控制键盘输入。

2.领航员(Navigator):起到领航、提醒的作用。

——P79 4.5.2为什么要结对编程

我的观点是

这里的类比在严格意义上可能并不是那么的得当。

原因在于驾驶员和领航员是共依存模式,他(她)们必须成对存在,否则赛车寸步难行(电影《飞驰人生》中沈腾饰演的张弛算个例)。

而在程序开发中,结对编程固然可以大幅提升效率,但不是必要的组合模式。

首先驾驶员和领航员这种组合模式一般只出现在汽车拉力赛中(Rally)。这里的越野赛车说得不够准确,严格意义上它不是一种赛事的类型。

在拉力赛中,坐在副驾驶席上的领航员通过被称做“PaceNote”的比赛路线图为驾驶员指示前进方向。这不是一般的指路,领航员除了要指示方向,还要预报前方的弯道弯曲程度、建议档位等关键信息。

相较于场地赛车运动,拉力赛的赛道环境十分恶劣,通常会遇到大雾弥漫、雨雪交加的天气,这种情况下,驾驶员根本看不清前方路况,领航员就起到了至关重要的作用。相当于驾驶员要在领航员的指示下闭着眼睛开车。

相比之下,结对编程的两人不一定有如此紧密不可分割的联系,这种组合模式主要是为了提升效率,并不是项目能否完成的必要条件。

问题三

我看了书中如下内容:

4.5.1 最早由记录的结对编程

结对编程随着敏捷思潮的兴起……于是这两人在3月的最后一周开展了不得已的、长达60小时的结对编程活动。

我的问题是:

软件工程中,这种赶不上进度的情况常见吗?是哪些原因导致的这种情况?是前期的规划不够合理,还是开发过程中遇到了不可预料的问题?除了在deadline之前拼命赶工创造奇迹以外,还有没有什么方法能够尽量避免进度落后的局面?

posted @ 2020-11-03 12:15  AaronRuan  阅读(79)  评论(1)    收藏  举报