登陆注册
8724600000017

第17章 软件设计(3)

2.接口说明

列出通过参数表传递的数据、外界的输入输出、从全程数据区取得的数据项、上级模块名和下级模块名。

3.局部的和全局的数据结构说明

包括采用数据结构的数据名、数据结构的类型、是局部的还是全局的等。

4.所有设计约束和限制说明

包括数据类型或数据格式的限制、内存容量或时间的限制、数据结构的边界值、没有考虑的特定情况及某个模块的专门特性等。

最终所得到的程序模块应具有以下基本属性:名字;明确的功能;内部使用的数据或局部数据;与其他模块相联系的输入或输出数据;实现其特定功能的算法;可被其上级模块调用;也可在其工作过程中调用下属模块。

例如,大学教务管理系统中“检索课程”模块的说明如下。

模块名:检索课程

功能:根据上层模块传送过来的课程号和选课学期在数据库中检索满足条件的课程,如果检索到了,则返回课程号,否则给出“无此课”信息并返回“空值(NULL)”。

函数接口:Searching Course(Course ID,Semester)

数据接口:课程档案

局部数据:CourseID——课程号,输入

Semester——选课学期,输入/输出

上级模块:选课登记

从属模块:无

程序模块可用在程序设计语言中非常熟悉的子程序、分程序、函数等实现。

4.4面向对象设计

在第3章中已经就ATM取款机进行了分析,以下再以此例进行面向对象的设计。

4.4.1对象结构—类图

显示系统中类与类之间的交互,分析员用类图显示系统细节。类图可以显示每个用例中类的相互作用,也可以显示整个系统或子系统。通过分析和综合交互图内各对象的交互,可以得出软件系统应具备的基本结构及各基本结构元素(类、接口等)之间的联系。当得到了用例图里的交互图后,从交互图推导出类图是十分自然的。为了在类图上描述类及其关系,首先,分析对象之间的交互和为实现这些交互对象之间建立的连接关系。这可以用交互图中的协作图来实现,之后,为这些对象指定实现类及其之间的关系。

时序图上,有4个对象,其中:

①读卡机(CardReader)对象负责接收客户传来的插卡消息,并读出卡里的信息;

②ATM屏幕(ATMScreen)对象负责接收客户输入的消息,反馈系统消息;

③客户的账户(Account)对象负责验证客户输入的密码、验钱和扣钱;

④取款机(CashDispenser)对象负责提供钱和清单。

4.4.3组织建模元素——包

一个包形成一个命名空间,通过包组织大系统模型,减少复杂性。结构良好的包是低耦合,高内聚的,对其内容的访问具有严密的控制。

任何一个软件系统,在其设计和建造的过程中,都会产生大量的类和其他建模元素,不同的类依其语义的不同和其对象参与交互的不同,可被划分为不同的子集。属于同一个子集的类,其语义上的内聚性较强,而和子集之外的类的耦合则较为松散。如果在此软件系统的模型中,不对其中的类按照相应的语义进行组织,而是简单地将所有的类罗列在模型图上,那将是不可想象的。这将导致一个无用的模型,因为它无法被人理解,更不用说对其进行整理、修改和更新了。为了有效地控制和管理模型的设计、表达和更改,达到有效地说明、视化、建档和建造,必须对模型元素进行组织。在UML里,这种组织是用包实现的。

在该例中,把ATM分成4层:表现层(UIPackage)、业务逻辑层(Business)、数据访问层(Database)、功能层(Utility)。

4.4.4对象行为——状态图

显示一个对象从生成到删除的生命周期中相应事件所经历的状态序列及它们对哪些事件的相应。分析人员和开发人员通过状态图更好地了解类的动态行为,使编码前能讨论和建立复杂逻辑。在软件系统中有这样一类对象,它们一方面需要处理各种随机发生的事件序列,通过相应的动态行为产生对事件的响应。另一方面,其特定时刻的动态行为,取决于此对象在早些时刻的行为结果。

例如,ATM系统中Account对象在交互中就是这种情形。客户取钱和存款时都必须在Account打开状态(状态是软件对象在其生存期内满足特定条件的存在,在此条件下,对象能执行特定的动作或等待事件的发生)时才能进行。Account对象创建时,其处于用实心圆形表示的称为初始状态(是状态机的所在对象被创建时刻所处的状态)。当客户输入密码,得到确认后,Account对象进入打开状态,如果客户取钱时所取钱数大于账户余额,这时Account状态机进入透支状态。如果客户只是查询账户,便退出,则Account对象进入关闭状态,如果客户不做其他操作,Account对象便进入用带实心圆的圆环,圆环表示的状态称为状态机的终止状态(状态机处于终止状态表明此状态机的执行已经完成)。

4.4.5构造程序——组件图

①表示一组组件之间的组织和依赖关系。

②编译和部署系统的人员需要使用组件图。显示了类与实现组件之间的映射,组件按什么顺序编译,编译时生成哪些运行组件。

③构件图对于通过正向工程和逆向工程构造可执行系统是重要的。

设计人员是把组件作为系统可替换的部分进行设计的,所以必须有良好定义的接口。每个组件中包含了系统设计中某些类的实现,只要组件的接口不变,可以随时对组件进行升级替换。在该例中,在客户端可执行程序ATM.exe实现与服务器端通信,并与读卡器、ATM取款机、屏幕等物理组件进行交互。可以把它抽象为组件,称之为可执行组件。当ATM的通信方式发生变化时,只要替换ATM.exe文件即可。在实际的软件设计中把以往设计良好的组件保留下来,并纳入到组件库中进行统一管理,当设计人员再构建新的系统时,可以充分利用组件库中已有的组件,从而实现组件的复用。

4.4.6ATM系统的实施图

建模系统的实际部署,它是描述处理器、设备、软件组件在运行时的架构,它是系统拓扑的最终物理描述,即描述硬件单元和运行在硬件单元上的软件。项目管理员,用户,分析员和部署人员通过实施图了解,显示网络的实际布局和网络节点上组件的配置。在实际的ATM系统中,用户存钱、取钱的所有记录都保存在银行的数据库服务器上,而银行的操作系统多为UNIX系统,数据库系统一般采用Oracle,各个地区的ATM服务器通过专线连接到服务器上,组成一个ATM局域网。一般的ATM内部都带有打印机,提供打印收条功能,因此可以把打印机当作单独一个物理节点。

4.4.7回顾ATM项目的开发过程

1.初始阶段

对需求有了详细的了解,抽象出系统体系结构,细化到主要子系统即可,识别角色和用例,构建用例图。

2.细化阶段

更新用例模型,细化用例。建立交互图、类图和状态图。开始构建实施图以建模系统体系结构。此阶段,需要对模型不断迭代、细化,并最终和用户达成共识。

3.构造阶段

由类图完成代码,在代码完成后,要保证其符合标准和设计规则,并要进行质量检查,最终生成组件图。

4.移交阶段

这阶段,使用实施图进行软件部署,维护软件与模型的同步,并完成最后的软件产品和最后的验收测试,并完成用户文档编制及用户培训等工作。(注:在实际的项目中,应考虑项目中的各种风险、时间、经费、技术、项目规模和效益等因素,并制订出详细开发计划。)

5.UML与Case工具

现在有大量的Case(Computer Aided Software Engineering)工具,可以进行UML设计,在不同层次上提供对UML的支持。支持UML的系统应该包括创建和管理UML图,各种语言的代码生成,以及将源代码通过反向工程加入到UML中等。

思考题

1.软件设计分为几个方面,请简述其内容。

2.常见的软件架构有哪几个,简述C/S,B/S,B/A/S,C/A/S的区别和各自特点。

3.请简述怎样选取软件体系结构。

4.简述结构化设计的内容和过程。

同类推荐
  • 黑客就在你身边

    黑客就在你身边

    互联网络正在改变着我们的生活,每个人都处在互联网的天罗地网之中。本书以轻松的笔调,向人们介绍了有关“黑客”的知识。当你读完这本书后,你会发觉“黑客”一点都不神秘,他们渴望全社会对他们有一个公正的评价。
  • Delphi程序设计教程

    Delphi程序设计教程

    本书为适应不同层次读者的需要,从Delphi的基本知识讲起,由浅入深,全面讲述了Delphi的集成开发环境、Delphi的编程语言——ObjectPascal、常用组件的使用、窗体的设计、菜单的设计、对话框的设计、多文档界面程序的设计、多媒体编程和数据库应用程序设计等内容。
  • 中文版3dsMax2010实例与操作

    中文版3dsMax2010实例与操作

    本书结合3dsMax2010的实际用途,按照系统、实用、易学、易用的原则,通过大量案例介绍了3dsMax2010的各项功能,内容涵盖3dsMax入门、创建和编辑二维图形、创建基本三维模型、使用修改器、网格建模、多边形建模、面片建模、复合建模、材质和贴图、灯光和摄影机、渲染、动画制作、粒子系统、空间扭曲和动力学等。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
热门推荐
  • 琉影

    琉影

    皇子说,你若以后没有了依靠,可以来京都找我。丫头没心没肺地笑,我有莫哥哥保护我,才不去找你呢。她的家乡在一年后惨遭血洗,然后便进了他的府。“你不是说不会来找我吗。”他冷眼相对。“我现在什么都没有了,看在我们认识的份上,你帮帮我好不好?”她苦脸嚷嚷。“我只会帮自己人。”“难道我们不是自己人吗?”他邪邪一笑,“你嫁给我才算。”好吧,那就嫁了。“说,你肚子里的孩子是谁的?!”他双眼赤红。“你的,是你的!”江琉儿哭着说。“我从来没有临幸过你。”他眯起了眼。突然,他将剑架在了她的脖子上。“带着你的谎言,还有这个野种去死吧!”
  • 医学专家谈健康

    医学专家谈健康

    健康是幸福生活的基石。特别是人到中年,身体开始一步步走下坡路,用医学知识守护健康则显得尤为重要。本书由北京人民广播电台城市服务管理广播《老年之友》“养生堂”栏目中医学专家访谈内容组编而成。内容源于生活,其中提及的医学理论浅显易懂、科学实用,保健方法简单易行、行之有效,得到了广大听众的好评和认可。本书汇聚了来自各大医院的27位著名医学专家的32次访谈,涉及身心健康、吃穿住行等各个方面,可以帮您养成健康的生活习惯、保持良好心态,同时使您轻松掌握防治各种常见疾病的技巧,带给您一个幸福健康的生活状态。
  • 都市侠客逍遥游

    都市侠客逍遥游

    一个没有热武器的现代背景。华夏,全世界唯一的一个没有军队的国家,然而,却无人敢侵犯其威严,只因民间,奇人之多。有人的地方就有江湖,这是一个,现代武侠江湖的故事。江湖儿女的爱恨情仇,江湖侠客的豪迈气概。
  • 男酷女强:彼岸花与薰衣草的距离

    男酷女强:彼岸花与薰衣草的距离

    【没有玛丽苏!只有传说中的帅哥美女!只有两个男的在秀恩爱!】“宫,你是薰衣草,我是彼岸花,我们没有缘分,不是你生就是我死,你选择吧。”“我选择我死你生。”血泪,染红了,她脚下的一片曼珠沙华。。。
  • 溯风如解意

    溯风如解意

    这是一个徒弟和师父之间的故事。大魔王一朝被人迫害,无奈重生为人。还被一个不靠谱的师父收了。渐渐的,好像这师父没那么不靠谱,还有点可爱?!这么可爱的师父,他除了爱还能怎么办?
  • 树人传奇

    树人传奇

    轻松搞笑有内涵的一部,捧腹大笑的同时,又发人深思。他贪生怕死,却为了精灵族挺身而出。他自私自利,却为了若灵村怒斩龙王。他卑鄙无耻,却为了凡人与仙界为敌。碌碌无为入神州,一梦春秋几何?正邪亦难辨,挥鞭天地间,神州换新颜。大浪滚滚终消逝,唯有日月永不变。书友扣群(一)337925213书友扣群(二)要看一群满不满
  • 深圳市长梁湘

    深圳市长梁湘

    本书在对梁湘及其家人的采访基础上,以大量事实向人们披露了一位具有远见卓识的改革家的生平,以及他在中国大变革初期最艰苦的岁月,如何在邓小平和中央领导下,带领深圳走向辉煌的历程。其中贯穿着思想解放的阵痛,改革开放的轨迹,以及在深圳这片热土上发生的奇迹。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 六道魔召

    六道魔召

    千年前的血战,人族战胜妖族,将妖族彻底驱逐,享受了千年的太平。某日,位面裂痕出现,魔族降临,人皇封印破裂,妖族再次出现。一时间,烽烟四起。重重阴谋的出现,是否会将大陆带入万劫不复之地……
  • 鹅毛

    鹅毛

    一个古代公主在逃亡中跌入许愿湖中许下离开这里的愿望,醒来发现自己躺在医院....