软件构造学习记录(起)

我眼中的软件构造

??从课程的第一天,老师就强调了软件构造这门课的实际意义。高校的学生,不是所有人都能够很好地对接产业和科研,学部希望通过这门课,给学生们一个对未来发展的认识的机会,对更多的学生负责,并希望我们能够借这个机会在原先的学习规划中加入新的内容。
??一个商品软件,它往往是循环开发的:出现一个想法 → rightarrow 出现一个需求 → rightarrow 给出一个设计 → rightarrow 确定一套要求 → rightarrow 完成一次生产 → rightarrow 进行一系列测试并最终集成 → rightarrow 使用并持续监督与维护 → rightarrow 出现新的想法
??而软件在这些不同状态中,我们从不同的方面看待软件所带来的效果是不同的。研究软件构造,似乎就是在研究软件在生命周期的不同时期的状态以及状态之间的转化过程。
??以上是我对本门课的一个基本的认识。

什么角度h2>

??软件构造是一个从无到有(源代码)、从代码(低层次)变成组件(高层次)、从构造(实验环境下的正确性)到运行(实际使用中的正确性)的过程。
??看待软件的角度,我们也可以按照上面的区别来划分:时刻对应时段、代码角度对应组件角度、构建视图对应运行视图。一个简单的数学计算,三个方面的六个角度构造了一个有八个卦限的坐标系(请脑补,XD),软件的生命循环就在这八个卦限中流转。我们关注的不止是流转的关系,也要关注状态的内容。
??构造阶段和运行阶段的区别是坐标系中的主向量,它们的大区别下有着如下的小区别:

??从代码层次的视角来看,这意味着关注代码的函数、类、方法和接口及其间的依赖关系,即代码的逻辑组织。
??从组件层次的视角来看,这代表着文档、目录、包和库及其间的依赖关系,即代码的物理组织。
??站在时刻上看,这关乎源代码和组件在特定时刻的表现形式。
??站在时段来看,这代表着软件形态在时间过程中的演化或转变。

我们要什么样的软件h2>

1.外部质量因素和内部质量因素

??软件是商品,影响用户的质量因素我们称为外部质量因素;对应地,影响软件本身和开发者地质量因素为内部因素(客户不在乎的部分XD)。因素之间可能对立可能合作,比如:高效和安全的冲突;可扩展性和可复用性的合作。
??最终,我们希望得到一个权衡之后最适合客户的产品,这是软件构造这门课希望我们能够学到的。

2.来个枚举

??外部因素是最重要的方面:正确性、健壮性、可扩展性、可复用性、兼容性、同构性、高效性、可移植性、易用性、功能数量度、及时性以及其它特性(商用软件的可验证性、完整性、经济性等0)。
??内部因素是不受重视但合作的开发者原因持之以恒追求的内容:可读性、可理解性、清晰结构、合理大小等。

3.比较、妥协、一些想法

??先说短的,内部因素中,可读性和可理解性我想是为了程序的维护和检错而设计的,它们的保证意味着程序更容易维护和检查错误,人毕竟不是机器。
??再说长的,外部质量里,冲突就很丰富了:优化效率性往往是根据平台的特性进行的,那么就会与可移植性冲突;可扩展性往往需要时间去高度抽象,那么势必与及时性有所矛盾;再如完整性,保证软件的完整,那么意味着对插件的不友好,而方便的插件又会增长易用性。
??这些冲突都是在软件的构造过程中会遇到的,开发者需要做出妥协来平衡这些特性,以保证软件产品最终可用。妥协意味着向权高的性质倾斜,那么谁的权高r> ??公认的一些重要因素:正确性、健壮性、效率性、可扩展、可复用。
??前三个是必须的,客户忍受不了一个疯狂出错(我的糟糕代码会出现)、一触即碎(再次辱我)、耗时漫长的软件(此处辱法,曾经有法国公司为政府开发软件,结果某个命令42分钟后才完成反馈,测试人员按照故障 错,最终弃用)。后两个是为了软件的生命更长而准备的,可扩展和可复用意味着一份代码只需要进行修补就可以完成更多的工作。

4.面向对象好在哪里h5>

??对象好,可惜我没有,从面向过程编程到面向对象编程的转变我还没有适应,课程实验也是十分遗憾的。下面给出一张图,来说明面向对象好在哪:

那课程中涉及了什么h2>

??从实验中的总结,本门课程涉及了:对代码可读性的训练、对可复用性的尝试、对正确性和健壮性的探索。而没有对于高效性的追求。
??而实际上可以归结五个关键属性是需要在软件构造中涉及:容易理解、随时准备改变、经济开发、错误安全、效率能跑。

以上,致礼

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年6月3日
下一篇 2020年6月3日

相关推荐