版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章软件结构设计、设计:应用各种技术和原理,对设备、工艺或系统进行详细的一盏茶定义,使其能够物理实现。 软件结构设计:软件需求转换为软件表示的过程,软件的总体结构、程序结构、数据结构、文件结构、接口定义等设计是一个宏命令设计。 4.1软件结构设计概述、软件设计和方案设计的区别:方案设计是计程仪编程,这是众所周知的,在很多人的印象中“制作软件”是计程仪编程,可能有人把计程仪方案设计和软件设计等同起来。 这是不对的。 软件设计是有宏命令的设计。 由于程序设计只不过是软件设计的实现,制作软件并不简单。4.2软件结构设计的目标、任务和过程、目标:综合采用各种技术手段,将系统需求转换为数据结构、模块结
2、构(或对象/类结构)的表现形式,实现系统性能、安全性、可靠性的要求。 得到最好的方案。 最佳方案的标准: (1)开发费用省;(2)资源消耗低;(3)开发时间短;(4)生产效率高;(5)可靠性高;(6)维护性好。 结果:用模块结构图表现。 塔斯克:结构设计是一个自顶向下,逐步具体的综合设计程序。 主要内容: (1)综合分析系统的各种实现方案,提出最佳实现方案。 (二)制定设计规范、标准和约定原则; (3)软件结构设计:采用一种软件设计方法,根据模块的结构原则,逐步设计软件的模块层次结构。 (4)数据结构和接口的设计。 (5)系统性能设计。 (6)系统安全性能设计:系统自我保护设计数据完整性设计容
3、错设计。 (7)系统的可靠性设计。 (8)设计文件的制作:结构设计说明书用户手册系统的初步测试计划书。 (九)设计审查和复审。 软件结构设计程序:1 .设想方案2 .选择合理的方案3 .推荐最佳方案4 .功能分解5 .设计软件结构6 .设计数据库7 .制定测试计划8 .编写文件9 .审查和复审4.3软件设计中的基本概念和原理,1 .模块计程仪群中的每个模块必须单独命名,并且可以网站数据库到由名称指定的模块。 在高级语言中,将模块具体表示为函数、子例程、进程等。 一个模块具有投入产出(接口)、功能、内部数据和程序查询密码四个特点。 投入产出用于实现模块与其他模块之间的数据传输,即模块所需的原始数
4、据和来自模块的结果数据的传输。 功能是指模块已完成的工作。 模块的投入产出和功能构成了模块的外部特征。 内部数据是指只能在模块内部使用的局部量。 计程仪程序查询密码用于描述实现模块功能的具体方法和步骤。 模块的内部数据和程序查询密码反映了模块的内部特性。 模数化是指将整个计程仪程序分割为多个模块,每个模块实现特定的功能。 分割模块对于解决大型、复杂的问题非常必要,可以大幅度降低解决问题的难度。 为了说明这个,关于问题的复杂性,开发工作量和模块数的关系,可以进行以下的推论。 首先,设与问题x对应的复杂度函数为C(x ),解决问题x所需的功函数为E(x )。 对于两个问题P1和P2,已证明C(P1
5、) C(P2)在问题P1的复杂度高于P2时,E(P1) E(P2)大于用于解决问题P1所需的工作量。 在人们解决问题的过程中,发现了另一个有趣的规则。 C(P1 P2) C(P1) C(P2)解决由多个问题组合而成的大问题的复杂度大于单独解决各个问题的复杂度的和。 也就是说,对于一个复杂的问题,将其分解为多个小问题并分别解决是容易的。由此可知,E(P1 P2) E(P1) E(P2)将复杂的问题分解为几个小问题,分别打破它们,需要比直接解决复杂问题所需的工作量少的工作量。 根据以上的推论,我们能够得到这样的结论,模数化能够降低解决问题的复杂性,降低软件研发的工作量。 增加计程仪程序中的模块数可
6、以减少开发各模块的工作量,但可以增加为云同步设计模块接口的工作量。 根据图4.1所示的模块数与软件研发成本的相关系谱图可知,当分割出的模块数位于最小成本区内时,软件研发的总成本最低。 模数化不仅能降低软件研发难度,还能清晰计程仪柱的结构,提高易读性和修改方便性。 此外,模数化也有助于提高查询密码的复用性和工作团队合作开发大型软件的可能性。 图4.1模块数和软件研发成本,2 .模块独立性1 )耦合性耦合性是衡量一个软件结构内不同模块间联系紧密度的指标。 模块之间的联系越深,耦合性越高,模块独立性也越低。 由于模块之间的连接是经由模块接口来实现的,因此模块耦合性的高度主要依赖于模块接口的复杂度、调
7、用模块的方式以及通过模块接口的数据。 模块间的耦合性主要可分为以下类型。 (1)数据结合。 如果在两个模块之间仅通过模块残奥仪表交换信息,并且所有交换的信息都是简单的数据,则该组合被称为数据组合。 数据绑定的耦合性最低,软件通常包含数据绑定。 数据耦合的示例如下: (2)公共耦合。 在这样的耦合被称为公共耦合,其中两个或多个模块参考公共数据而彼此网络链接。 例如,当在计程仪程序中定义全局变量并在多个模块中引用全局变量时,在引用全局变量的多个模块之间存在公共耦合关系。 FORTRAN语言中使用的common语句也在多个模块之间建立通用耦合关系。 公共结合的复杂性随着结合模块的数量的增加而显着增加
8、。 在计程仪柱设计中,在两个模块之间需要交换的数据较多,仅通过残奥仪表传达难以实现的情况下,可以考虑采用公共结合,但是必须注意尽可能降低公共结合的程度。 (4)内容结合。 当一个模块直接引用或修改另一个模块中的内容(包括数据和段)、通过反常的条目进入另一个模块、一个模块具有多个条目、两个模块共享部分查询密码时内容结合是所有耦合关系中最高的级别,由于模块间联系过于紧密,给后期的开发和维护带来很大的麻烦,所以绝对要避免任何形式的内容结合。 实际上,许多高级软件编程语言在规定语法时没有任何形式的内容结合。 耦合是影响软件复杂性的重要因素,在设计过程中需要降低程序的耦合性。 在以上介绍的结合中,数据结
9、合的程度最低,其次是公共结合,其次是控制耦合,最高的是内容结合。 2 )絮凝性絮凝性是测量一个模块内部各元件之间相互结合紧密度的指标。 模块中的配置元素体越结合,模块的内聚性越高,模块独立性也越高。 模块的内聚性和耦合性是相互对立、密切相关的两个概念。 实际上,它们是相同但在两个方面,其中模块的高内聚性通常意味着模块之间的低耦合性。 由于计程仪柱的每个部分都是相关的,因此将其中密切相关的部分放在相同的模块中可以降低模块之间的关系,而将密切相关的部分分散到不同的模块中,则模块之间的联系必然变强。 进行模块设计时,耦合性和内聚性是应考虑的重要指标。 但是,在软件设计时,必须集中精力提高模块的内聚性
10、。模块的内聚性主要可以分为以下不同的类型。 (1)偶然结束。 模块由完成多个不同任务的语句组成,各语句之间的关系非常松散或完全没有关系时,该模块的结束称为偶然的结束。 例如,在计程仪节目中出现一些不相关的短语序列并且将它们组合到一个模块以节省存储器空间是偶然的绑定。 偶然凝聚的模块由于构成部分之间没有实质的联系,难以理解和修正,给软件研发带来很大的烦恼。 偶然的结束是结束度最低的一种,在软件设计时要尽量避免。 (2)逻辑性结束。 在一个模块能够实现与多个逻辑性相同或类似的功能的情况下,该模块的结束称为逻辑性结束。 例如,当在同一模块中实现计程仪群中的多个不同类型的数据的输出时,该模块属于逻辑集
11、成。 逻辑性的团结在某种程度上比偶然的团结要高。 虽然逻辑集成模块的元件之间具有一定的关系,但是不同的功能混合以共享它们的查询密码的一部分这会给修改带来一定的故障。 另外,由于必须传递相应的控制残奥仪表,使得当调用模块时,可以选择并执行它们中的任意一个功能,所以导致了模块之间的控制耦合并且模块独立性降低。 时间结束。 当一个模块包括需要在同一时间段内执行的多个塔斯克时,该模块的结束称为时间结束。 例如,若将多个变量的初始化放入同一模块中实现,或将需要用于云同步的多个库文件的打开操作放入同一模块中,则会产生花费时间的模块。 由于时间凝聚模块各部分的时间联系,其凝聚度比逻辑凝聚度稍高。 然而,这类
12、模块通常与其它相关模块密切相关,从而增加了耦合性。 (4)过程结束。 当一个模块的各个部分必须相关联并且以特定的顺序执行时,该模块的结束被称为进程结束。 在结构化计程仪程序中,作为决定设计软件和模块分割的工具,通常采用工艺流程图,所以这样得到的模块具有过程结束的特性。 (5)通讯结束。 当一个模块的各个部分使用相同的输入数据或生成相同的输出数据时,该模块的绑定称为通讯绑定。 由于通讯聚集模块的各部分与一些公共数据密切相关,因此絮凝性高于前面的一些絮凝性。 (6)依次结束。 当一个模块的每个部分必须与相同的功能紧密相关地按顺序执行时(通常,前一部分的输出数据是后一部分的输入数据),该模块的结束按
13、顺序结束。 例如,在处理学生成绩的模块中,前一部分根据成绩统计合格的学生人数,后一部分根据合格人数计算学生的及格率。 由数据流程图分隔的模块通常是按顺序绑定的模块。 顺序结束模块的各部分与功能和执行顺序密切相关,因此结束度高容易理解。 (7)功能凝聚。 一个模块的各个组成部分构成一个整体,当完成一个单一的功能时,该模块的结束被称为功能结束。 功能凝聚模块各部分的关系非常密切,构成了一个不可分割的整体,因此功能凝聚是所有凝聚中凝聚度最高的一种。 以上介绍的7种凝聚中,从絮凝性低到高排列的结果如图4.2所示。图4.2内聚性的排列,3 .抽象抽象是人们在解决复杂问题时经常采用的思维方法,是指总结现实
14、世界中相似、本质的方面,并暂时忽略它们的细节差异。 在软件研发中使用抽象概念可以阶层化复杂问题的求解过程,在不同抽象层实现困难的分解。在抽象水平高的水平上,可以暂时隐藏详细信息,有助于解决系统的大局问题。 在软件研发过程中从问题定义到最终的软件生成,各个阶段都是基于上一阶段化学基在软件解法抽象层上的一次精炼和细化。 在结构化过程中的自顶向下中,精致的模块分割思想是人们思维中使用抽象的方法来解决复杂问题的表现。 软件结构中掌门人级模块抽象级最高,控制、调整软件的主要功能,在全球影响的软件结构中基础模块抽象级最低,具体实现数据处理过程。 从自顶向下、抽象到具体的思维方法的采用,有助于降低软件研发各
15、阶段工作的难度,简化软件的设计与实现过程,提高软件的可读性、测试性与维护性。 此外,通过在计程仪程序设计中应用抽象的方法,还能够提高查询密码的复用性。 另外,所谓信息隐藏信息隐藏,是指仅通过一个模块将自各儿的内幕消息隐藏到其它模块中以避免对其它模块进行不适当的网站数据库和修改,从而在模块之间行政许可完成系统功能所需要的数据交换。 隐藏信息的目的主要是提高模块独立性,减少将一个模块的错误扩散到其他模块的机会。 然而,信息隐藏并不意味着一个模块的内幕消息不能或者不能被其它模块使用,并且模块之间的信息传递只能通过合法调用接口来实现。 显然,信息隐藏对提高软件的可读性和可维护性非常重要。 5 .分阶段
16、追求“为了集中精力解决主要问题,尽量推迟问题的详细思考”。 可以认为,这是Niklaus Wirth提出的对一定时期需要解决的各种问题进行优先排序的技术。 求精实际上是一个细分的过程。 抽象和求精是相辅相成的概念。 4.4启发式规则,(1)降低模块的耦合性,提高模块的内聚性。 为了提高软件中的各种模块独立性,提高计程仪程序的可读性、测试性和维护性,在软件架构设计时必须尽可能采用高内聚性的模块。 最好实现功能绑定,尽量只使用数据绑定,限制公共绑定的使用,抑制绑定的使用,防止内容绑定的出现。 (2)维持适当的模块规模。 计程仪程序中的模块太大会降低程序计程仪程序的可读性模块太小会增加程序计程仪程序
17、中的模块数量,从而增加接口的复杂性。 虽然没有严格规定模块的合适的规模,但是从一般观点来看,期望保持模块内的字符数在10100之间。 为了使模块规模适度,可以在保证模块独立性的基础上,整合计程仪程序中规模过小的模块,或者分解规模过大的模块。 (3)模块应具有高粉丝和适当的粉丝,某模块的上位模块数称为该模块的粉丝(如图4.3(a )所示,模块m的粉丝数为n )。 某模块可调用的下级模块数称为该模块的扇出(如图4.3(b )所示,模块m的扇出数为k )。 显然,模块扇区指示需要调用模块的模块的数量,并且扇区指示模块可以控制的子模块的数量。图4.3模块的风扇和风扇输出(a )风扇输出(b )风扇输出
18、,模块的风扇越大,共享该模块的上位模块的数量越多,或者该模块在程序计程仪中的复用性越高,这是计程仪程序设计目标的如果多个模块具有部分相同的功能,则必须分离该部分相同的功能,创建独立的模块并提供必要的模块调用。 消除不同模块的重复,提高查询密码的复用性,可以减少计程仪柱的总查询密码量,使计程仪柱的测试和维护变得容易。 如果模块扇出过大,则在一个模块中调用8个子模块时,对该模块的调用控制过于复杂。产生这种现象的原因通常是因为在设计阶段、模块的微细化过程中,分解速度过快。 最常见的解决方案是通过在模块和子模块之间添加中间阶层来控制模块的分解速度。 在系统设计中,模块的风扇太小,就像风扇输出为1 (下级模块层只有一个模块)一样,这是不可取的。 常见的解决方案是考虑将其纳入高级模块。 但是,一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年中耳癌靶点检测用药避坑指南
- 26年靶向治疗继发肿瘤随访
- 晨会防火安全教育
- 髌骨骨折健康教育
- 典型教育主题班会教案设计
- 会员积分兑换活动方案
- 2026护理学会胰岛素皮下注射团体标准解读
- 春季主题营销活动方案
- 老年公寓设计项目规划方案
- 理想交付流程
- 盘扣式脚手架监理实施细则
- 食材配送服务方案投标方案【修订版】(技术标)
- 路基土石方数量计算表
- TDT 1089-2023 征收农用地区片综合地价测算规程
- JT-T-760-2009浮标技术条件
- 陕西省西安市长安区2023-2024学年八年级下学期期中数学试题(含答案)
- 旅游服务营销策略与创新
- 行政的使命目的和价值概述
- 人工智能改变网络支付方式
- JGT366-2012 外墙保温用锚栓
- 清原县城小城镇空间形态发展研究
评论
0/150
提交评论