Java项目实战.doc_第1页
Java项目实战.doc_第2页
Java项目实战.doc_第3页
Java项目实战.doc_第4页
Java项目实战.doc_第5页
免费预览已结束,剩余224页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaJava 项目实战项目实战 实训教材实训教材 主主 编 徐翠娟 王编 徐翠娟 王 琼 陈慧强琼 陈慧强 副主编 杨副主编 杨 文 宿佳宁 宋文 宿佳宁 宋 磊 马慧娟磊 马慧娟 哈尔滨职业技术学院 Java 项目实战 哈 尔滨职业技术学院 目 录 课题一 需求分析 3 课题二 项目计划安排 10 课题三 概要设计 19 课题四 详细设计 23 课题五 数据库设计 35 课题六 项目技术准备 44 课题七 系统功能设计 47 课题八 项目的测试 200 课题九 实战演练 205 附件 软件文档编写向导 209 Java 项目实战 哈 尔滨职业技术学院 课题一 需求分析 一套软件是否有市场 满足用户需求是关键因素 所以搞清楚用户到 底需要什么是软件开发的头等大事 用户需求如何得来 用户有没有把需 求描述清楚 如何把用户需求转化成自动化方式 软件的开发其实就是从 一个个问题开始 再一个个地解决地过程 整个需求的过程如图 用户需求分析流程图 开始需求 用户提出需求 分析人员体验 用户工作流程 分析人员确定 调研结果并写 报告 项目组分析并 确定最终需求 与用户共同确 定工作环境 结束需求准备进 入设计 图 1 1 需求过程图 Java 项目实战 哈 尔滨职业技术学院 1 11 1 用户提出自己的需求用户提出自己的需求 本例用户是 职业技术学院 目前使用的是手工记录学生的信息 随着学校规模的增大以及新增学生选课的影响 手工方式已经无法记录学 生的实时信息 该学校决定用一套新的学生信息管理系统软件 并要求满 足以下条件 1 学生卡使用磁卡及防伪标志 学生卡如有遗失 学校方面可以 补办 原资料需重新录入 2 学生卡不能转借给他人使用 如违反给予相应处罚 3 学生可以选课 并查看个人信息 4 对学生信息 选课信息 课程信息进行记录 学校需要的就是能满足以上需求的软件 需求就是一套软件的终极目 标 但并不是每一个需求都能达到的 分析人员还要根据开发环境一条条 地分析这些需求 1 21 2 系统分析人员分析用户的需求系统分析人员分析用户的需求 1 2 1 分析人员体验用户环境分析人员体验用户环境 当软件公司在接到用户的需求时 不是盲目地进行开发 而是应该对 需求进行调研 需求的调研就是亲自到用户那里体验整个工作过程 掌握 软件的运行环境以及人员操作水平等 系统分析员的任务就是了解并确认用户的需求 最终做出系统的流程 设计 分析人员如何快速有效地掌握用户的整体情况 最好的方法就是提 问题 然后找到这些问题的答案 不管什么样的软件系统 都可以从以下 Java 项目实战 哈 尔滨职业技术学院 问题出发 1 用户为什么要引入系统 这个问题的答案将最终决定软件的定位 一套软件系统可繁琐可简单 根据用户需要软件的原因制定快速的开发计 划 既满足了用户需求又节省了开发时间 降低了双方的成本 2 软件要实现什么功能 用户最初的需求列表是否可行 分析人员 要深入到用户的工作流程中 亲自体验工作环境 对照用户需求来分析各 个流程是否有局限性 并与用户的管理层多进行沟通 对需求有异议的地 方力求妥善解决 3 操作人员有哪些 对于一个完善的软件系统来说 安全是不可缺 少的一部分 并不是所有的人都能管理软件系统 不同的人应该具备不同 的权限 从软件角度讲 就是角色分配问题 管理人员有编辑删除的权限 而普通人员只能查看 分析人员要时刻与管理人员进行沟通 了解用户的 组织管理机构 掌握用户角色的精确划分 4 如何满足用户的需求 一个完整的软件系统 首先功能要完整 即用户的需求必须满足 软件该使用什么样的方式来满足用户的需求 并 在满足需求的同时 提高用户的工作效率 节约用户的工作成本 分析人员要理清思路 清晰地处理与用户之间的每个问题 并将结果 记录 为以后设计用例图准备好详细资料 因为不可能所有的开发人员都 去用户那里体验工作流程 所以分析人员要力求实现需求的准确性和详细 性 1 2 2 分析并确定调研结果分析并确定调研结果 分析人员将需求调研的结果带回公司 写出调研报告 召开会议研讨 开发人员和项目经理等所有参与项目的人都要参加 根据报告一条条地分 Java 项目实战 哈 尔滨职业技术学院 析具体流程的有效性和可行性 从软件的角度完善其中的细节 并将不清 晰的地方再与用户进行沟通 争取做到每个人都清楚地明白用户究竟要什 么样的功能 研讨完毕后 将可行需求和不可行需求 包括有局限性的需 求 分别记录 并在不可行需求中详细注明原因 最后说明软件的目的及 功能 在本例中 不可行的需求的列表如下 1 学生卡使用磁卡及防伪标志 使用磁卡可以 但必须具备扫描卡 专用设备 仅仅靠软件无法实现 防伪标志的使用由用户自己决定 也不 能通过软件实现 2 学生卡不能转借他人使用 软件不是万能的 无法判断学生卡是 否是本人使用 此需求只能由用户管理部分实施各种监管制度来满足 3 学生卡补办需重新输入资料 学生资料已存储在数据库中 无需 重新输入所有资料 对于局限性的需求一定要仔细推敲 并与用户紧密沟通 以达成改善 的意见 可行性列表将在后面介绍 软件的目的是提高用户的工作效率 细分员工的工作职责 协调部分 之间的业务往来 监督业务运行的过程 该软件的主要功能包括 1 对学生信息的管理 2 对教师信息的管理 3 对课程信息的管理 4 对选课信息的管理 1 31 3 用户与项目管理人员确定最后的需求用户与项目管理人员确定最后的需求 Java 项目实战 哈 尔滨职业技术学院 整个项目组已经讨论并确定了需求 对于不清晰的地方也与用户进行 了沟通 最后需要列出软件的最终需求 1 学生卡使用磁卡 允许手工输入学生证号和扫描器输入两种方式 学生证号的长度为 10 1 2 位是专业编号 3 6 位是入学年份 7 10 连续 编号 2 学生卡办理之前需登记学生的详细资料 其中包括学生的学号 姓名 性别 生日 地址 电话 身份证号等 并且系统还应能够修改输 入错误的学生个人信息记录 3 可以对学生所选的课程进行管理 包括学生的可选课程和个人已 选课的信息 并可以进行选课 4 可以对课程进行管理 课程管理包括增加课程 该课程包括任课 教师和所属专业 5 根据学号 身份证号查询学生信息 根据学号查询选课信息 6 软件使用权限管理方式 根据工作流程 软件有 2 种角色 管理 员 学生和教师 管理员允许对课程信息 教师信息 学生信息的管理 学生可以进行选课和查看课程信息的操作 教师可以查看本人所授课程的 学生信息 7 本软件从签字起二个月内交付 确定需求时 要从用户实际需求和工作环境出发 本着一切为用户着 想的原则 尽量满足用户的需求 为了用户成本方面的考虑 尽量与用户 已有软件系统不冲突 在可能的情况下 尽量实现两个系统的融合 需求在整个开发过程中相当重要 一旦与实际情况出现偏差 则会造 成整个工程的反复 确定需求后 项目经理开始组织项目开发小组讨论需 Java 项目实战 哈 尔滨职业技术学院 求以及用户工作环境的注意事项 1 41 4 根据最终需求确定工作环境根据最终需求确定工作环境 1 4 1 软件环境软件环境 除了要安装学生管理系统外 还必须具备相应的软件环境 才能更好 地运行 1 Java 虚拟机 支持 Java 开发的软件 2 应采用统一的软件操作系统 XP 这是为了更好地管理 3 服务器上安装数据库系统 SQL Server 2000 或 2005 从而实现 信息资源安全化管理 4 安装防病毒软件 病毒防火墙等 因为所有的机器都是互连的 一旦有病毒侵入 容易造成整个系统的瘫痪 1 4 2 硬件环境硬件环境 软件不是一套可独立运行的系统 必须依托在完善的硬件设备上 本 例从实际应用角度考虑 要使软件正常有效地运行 还必须具备以下硬件 环境 1 操作系统必须是 586 以上 64MB 内存配置 为了更好更快地运 行 如果情况允许 建议尽量采用内存较大的电脑 2 运行通畅的网络环境 所有的内容都通过网络传输 如果网络出 现问题 则系统将无法正常工作 3 服务器 由于系统采用 C S 结构 为了数据安全和速度问题 数 据库和系统文件等要求单独安装在一台机器上 服务器的选择是系统稳定 性的关键因素 Java 项目实战 哈 尔滨职业技术学院 4 写卡器及刷卡器 学生卡全部采用新版磁卡 必须具备读写磁卡 的设备才能进行正确的扫描 写卡器一般用于向学生卡内写入学生学号等 简单信息 以上这些软硬件环境一定要跟用户及时沟通 如果用户保证不了这些 环境要求 软件不能很好地运行 后果责任等一定提前说清楚 确定一切 内容之后 双方在最终需求书上签字 软件进入实质开发阶段 因为需求是整个软件的基础 从开始到了解到分析是一个异常慎重的 过程 每一步的失误都可能导致软件的重新开发 为了更好 更快地开发 系统 项目小组要在开发前进行充分的讨论 有问题的地方一定要跟用户 及时沟通 最后要做出需求说明书 供将来设计 开发和测试等人员查看 需求说明书一般采用 IEEE 标准 830 1998 IEEE 1998 描述的需求规 格说明书模板 如表所示 需求说明书根据模板格式书写清楚 放在公司的共享资料库内 整个 需求分析过程就结束了 项目进入第二阶段 Java 项目实战 哈 尔滨职业技术学院 课题二 项目计划安排 一项任务的成功完成 必须依靠合理的计划安排以及各种资源的有效 利用 有计划 有步骤地进行软件开发 除了可以提高开发进度外 更能 明确项目组各成员之间的职责及任务 项目进度表要安排每个成员的任务 并要求成员每天修改自己的进度 保证项目管理人员可以随时查看整个项 目的进度 以及时发现问题 调整工作策略 2 12 1 项目计划软件项目计划软件 对于项目计划软件 主要使用的是 Microsoft 提供的 Project Project 2003 是 Office 2003 中带的一项 安装比较简单 所以安装过程不作介绍 2 1 1 创建一个进度表创建一个进度表 Project 项目软件是一个可以直观显示项目进度和管理项目资源的软件 下面创建一个本例的初期进度安排表 1 打开 Project 选择 文件 新建 菜单命令 出现窗口如图 2 1 所 示 默认情况下开打 4 个区域 视图 任务定义 任务列表 图形任务显 示 一般 所有的任务都在任务列表区完成 图形任务显示区只用于显示 不能修改 Java 项目实战 哈 尔滨职业技术学院 图 2 1 Project 的工作界面 2 新建一个任务 双击任务列表区的第一行 出现对话框 如图 2 2 所示 这里有 6 个选项卡 常规 前置任务 资源 高级 备注 自定 义域 通常情况下只设置前 4 个即可 常规选项卡中要求写明任务的名称 工期长短 开始日期和结束日期 前置任务选项卡中要求写明必须完成什 么任务后才可以进行此项任务 资源选项卡中写明此项任务需要的资源 包括人员 设备等 高级选项卡一般指明此任务的一些限制 图 2 2 任务信息图 3 填写任务名称和任务所需资源后 就粗略完成了一项任务 如 Java 项目实战 哈 尔滨职业技术学院 图 2 3 所示 图 2 3 填写好任务的工作界面 2 1 22 1 2 使用不同的图表显示项目进度使用不同的图表显示项目进度 为了更加直观地显示任务安排 Project 提供了多种图形供选择 有甘 特图 跟踪甘特图 日历图 网格图等 默认的图形是甘特图 下面分别 介绍各种图形的显示方式 在 视图栏 中有一些变换图形显示的快捷按 钮 1 单击 日历 按钮 界面变化为如图 2 4 所示的效果 这主要是 以日历的形式展现每个任务以及任务的工期 图 2 4 日历式显示任务 2 单击 网格 按钮 以分段的形式展示任务列表 如图 2 5 所示 这样更直观地显示了有多少任务以及任务的安排时间 Java 项目实战 哈 尔滨职业技术学院 图 2 5 网络式显示任务 3 单击 跟踪甘特图 按钮 以进度比例的方式显示每个任务 如 图 2 6 所示 这个图和甘特图是十分相似的 只是有个进度跟踪显示 其 他没什么区别 图 2 6 跟踪甘特图式显示任务 每种图都从不同的角度显示了进度安排情况 但只有甘特图的方式可 以清晰地显示任务的前置关系 必须完成的前提任务 任务的进度等 其他几种图只是比较简单直观的显示任务名称及任务的时间安排 2 22 2 实现此项目需要的资源实现此项目需要的资源 Java 项目实战 哈 尔滨职业技术学院 一个项目 必须包括人员和设备 在项目进度表中所说的资源 就是 完成该项目需要的人员和设备 每个阶段分配不同的资源 什么职责该干 什么 用多长时间 就是一个项目安排进度的过程 1 单击 视图栏 资源工作表 列表按钮 显示如图 2 7 所示界面 图 2 7 资源工作表 2 添加资源的操作方式与添加任务是相同的 双击表格第一行 出 现对话框 如图 2 8 所示 资源信息分 5 项 常规 工作时间 成本 备 注和自定义区域 常规选项卡中主要说明资源的名称 类型等 一般写人 名 工作时间选项卡定义工作日和非工作日以及工作日中几点到几点属于 工作时间 成本选项卡设置某资源 1 小时的费用 通常用来作成本控制 一般小型软件不需要设定 图 2 8 资源属性信息 3 根据情况填写资源信息 项目组的人员名称 笔记本等设备名称 人员的类型是 工时 设备的类型一般选择 材料 4 单击 甘特图 界面转换到任务列表 Java 项目实战 哈 尔滨职业技术学院 5 双击要分配资源的任务 打开任务信息 选中 资源 选项卡 此时就可以在资源名称处选择此任务需要的资源 如图 2 9 所示 图 2 9 资源选项卡的内容 6 给所有的任务分配好资源后 可以通过 任务分配情况 和 资 源使用情况 来查看和调节每项任务的资源 除了可以用以上方式添加资源外 Project 提供了更简便的方式 资源 可以从公司的电子通讯簿导入 安排好任务和资源后 其实就完成了一个项目进度安排表 因为 Project 是一个比较简单的工具 十分容易上手 真正功能完善的进度表还 得在实践中不断地探索 2 32 3 如何写好项目计划安排表如何写好项目计划安排表 项目计划不仅仅安排工作日期 还代表了很多在软件开发过程中的关 键因素 比如成本 资源等 项目计划主要内容包含以下内容 1 估计任务工期 根据资源的安排情况和任务的多少以及任务的完 成期限可以估算出整个项目的工期 Java 项目实战 哈 尔滨职业技术学院 2 分阶段地明确项目的进度 可以将任务标记为里程碑 在甘特图 中就能很明显地看到所分的阶段以及每个阶段的任务 3 考虑管理成本 在资源中可以设置每项资源的工时费 Project 会 根据任务中此项资源的使用情况自动核算此项资源在整个项目中占多大成 本 4 优化项目计划 控制项目风险 满足预算要求 保证完成日期 通过以上几点分析 可以看到项目计划既是给管理层人员的一份报告 又是控制项目小组成员进度的一份跟踪表 起到了承上启下的作用 知道了项目计划可以为系统做什么 那么该如何做好呢 这应该全面 考虑本项目的各个方面 1 是否考虑成本预算问题 如果考虑 则在人员和设备的选择上要 精确计算 2 此项目是否与其他项目有关联 如果有 那需要判断是否有相冲 突的资源 是否可以共享其他的资源以节约时间 3 要及时记录任务进度 尤其是在开发一个有前置任务的资源时 4 各阶段的里程碑要设置明确 而且要恰到好处 例如分析是一个 阶段 开发是一个阶段 测试是一个阶段 这样看起来层次分明 对各阶 段的资源也有个详细的划分 5 任务列表不要一个层级往下走 要精确划分 每个任务都不能包 括太多的功能 有层次的显示任务 让其他成员能一目了然 2 42 4 前期的项目计划表前期的项目计划表 由于在做项目进度安排时 并不知道详细的软件模块 只知道具体需 Java 项目实战 哈 尔滨职业技术学院 要哪些功能 所以初期无法详细地描述开发进度 而只是给出一个开发的 时间段 由分析人员做完具体的模块划分后 再在项目计划安排表中予以 补充 下面是学生信息管理系统前期的项目进度表 如图 2 10 所示 图 2 10 前期计划表 在这里 大的任务主要有 6 个 1 需求分析 分解需求 画出用例图 分出类模块 2 模块划分 将分析出的类分配给不同资源 3 开发 进入编写代码阶段 并要求开发人员自己进行初步测试 4 测试 测试人员分两步完成测试 单元测试并不要求所有模块都 完成 而集成测试则是所有模块完成后统一进行的测试 5 部署 将开发完成的代码部署到服务器或互联网中 6 材料准备 相关资料以及帮助性的说明文档 在甘特图中 菱形黑点标示里程碑 此进度表分了 3 个里程碑 1 模块划分完毕 2 开发完毕 3 测试完毕 从甘特图中可以很明显的看出任务的资源 任务的进度以及某项任务 Java 项目实战 哈 尔滨职业技术学院 的前置任务 如此直观的图例方便了管理人员的监督和开发人员的计划安 排 越详细的项目计划表就越能说明整个软件系统开发流程及资源利用率 所以在实际应用中应尽可能详细地描述各个任务及任务的辅助信息 Java 项目实战 哈 尔滨职业技术学院 课题三 概要设计 概要设计阶段主要是粗略描述整个软件的框架 并从业务的角度描述 软件的模块 工作流程等 项目的成功取决于设计的好坏 而概要设计则 是整个设计的关键部分 概要设计的主要任务是将用户的需求划分为不同 的功能 然后将这些功能细分成模块 并给模块一些规则约束 以达到各 个模块之间可以相互交流的目的 概要设计关乎到系统的整体架构 因此 想做好一个概要设计 不仅仅要熟悉用户的业务流程 还要具备相当丰富 的设计经验 3 13 1 概要设计的原则概要设计的原则 概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体 结构进行大致的设计 概要设计要坚持以下几个原则 1 细分原则 软件系统都是由很多不同的模块组成 当设计一套软 件时 要先将所有的功能分解 解决复杂问题的方法是将其分解成几个小 问题 一个个来解决 2 提高代码重用性 在面向对象设计中 首先考虑的就是代码的重 用 一个好的设计 将来在升级换代时不需要太大的改动 节省了人力物 力 3 从上而下层层分析 概要设计要从整体出发 逐个剖析软件的功 能 从上而下 先分析系统总的功能 然后一步步细分 直到最小的功能 模块 Java 项目实战 哈 尔滨职业技术学院 4 一致性原则 概要设计要求所有功能模块在定义时使用统一的规 范 5 提高独立性 减少耦合 各个模块与模块之间尽量减少关联 否 则修改一个地方就会引起其他多处的变动 不符合面向对象的原则 一般 情况下 对类封装后 只允许对类进行扩展 而不能修改 而封装的类必 须具有单一职责 既理论情况下不允许两个类共同完成一个功能 6 模块的大小要尽量适中 不是结构算法越复杂的模块越好 模块 的大小要根据实际工作目标和其他类的耦合紧密程度来决定 经验表明 一个模块的规模不应过大 模块的总行数应控制在 10 100 行的范围内 最好为 30 60 行 这样理解和阅读都较方便 过长的模块往往是分解不充 分的表现 会增加阅读理解的难度 但小规模太多也会使模块之间联系变 得复杂 增大系统在模块调用时传递信息所花费的开销 由于概要设计是整个设计的重中之重 牵一发而动全身 所以要努力 做一个好的概要设计 才能在今后软件开发过程中不再反复 现在软件行 业流行模式化驱动设计 将一些市场上比较成功的模式拿来用在自己的设 计中 3 23 2 将用户需求模块化将用户需求模块化 根据概要设计的原则来分析一下本项目的用户需求 并最终转化成用 程序语言描述的模块 什么样的需求才是一个模块 模块应该具备如下 3 个特征 1 输入和输出 模块必须能被调用并且正确的返回调用 而且调用 都是相对一个对象而言 这是模块独立性的一个体现 Java 项目实战 哈 尔滨职业技术学院 2 处理功能 模块必须可以对调用的输入数据进行灵活的处理 并 为输出准备好处理结果 3 程序代码 用来实现模块功能的源代码 3 33 3 确定系统最终模块确定系统最终模块 概要设计中最重要的就是确定此项目包括哪些模块 根据上两节讲述 的设计原则和模块特征 将用户需求转化为下面的模块 1 管理员模块 是本系统的核心模块 该模块又包括对学生管理和 课程管理 2 个子模块 功能如下 1 学生管理子模块 实现对学生信息的添加 修改 删除操作 还可 以输入查询条件进行查询操作 查询学生信 息 删除学生信 息 修改学生信 息 学生管理子模 块 添加学生信 息 图 3 1 学生管理子模块 2 课程管理子模块 实现对课程的添加 添加时为其分配任课教师 上课时间和地点 实现对课程的修改 删除 查看某个课程的详细信息等 查询课程信 息 删除课程信 息 修改课程信 息 课程管理子模 块 添加课程信 息 Java 项目实战 哈 尔滨职业技术学院 图 3 2 课程管理子模块 2 教师模块 实现查看自己所教授的课程 课程有哪些学生选修 以及利用本系统提交学生的成绩 教师模块 查看所授课 程 录入学生成 绩 图 3 3 教师管理模块 3 学生模块 实现学生的选课 查看 修改自己的选课信息 学生模块 选课查看选课信息修改选课信 息图 3 4 学生模块 4 公有模块 实现用户的身份验证 密码修改 退出系统等功能 公有模块 身份验证密码修 改 退出系 统 图 3 5 公有模块 3 43 4 根据模块划分完善项目计划表根据模块划分完善项目计划表 在初期的项目计划表中 只简单地估计了开发的时间 并没有详细划 分模块 截止到目前 模块已经分配清楚 那么必须在项目计划表中分配 模块所需的资源以及模块开发的时间这样能更好地估计开发时间 掌握项 目进度 Java 项目实战 哈 尔滨职业技术学院 课题四 详细设计 概要设计是为了明确开发人员的工作步骤和工作目标 详细设计使开 发人员可以轻松地完成代码的编写 并熟悉所编写的业务流程 4 14 1 UMLUML UML Unified Modeling Language 统一建模语言 是一种可视化的建 模语言 对各建模元素可进行详细的说明 并能生成所建模型的文档 4 1 1 为什么用为什么用 UML UML 语言是一种可视化的语言 是一种图形符号 UML 的出现就是 为了详细描述工作过程 以用例驱动的方式描述流程中的元素和顺序 客 观而又直观地体现了业务流程 设计人员把使用 UML 的过程叫做建模 建模就是对现实的简化 使用 UML 可以给设计带来很多便利 1 按照程序需要的样式对系统实现可视化流程展示 2 可以详细说明系统的结构和各种行为 3 对所有的决策可实现文档化管理 4 可以以体系结构为中心 实现增量和迭代 UML 是统一化的一种设计标准 因为统一 所以任何人所做的设计只 要符合标准 都可以很容易地让别人看懂 符合 UML 标准的用例图也可 以让用户看懂 因此 大部分的设计人员目前都采用 UML 来进行详细设 计 4 1 2 UML 包括的内容包括的内容 Java 项目实战 哈 尔滨职业技术学院 UML 主要包括 3 个构造块 分别是事物 关系 图 事物是 UML 模型中最基本的面向对象的建筑块 其在模型中属于最静 态的部分 代表概念上或物理上的元素 UML 的 4 种事物主要包括如下 1 结构事物 类 接口等 2 行为事物 交互 状态等 3 分组事物 包 4 注释事物 注释 文档等 关系用来形容 UML 中事物之间的关联 某事物是否依赖于其他事物 或者某事物的改变是否会影响到其他事物 UML 的 4 中关系包括 依赖 泛化 关联和实现 图是组织这些建筑块的方式 图代表一系列的元素 这些元素常常被 画成用点 事物 和弧 关系 相连的图 利用图来从不同的视角观察系 统 UML 的 10 种图包括如下 1 类图 描述类以及类之间的关系 描述类的职责 显示类的方法 和属性 2 对象图 是类图所反映的事物实例 3 用例图 参与者与模块间的关系 4 交互图 要实现一个目的行为的一种交互操作 5 顺序图 按时间顺序体现对象之间的消息传递 6 协作图 与顺序图可以互换 主要体现对象之间的结构组织 7 状态图 某对象的几种可能状态以及状态之间的切换 Java 项目实战 哈 尔滨职业技术学院 8 活动图 工作流方式的一种图形展示 9 构件图 构件之间的组织和依赖 10 部署图 软硬件结合的一种表现整个系统架构的图例 4 24 2 分析设计工具分析设计工具 VisioVisio UML 只是一种建模语言 不是一种工具 就像 Java 语言一样 必须使 用 Java 开发工具才能进行开发 市场上有很多建模工具 有些工具甚至可 以实现 UML 与 Java 语言的互相转换 Visio 是 Microsoft 提供的一款建模 工具 使用起来比较方便 4 2 1 为什么用 Visio 本项目使用的版本是 Microsoft Visual Studio NET Enterprise Architect VSEA 版本中自带的 Visio 在 VS 的版本中 只有此版本自 带有 Visio 另外 也可以单独下载此版本中的 Visio 不要使用 Office 自 带的 Visio 版本 因为很多功能在这个版本上无法实现 Visio 不仅包括软件工程的一些建模 还涉及其他建筑 网络 建筑工 程等建模 Visio 中可以全面应用 UML 语言中所有的事务 关系和图 更 好地体现了图形化设计的意义 其可视化设计允许操作者通过拖拽就能够 轻松地完成模块的建设 Visio 的开始界面如图 4 1 所示 主要包括类别区 和模板区 Java 项目实战 哈 尔滨职业技术学院 图 4 1 Visio 的开始界面 4 2 2 使用使用 Visio 设计模块设计模块 本小节以学生管理子模块为例 详细介绍如何用 Visio 设计模块 1 启动 Visio 后单击 类别区 软件 列表按钮 模板列出预定义的 软件项目的模板 如图 4 2 所示 图 4 2 软件模型 2 选择模板区的 UML 模型图 打开 UML 模型的工作界面 如 图 4 3 所示 这里主要包括形状工具栏 模型资源管理区 工作区 3 部分 从图中可以看到工具栏区列出了 UML 所有的图形模式 Java 项目实战 哈 尔滨职业技术学院 图 4 3 Visio 的软件模型工作界面 3 单击形状工具栏区的 UML 静态结构 列表按钮 显示出了在 Visio 中类图的所有元素 如图 4 4 所示 包括包 类 接口等 图 4 4 类图的元素图 4 拖拽类元素到工作区 出现一个 UML 定义的标准类图 如图 4 5 所示 类图主要分 3 部分 最上面显示类名 中间列出类属性 最下面类 出类的方法 Java 项目实战 哈 尔滨职业技术学院 图 4 5 类 5 双击类图 打开类的属性窗口 如图 4 6 所示 左侧是对类中类 别的罗列 右侧是每个类的具体属性 图 4 6 类的属性窗口 6 在该对话框右侧类的属性中 将 名称 设置为 Student 在 可见性 下拉列表中选择 Public 因为一般情况下类都是对所有模块 可见 如果仅仅内部可见 则选择 Private 在 文档 文本框内可以输 入对此类的描述 以便将来生成统一的文档资料 7 选择左侧列表栏的 特性 对话框右侧会随之更改为特性的相 关属性 如图 4 7 所示 学生类型的属性包括学生学号 密码 姓名 系 院号 年级 班级 单击 新建 按钮 将这几个属性添加 并同时指明 属性的类型和可见性 学号 ID string 密码 Password string 姓 名 Name string 院系号 Depart int 年级 Grade int 班级 Class int 均为内部可见 Java 项目实战 哈 尔滨职业技术学院 图 4 7 添加属性的界面 8 选择左侧列表栏的 操作 项 如图 4 8 所示 此处允许添加类 的操作 即类的方法 学生类的方法包括 添加学生信息 修改学生信息 删除学生信息和获取学生信息 单击 新建 按钮 将这 4 个方法添加 并选择每个方法的返回类型 图 4 8 添加方法界面 9 如果方法有输入参数 则单击 属性 按钮 打开方法属性窗口 如图 4 9 所示 将参数一一添加即可 Java 项目实战 哈 尔滨职业技术学院 图 4 9 方法参数窗口 10 添加完类名 类的属性 类的方法后 一个类图就基本完成了 为了减少以后的设计反复 此处对于类的方法和属性一定要全面而且精确 当然 设计需要经过很多实践经验的积累 刚刚开始做设计的程序员做不 到完美也是允许的 说明 在静态类图中 类名 属性名 方法名一般要求用英文表示 类名和方法名首字母大写 属性名全部小写 完成的类图 如图 4 10 所示 AddStudent in name string in password string in depart int in grade int in class int bool EditStudent in name string in password string in depart int in grade int in class int bool DelStudent in id string bool GetSudent in id string bool ID string Password string Name string Depart int Grade int Class int Student 图 4 10 完成属性和方法的类图 4 34 3 用图例实现设计用图例实现设计 既然 UML 是一种图形化的设计语言 而 Visio 又是一种图形化的设计 Java 项目实战 哈 尔滨职业技术学院 工具 那么用图例来实现设计 然后再配上文档说明则是完成详细设计的 最好方法 本节先用用例图详细说明业务流程 再用类图详细描述各个模 块的功能 4 3 1 用用例图实现业务流程的设计用用例图实现业务流程的设计 用例图是描述业务流程的一种设计图 由于其简单易懂 需求分析人 员在初期体验用户业务时 就可以画出用例图 并与用户就用例图进行磋 商 这样 完成的用例图就比较接近事实上的业务 上一节讲到了类图 其实类图是一种静态图 只是描述一些特性 而用例图是一种动态行为图 描述业务的流程 本项目以学生选课为例 设计一个选课的业务用例图 首先用语言描 述一下选课的流程 1 管理员录入学生信息和课程信息 2 学生使用管理员提供的用户名和密码登陆本系统 3 查看可供该学生选择的课程列表 4 从该列表中选择要所选课程 对该课程进行选课 系统自动记录 选课信息 整个业务流程分为 4 步 下面以图形化方式描述以上流程 1 启动 Visio 的 UML 模型图 打开如图 4 3 所示界面 显示类图的 所有元素 2 选择左侧形状工具栏最下面一项 UML 用例 显示 UML 用例 的模型符号 如图 4 10 所示 主角一般表示行为操作者 通常情况下是人 或设备 而用例就是业务过程中的一个行为 包的意义就是统一归纳多步 行为 Java 项目实战 哈 尔滨职业技术学院 图 4 10 UML 用例图模型元素 3 在学生选课流程中有两个主角 管理员和教师 先拖拽出 2 个主 角符号到工作区 并分别命名 4 在此例中有 5 个行为 录入学生信息 录入课程信息 登录 查 看课程列表 选课 拖拽 5 个 用例 符号到工作区 并分别命名 此时 的用例图如图 4 11 所示 包括 2 个角色 5 个用例 图 4 11 角色和用例 5 确定角色和行为之间的关系 角色和行为之间不属于使用关系 也不属于扩展关系 是一般情况下的通信关系 将 通信 符号添加到工 作区 并依次连接角色和用例 最后如图 4 12 所示 Java 项目实战 哈 尔滨职业技术学院 录入学生信息 录入课程信息 管理员 学生 登录 查看课程列表 选课 图 4 12 学生选课业务用例图 业务流程图中要注意有些手工行为在实际程序中是不能实现的 但为 了体现业务流程的完整性 一般还是在用例图中体现 此时要根据实际程 序加以注释或说明 4 3 2 类图实现静态模块结构的设计类图实现静态模块结构的设计 开发人员了解一个类的属性就是靠研究类图和业务流程 类图是设计 人员根据业务流程和面向对象设计原则总结出来的相关属性的集合 便于 将来代码的重用和维护 4 3 3 类图与类图之间的关系类图与类图之间的关系 虽然在设计类时 要坚持类与类之间低耦合的原则 但很多情况下 类于类之间有相互调用或依赖的关系 所以为了让开发人员清晰地明白类 和类之间的关系 设计人员应该有条理的设计好类图与类图之间的依赖关 系 类与类之间的依赖关系在 Visio 中定义了以下几种 1 Call 调用 某类中的方法可以调用其他类的方法 箭头指向被 调用者 2 Friend 友好 两个类是友元关系 3 实例 某对象是某类的实例 Java 项目实战 哈 尔滨职业技术学院 4 继承 某类是某类的子类 这个是比较常见的类的关系 Java 项目实战 哈 尔滨职业技术学院 课题五 数据库设计 数据是企业运作过程中不可缺少的重要部分 建立自己的数据资料库 是提高企业整体竞争力的关键因素 对于程序而言 安全完整地保存客户 的信息是一种责任 因此 数据库设计就成了整个软件开发中重要的一个 环节 一旦数据设计出现问题 软件就会出现问题 某些功能的使用就发 挥不了最大作用 所以 为了更好地开发数据库 了解信息的来源以及信 息的流向是头等大事 对于客户的整个操作流程 都要亲身参与 才能客 观地掌握数据资料的真实性 为设计良好的数据库打下基础 本章主要介 绍如何收集客户的数据资料 并将其转化为程序需要的数据资源 5 15 1 罗列数据信息罗列数据信息 在前面已经罗列出了用户的需求 这也正是数据库信息的来源 根据 列表内容 可以提炼出以下数据信息 1 需要管理学生信息 学生表 2 需要管理教师信息 教师表 3 需要管理课程信息 课程表 4 需要管理选课信息 选课表 5 需要管理院系信息 院系表 6 需要管理管理员信息 管理员表 很多初做设计的程序员容易犯一个错误 每个需求都做成一个独立的 表 其实这是一个误区 在选择表时 需要遵守以下原则 Java 项目实战 哈 尔滨职业技术学院 1 每个表中不能有重复的字段属性 2 将相关数据合成到一个表中 3 每个表都有一个主键 而其他属性对这个主键有依赖性 对于重 复添加的字段属性 最好单独列表 如果教师信息中有职称这个字段属性 这个字段就是重复增加的 为了减少数据冗余 可以单独将城市拿出来做 一个表 5 25 2 根据数据信息构建表结构根据数据信息构建表结构 对于如何提取数据表字段 要遵守 3 个原则 1 每个字段都是不可再分的最小数据单位 2 非主键字段必须完全依赖于主键 3 如果两个表存在关联 必须有字段作为外键进行连接 表 5 1 Student 学生 表 字段名数据类型备注 stuIDvarchar 20 not null学号 stuPwdvarchar 20 not null密码 stuNamevarchar 10 not null姓名 stuDepartint系院号 stuGradeint年级 stuClassint班级 表 5 2 Teacher 教师 表 字段名数据类型备注 teaIDvarchar 20 not null教师编号 teaPwdvarchar 20 not null教师密码 teaNamevarchar 10 not null教师姓名 teaDepartint系院号 Java 项目实战 哈 尔滨职业技术学院 表 5 3 Cource 课程 表 字段名数据类型备注 courceIDvarchar 20 not null课程编号 tealIDvarchar 20 not null教师编号 courceNamevarchar 100 not null课程名称 courceTimevarchar 20 上课时间 courceAddressvarchar 50 上课地点 courceInfotext课程简介 表 5 4 Elect 选课 表 字段名数据类型备注 electIdint not null选课编号 stuIDvarchar 20 not null学生编号 teaIDvarchar 20 not null教师编号 courceIDvarchar 20 not null 课程编号 scoreint成绩 表 5 5 Users 系统管理员 表 字段名数据类型备注 adminNamevarchar 20 not null管理员用户名 adminPwdvarchar 20 管理员密码 表 5 6 Depart 系院 表 字段名数据类型备注 departedint not null系院号 departNamevarchar 100 系院名称 5 35 3 数据库构建工具数据库构建工具 PowerDesignerPowerDesigner 本项目的数据库采用 SQL Server 它的功能很强大 可以完成所有与 数据表相关的操作 因为其太强大 从而增加了复杂性 操作起来不容易 上手 显示出来也不够直观 为了方便用户构建数据表 Sybase 公司推出 Java 项目实战 哈 尔滨职业技术学院 了 PowerDesigner 工具 5 3 1 使用构建工具使用构建工具 PowerDesigner PowerDesigner 是一种功能强大的数据库设计工具 其优点如下 1 可以图形化地展现数据库的结构 2 可以方便地修改数据库和表结构 3 与数据库之间可以进行反向操作 既可以很方便的生成数据库 也可以将已有数据库的内容通过逆向工程显示在 PowerDesigner 中 综上所述 为了可以直观显示数据库的设计 并很好地体现数据库中 各表之间的关系 采用 PowerDesigner 将使所有操作变得简单 5 3 2 PowerDesigner 的使用的使用 目前市场上通用的版本是 PowerDesigner 9 5 最新版本是 PowerDesigner 12 为了快速地掌握其应用 本项目所有的数据库设计都 以比较容易上手的 PowerDesigner 9 5 为例 PowerDesigner 有 4 种模型文件 1 概念数据模型 CDM 仅仅表示数据库的逻辑结构 与用什么 软件没有关系 一般不用来实现的数据抽象表 2 物理数据模型 PDM 具体表示表的结构和关系 3 面向对象数据模型 OOM 用来设计类的一种模型 由于功能 有限 并不通用 4 业务程序模型 BPM 对任务的流程进行描述的模型 也不通 用 这 4 种模型中 物理数据模型是目前数据库设计领域比较常用的一种 模型 PowerDesigner 的安装比较简单 不再介绍 下面学习使用 PowerDesigner 创建一个物理数据模型 Java 项目实战 哈 尔滨职业技术学院 1 打开 PowerDesigner 其工作界面如图 5 1 所示 主要包括工作空 间 数据库展示 输出空间和模型工具栏 4 个区域 图 5 1 PowerDesigner 的工作界面 2 单击 文件 数据模型 菜单命令 则弹出一个对话框 这里选择 Physical Data Model 即物理数据模型 单击 确定 按钮 此时出现数据 库的选择界面 因为物理数据模型的设计与数据库类型是密不可分的 所 以此处一定不能忽略 本例选择 SQL Server 2000 如图 5 2 所示 图 5 2 选择数据库 4 单击 确定 按钮 出现一个空的 PowerDesigner 工作界面 5 在工作界面左侧的工作空间中会多出一行内容 默认名为 PhysicalDataModel 1 双击它将出现一个名为 PhysicalDiagram 1 的模型表 Java 项目实战 哈 尔滨职业技术学院 然后双击 PhysicalDiagram 1 6 返回工作界面 会发现右侧数据库展示区域成为空白 此时对于 数据库的构建才真正开始 数据库包括很多关键元素 如触发器 存储过 程 表 视图等 创建元素的模型工具栏如图 5 3 所示 这里存放了数据 库的全部关键元素 将鼠标指针移动到工具栏中某一元素处 就会显示元 素名称 图 5 3 模型工具栏 7 单击 表 元素 鼠标指针的形状发生了变化 然后在右侧空白 区域单击一下 一个没有任何字段的表就建立了 如图 5 4 所示 表的图 形分为两部分 上面是表名称 下面是表字段 图 5 4 表 8 双击 表 图形 出现表的属性设置窗口 如图 5 5 所示 这里 包含了所有的表属性 列 索引 主键等 添加列和添加索引的操作比较 简单 根据相关提示进行相应的设置即可 Java 项目实战 哈 尔滨职业技术学院 图 5 5 表属性 5 45 4 用用 PowerDesignerPowerDesigner 构建设计好的数据表构建设计好的数据表 了解了每个表的结构后 在 PowerDesigner 中就可以轻松地以图形样式 展现出来 如图所示 箭头表示表与表之间的关联 箭头中间的文字表示 表与表相互依赖的关键字段 后面标志有或的字段 表示此字 段是主键或者外键 Java 项目实战 哈 尔滨职业技术学院 图 5 6 所有表设计 为了提高数据库的查询速度 每个表又会建立索引 PowerDesigner 默 认设置为每个表必须有一个索引 因此 当构建完整个表结构后 还要给每个表添加一个索引 添加索 引的原则是唯一性 本例的索引都是加在每个表的主键上 索引名与主键 名相同 注意 添加索引时注意将索引的聚集属性 Cluster 去掉 否则生成数 据库时会与表中主键冲突 5 55 5 生成数据库生成数据库 设计好软件所需要的全部数据表后 如何将设计好的这些图形元素转 化成 SQL Server 中的数据库呢 前面提到过 PowerDesigner 的一个优点 就是对数据库可逆 1 打开 PowerDesigner 出现工作界面 2 单击 数据库 生成数据库 菜单命令 弹出对话框 这里可以看 到所有与生成数据库有关的选择 比如生成文件目的地 是否生成视图 是否生成主键索引等 3 修改 SQl 脚本的保存地址 单击 确定 按钮 如果不提示错误 在所选的目的地就能发现一个 crebas sql 脚本文件 所生成的脚本文件中 并没有关于数据库的信息 因为所创建的仅仅是数据库中表的所有信息 下面就要创建一个数据库 4 打开 SQL Server 出现其控制台窗口 这里主要包含对象资源管 理器和摘要 2 个区域 Java 项目实战 哈 尔滨职业技术学院 5 在对象资源管理器中 右键单击 数据库 项目 在弹出的菜单 中选择 新建数据库 就出现了新建数据库的窗口 6 在 数据库名称 文本框内 填写本项目数据库的名称 StudentManager 单击 确定 按钮 就生成了程序所需的数据库 并返 回到数据库界面 7 单击 常规工具栏 新建查询 按钮 系统自动创建一个名为 SQLQuery1 sql 的文本窗口 并显示在摘要区内 8 打开第 3 步生成的脚本文件 按 Ctrl A 组合键 选择文件里的所 有内容 复制到打开的查询文件中 9

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论