地信1902邹小红——第七章思考题
1.软件设计的目标及主要任务有哪些?
答:软件设计的目标是对将要实现的软件系统的体系结构、系统的数据、系统模块间的接口,以及所采用的算法给出详尽的描述。
任务包括:数据设计将分析模型转化为设计类的实现以及软件实现所要求的数据结构;
体系结构设计定义了软件的主要结构元素之间的关系,可用于达到系统所定义需求的体系结构风格和设计模式以及影响体系结构实现方式的约束;
接口设计描述了软件和协作系统之间、软件和使用人员之间是如何通信的;
构件设计将软件体系结构的结构元素变换为对软件构件的过程性描述。
2.什么是模块(构件)化设计思想?
答:模块化思想最初是应用在技术设计方面,而且目前企业越来越多地将这种思想运用到组织设计以形成新的竞争优势上,企业组织进行模块化的主要原因是受到消费者需求多样化的驱动,表现形式主要体现在产品地模块化生产与消费,价值链的分解与外包和组织间的联盟与网络化三个层面,模块化组织的有效治理机制是规则治理,与企业和市场的治理机制相比,这种治理机制更具有竞争优势。
3.模块独立性的两个度量标准是什么?
答:高内聚低耦合
4.内聚和耦合而含义是什么?各有哪些种类?请举例说明每一类型。
内聚性:又称块内联copy系,指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。耦合性:也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。
内聚性是对一个模块内部各个组成元素之间相互结合百的紧密程度的度量指度标。模块中组成元素结合的越紧密,模块的内聚性就越高,模块问的独立性也就越高。理想的内聚性要求模块的功能应明确、单一,即一个模块只做一件事情。模块的内聚性和耦合性是两个相互对立且又密答切相关的概念。
内聚有如下的种类,它们之间的内聚度由弱到强排列如下:
(1) 偶然内聚:一个模块内的各处理元素之间没有任何联系,只是偶然地被凑到一起。这种模块也称为巧合内聚,内聚程度最低。
(2) 逻辑内聚:这种模块把几种相关的功能组合在一起, 每次被调用时,由传送给模块参数来确定该模块应完成哪一种功能 。
(3) 时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
(4) 过程内聚:构件或者操作的组合方式是,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。简单的说就是如果一个模块内的处理元素是相关的,而且必须以特定次序执行则称为过程内聚。
(5) 通信内聚:指模块内所有处理元素都在同一个数据结构上操作或所有处理功能都通过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据数据或产生相同的数据结构。
(6) 顺序内聚:一个模块中各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,通常前一个处理元素的输出时后一个处理元素的输入。
例如某模块完成工业产值求值的功能,前一个功能元素求总产值,后一个功能元素求平均产值,显然该模块内两部分紧密关联。
顺序内聚的内聚度比较高,但缺点是不如功能内聚易于维护。
(7) 功能内聚:模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。
功能内聚是最强的内聚,其优点是它的功能明确。判断一个模块是否功能内聚,一般从模块名称就能看出。如果模块名称只有一个动词和一个特定的目标(单数名词),一般来说就是功能内聚,如:“计算水费”、“计算产值”等模块。功能内聚一般出现在软件结构图的较低层次上。
功能内聚模块的一个重要特点是:他是一个“暗盒”,对于该模块的调用者来说,只需要知道这个模块能做什么,而不需要知道这个模块是如何做的。
5.为什么要高内聚和低耦合?高内聚低耦合是否意味着内聚越高越好,耦合越低越好呢?
高内聚低耦合是为了保证模块的独立性,提高模块的可重用性和可移植性。
并不是内聚越高、耦合越低越好,只是说模块间必须存在耦合和内聚,就尽量做到高内聚低耦合,但如果内聚越高、耦合越低也会给模块功能实现带来问题。
2021-04-03