【软件工程】课上qq消息记录
因为过分追求emmm整洁性和简洁 ,导致手机和电脑端都是经常删东西。。。所以下面老师和同学们的发言都不全唉😔
课前或者课后老师们都会在群里问些问题。 下面是整理后的重点。(摘了同学们的比较好的回答)
结构化设计
第八次课的handout和第七章PPT和慕课第三周开始的内容 时间为3.4 所以腾讯课堂上两个老师都没有视频
mooc前两周为概要设计 第三周为详细设计
软件工程- 2020/03/05 08:31:04
大家好,上课了,今天我们开始进入结构化设计的学习。首先请大家浏览下第八次课的handout,明确结构化设计的教学目标和教学内容。
结构化设计这部分教学内容比较多,大体分为两个部分:总体设计(约2次课)和详细设计(1次课)。
首先请大家观看mooc视频:结构化设计方法-1 的第1小节:结构化设计概念
看完的同学请思考:
1.软件设计的概念、目标是什么?
2.软件设计活动分为哪两类?分别包含哪些设计内容?
我们知道需求分析解决的是“what”做什么的问题,那么设计阶段主要解决的是“how”怎么做的问题。
设计阶段的活动主要包含两大类活动:总体设计和详细设计。我们首先来学习总体设计,总体设计通常又称为概要设计,其主要设计内容是根据我们需求分析阶段推导出的需求来设计软件的体系结构,接口设计以及数据设计。
我们课堂上重点讲如何设计软件的体系结构。
那么什么是软件的体系结构呢,这个英文单词是architecture,通常也称为体系架构
公司里一般有软件架构师的职位,都是具有好多年工作经验的优秀软件工程师才能胜任。可想软件架构的重要性。
软件结构实际上说的是软件系统的一种组织方式,在结构化设计中,通常将一个软件按照模块化进行组织,软件架构就是研究软件以模块之间组织的关系与接口
大家思考一下这个问题:在结构化总体设计中,是采用什么来表示软件体系结构的模型呢?
在需求分析中,我们采用DFD数据流图表示软件的功能需求
那么在结构化设计中,采用什么图来表示软件体系结构呢?其建模元素有哪些呢?请大家回答一下
可以回顾一下mooc的视频
ok,模块结构图(MSD)可以表示,我们有时候也把它称为软件结构图(structure chart,SC)。这里我补充一下,除了模块和调用关系,还有一个元素是信息传递,即用带注释的短箭头表示模块调用过程中传递的信息。例如,此图包含两个模块,模块A调用模块B,模块A将输入信息学号传递给模块B,模块B返回查询标志和记录地址信息给模块A
注意,在MSD中,模块之间是调用关系,通常模块A也叫做模块B的上属模块,模块B也叫做模块A的下属模块
除此之外,还可以表示选择性的调用和循环调用
选择调用使用菱形来表示,如上图(a)所示,A根据条件调用模块B或C
循环调用如图(b)所示
好,了解软件结构图的表示,我们下面就来看看如何根据DFD得到系统的MSD
总体设计的一般过程:将DFD变换到初始的MSD,然后根据一些设计原则对MSD进行精化、优化
首先我们来看看如何将DFD变换到初始的MSD,请大家观看mooc 初始模块结构图的设计
这一部分内容有点长,大概二十分钟时间
看完的同学请回答:
1. 结构化总体设计采用的是什么设计方法?
2. 数据流图类型有哪几种?
3. 若采用变换设计方法,有哪些设计步骤?
4. 若采用事务设计方法,有哪些设计步骤?
软件工程- 2020/03/10 14:30:45
大家好,上课了,上节课我们讲到总体设计中的如何将需求分析阶段建模的DFD图变换到初始的MSD模块结构图。
大家还记得有哪些设计方法么
请快速回顾一下上节课的内容
面向数据流的设计方法具体分为哪两种呢
计科- 2020/03/10 14:36:37
变换设计方法和事务设计方法
软件工程-2020/03/10 14:38:21
恩,对的
根据DFD数据流图的类型可以分为变换型和事务型,前者的主要特征是数据流图具有输入-变换-输出的结构特征,后者的主要特征是数据流图具有输入-事务中心-多条活动路径的结构特征
根据DFD数据流图的类型,我们可以根据相应的变换型设计方法或事务型设计方法,将DFD转换到相应的MSD模块结构图
好的,具体的方法我就不在这里回顾了
今天我们要学习新的内容
当我们已经获得了初始的MSD以后,我们要进行进一步精化和优化所得的MSD
那么这里需要遵循设计上的一些规则,以及经验
下面请大家观看北大视频 结构化设计-1中的初始模块结构图精化的原则
然后回答:
1. 什么是模块化设计思想?有什么好处?
2. 模块独立性有两个度量指标:内聚和耦合。
什么是内聚?从弱到强依次分为哪些内聚类型?
什么是耦合?从弱到强依次分为哪些耦合类型?
模块设计要遵循什么原则?
计科- 2020/03/10 14:58:13
1.模块化指的是把系统分解成若干模块的过程,可以减少花费的时间
2.内聚是一个模块之内各成分之间相互依赖程度的度量,从弱到强分别为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚;耦合是不同模块之间依赖程度的度量,从弱到强分别为数据耦合、标记耦合、控制耦合、公共耦合、内容耦合
;模块设计要遵循的原则是高内聚,低耦合
计科- 2020/03/10 14:59:04
模块化指的是把系统分解成若干模块的过程
内聚是一个模块之内各成分之间相互依赖程度的度量,从弱到强分别为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚;
耦合是不同模块之间依赖程度的度量,从弱到强分别为数据耦合、标记耦合、控制耦合、公共耦合、内容耦合
;模块设计要遵循的原则是高内聚,低耦合计科- 2020/03/10 15:03:19
**模块化**:是将总体任务划分成不同的模块分别实现的思想或过程。
模块化可以减少工作量。
**耦合**:不同模块之间相互依赖程度的度量
由**弱到强**分别是:
数据耦合:模块间通过参数传递基本类型的数据
标记耦合:俩个模块间至少有一个通过界面传递的公共参数,包括内部结构,如数组、字符串等
控制耦合:一个模块向另一个模块传递一个控制信号,接受信号的模块将依据该型号值竞选必要的活动
公共耦合:俩个一上的模块共同引用一个全局数据项
内容耦合:一个模块直接修改或操作另一个模块的数据
**内聚**:一个模块之内各成分之间相互依赖程度的度量
由**弱到强**分别是:
偶然内聚:一个模块之间各成分之间没有任何关系
逻辑内聚:几个逻辑上相关的功能放在统一模块中
时间内聚:一个模块完成的功能必须再同一时间内完成,而这些功能只是因为时间因素关联在一起
过程内聚:处理成分必须以特定的次序执行
通信内聚:各成分都操作在用一个数据集或生成同一个数据集
顺序内聚:各成分与一个功能相关,且一个成分的输出作为另一个成分的输入
功能内聚:模块的所有成分对完成单一功能是最基本的,该模块对完成这一功能而言是充分必要的计科-2020/03/10 15:05:50
1、把一个大型软件系统的全部功能,按照一定的原则合理的划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。
2、内聚:一个模块之内各成分之间相互依赖程度的度量。从弱到强分为偶然性内聚、逻辑性内聚、时间性内聚、过程性内聚、通信性内聚、顺序性内聚、功能性内聚。
耦合:不同模块之间相互依赖程度的度量。从弱到强分为数据耦合、特征耦合、控制耦合、外部耦合、公共耦合、内容耦合。
原则是高内聚、低耦合。
软件工程-2020/03/10 15:45:34
下面我们进入下一个环节的学习
MSD的优化
我们如何去优化一个软件模块结构图呢,除了上述模块设计的高内聚、低耦合的原则外,我们还要遵循哪些原则呢
请大家观看第四周结构化设计方法2请大家回答
1. 我们从哪些方面来评判一个软件模块结构图的形体特征?
计科 2020/03/10 15:51:37
深度 宽度 扇入数 和扇出数
软件工程- 2020/03/10 15:54:52能分别说一下这个软件结构图的深度,宽度,扇出和扇入分别是多少么
M的扇出 T的扇入
计科-同学 2020/03/10 15:56:37
3 4 深度:5,宽度:8
下面一个问题:
软件模块结构图的优化原则有哪些呢?
计科- 2020/03/10 16:00:46
1.改进软件结构,提高模块独立性;
2.模块规模适中-每页60行语句;
3.深度、宽度、扇入和扇出适中;
4.模块的作用域力争在控制域之内;
5.降低模块接口的复杂性;
6.模块功能应该可以预测。
软件工程- 2020/03/10 16:07:30
这里我补充一些:
1. 模块的规模最终还是应该由模块的功能来决定,不违背模块的单一职责原则。一个模块具体多少句这个不定。当然如果过长会影响可读性。
2. 软件模块结构图的形态特征:一般顶层扇出数较高一些,中间层扇出数较低一些,底层扇入数较高一些。当然,也不能过分追求底层扇入数,不能违背模块高内聚特性。
0312
软件工程-老师 2020/03/12 08:31:01
今天我们进入详细设计的学习
我们首先来回忆下,总体设计和详细设计阶段的任务分别是什么?
计科2020/03/12 08:35:21
总体设计:体系结构设计、接口设计、数据设计
详细设计:包括模块内部设计即算法和数据结构
软件工程-2020/03/12 08:36:45
好的,同学们回答的很好
前面我们已经学习过总体设计阶段如何从DFD经过变换获取到系统的体系 结构图,体系结构图描述的是组成系统的模块结构以及模块之间的调用接口关系。那么详细设计则是对系统的底层模块进行进一步细化,描述该模块内 部的处理逻辑、算法等。
首先请大家观看北大mooc:详细设计工具
请回答:
1.结构化详细设计工具有哪些?
软件工程- 2020/03/12 08:38:34看完后请回答:1.结构化详细设计工具有哪些?
计科- 2020/03/12 08:41:29
结构化详细设计工具有伪码、程序流程图、PAD图、N-S图、判定表和判定树
软件工程-2020/03/12 08:45:30
详细设计工具主要分为三大类:伪代码,图形表示、表的表示
首先我们来比较一下图形的几种表示:流程图,PAD图,N-S图
首先提个问题,结构化程序的三种基本逻辑结构是什么?
大家可以回忆下讲结构化程序设计的三大控制结构
计科- 2020/03/12 08:47:19
顺序,选择,循环软件工程- 2020/03/12 08:47:34
ok好的,首先请大家用流程图来表示这三大结构,请大家画出来,上传 注意图形符号的正确表示
软件工程- 2020/03/12 08:54:43
好的,我这里对循环结构还要进行补充一下
看到大家一般画的是左边的先判断循环结构,这种结构类似于我们程序设计中的while循环
先判断条件,然后做事情,直到为假跳出程序
那么右边这种也很常用,后判断循环,注意这里的逻辑是先做S,然后判断条件P,P为假时一直循环做S,直到P的条件为真才结束循环
注意,后判断循环这种逻辑和我们通常的程序设计语言里面do{}while()循环是不一样的
流程图的符号最基本的常用的就是以上这些
下面,我们再来看看盒图N-S图,请大家用盒图来表示三大结构
循环结构要求画出while和until型两种类型
计科- 2020/03/12 09:04:21软件工程- 2020/03/12 09:07:48
好的,循环体的两种结构
while循环until循环
好的,掌握了盒图的描述符号,我们再来看看PAD图,请大家同样使用PAD符号画出三种控制结构
软件工程-2020/03/12 09:14:13
这里要注意条件的表示和功能的表示的区别,条件的长方形右边框内有一条竖线。
刚看到一些同学把条件和功能画成一样的了
这个until表示大家要注意其含义,是先做P,直到c为真才结束循环好的,下面我们来做一个小练习,请大家分别用流程图、盒图、PAD图描述下面的问题:
计科- 2020/03/12 09:33:22
软件工程- 2020/03/12 10:12:32
我们下次课就进行面向对象的学习了
0316
软件工程- 10:21:53
好,下面我们讨论软件设计。需求分析解决do what 设计是解决how to do。软件设计是不是编程呢,它是干什么的呢?
软件设计不是编程。
软件设计包括:可行性,需求分析,概要设计,详细设计,设计测试用例。
软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
软件工程-10:29:39
很好!同学们从不同角度回答了这个问题。软件设计可以从两个角度来看。从管理角度来说分为概要设计和详细设计,从技术角度来说,分为数据设计,系统结构设计与过程设计。
请大家注意,不管是需求分析还是结构化设计,都请记住8个字,自顶向下,逐步求精。概要设计最重要的是模块划分和模块独立性。什么是模块化呢?
模块化,指整个软件被划分成若干单独命名和可编址的部分。
把问题/子问题的分解与软件开发中的系统/子系统或系统/模块对应起来
软件工程-10:42:56
很好!我们这门课实际上应该叫"软件工程概论"。关于软件设计,有一个专门的研究方向,叫"软件体系结构",Software Architecture.到校后大家可以到图书馆找到相关书籍。大家想一下什么是程序的系统结构图?有哪些因素呢?
系统结构图是结构化设计方法使用的描述方式,也称结构图或控制结构图。它表示了一个系统 (或功能模块) 的层次分解关系,模块之间的调用关系,以及模块之间数据流和控制流信息的传递关系,它是描述系统物理结构的主要图表工具。反映的是系统中模块的调用关系和层次关系 有一个先后次序(时序)关系有向线段表示调用时程序的控制从调用模块移到被调用模块,并隐含了当调用结束时控制将交回给调用模块。
系统结构图的概念是:反映程序中模块之间的层次调用关系和联系。
它的因素有: 模块、模块的调用关系和接口、模块之间的信息传递。
系统结构图是结构化设计方法使用的描述方式,也称结构图或控制结构图。它表示了一个系统 (或功能模块) 的层次分解关系,模块之间的调用关系,以及模块之间数据流和控制流信息的传递关系,它是描述系统物理结构的主要图表工具。
在系统结构图中的有向线段表示调用时程序的控制从调用模块移到被调用模块,并隐含了当调用结束时控制将交回给调用模块
软件工程-10:55:02
Very Good!系统结构图中,请大家理解"深度",宽度,扇入,扇出等概念。本章最重要的一点是模化独立性,模块设计要求高内聚,低耦合。什么是模块独立性呢?内聚与耦合有哪些呢?
计科1801郁紫岚(985971668) 10:57:04
模块独立性有两个度量指标:内聚和耦合。
内聚是指一个模块之内各成分之间相互依赖程度的度量,从弱到强依次分为偶然内聚,逻辑内聚,时间内聚,过程内聚,通信内聚,顺序内聚,功能内聚。
耦合是指不同模块之间相互依赖程度的度量,从弱到强依次分为数据耦合,标记耦合,控制耦合,公共耦合,内容耦合。
软件工程- 11:07:33
很好!请大家务必记住7种内聚7种耦合。由于是英文翻译过来的,不同教材的描述略有差异。大家注意,我们做概要设计与模块划分,本质上是从数据流图(DFD)出发来进行设计的。其方法有两种,即变换型与事务型。那么什么是变换型与事务型呢?
变换型结构由三部分组成:输入、数据加工(中心变换)和输出。在变换型结构中,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。变换型结构的数据流图呈一种线性状态。
事务型结构由3层组成:事务层、操作层和细节层,功能是对接收的事务按其类型选择某类事务处理,即数据沿输入通路到达一个处理,这个处理根据输人数据的类型在若干个动作序列中选出一个来执行。事务型结构的数据流图则呈束状。
变化设计方法是将具有变换流特征的数据流图映射为软件结构图。
变化设计方法的要点是分析数据流图,确定输入流、输出流边界,根据输入流、变换流、输出流3个数据流分支将软件映射成一个标准的树形体系结构。
事务设计是把事务流映射成包含一个接收分支和一个发送分支的软件结构。
接收分支的映射方法与变换设计映射出输入结构的方法相似,即从事务中心的边界开始,把沿着接受流通路的处理映射成一个个模块。
发送分支包含一个分类控制模块和它下层的各个动作模块。
数据流图的每一个事务动作流路径应映射成与自身信息流特征相一致的结构。
变换型:由输入、数据加工、输出组成。信息沿着输入通道输入,经过数据加工后得以变换后,在通过输出通道输出,呈现线性状态。
事务型结构:根据事务处理的特点和性质,选择分派一个适当的处理单元
事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。
软件工程-11:22:54
很好!请大家注意"模块的作用范围应在控制范围之内"。如何理解模块的大小要适中?什么时候停止模块分解呢?
一般来说,问题的总复杂性和总工作量会随着分解逐步减少,但是,如果无限地分解下去,总工作量反而会增加。因此,软件模块化必须保证科学、合理地进行模块分解。
停止模块分解:
1. 当模块不能再细分为明显的子任务时
2. 当分解成用户提供的模块或程序库的子程序时
3. 当模块的界面是输入/输出设备传送的信息时
4. 当模块不宜再分解得过小时
概要设计完成后,需要撰写设计说明,必需进行设计评审及优化,只有通过了评审才能进行下一步详细设计,也就是软件工程上说的."里程碑"。问题:什么是数据设计?什么是文件设计呢?
数据设计的过程:
选择一个最有效的结构;
设计对于这种逻辑数据结构的一组操作
确定对逻辑数据结构所必需的那些操作的程序模块(软件包)
文件设计:分两个阶段。第一个阶段是文件的逻辑设计,主要在概要设计阶段实施
关于文件的组织方式,涉及到操作系统部分内容。下次课我们重点讨论详细设计(过程设计)。请大家提前预习,看北大mooc或ppt,有什么问题请qq留言。今天就到这里,88
0326
2020-03-16 17:26:43 软件工程-
请按照handout提前预习课程,提前学习北大视频:UML和面向对象分析的视频
恩,OK。具体来说,
1. 参与者与参与者之间的关系(泛化)
2.参与者与用例之间的关系(关联)
3.用例与用例之间的关系(包含、扩展、泛化)
说关系时要说明谁与谁的之间的关系.好的,那么用例之间的包含关系与扩展关系有什么不同呢?两者的使用场景是怎样的呢
2020-03-19 8:45:36
包含用例一定执行,扩展用例不一定执行
2020-03-19 8:49:05
使用场景:
1、包含关系:当从两个或两个以上的用例中可以提取公共行为时,则可使用包含的关系来表示它们。
2、扩展关系: 如果一个用例明显地混合了两种或者两种以上的不同场景,即根据情况可能发生多种分支,则可使用扩展的关系来表示它们。
2020-03-19 9:00:22
老师,参与者和用例之间的关联关系不需要箭头吗
2020-03-19 9:01:26 软件工程-
箭头最好画上
回答:顺序图的特点是什么?有哪些要素?与活动图有什么区别?
2020-03-26 9:00:03
特点:顺序图用一个二维图描述系统中各个对象之间的交互关系,其中,纵轴是时间轴,时间沿竖线向下延伸,横轴代表了参与相互作用的对象。
要素:对象,参与者,生命线,激活条,消息
区别:
顺序图关注的是实体之间的互相调用,而活动图中的活动有些是实体自身的活动
顺序图和活动图的活动不同,每个消息除了调用,还有返回值
2020-03-26 9:02:51
1.顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。顺序图是一种动态建模方法。 UML顺序图一般用于:确认和丰富一个使用情境的逻辑。
2.主要元素:对象:参与交互的类的实例,对象之间可以发送消息和接收消息。
参与者:描述本次交互的发起者,即用例的驱动者。用小人形状表示。
生命线:生命线用于描述对象的生存周期,对象下方的虚线就是该对象的生命线。
激活条:表示控制焦点的控制期,指活动者或对象处于执行状态的时间段。用矩形条表示。
消息:消息用于描述对象间交互的方式及内容。
3. 区别:流程图着重描述处理过程,它的主要控制结构是顺序、分支和循环,各个处理过程之间有严格的顺序和时间关系。而UML活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。
2020-03-26 9:04:52
特点:
1.顺序图是用来描述对象自身及对象间信息传递顺序的视图。它用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或状态机中引起转换的触发事件。它着重显示了参与相互作用的对象和所交换消息的顺序。
2.顺序图用一个二维图描述系统中各个对象之间的交互关系,其中,纵轴是时间轴,时间沿竖线向下延伸,横轴代表了参与相互作用的对象。
要素:
顺序图的主要元素
对象:参与交互的类的实例,对象之间可以发送消息和接收消息。
参与者:描述本次交互的发起者,即用例的驱动者。用小人形状表示。
生命线:生命线用于描述对象的生存周期,对象下方的虚线就是该对象的生命线。
激活条:表示控制焦点的控制期,指活动者或对象处于执行状态的时间段。用矩形条表示。
消息:消息用于描述对象间交互的方式及内容。
与活动图有什么区别:
活动图主要描述系统的行为,顺序图用来表示用例中的行为顺序
2020-03-26 10:02:26 软件工程-
这节课就到这里了,下课了
有疑问的同学可以课后留言
0402
2020-04-02 8:52:29 软件工程-
OOA主要是关注问题域(即领域概念、业务逻辑),而OOD主要是结合具体的实现条件,给出OOA提出的问题域空间的具体实现方案。
2020-04-02 8:53:02
1.OOD是面向对象设计
2.面向对象的设计以面向对象分析所产生的需求规格说明书为基础,设计出描述如何实现各项需求的解决方案 目标:提高软件生产效率,提高质量,每个环节都要质量保证,加强可维护性(把易变部分和较稳定部分隔离)
3.关系:面向对象设计以面向对象分析为基础,OOA考虑做什么, OOD考虑怎么做
4.问题域部分,人机交互部分,控制驱动部分,数据接口部分
2020-04-02 8:53:22 软件工程-
OOA主要是关注问题域(即领域概念、业务逻辑),而OOD主要是结合具体的实现条件,给出OOA提出的问题域空间的具体实现方案。
所以OOD要考虑诸多实现因素
对OOA进行调整、补充,以及OOA未完善的地方进行细化
那么考虑到实现条件的影响,尽量减少实现条件对OOA的影响,所以新增了相对独立的人机互交部分,控制驱动部分,数据接口部分
对OOA进行调整、补充,以及OOA未完善的地方进行细化,实际上是对问题域部分的设计
下面请大家看北大mooc视频:问题域部分的概念
回答:
1.什么是问题域部分?
2.有哪些对于问题域部分有影响的实现条件?
2020-04-02 8:58:59
1.什么是问题域部分?
问题域部分是OOD模型的四个组成部分之一,是由问题域有关的对象构成,并且在特定的实现条件下提供用户所需功能的组成部分
2.有哪些对于问题域部分有影响的实现条件?
(1)编程语言(2)硬件、操作系统及网络设施(3)复用支持(4)数据管理系统(5)界面支持系统
2020-04-02 8:59:25
1.问题域部分是由问题域有关的的对象构成,并且在特定的实现条件下提供用户所需功能的组成部分。
2.汇编语言;硬件、操纵系统及网络设施;复用支持;数据管理系统;界面支持系统
2020-04-02 9:00:17 软件工程-
那么如何对问题域部分进行设计呢?
请看北大mooc 如何进行问题域部分的设计一节
问题域部分是OOD模型的四个组成部分中最重要的部分,也是比较稳定的部分,它是对OOA的问题域和系统责任刻画的领域概念及业务逻辑的具体实现。
具体的影响条件大家说的很对,因此需要根据这些条件对于问题域的影响来相应的调整、补充问题域部分,这就是问题域部分的设计。
那么如何对问题域部分进行设计呢?
请看北大mooc 如何进行问题域部分的设计一节
这一节时间比较长,请大家快速浏览
2020-04-02 9:18:38 软件工程-
对于问题域部分的设计,这一节讲的比较理论化。
1.在编程技术上面,要利用面向对象继承、聚合、多态等特性,实现类的复用,可维护,可扩展。还要结合实际编程语言的特性,具体问题具体分析。如果采用面向对象的设计方法,最好是选用面向对象的语言来实现。
2.有关性能方面的考虑。特别是分布式通信方面,提高性能,可能要做一些类的合并。
3. 有关人机交互、数据管理、控制驱动方面,可能对问题域有一些影响,根据这些方面对问题域进行相应的调整和补充。
时间的关系,这一部分没看完的大家回去自己再学习,包括后面人机交互、数据管理、控制驱动部分的设计。我下面进行直播补充讲解.
0408
2020-04-08 15:14:57 软件工程
(UML)问题,描述需求和功能的是哪种图?哪种图和数据库的表有关联?如何描述动态行为?
2020-04-08 15:27:43
1.用例图描述需求和功能;
2.类图和数据库的表有关联;
3.动态行为用状态图、活动图、时序图、协作图描述。
2020-04-08 15:30:53 软件工程-
很好!状态图与其它描述动态行为的图根本区别是什么?顺序图与协作图有什么关系?描述系统架构的主要是哪几种图?回答完这个问题,我们再直播一下如何用UML分析与设计系统。
2020-04-08 15:33:48
1. 状态图描述类的对象所有可能的状态,以及事件发生时状态的转移条件。
2.顺序图:强调消息的时间顺序。 协作图:强调消息发送和接受对象的结构组织。
2020-04-08 15:35:10
顺序图和协作图的作用相同,但顺序图强调事件的时间关系。
顺序图表现了导致行为从一个类流动到另一个类的关键类和事件。
2020-04-08 15:45:41 软件工程-
好,类图与对象图主要描述系统的静态行为,与数据库的表及表与表之间的关系紧密相连。系统架构主要是实现视图,部署视图及包图。我们再直播一下uml分析与设计。
0409
2020-04-09 8:31:45 软件工程-
下面上课了,今天我们课堂的内容是首先把上节课没讲完的面向对象的设计讲完,然后我再讲一下需求分析文档、概要设计文档、详细设计文档
首先我们复习下上节课的内容,提两个小问题:
1. UML提供什么图来支持软件逻辑体系结构的建模?若采用面向对象方法进行总体设计时,应该如何去构建软件逻辑体系结构?
2. 类图之间的关系有哪些?聚合和组合关系属于哪种关系,两者之间有什么区别?从设计角度来看,泛化和实现关系在什么情形下使用,有什么用途?
2020-04-09 8:43:35
1.1状态图,时序图,协作图,活动图
1.2描述系统的逻辑结构(例如分层的体系结构)
UML包图、类图提供建模支持
通常以设计模式为指导,优化结构
2.1依赖< 关联 < 聚合 < 组合 < 泛化 2.2 聚合和组合属于关联关系,聚合部分可以离开整体而单独存在。 而组合部分不能离开整体而单独存在。2.3泛化是一种继承关系,实现是一种接口关系
2020-04-09 8:43:58
类图之间的关系有:泛化、实现、关联(组合、聚合、一般关联)、依赖
聚合和组合属于关联关系。
聚合:是整体与部分的关系,且部分可以离开整体单独存在,用带空心菱形的实线表示,菱形指向整体
组合:是整体与部分的关系,单部分不能离开整体单独存在,用带实心菱形的实线表示,菱形指向整体
泛化:是一种继承关系,表示一般与特殊的关系,指定子类如何特化弗雷的所有特征和行为,用带空心箭头的实线表示,箭头指向父类
实现:是一种类和接口的关系,表示类是接口所有特征和行为的实现,用带空心箭头的虚线表示,箭头指向接口
2020-04-09 8:44:13
1. UML提供什么图来支持软件逻辑体系结构的建模?若采用面向对象方法进行总体设计时,应该如何去构建软件逻辑体系结构?
UML包图、类图提供建模支持。
三层架构(3-Tier Architecture) 采用MVC模式的Web体系结构
2. 类图之间的关系有哪些?聚合和组合关系属于哪种关系,两者之间有什么区别?从设计角度来看,泛化和实现关系在什么情形下使用,有什么用途?
类间关系:依赖、关联、泛化、实现
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
2020-04-09 8:48:58
1.UML提供包图、类图,通常以设计模式为指导,优化结构,三层体系结构:界面层、业务逻辑层、数据访问层来支持软件逻辑体系的结构建模
2。依赖、关联、泛化、实现
聚合关系是关联关系的一种,聚合强调拥有,组合强调一个对象是另一个对象的组成部分,是强的关联关系。
泛化关系是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
实现关系:是一种类与接口的关系,表示类是接口所有特征和行为的实现.
0413 0416
2020-04-13 12:03:05 软件工程-陈仲民<chenzmnj@139.com>
很好,最后一个问题,软件测试就是程序测试对吗?如果测试中发现大量错误,说明软件还残存很多错误,对吗?
2020-04-13 12:04:25
软件测试不仅仅是程序的测试,还有包括对软件开发过程
2020-04-13 12:05:33
软件测试是对开发人员提交的软件进行测试,模拟用户使用,发现问题。
2020-04-13 12:07:34
软件测试不仅是程序测试;如果测试中发现大量错误,说明软件还残存很多错误是对的
2020-04-15 16:01:40
使用无效等价类,可以鉴别程序异常情况的处理。在程序设计中,不但要保证所有有效地数据输入能产生正确的输出,同时需要保障在输入错误或者空输入的时候能有异常保护,才能提升软件的健壮性
2020-04-15 16:02:47
黑盒测试方法有划分等价类,边界值分析法, 错误推测法,因果图法, 判定表组成法, 正交试验设计, 场景法等;
设立无效等价类使软件能经受意外的考验,接收不合理的数据,确保软件具有更高的可靠性:
2020-04-16 9:09:29
1黑盒测试是在已知产品所应具有的功能,通过测试来检验每个功能是否都能正常使用,也称功能测试和数据驱动测试
2 特点:完全不考虑程序内部结构和内部特性 只测试接口,检测是否正确输出和输出完整 是穷举输入测试
3 试图发现以下错误
(1)功能不对或遗漏(2)界面错误(3)数据结构或外部数据库访问的错误
(4)性能错误(5)初始化和终止错误
4 具体方法(1)事务流测试(2) 等价类划分(3)边界值分析
2020-04-16 9:10:54 软件工程-
好的,大家都说的很对,黑盒测试通常又称为功能测试,其通常适用于已知系统功能,但不知道系统内部结构的情况。通过输入和输出来检验其功能行为的正确性
黑盒测试又包含等价类划分、边界值分析、因果图、错误推测等方法
首先我们来看看等价类划分。什么是等价类呢?
等价类具体又划分为哪两类呢?
2020-04-16 9:13:00
输入域的一个子集, 在该子集中, 各个输入数据对于揭示程序中的错误都是等效的。分为有效等价类和无效等价类。
2020-04-16 9:14:07
揭示程序中的错误都是等效的。即:以等价类中的某代表值进行的测试,等价于对该类中其他取值的测试。
②有效等价类:指那些对于软件的规格说明书而言,是合理的、有意义的输入数据所构成的集合。-用于实现功能和性能的测试。
③无效等价类:指那些对于软件的规格说明书而言,是不合理的、无意义的输入数据所构成的集合。-用于测试那些所实现的功能和性能不符合规格说明书的要求。
2020-04-16 9:15:50 软件工程-
ok,等价类划分的原则又有哪些呢。即如何划分等价类呢
2020-04-16 9:19:53
1 如果输入条件规定了输入数据的取值范围或值的个数,则可以确定一个有效等价类和二个无效等价类
2 如果输入条件规定了输入数据的一组值,而且软件要对每个输入值进行处理,则可以为每一个输入值确定一个无效等价类
3 如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类
4 如果输入条件规定了输入值必须符合条件,则可以确定一个有效等价类(符合条件)和一个无效等价类(不符合条件)
0426
2020-04-26 10:56:20 软件工程-
一次性组装方式有什么缺点?
2020-04-26 10:59:01
组装之后发现错误之后不容易定位出错在哪里
2020-04-27 10:22:21 软件工程-
12班同学即将开始软件工程讨论课,收到请回复!
2020-04-27 12:08:34
一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。第四级引入度量,已定义级黑盒子被打开
2020-04-27 12:08:43
5个成熟度等级:Initial, Repeatable, Defined, Managed, Optimizing
在定量管理级引入度量,在定义级后黑盒子被打开
0429
2020-04-29 16:01:50 软件工程-
如何理解数据流图,什么时候停止分解?数据字典与数据库有什么关系?什么是PDM,什么是CDM?你知道有哪些大型数据库?
2020-04-29 16:04:43
数据流图是从数据出发,描述数据加工的过程。当该层数据流图已经无法再向下层进行分解时即可停止分解。
2020-04-29 16:06:38
数据字典通常是指数据库中数据定义的一种记录,类似一个数据库的数据结构,但其内容要比数据库的数据结构描述丰富得多,对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述
2020-04-29 16:07:36
数据流图描述与用户相关的数据和接受过程,以及数据转变为输出数据的内部加工过程,分解到不能分解或者有可以使用的模块时停止分解
2020-04-29 16:07:58
概念数据模型(CDM)信息系统的概念设计工具,即实体-联系图(E-R图),CDM就是以其自身方式来描述E-R图。此时不考虑物理实现的细节,只表示数据库的整体逻辑结构,独立于任何软件和数据存储结构。
物理数据模型(PDM)PDM考虑了数据库的物理实现,包括软件和数据存储结构。
PDM的对象:表(Table)、表中的列(Table column)、主码和外码(Primary & Foreign key)、参照(Reference)、索引(Index)、视图(View)等。
2020-04-29 16:07:59
在描述到该数据无法分解时停止分解;数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述;PDM是产品数据管理;cdm是概念数据模型
2020-04-29 16:09:10
数据流图描述与用户相关的初始数据的接收过程以及这些数据转变为输出结果的内部加工过程,数据流图实际是通过对输入数据的处理、变换以获得输出数据,这样的一个加工过程,来描述系统的功能的
2020-04-29 16:09:41
常见的关系型数据库有mysql 、SQL Server、Oracle、Sybase、DB2等。
2020-04-29 16:09:43
抽百象,其三要素是(数据结构,数据操作,数据的约束条件)
最常用的数据模度型分为概念数据模型和基本数据模型
概念数据模型是按用户的观点对数据和信息建模,回是现实世界到信息世界的第一层抽象。
基本数据模型是按计算机系统的观点对数据建模,是现实世界数据特征的抽象,用于DBMS的实现(层次模答型,网状模型,关系模型)
2020-04-29 16:14:54 软件工程-
好,大家回答得很好!大型数据库除了大家提到的以外,还有unify,informix等等。下课,88
0506
2020-05-06 15:44:06
螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径
2020-05-06 15:44:26
结对编程简单的说是指两位程序员肩并肩地坐在同一台计算机前,面对同一个显示器,使用同一个键盘和同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起编写文档等。基本上所有的开发环节都面对面、平等、互补地进行开发工作,并且这两人的角色可以随时交换。
螺旋模型最大的特点在于引入了其他模型不具备的风险分析。适合大型软件应用
2020-05-06 15:44:26
敏捷软件开发过程,按照12条原则,以尽早且持续地交付有价值的软件从而使客户满意。
开发人员与业务人员密切接触,熟悉业务员的具体过程,用效率高的面对面交谈,提供一个长期的可持续的快速开发过程,以简单为根本,开发业务人员所需求的软件
2020-05-06 15:45:04
敏捷开发采用循序渐进的方法进行软件开发,把一个大项目分为多个相互联系,但也可独立运行的小项目,分别去完成
2020-05-06 15:45:32
结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。
2020-05-06 15:47:22 软件工程-
回答得很好!下面一个问题,软件配置管理包括哪些方面?为什么需要配置管理?CRC卡片的具体含义是什么?
2020-05-06 15:48:56
软件配置管理包括标识、控制、状态统计、审计和审查、生产、过程管理、小组协作。
2020-05-06 15:51:16
在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱,软件配置管理目的是使错误降为最小并最有效地提高生产效率。
2020-05-06 15:51:28
软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,贯穿整个软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作用。一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。软件配置包括如下内容:配置项识别、工作空间管理、版本控制、变更控制、状态报告、配置审计
2020-05-06 15:51:55
软件配置管理包括标识、控制、状态统计、审计和审查、生产、过程管理、小组协作。软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,贯穿整个软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作用。一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。
2020-05-06 15:52:16
CRC卡是一个标准索引卡集合,包括三个部分:类名、类的职责、类的协作关系,每一张卡片表示一个类。
2020-05-06 15:52:19
2. 软件配置管理是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。其目标就是为了标识变更、控制变更、确保变更正确实现并内向其他有关人员报告变更。
2020-05-06 15:52:21
软件配置管理包括标识、控制、状态统计、审计和审查、生产、过程管理、小组协作。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱,软件配置管理目的是使错误降为最小并最有效地提高生产效率。
2020-05-06 15:53:40
软件配置管理包括标识、控制、状态统计、审计和审查、生产、过程管理、小组协作。软件配置管理界定软件的组成项目,对每个项目变更进行管控(版本控制),并维护不同项目之间的版本关系,以使软件在开发过程中任一时间的内容都可以被追溯,包括某几个具有重要意义的数个组合。
2020-05-06 15:56:52
3. CRC卡的内容分成3个部分:类的名称、类的责任、协作类。创建CRC卡,首先标识出类和它们的责任,然后分析其协作类。一个有用的实现技术是角色扮演技术,即从一个使用实例中取一个典型的脚本,分析类的对象如何交互完成任务,解析出该类的责任和协作类。如果发现有一些任务不属于哪个类负责,意味着设计师有缺陷的,就需要创建一个新类,改变存在类和新类的责任和协作类。
2020-05-06 16:00:35 软件工程-
好的!最后一个问题,按照你的理解,面向对象的测试技术与传统的结构化测试方法有什么不同?
2020-05-06 16:08:55
面向对象测试的整体目标(以最小的工作量发现最多的错误)和传统软件测试的目标是一致的,但是面向对象测试的策略和战术有了很大不同。
测试的视角扩大道包括复审分析和设计模型,测试的焦点从过程模块移向了类。
2020-05-06 16:11:00
结构化开发方法开发前期对系统的功能需求和非功能需求进行完整的架构,使软件具有高可靠性。开发过程自上而下,按照严谨的软件开发生命周期:计划、分析、设计、编码、测试和维护逐个阶段进行开发,各个阶段相互衔接,每一个阶段都要通过严格的审查,测试通过才能进入下一个阶段,保证了软件的高质量。所以比较适合于像操作系统、实时处理系统等这样以功能为主的系统。而由于面向对象方法迭代和递增的本质,所以面向对象方法更适合于在敏捷软件开发中使用。
0511 0513
2020-05-11 11:20:37 软件工程-
问题:什么是软件维护?分为哪几种类型?影响维护工作量有哪些因素?如何理解文档的重要性?
2020-05-11 11:24:23
1. 软件维护时在软件交付运行后,为保证软件正常运行以适应新变化而进行的一系列修改活动。
2. 纠错性维护、完善性维护、适应性维护、预防性维护。
2020-05-11 11:25:39
软件维护是指在软件产品发布后,因修正错误、提升性能或其他属性而进行的软件修改。改正性维护、适应性维护、完善性维护、预防性维护。因素有人员因素、技术因素、管理因素、软件系统的规模、年龄、结构。
2020-05-11 11:25:42
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
2020-05-11 11:26:24
在软件维护中,影响维护工作量的因素主要有以下6种:
1)系统规模。
2)程序设计语言。
3)系统年龄大小。
4)数据库技术的应用水平。
5)所采用的软件开发技术及软件开发工程化的程度。
6)其他:如应用的类型、数学模型、任务的难度、IF嵌套深度、索引或下标数等,对维护工作量都有影响。
2020-05-11 11:30:29
文档是影响软件可维护性的决定因素。文档对提高程序可理解性有重要作用
即使一个简单的程序,要想有效地高效率地维护。也需要文档来解释目的及任务
2020-05-11 11:31:05
软件维护影响因素:1)软件系统的规模:2)软件系统的年龄:3)软件系统的结构。
2020-05-11 11:31:38
文档的重要性:1.提高软件开发过程的能见度。把开发过程中发生的事件以某种可阅读的形式记录在文档中 2.提高研发效率。软件文档的编制,使得开发人员对各个阶段的工作都进行周密思考,全盘权衡,减少返工。 3.记录开发过程中有关信息,便于协调以后的软件开发、使用和维护。 4.便于潜在用户了解软件功能、性能等各项指标。
2020-05-11 12:03:31 软件工程-
问题,修改程序的副作用有哪些?软件的可维护性是什么含义?和哪些特性相关?
2020-05-11 12:05:23
1.修改程序的副作用:编码的副作用。数据的副作用。文档资料的副作用
2020-05-11 12:05:57
软件的可维护性是指纠正软件的错误和缺陷以及为满足产品新要求或环境变化而进行修改,扩充,完善的容易程度
2020-05-11 12:08:34
1.修改代码的副作用,修改数据的副作用 ,修改文档的副作用。
2.软件可维护性指维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。
3.可理解性、可测试性、可修改性、可靠性、可移植性、可使用性效率
2020-05-13 15:48:28
1.软件项目管理主要解决 人员管理、软件项目计划、软件质量管理等问题。
2. 代码行方法、软件科学方法、可测量数据方法、功能点度量方法、面向对象的度量
3.可将风险分成若干风险类,每类建立一个风险项目检查表来识别它们。
2020-05-13 15:48:35
4. 风险监控针对每一个已识别的风险定期进行评估,从而确定风险出现的可能性是变大还是变小、风险影响的后果是否有所改变。
2020-05-13 15:51:39
1.所有的程序员遵从一定的编程规范;2 按照软件工程的要求,编制软件文档
3 在编写程序时增加适当的注释;4 尽可能实现组件/软件复用
0518 0520
2020-05-18 11:49:43 软件工程-
请谈谈对软件项目估算loc与fp方法的理解?软件项目类型分三种,组织型,半独立型与嵌入型有什么区别?软件小组与效率有什么关系?
2020-05-18 11:53:45
1. LOC和FP估算技术的分解目标有所不同。
LOC估算时,分解要非常精细,分解的程度越高就越有可能建立合理且准确的LOC估算。
功能点(Function Points,FP)度量方法使用软件产品提供的功能测量作为规范值的,功能点度量基于软件产品信息域值的计算和软件复杂性的评估而导出。涉及的信息域值有输入项数(Inp)、输出项数(Out)、查询项数(Inq)、主文件数(Maf)和接口数(Inf)。
2020-05-18 11:54:04
1.用 LOC 做为估算变量时,必须进行功能分解, 估算 FP 时需要的数据是宏观的量;LOC 是直接估算的, 而 FP 是通过估计输入、输出、数据文件、查询和外部接口的数目,以及 14 种复杂性校正值间接地确定的。
2.组织型 各类应用程序
半独立型 各类实用程序、编译程序等
嵌入型 实时处理、控制程序、操作系 统
2020-05-18 11:54:07
LOC:LOC是所有软件开发项目的生成品,并且很容易进行计算;许多现有的软件估算模型使用LOC作为输入,并且关于LOC已经有大量的文献数据。不过LOC测量依赖于程序设计语言;它们对设计的很好但较小的程序会产生不利的评判;它们不适合于非过程语言;它们在估算时需要一些可能难以得到的信息(例如,在分析和设计之前,计划者就必须估算要产生的LOC)。
FP:FP和程序设计语言无关,使得它既适合于传统的语言,也可用于非过程语言;它是基于项目开发初期就可能得到的数据。
2020-05-18 11:55:40
3,。一个软件任务由一个人单独开发,生产率最高;而对于一个稍大型的软件项目,一个人单独开发,时间太长。软件开发小组是必要的。
2020-05-18 11:56:30
估算技术一般有代码行(LOC)和功能点(FP)估算法,这是两种不同的估算技术,但有许多共同特性。项目计划人员首先给出一个有界的软件范围的叙述,再由此尝试着把软件分解成一些小的可分别独立进行估算的子功能。然后对每一个子功能估算其LOC或FP(即估算变量)。接着,把基线生产率度量用做特定的估算变量,导出子功能的成本或工作量。将子功能的估算进行综合后就能得到整个项目的总估算。
2020-05-18 11:57:39
估算技术一般有代码行(LOC)和功能点(FP)估算法,这是两种不同的估算技术,但有许多共同特性。项目计划人员首先给出一个有界的软件范围的叙述,再由此尝试着把软件分解成一些小的可分别独立进行估算的子功能。然后对每一个子功能估算其LOC或FP(即估算变量)。接着,把基线生产率度量用做特定的估算变量,导出子功能的成本或工作量。将子功能的估算进行综合后就能得到整个项目的总估算。
2020-05-18 12:05:08
组织型: 各类应用程序
半独立型 :各类实用程序、编译程序等
嵌入型: 实时处理、控制程序、操作系统
2020-05-18 12:07:33
3. 如果软件工程失败了,通常是因为协同工作的问题,而不是技术上的问题。
建立高效的小组需要:小组内聚力、挑战性的目标、反馈、共同工作框架。
简单软件任务由一个人单独开发,生产率最高。
稍大型的软件项目,一个人单独开发,时间太长,需要有凝聚力的小组。
小组规模一般不多于20个人,4-8二年效率最高。
2020-05-20 15:16:03 软件工程-
高可靠系统需求描述为什么用形式化语言?你知道哪些要求极高的系统?什么是容错技术?什么是软件冗余?高可靠系统对编程有什么要求?
2020-05-20 15:20:22
2. (1)安全性要求极高的系统:化学品制造工厂的控制系统。
(2)任务要求极高的系统:宇宙飞船的导航系统。
(3)业务要求极高的系统:银行账户系统。
2020-05-20 15:20:53
容错反映了系统在避免用户输入错误时能够多大程度上地容忍错误的能力。通常,容错设计可提供这种能力。当用户发生错误时,系统应尽量检测这些错误,而且能够自动修改错误或请求用户重新输入数据。
2020-05-20 15:21:23
1.形式化语言提供了高层确认的手段,可以使用数学的方法证明,设计符合规格说明,程序代码正确地实现了设计结果。
2020-05-20 15:21:29
软件冗余,简单的说,是一个异常导致电脑程序进入死循环的状态,系统已经不能处理这种状态
2020-05-20 15:22:02
1.形式化描述不只是设计和实现的验证的基础,也是精确描述系统的方法,以此减少误解的范围。此外,构造一个形式化描述会迫使进行需求的详细分析,这是发现系统描述中的问题的有效方式;
2020-05-20 15:22:08
3. 最普遍使用的硬件容错技术是基于三模块冗余的概念(TMR)。硬件单元被复制三次(或多次)。每个单向的输出传输到输出比较器。当其中一个单向不能产生同其他单元一样的输出时,它的输出状态被忽略。
除上述的硬件容错外,软件也有同样的如下几种容错方法:
(1)N 版本程序设计。使用由不同团队设计的不同版本软件。这些版本在不同的计算机上并行运行,由表决系统做比较。
(2)恢复模块。一个程序组件包含一个测试用于检查组件运行是否成功。替换代码允许系统倒退并在检测出失败时重新进行计算。
2020-05-20 15:24:59
工业实时精细控制系统,医疗系统、航空航天、金融系统、交通工具自动控制系统等
2020-05-20 15:26:56
4. 要求极高的系统可能包含有重复功能的组件或是额外的检查代码对系统功能进行检查,这些代码对于系统功能并没有必要(冗余)
5. 可靠的编程涉及使用适合于缺陷避免和容错的结构和技术。程序的错误是由程序员对需求的错误理解和程序过于复杂而使用了引发缺陷的结构。所以,为了取得可靠性,应该使设计尽量简单,保护信息没有授权的访问,对不安全结构的使用减少到最低。
各个小组使用不同的编程方式,并且每种方式都可以完成该系统的所有功能,在高可靠系统运行的时候,如果某一种方式出现错误,立马切换到另外一种方式继续运行。