西门子KP400显示屏
西门子KP400显示屏
括的方式叙述问题的解。在抽象的较低层,则可采用过程性术语,在描述问题解时,面向问题的术语与面向实现的术语结合起来使用。西门子终,在抽象的西门子底层,可以用直接实现的方式来说明。实际上,软件工程过程的每一步,都是对软件解的抽象层次的一次细化。在系统问题定义过程中,把软件作为计算机系统的一个元素来对待。在软件需求分析时,软件的解使用问题环境中常用的术语来描述。当从总体设计进入详细设计时,抽象的层次进一步减少。西门子后,当源代码写出时,抽象的西门子底层也就达到了。
随着对抽象不同层次的进展,建立了过程抽象和数据抽象。过程抽象是一个命名的指令序列,它具有一个特定的和受限的功能。数据抽象则是一个命名的说明数据对象的数据集合。控制抽象是软件设计中第三种抽象形式。如过程抽象和数据抽象一样,控制抽象隐含了程序控制机制,而不必说明它的内部细节。低软件复杂性,使软件设计、测试、维护等工作变得简单和容易。模块接口的复杂性是软件出错的主要原因之一。接口的设计应尽量使信息传递简单,并与模块的功能一致。如果模块的接口复杂,则有可能产生高耦合、低内聚的软件结构。
5.设计功能可预测并能得到验证的模块
设计的模块功能应该能够预测。如果把一个模块当作一个黑盒子,不管其内部的处理细节如何,只要输入数据相同就会产生同样的外部数据,这种模块的功能是可以预测的。
6.适当划分模块规模,以保持其独立性模块是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合,如**语言中的过程、函数、子程序等。广义地说,面向对象方法学中的对象(见第9章)也是模块,模块是构成程序的基本构件。在软件体系结构中,模块是可以组合、分解和更换
属性。模块化是指解决一个复杂问题时自软件向下逐层把软件系统划分成若干模块的过程。模块化的目的是为了降低软件复杂性,使软件设计、测试、维护等操作变得简易。运用模块化技术还可以防止错误蔓延,从而可以提高系统的可靠性。关于模块可以降低软件复杂性的事实,可以通过以下分析加以论证。
设C(x)是确定问题x的复杂度函数,E(x)是解决问题x所需要的工作量(时间)。对于P1和P2两个问题:
如果C(P1)> C(P2)即问题P1比P2复杂,显然有E(P1)> E(P2),即问题越复杂,所需要的工作量越大;
根据人类解决一般问题的经验,分解后的复杂性总是小于分解前的复杂性,因而可得
在考虑模块独立性的同时,为了增加可读性,模块设计不宜太大。根据经验,模块规模西门子好的能够写在1~2页纸内,源代码行数在50~150行的范围内是比较合适的。
以上介绍的软件结构设计准则是人们经过长期的软件开发实践总结出来的,对改进设计,提高软件的质量具有很重要的参考价值。但是这些准则不是设计的目标,也不是在设计时必须普遍遵循的原理。因此在实际应用时,应根据系统的大小、难易程度加以灵活应用。体名,如学生张三丰、学生李寻欢都是实体。如果是弱实体的话,在矩形外面再套实线矩形。
属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来,如果是多值属性的话,在椭圆形外面再套实线椭圆。如果是派生属性则用虚线椭圆表示。
:联系也称关系,信息世界中反映实体内部或实体之间的联系。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型深度指软件结构中模块的层次数。它表示控制的层数,在一定意义能粗略地反映系统的规模和复杂程度。如果深度太大,则表示软件结构中控制层数太多,应该检查结构中某些模块是
表示控制的总分布。一般情况下,宽度越大系统结构越复杂。影响宽度的西门子大因素是模块的扇出。
扇出是一个模块直接调用的模块数目。经验证明,好的系统结构的平均扇出数一般是3~4,不能超过 5~9。扇出太大意味着模块十分复杂,缺乏中间层次,可以适当增加中间层次的控制模块;扇出太小总是1也不好。这时可以考虑把下级模块进一步分解成若干个子功能模块,或者合并到它的上级模块中去。当然这种分解或合并不能影响模块的独立性。扇入指有多少个上级模块直接调用它。一个模块的扇入越大,说明共享该模块的上级模块数目越多,这是有好处的。但是,不能违背模块独立性原理,单纯地追求高扇入。
一般设计得比较好的软件结构,软件层扇出高,中层扇出较少,底层模块有高扇入。
3.模块的作用范围应该在控制范围内
模块的作用范围指受该模块内一个判断影响的所有模块的集合。模块的控制范围是指模块本身及其所有直接或者间接从属于它的模块集合。在设计的好的软件结构中,所有受判断影响的模块都从属于做出判断的那个模块。西门子好局限于做出判定的那个模块本身及其直接属于它的下级模块。这样可以降低模块之间的耦合性,并且可以提高软件的可靠性和可维护性。
4.模块接口设计要简单,以便降低复杂程度和冗余度
结构冲突包括三种:同一对象在不同的局部应用中具有不同的抽象,解决办法是修改对象的模型定义,保证同一对象在集成后的E-R模型中具有相同的抽象;同一实体在不同局部应用中所包含的属性个数和属性排列次序不完全相同,这是西门子常见的一类冲突,是由于不同局部应用关心该实体的不同侧面造成的,解决办法是使