1、图书管理系统第5次课,根据领域分析的结果,进行系统数据库设计(属于静态结构设计),今天的工作任务,提交内容,数据库设计的图和表结构表示,工作任务1: 根据领域分析的结果,进行系统数据库设计,提交内容: 数据库设计的图和表结构表示,领域分析中的数据建模领域类图,根据用户访谈得知,图书登录号即为图书编号,因此去掉此项,加入图书状态一项,用于图书遗失处理,修改后的领域类图,领域类图描述的是系统中的数据对象,又称为 object Model, object Model属于概念级别的模型,需要映射为表(Data Model)才能被计算机存储,设计原则: 每一个类成为一个数据库表。 关系映射: 一对多的关
2、系映射为数据库表的主外键关联(1方的主键加入n方成为外键) 一对一的关系映射为数据库表的主外键关联(1方的 主键加入另一方成为外键) 多对多的关系映射:产生第三张表,将两个多方的主键加入其中成为外键,两个外键的组合成为主键。 利用数据库三范式检查表,从而考察领域类图的分析是否合理,消除冗余数据。 检查数据是否能够反映用例视图的需要;进一步与用户再次确认使用的数据。,根据领域类图,可以进行数据库设计,图书管理系统数据库设计,编写表结构说明,表:借阅信息,这里值得注意的是, 系统设计需要满足系统需求。在需求规格说明书中,显示借阅信息时,显示的内容包括(书名,ISBN,借阅时间还书时间) 而书名和I
3、SBN来自图书表,借阅时间和还书时间来自借阅信息表,因此,在数据库中,需要增加一个视图:借阅视图。,增加一个数据库视图,CREATE VIEW 借阅视图 AS SELECT 借阅信息.借阅时间, 借阅信息.归还时间, 借阅信息.借阅信息_ID, 借阅信息.学生_ID, 借阅信息.图书_ID, 图书.书名, 图书.ISBN FROM 借阅信息 INNER JOIN图书 ON 借阅信息.图书_ID = 图书.图书_ID INNER JOIN学生 ON 借阅信息.学生_ID = 学生.学生_ID,图书管理系统视图创建脚本_借阅视图_mysql数据使用,图书管理系统第6次课,在需求分析阶段中,我们进行
4、了用户访谈、领域分析,需求分析,需求规格说明,以及需求评审交付了以下工作产品: 领域类图 业务用例图、业务流程活动图 系统用例图、系统流程活动图 需求规格说明书 需求分析阶段得到的信息,是我们即将开始的设计阶段的依据。,需求阶段工作任务回顾,3个子模型对所解决问题的描述角度进行划分:对象模型(类图)3个子模型 动态模型 (活动图)功能模型 (用例图)用用例图描述系统的静态使用情况,它定义了系统的功能需求,但这是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。,面向对象分析的基本过程,对图书馆管理系统需求建模后,进入到系统分析和概要设计阶段。在该阶段中,将在需求模型的基础上,对系统进
5、行静态建模以及动态建模,最后构建出图书馆管理系统的软件架构。这主要体现在对系统中对象进行抽象成类,进而对类间的相互关系进行建模,而系统内部行为建模则是由交互图进行描述。,面向对象设计 面向对象设计(OOD,Object-Oriented Design)是面向对象分析到实现的一个桥梁。面向对象分析是将用户需求经过分析后,建立问题域精确模型的过程;而面向对象设计则根据面向对象分析得到的需求模型,建立求解域模型的过程。即分析必须搞清楚系统“做什么”,而设计必须搞清楚系统“怎么做”,从分析到设计不是传统方法的转换,而是平滑(无缝)过渡,而求解域模型是系统实现的依据。,面向对象设计的准则,优秀设计就是使
6、得系统在其整个生命周期中的总开销最小的设计, 其主要特点就是容易维护。,1. 模块化 面向对象软件开发模式,很自然地支持模块的设计原理:对象就是模块。 2. 抽象 面向对象方法支持过程和数据抽象。 类是一种抽象数据类型。使用者无须知道类中数据元素的具体表示方法,就可以通过接口使用类中定义的数据。 这类抽象称为规格说明抽象。 3. 信息隐藏 对象的封装性实现支持了信息隐藏。,4. 弱耦合 耦合主要指不同对象之间相互关联的紧密程度。 两个对象应该通过类的接口实现耦合,而不应该依赖于类的具体实现细节(友元)。 对象之间的两类耦合: (1) 交互耦合:交换消息 使交互耦合尽可能松散的准则:减少消息中包
7、含的参数个数,降低参数的复杂程度, 减少消息数。 (2) 继承耦合:互为基类和派生类(非模块之间) 与交互耦合相反,应该提高继承耦合程度。 通过继承关系结合起来的基类和派生类,构成了更大的模块。,5. 强内聚 在面向对象设计中存在下述3种内聚。 (1) 服务内聚。一个服务应该完成一个且仅完成一个功能。 (2) 类内聚。设计类的原则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的。类的属性和服务应该全都是完成该类对象的任务所必需的。如果某个类有多个用途,通常应该把它分解成多个专用的类。 (3) 一般-特殊(继承)内聚。设计出的一般-特殊结构,应该符合多数人的概念,更准确地说,这种结构应该
8、是对相应的领域知识的正确抽取。 紧密的继承耦合与高度的一般-特殊内聚是一致的。,6. 可重用 重用有两方面的含义: 一是尽量使用已有的类 二是在设计新类的协议时考虑将来的可重用性。,1. 重用 重用也叫再用或复用,是指同一事物不作修改或稍加改动就多次重复使用。软件重用可分为3个层次: (1) 知识重用(例如,软件工程知识的重用)。 (2) 方法和标准的重用(例如,面向对象方法或国家制定的软件开发规范的重用)。 (3) 软件成分的重用。,软件重用,2. 软件成分的重用级别 软件成分的重用的3个级别: (1)几种形式的代码重用 源代码剪贴:几乎无法跟踪原始代码块的修改 源代码包含#include
9、:重新编译都用最新源代码 继承:可扩充或修改库中的类而不影响原有的代码 (2) 设计结果重用 重用某个软件系统的设计模型。e.g. 同(3) (3) 分析结果重用 重用分析模型, 例如,把一个应用系统移植到完全不同的软硬件平台上。,3. 10种典型的可重用软件成分 (1) 项目计划:软件质量保证计划。 (2) 成本估计:不同项目中类似功能的成本估算。 (3) 体系结构:事务类处理体系结构。 (4) 需求模型/规格说明:对象模型,数据流图。 (5) 设计:体系结构、数据、接口和过程设计。 (6) 源代码:兼容的程序构件。 (7) 用户文档和技术文档:部分重用。 (8) 用户界面:GUI 可占应用
10、程序的60%代码量。 (9) 数据: 记录结构,文件和完整的数据库。 (10 测试用例:与重用设计或代码相关的用例。,采用方法:面向对象的设计方法(OOD) 内容: 静态结构设计:类和对象的设计,架构设计(设计模式),数据库设计静态结构设计建模技术:类的建模(系统类图),对象的建模,组件图,配置图,数据库设计类图 动态结构设计:状态、行为的设计动态结构设计建模技术:状态建模(状态图),行为建模(时序图、交互图),即将开始的任务图书管理系统设计阶段,根据需求规格说明书,进行状态分析和状态建模(属于动态结构设计) GUI工程师准备开始进行图形用户界面设计.,今天的工作任务,提交内容,系统状态图 G
11、UI工程师在下周交付GUI设计图,工作任务1:完成系统状态建模 交付的工作产品:系统状态图,1 状态机 2 状态 3 转移 4 状态图的建模技术,状态图(Statechart Diagram),状态图展示了一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态间的转移。,状态机用于对具有事件驱动的特性的动态行为建模。 状态机是展现状态与状态转换的图。 状态机由状态组成,各状态由转移链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或者评估,并导致特定结束状态。,1状态机(State Machine),状态图是UML中对
12、系统动态方面建模的图之一。 状态图是一种特殊种类的图形,它拥有所有其他图一样的公共特性,即名称和投影在一个模型上的图形。状态图和其他图的区别在于它的内容。状态图通常包括如下内容:(1)状态(2)转换 在UML中,图形上每一个状态图都有一个初始状态(实心圆),用来表示状态机的开始还有一个终止状态(半实心圆),用来表示状态机的终止,其他的状态用一个圆角的矩形表示,状态图的概念和内容,转换,状态机的各种元素,初始状态,最终状态,状态,入口动作,转换,事件、动作、参数、警戒(监护条件),嵌套状态,状态是状态机的重要组成部分,它描述了状态机在对象动态行为的执行所产生的结果。一个完整的状态有5个组成部分:
13、 (1)名字(name) (2)入口/出口动作(entry/exit action) (3)内部转换(Internal Transition) (4)延迟事件(Deferred Event) (5)子状态(Substate),2 状态(State),状态,状态规范卡,三种常见活动动作,转换是状态间的关联。它们用于对一个实体的不同状态间的关系建模:转换由5个部分组成,它们分别是:源状态、目标状态、触发事件、监护条件和动作。,3 转移,源状态,目标状态,触发事件,监护条件,动作,使用状态图一般是对系统中反映型对象建模,特别是对类、用例和系统的实例的行为建模。在使用状态图对系统反映型对象建模时,可以
14、参照以下步骤进行: (1)识别一个要对其生命周期进行描述的参与行为的类; (2)对状态建模,即确定对象可能存在的状态; (3)对事件建模,即确定对象可能存在的事件; (4)对动作建模,即确定当转变被激活时,相应被执行的动作; (5)对建模结果进行精化和细化。,4 状态图的建模技术,根据阅读习惯,在绘制状态图的时候,把初始状态放置在左上角,把最终状态放置在右下角。,注意事项:,状态图:用来描述对象,子系统,系统的生命周期。通过状态图可以了解一个对象所能达到的所有状态,以及对象收到的事件对对象状态的影响。活动图:显示动作及其结果。着重描述操作(方法)实现中所完成的工作以及用例实例或对象中的活动,它
15、是状态图的一个变种。状态图与活动图的区别:活动图主要描述动作及对象状态改变的结果。状态图主要描述的是事件对对象状态的影响。,状态图和活动图的区别,阅读需求规格说明书 读懂系统用例图 阅读用例描述文档 根据用例描述文档画出状态转换图,图书管理系统状态图的绘制步骤,用例名称:登陆 用例描述:本系统需要参与者输入帐号和密码进行系统登陆,该用例页面是系统起始页面。用户帐号和密码是系统默认已经分配的。 参与者:图书馆工作人员。 前置条件:无 基本路径: 输入帐号,密码 点击“进入系统” 验证用户权限,进入主界面 备选流程: 点击“重新填写”,实现重填帐号密码功能。 输入帐号或密码不正确,重新登陆。 进入
16、基本路径1,阅读图书管理系统登录用例,根据“登录”用例描述,画出状态图,如下:,用例名称:新办借阅证 用例描述:图书馆工作人员输入学生信息进行借阅证办理。 参与者:图书馆工作人员。 前置条件:图书馆工作人员点击“新办借阅证” 基本路径: 输入学生信息(学号,姓名,专业,班级,性别) 点击“提交” 显示添加的借阅证信息(借阅证编号,学号,姓名,专业,班级,性别) 备选流程: 点击“重新填写”,实现重填学生信息功能。 进入基本路径1,阅读“新办借阅证”用例描述,在已有的状态图上加入新的状态和转换,用例名称:补办借阅证 用例描述:图书馆工作人员输入学生信息进行借阅证补办。 参与者:图书馆工作人员。
17、前置条件:图书馆工作人员点击“补办借阅证” 基本路径: 输入学号 点击“查询” 显示该学生遗失的借阅证信息(借阅证编号,学号,姓名,专业,班级,性别) 点击“补办” 显示该学生新借阅证信息(借阅证编号,学号,姓名,专业,班级,性别) 进入备选流程B 备选流程: A:1点击“重新填写”,实现重填学号。2进入基本路径1 B:如果学生有借阅图书未归还,显示当前该学生借阅情况(书名,ISBN,借阅时间,应归还时间),阅读“补办借阅证”用例描述,在已有的状态图上加入新的状态和转换,用例名称:图书借阅 用例描述:图书馆工作人员输入借阅证编号和图书登录号来完成图书借阅。 参与者:图书馆工作人员。 前置条件:
18、图书馆工作人员点击“图书借阅” 基本路径: 输入借阅证编号。 输入图书登录号。 点击“借阅” 显示当前借阅信息(书名,ISBN,借阅时间,应归还时间) 备选流程: 点击“重填”实现借阅证和图书登录号重新填写,阅读“图书借阅”用例描述,在已有的状态图上加入新的状态和转换,用例名称:图书归还 用例描述:图书馆工作人员输入图书登录号进行图书归还。 参与者:图书馆工作人员。 前置条件:图书馆工作人员点击“图书归还” 基本路径: 输入图书登录号 点击“查询” 显示该书借阅信息(书名,ISBN,借阅时间,应归还时间) 点击“归还” 提示“归还成功” 备选流程: 点击重新填写,实现图书登录号重新填写,阅读“
19、图书归还”用例描述,在已有的状态图上加入新的状态和转换,用例名称:注销 用例描述:图书管理员离开系统 参与者:图书馆工作人员。 前置条件:已经进入系统 基本路径: 点击“注销” 提示“确认退出” 点击确认,退出系统 备选流程: 点击取消不退出系统,阅读“注销”用例描述,在已有的状态图上加入新的状态和转换,依次对“删除图书”“新增图书”“修改图书”的用例描述进行阅读,然后添加“状态”、“转换”。 最后得到完整的系统状态图。,以此类推,工作任务2:图书管理系统的GUI设计,GUI 工程师的工作并不是从设计阶段才开始的,早在需求分析阶段,GUI工程师就已经参与到用户访谈中,了解用户的使用习惯,喜好等
20、,为设计用户界面做准备,对于用户来说,一个友好的界面是至关重要的。 用户界面(User Interface)的设计质量直接影响用户对软件产品的评价,从而影响软件产品的竞争力和使用寿命,因此,对人机界面的设计必须给予足够的重视。,GUI (图形用户界面)设计概述,GUI图形用户界面设计过程,设计原型,用户试用 和评估,修改原型,评估,几种工具: GUI Design Studio Microsoft Visio(易用) Fireworks+Photoshop(功能强大),GUI工程师做GUI设计的准备,对比同一界面的以下两种不同设计,然后说出哪种要好一些?,先看一个例子,1、关注用户及其任务,而
21、不是技术 2、首先考虑功能,其次才是表现 3、与用户对任务的看法保持一致 4、设计要符合常见情况 5、不要分散用户对他们目标的注意力 6、促进学习,从外(用户)到里(设计人员)思考,而不是相反。 7、传递信息,而不仅仅是数据 8、设计应满足响应需求 9、通过用户试用发现错误,然后修复它,良好的设计原则,最好的程序界面就是用户无需去阅读操作手册就知道该如何使用的界面。,在进行GUI设计之前,需要根据用户需求确定要开发的软件模式。不同模式的软件,GUI设计的方式不同。 管理软件技术的主流技术与管理思想一样,也经历了三个发展时期。 首先,界面技术从上世纪DOS字符界面到Windows图形界面(或图形
22、用户界面GUI),直至Browser浏览器界面三个不同的发展时期。 其次,今天所有电脑的浏览器界面,不仅直观和易于使用,更主要的是基于浏览器平台的任何应用软件其风格都是一样的,使用人对操作培训的要求不高,而且软件可操作性强,易于识别; 再者,平台体系结构也从过去单用户发展到今天的文件服务器(FS)体系、客户机服务器(CS)体系和浏览器服务器(BS)体系。,任务准备:选择合适的软件架构模式,图书管理系统的模式分析,由于我们开发的图书管理系统,目前只有一个使用者图书馆工作人员。而且我公司开发技术以基于java的GUI编程技术为主。 因此选择C/S架构作为这次图书管理系统的架构。 C端为图书管理系统,而S端为数据库服务器。,在GUI Design Studio中完成图书管理系统的GUI设计,新建一个设计,用来设计另外一个界面“图书管理系统主界面”,建立界面控制流的转换,画出其余的GUI界面来。交给代码人员,他们进行代码编写。 如果你同时担任代码和GUI,那么建议你直接在IDE里面做GUI设计,省时省力,依次类推,本次课中,用到以下知识 状态建模状态图教材第7章 了解GUI设计工具: VISIO Fireworks+Photoshop,课程小结,