软件基础第二次作业

|这个作业属于哪个课程|https://edu.cnblogs.com/campus/zjlg/rjjc20|
| ---- | ---- | ---- |
|这个作业的目标|通读《构建之法》,提出有价值的问题并思考|
|姓名-学号|林小龙-2018339950067|
🌟

问题一:复杂性、易变性是什么意思?怎么样的编程作业才算加入了软件特性?

我看了这一段文字:

软件工程的编程作业,不仅仅是程序,而是要加入软件工程的要素(复杂性、易变性和其他),有价值的软件工程的作业必须要触及者两个基本要素!
——引用于教材第2章-2.4 实践—设计有实际意义的软件工程作业P37

书上关于软件特殊性的介绍(复杂性、易变性等是软件特性),它是这么介绍复杂性和易变性的:

复杂性——软件可以说是人类创造的最复杂的系统类型。大型软件(操作系统、办公软件、搜索引擎)有超过百万行的源代码,上万个不同的文件。
……软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。
而理解运用这些复杂性的人并没有太大的变化。
易变性——软件看上去很容易修改,修改软件比修改硬件容易多了。
……
但是与此同时,正确地修改软件是一件很困难的事情。
——引用自教材第1章P9

在2.4接着阅读了例举的两个软件设计原则以及各方面的扩展举例,

我们以两个软件设计原则为例,第一,单一职责原则(Single Responsibility Principle,SRP)指出
一个模块(类)应该只有一个导致它变化的原因,一个模块应该完全对某个功能负责。
另一个重要的软件设计原则是开放-封闭原则(Open-Close Principle,OCP):
软件实体应该是可以扩展的,同时是不可修改的。
那么如何引入学生能承受的复杂度呢?如何引入“变化的轴线”呢?我们可以把简单的程序从几个维度逐步扩展,增加复杂度,
引入不同的需求,提高需求的易变性,在这个过程中,锻炼程序员对各种软件设计原则、软件工程原则的理解和应用,软件的适应性也得到加强。

大概了解如何使软件编程加入软件特性,简单来说就是,根据需求把简单的程序从几个维度逐步扩展。

除此之外,我还想要知道的是:

(1)有“超过百万行的源代码,上万个不同的文件”这样特征的软件就具有复杂性了吗?还有没有什么其它的特点呢?
(2)易变性是指软件本身是容易修改的,因为软件是由众多的源代码构建出来的,源代码容易被改变?(好像有点傻)
🌟

问题二:什么是RUP?

当我看到教材第5章-5.3.4 Rational Unified Process 统一流程(RUP)时,最直接的,我想问RUP是什么?

书上说

从瀑布模型开始的各种模型都有一个共同点:重计划,重事先设计,重文档表达。这一类的方法中集大成者要算Rational统一流程(Rational Unified Process,RUP)。RUP把软件开发的各个阶段整合在一个统一的框架里。
——引用于教材第5章-5.3.4 Rational Unified Process 统一流程(RUP)

教材还介绍了RUP的工作流和开发过程,但我没有看到有对RUP含义的介绍,于是我查了度娘,

RUP(Rational Unified Process),统一软件开发过程,统一软件过程是一个面向对象且基于网络的程序开发方法论。
软件统一过程(RUP)是Rational软件公司(Rational公司被IBM并购)创造的软件工程方法。RUP描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程(也被称作厚方法学),因此特别适用于大型软件团队开发大型项目。
——引用于百度百科
RUP的概述图

这使我知道了RUP是一种软件工程方法,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持;RUP的本质是一个流程定义平台,是一个流程框架。

我还想知道的是:迭代开发具有很多优点,但怎样的开发项目不适合采用迭代式开发呢?
🌟

问题三:结对编程这种模式是否不大适合我们这些在校学生,而更适合上班族?

我看了这一段文字:

结对编程让两个人所写的代码不断的处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。
——引用于第4章4.5.3不间断地复审P86

在此,我有些疑惑:结对编程这种模式是否不大适合我们这些在校学生,而更适合上班族?

  • 就我们在校生而言,排除上课时间,课余时间相对零散,而大部分学生都有自己的安排。按照结对编程模式,结对的两人必须同步同台共舞,这就需要至少一人改变自己原有的计划。
  • 再者,每个人的编程能力不同,像之前团队作业中就有不少的人选择抱大腿,并美名其曰为结对。在此过程中,这部分人仍然得不到足够的锻炼。
  • 而就上班一族而言,一周工作5天,每天固定时间上下班,且能坐在同一间办公室的程序员大体上都有相当的编程能力。这样就能很好的解决以上问题。
posted @ 2020-11-03 18:25  定风流  阅读(139)  评论(0)    收藏  举报