编程学习笔记(第一篇)面向对象技术:绪论-软件开发方法的演化与最新趋势

 

软件工程的课程,对于从事大中型的软件开发是至关重要的一门课程。

《面向对象技术高级课程》深入、系统、完整地讲解当今主流的面向对象软件开发方法的分析、设计、实现及重构方法,深入讲解UML语言的高级技术细节,以及近年来面向对象方法最新的发展趋势。

面向对象技术主要内容是面向面向对象软件开发的分析、设计和实现方法。

首先介绍下软件工程的一些概念。

一、理论基础知识

1、系统的概念

这个概念有不同的解读。

相互作用的多元素的复合体 ---贝塔朗菲(系统论和理论生物学创始人)

  • 多元性

  • 相关性或相干性

  • 整体性

相互作用和相互依赖的若干组成部分结合成的具有特定功能的有机整体。---钱学森

  • 由许多部分组成

  • 部分之间存在着相互关联、相互制约、相互作用

  • 具有某种功能的整体,整体的功能性

整体大于部分之和 ---亚里士多德

耗散系统

  • 耗散系统是比利时皇家科学院院长布鲁塞尔学派领导人伊利亚·普里高津提出的,为此他获得了1977年诺贝尔化学奖。

  • 耗散系统就是指一个远离平衡态的开放系统(力学的、物理的、化学的、生物的、社会的等等)通过不断地与外界交换物质和能量,在外界条件的变化达到一定阈值时,就有可能从原有的混沌无序状态过渡到一种在时间上、空间上或功能上有序的规范状态,这样的新结构就是耗散结构,或称为耗散系统。

  • 耗散系统具有真正意义上的时间单向性。时间变成了不可逆的矢量,单向流逝,一去不返。

  • 我们生存的宇宙是一个我们现在能感知的最大的耗散系统。

  • 软件系统也是耗散系统。

系统结构

  • 静态结构:系统处于尚未运行或者停止运行状态时各部分之间的基本联接方式。

  • 动态结构:系统处于运行过程中所体现出来的各部分之间的相互依存,相互支持,相互制约的关联方式。

  • 时间结构:系统组成部分依赖于时间流程所体现出来的关联方式。

  • 空间结构:系统组成部分依赖于空间的分布、排列或者配置所决定的关联方式。

  • 时空结构:系统组成部分既依赖于空间又依赖于时间的关联方式。

2、结构的概念

结构是一个由种种转换规律组成的体系。---皮亚杰

这个转换体系作为体系(相对于其各成分的性质而言)含有一些规律。

正是由于有一套转换规则的作用,转换体系才能保持自己的守恒或使自己本身得到充实。

性质:

  • ​ 整体性​ 转换性:一个元素可以转换为另一个元素 ​ 自身调整型:根据情况进行调整

结构广泛地适用于数学、逻辑学、心理学、社会学、艺术等领域。

3、模型与科学模型

​ 模型在日常生活中我们经常见到。模型在科学研究和工程中应用的更加广泛,所有的科学研究以及各种比较成熟的 工程领域,工程学领域,基本上都会出现很多的各种各样的模型。

​ 模型是一个人的一种对现实世界的一种反应, 因为现实世界过于抽象,所以我们建立一个现实世界的一个指代物,它要比理解现实世界更加简单, 所以用它来代指现实世界的某一个事物, 这样理解起来呢就非常容易。

模型对人类认识世界至关重要,编写代码用模型可以提高代码的复用性、可拓展性,减少一些隐含的风险。

人类知识分类:常识、经验性知识、神话故事(传说)、科学知识、哲学、艺术知识、宗教七类---卡尔波普尔

在现实世界,在认识现实世界过程中建立的模型, 现实世界对于人来说, 直接认识过于复杂,人直接利用各种各样的经验,各种各样的知识, 抽象简化成一些模型来进行认识。

​ 卡尔·波普尔最关键一个贡献就是他把科学模型和其他的一些 知识做了一个非常明确的一个界定,他通过 三个性质来讲科学模型与其他的模型做了一个很好的切割。

这三个性质分别是:

  • 可解释性:现象可以被理论解释

  • 可预言性:可以根据理论对现象进行预言

  • 可证伪性:可以被证明是正确的

这三个性质可以是如果我们要认定某一些知识是科学,这三个性质可以说是缺一不可。

​ 现代数学中数理逻辑的一个分支,恰恰是研究模型的,我们称之为模型论。 它的模型论实际上恰恰是对一些复杂的 一些理论建立 一种比较容易理解的直观的模型。

4、工程模型

工程:(狭义)以某组设想的目标为依据,应用有关的科学知识和技术手段,通过一群人的有组织活动将某个(或某些)现有实体(自然的或人造的)转化为具有预期使用价值的人造产品的过程。

(广义)一群人为达到某个目的,在一个较长时期内进行协作活动的过程。

工程师:实践和研究工程学的人。工程师在构造实物前,先构建模型,之后向模型学习。

工程模型

实际系统的简化表示,支持理解复杂问题或情况、针对某一问题或情况交流思想和驱动实现。有用的工程模型必须具有抽象、可理解、可模拟(反映实际系统行为)、精确、预言、便宜和转化(实现)。工程模型只能检验,不能证明,当前尝试证明。被证伪,危害严重。

工程模型在设计和实现之间存在语义鸿沟:构造方法、技术和误解。工程模型是双刃剑。

不能被证明,只能检验。一旦模型出错危害严重。

在一些比较成熟的工业中存在大量的模型,人们往往在 建造实体之前要建立各种各样的工程模型,比如说一个建筑领域的工程师要建一个桥梁,在一开始他要建立 一些数学的模型来计算,为了传达他的这个桥梁的一些建设一些意图和思想,它必须要画一些图纸。 来这个传达自己的一些想法,因为有了图纸之后,就可以使成千上万的一些工程设计的一些人员, 可以协作的一些工作,传递准确的信息。

建造模型的目的还是为了交流,第一个目的是为了 这个控制复杂性,第二个目的是为了交流,这个 第三个目的就是为了驱动实现。 这个建立 这个模型实际上呢是从我们头脑中的构想, 和这个现实的未来的这个建造是实际的 工程系统中搭建了一个桥梁,使得我们 按照有计划的有步骤的一步一步的逼近 这个未来的这个我们这个重要构建的那个 宏图。

有用的工程模型必须包含的特征

  • 抽象

    强调重要的方面忽略无关的方面

  • 可理解

    以一种对观察者容易理解的方式表现

  • 可模拟

    模仿其代表的事物的结构与行为

  • 精确

    忠实的反映被建模系统

  • 预言

    可用来导出关于被建模系统的正确结论

  • 便宜

    比被建模系统更便宜构造及学习

  • 转化

    模型可以转化为现实事物

5、软件模型

软件模型

软件模型是一种特殊的工程模型, 是在软件工程领域应用的一个模型, 软件模型基本上都是一些泡泡和箭头, 这个相对于程序而言它们不会 crash,也就是它们不会崩溃。

软件模型的问题:与工程模型有很多相似的地方,但主观性强、可模拟性不强、转换为代码需要经历多种模型的转化。

模型:所研究系统、过程、事物或概念的一种表达形式,也可指根据实验、图样放大或缩小而制作的样品。

建模:为了某一认知的目的,有效益地用某一事物替代另一事物。 允许我们 为了特定的目的来替代现实, 模型是对现实的抽象,因为它不可能表示 现实的所有的方面。 模型使得我们以一种简单的方式来认识世界, 避免现实中的复杂、 危险和不相关性。 但是呢,我们也由此不得不承受 由于这种简化而造成的一些风险。

软件开发复杂性:

需求难以精确描述、

开发过程需求经常变化、

大量文本二义冲突、

难以发现大项目隐藏复杂性、

人类处理复杂现象能力有限、

难以评估预期执行结构能否满足用户期望

1+1+1>3.

软件开发过程中模型支持理解、准确交流及模拟或验证设计结果。

软件开发过程中模型的作用

模型的重要性

便于更好地理解我们正在开发的系统

可以模拟或者验证设计结果,造成不必要的损失或者浪费

便于工程中所涉及的人员之间的准确、快速的信息传递。

在软件领域一个独特的地方是所有的模型呢 实际上是主观性非常强,依赖于建模者的 视角,建模者所持有的方法学,以及建模者个体 。即使对相同的事物,可以允许我们以不同的视角,不同的方法学去来看待 ,可以允许仁者见仁,智者见智。 即使对相同的事物存在有不同的模型 ,仍然可以采取一些比较宽容的态度来面对。

猜你喜欢

转载自www.cnblogs.com/Nicholas0707/p/9203766.html
今日推荐