正确处理各类人员之间的关系,使得开发工作能够按时、保质、在经费许可的范围内完成是项目管理的主要内容。项目管理组的成员可以是专职的,也可以身兼数职,但负责人应该由专职人员担任。......
2023-11-23
系统功能设计是用结构图来描述系统设计结果。首先使用一组设计策略将系统分析阶段形成的逻辑结构数据流程图转换成初始的结构图,然后参照一组设计原则和设计标准对初始结构图进行优化,最终形成具有良好结构的功能设计方案。
1.结构图
系统结构图用来描述系统的程序模块结构及模块间的联系。结构图的主要因素有:模块、调用、数据和标识。
(1)模块
结构图中的模块用矩形表示,模块名称写在矩形里。模块名称表达了该模块的功能,即每次调用该模块能完成什么任务。模块间的调用关系如图4-9所示,它表示模块A调用模块B。
(2)调用
从一个模块指向另一个模块的箭头表示前一个模块调用后一个模块,如图4-9所示。箭尾的菱形表示有条件地调用,如图4-10所示。弧形箭头表示循环调用,如图4-11所示。
图4-9 模块间的 调用关系
图4-10 有条件调用
图4-11 循环调用
(3)数据
用带圆圈的小箭头表示从一个模块传递给另一个模块的数据,如图4-12所示。
(4)标识
标识是指一些关于处理结果的标志,例如没有找到相应记录的标志,结束的标志(通常用EOF表示)。传递标识的示例如图4-13所示。
图4-12 调用并传递数据
图4-13 调用并传递标识
2.功能模块转换策略
功能模块转换策略解决如何从数据流程图转换成结构图,有以事务为中心的设计策略(事务分析)和以变换为中心的设计策略(变换分析)两种方法。
(1)事务分析
事务分析用于将高层数据流程图转换成结构图,其优点是能够把一个大的、复杂的系统分解成若干小的、简单的系统。
高层的数据流程图特别是零图所表示的处理功能都是相对独立的,可以把它们看成一类特定的事务,将其转换为结构图,如图4-14所示。
图4-14 零图转换为结构图(www.chuimin.cn)
如图4-15所示,系统高层模块只有一个,它由3个不同的事务组成。可以将其理解为3个子系统,用三个模块来表示。最高层模块根据用户的需求判断调用3个模块,所以它是事务中心,不但具有控制功能,还具有分析事务类型和调度功能。
如果一个系统很复杂,数据流程图有3层或3层以上,对于1图和下层图,都可采用同样的事务分析方法将其分解,这就可将一个复杂的系统分解为若干个功能模块。
(2)变换分析
变换分析提供了一种把叶子层模块转换成结构图的方法。它首先对叶子层模块中的处理功能进行分类。第一类是输入功能;第二类是执行变换功能;第三类是输出功能。根据分类结果确定第二类处理功能为变换中心,如图4-15所示。
图4-15 利用变换分析进行模块设计
在图4-15中,将一个处理模块设计成3个从属模块,分别执行输入、变换、输出功能。在结构图中,把输入模块放在结构图的左侧,变换模块放在中间,输出模块放在右侧。功能模块AA会对G、F、H全部调用一遍,而不是判断。
3.功能模块优化设计原则
采用事务分析、变换分析的转换策略,将系统的逻辑结构转换成计算机系统的结构图,只是一张描述系统初始结构的草图,必须依据一定的原则将其优化,使其具有良好的功能结构。系统优化设计的原则包括了模块间的耦合原则、模块内聚性原则、扇入扇出原则等。
(1)模块间的耦合原则
耦合原则决定了模块间的依赖关系。模块之间的联系越多,它们之间的相互依赖程度越高。对某一模块的修改,必然影响到其他模块,模块的独立性越低。如果两个模块之间仅存在调用与被调用关系,没有任何的信息传递,则表示这两个模块的耦合程度最低,称为简单耦合,这是功能设计中最理想的情况。遗憾的是不可能使系统的所有模块之间都是简单耦合关系,按照耦合程度由低到高的关系可将耦合类型分为数据耦合、控制耦合和公共耦合。
1)数据耦合。如果两个模块之间不仅存在调用与被调用关系,而且还存在数据通信,这种耦合称为数据耦合。模块间传递的数据可以是简单的数据元素,也可是若干数据元素组成的数据结构。这种耦合形式在系统中经常出现,采用这种形式要注意将模块间传递的数据参数的个数控制在最小,能够用参数的就不用数据结构,以便降低模块间数据通信的复杂程度。
例如,计算水电费的数据耦合示意图如图4-16所示。“住户详情”显然是数据结构,它增加了“计算水费”和“计算电费”两个模块的复杂程度。改成右图后,模块的复杂程度大大降低。
2)控制耦合。如果两个模块之间不仅存在调用与被调用关系,而且模块A向模块B传递的信息控制了模块B的内部逻辑,则模块A、B之间的耦合称为控制耦合。
控制耦合的示意图如图4-17所示。
图4-16 数据耦合
图4-17 控制耦合
3)公共耦合。如果两个模块都和同一个公用数据域有关,或与某一个公共环境联系在一起,则这两个模块间存在公共耦合。模块之间可能彼此功能独立,但当需要修改公用数据时,与之相关的所有模块可能都要进行修改,这给系统维护带来了困难。
模块的耦合形式主要是系统设计员根据需要自行设计的,这些连接方式为系统修改和维护带来了一定的难度。系统模块之间的连接原则是:尽可能采用较低的耦合形式,尽可能采用简单耦合和数据耦合;减少控制耦合;必要时采用公共耦合,但一定要让数据控制在最小。
(2)模块的内聚性原则
内聚性是指模块内部的各个组成部分,处理动作的组合强度。模块内部的“组成部分”是指该模块运行程序中的一个动作、一组指令或一个调用其他模块的语句。在系统设计中,系统的内聚性越高越好,对一个大型的信息系统更应该如此。
(3)扇出扇入原则
模块的扇出表达了一个模块对它的直属下级模块的控制范围。模块的扇出系数是指其直属下级模块的个数。
模块的直属下级模块越多,表明它要控制好多模块,内聚性可能越低,所以应尽量把一个模块的扇出系数控制在较小的范围之内。一般一个模块的扇出系数应该控制在7以内,超过7出错的概率会加大。如果扇出系数很小,也不太合适,说明需要简化模块的结构。
模块的扇入是指其直接上级模块的个数。模块的扇入系数越大,表明它要被多个上级模块调用。其公用性很强,模块分解得较好,在系统维护时能够减少对同一功能的修改,因此要尽量提高模块的扇入系数。
有关信息系统开发方法与实践教程的文章
正确处理各类人员之间的关系,使得开发工作能够按时、保质、在经费许可的范围内完成是项目管理的主要内容。项目管理组的成员可以是专职的,也可以身兼数职,但负责人应该由专职人员担任。......
2023-11-23
信息系统的开发具有长期性、复杂性和风险性,需要科学的方法论作指导。常用的信息系统开发方法有结构化系统开发方法、面向对象系统开发方法和原型法三种。像决策支持系统这种具有开发性而无固定需求范围的系统,更适合用原型法进行开发。图1-15 原型法的开发过程本书的第2~5章主要讲述的是结构化的系统开发方法;第6~15章,主要介绍的是面向对象的系统开发方法。......
2023-11-23
UML是一种通用建模语言,它本身具有的可扩展性使其不仅可以用于软件系统开发各个阶段的建模,也可以用于商业和其他几乎所有类型的建模。总体来说,UML由以下几个部分构成。模型元素UML中的模型元素包括事物以及事物之间的联系。通用机制UML提供的通用机制可以为模型元素提供额外的注释、信息或语义。UML的组成结构如图6-1所示。图6-1 UML结构图用例图和类图是面向对象系统开发的重点内容。......
2023-11-23
参与者通过向系统输入或请求系统输入某些事件来触发系统的执行。1)参与者是真实的人(即用户),这是每个系统中最常用的参与者。在UML中,用空心的三角箭头表示参与者间的泛化关系,箭头指向扮演一般角色的参与者。图8-3 ATM系统的参与者图8-4 参与者间的泛化关系......
2023-11-23
表6-1结构化与面向对象系统开发的比较结构化的开发方法一般采用启发式规则,系统结构定义没有理论依据,完全靠系统分析员的经验和水平,以及对目标系统的认识程度。面向对象的系统开发优点是与人类习惯的思维方式一致,稳定性好,可重用性好,可维护性好。面向对象的系统开发工作的重点应该放在分析阶段上。......
2023-11-23
类图最直接的成效可以通过正向工程直接转化为程序代码,本节以当前流行的面向对象的程序设计语言Java为例,讲解类图的各个元素从UML到Java的映射方式。在UML中定义类属性和方法时,可见性、参数列表、返回类型用适当的修饰符进行修饰。图9-16 依赖关系示例4.关联关系关联、聚合和组合转换方法相似,都是转化为作用域的一个变量。如图9-17所示,类“公司”和类“职员”存在关联关系,映射成Java代码如下所示。......
2023-11-23
同顺序图一样,每个系统都可以有很多协作图,在这里只介绍图书管理系统中几个重要的协作图。图11-14 添加书籍的协作图2.图书管理员处理借书的协作图图11-15 处理借书的协作图●identify reservation():验证预订信息。......
2023-11-23
封装是面向对象方法的一个重要原则。封装即信息隐藏,它保证软件具有较好的模块性。可以说封装是所有主流信息系统方法学中的共同特征,它对于提高软件清晰度和可维护性,以及软件的分工有重要的意义。以下从两个方面来理解封装的含义。首先,当设计一个程序的总体结构时,程序的每个成分都应该封装或隐蔽为一个独立的模块。其次,封装表现在对象概念上。对象是一个很好的封装,它把数据和服务封装于一个内在的整体。......
2023-11-23
相关推荐