一、团队项目系统设计改进:
1.分析项目系统设计说明书初稿的不足,特别是软件系统结构模型建模不完善内容。
在软件系统结构的建模中,我们团队主要针对数据库的模型E-R图部分进行了完善以及在类图的逻辑实现进行了详细的说明,并将改进后《软件系统概要说明书》发布在团队Github仓库中。
2. 团队项目Github仓库中更新《软件系统设计说明书》
地址:https://github.com/RNTF6/web
二、团队项目系统详细设计:
1.在OOD的软件项目详细设计阶段,开发团队将进一步细化分析系统设计模型,精化类的属性和操作,详细定义类中服务的参数和具体实现逻辑,依据软件开发环境调整类的层次关系和关联关系,定义软件数据库表结构等等。请采用适当的建模方法完成团队项目的系统详细设计。
接口定义
注册
URL:/RegisterSave.do
METHOD:POST
BODY:email、username、password
登录
URL:/login.do
METHOD:POST
BODY:email、password
重置密码
URL:/reset_password.do
METHOD:POST
BODY: password、passwordNew
参会人员信息录入
URL:/user/save.do
METHOD:POST
BODY: name、gender、company、post、phone、workTag、placeTag、joinTag、remark
参会人员提交论文/竞赛作品
URL:/ReviewArtArticle /save.do
METHOD:POST
BODY: title、keyword、type、file
专家审稿
URL:/ReviewArtExpertArticle/save.do
METHOD:POST
BODY:artId、expertId、checkResult、checkScore、checkStatus
会议内容管理
URL:/CmsChannel/save.do
METHOD:POST
BODY:name、desc、type、path、content
类与类之间的依赖关系
1、稿件表 用户表 多对一
实体类之间的关系如图:
2、稿件审核表 专家表 多对一
实体类之间的关系如图:
Service层:
根据需求分析及概要设计,将Service层定义为业务逻辑处理层,同时采用面向接口的编程思想,将业务逻辑功能的实现与定义分隔开,使得系统的耦合度大大降低的同时也使得系统的灵活性和可扩展性大幅度提高。
Dao层:
根据需求分析及概要设计,将Dao层定义为数据访问层,同时采用面向接口的编程思想,将数据访问功能的实现与定义分隔开,使得系统的耦合度大大降低的同时也使得系统的灵活性和可扩展性大幅度提高。
ER图:
(1)会议管理系统人数据库实体主要分为系统管理员、参会人员以及审稿专家、系统功能由系统管理员统一管理。系统管理员实体、参会人员审稿专家实体的总体E-R图,系统管理员与参会人员的管理是一对多的关系,一个系统管理员可以管理多个参会人员信息,审稿专家与参会人员是多对多的关系,具体如下图所示
(2)系统管理员实体与参会人员实体是管理的关系,系统管理员的属性信息有姓名、性别、电话号码、密码以及授权时间等;参会人员的属性信息有姓名、性别、年龄、电话号码以及密码等信息。系统管理员与参会人员E-R图,如下图所示
(3)系统管理员将稿件分给审稿专家,系统管理员实体具有的属性信息有姓名、性别、电话号码、授权时间等;审稿专家具有的属性信息有姓名、性别、年龄、稿件数量以及稿件内容等。系统管理员与审稿专家E-R图,如下图所示:
(4)系统管理员,参会人员与审稿专家E-R图
三、《软件系统详细设计说明书》的撰写
团队项目Github仓库《软件系统详细设计说明书》链接:https://github.com/RNTF6/web
四、陈述本次实验实施过程,描述团队成员的具体分工、占整个实验任务的工作量比例及完成各自任务的实际时间,总结团队项目详细设计心得,总结中要体现每个成员的工作内容。
1.本次实验实施过程:
本次实验我们团队首先对第五次团队作业中《系统概要设计说明书》中不完善的地方进行了讨论,结合用户调研的结果对软件系统结构模型建模不完善内容进行了补充,并在团队项目Github仓库中更新《系统概要设计说明书》。然后在面向对象设计方法的理论知识的基础上进一步细化分析系统设计模型,完善了系统UML图并精化类的属性和操作,详细定义类中服务的参数和具体实现逻辑,依据软件开发环境调整类的层次关系和关联关系,定义软件数据库表结构等,最后完成《软件系统详细设计说明书》的撰写,并上传到团队github仓库并统计团队成员完成任务的实际时间、总结团队项目设计心得,完成博文的撰写。
2.描述团队成员的具体分工、占整个实验任务的工作量比例及完成各自任务的实际时间
人员 | 具体分工 | 分工占试验任务工作量比例 | 任务实际时间 |
彭辉 | 任务一、整理发表博客、整理《软件系统详细设计说明书》内容并发布到团队github仓库 | 15% | 4h |
冯晓 | 任务二(并更改迭代一下之前的UML用例图中的箭 头使用问题并给出类图分析等) | 20% | 6h |
马思远 | 任务三《软件系统详细设计说明书》ch2系统结构和“会议网站前台和后台”程序模块 | 15% | 4h |
吴琼 | 吴琼:任务三《软件系统详细设计说明书》ch3“审稿系统后台”和“审稿管理”模块 | 15% | 4h |
郝延婷 | 任务三《软件系统详细设计说明书》ch3“系统管理“和”会议管理”模块 | 15% | 4h |
王爽 | 任务三《软件系统详细设计说明书》ch1概述和任务四 | 20% | 5h |
3.团队项目设计心得
本次详细设计的过程中我们通过对之前任务中的不足不断进行迭代完善,将最终确定的模块进行划分,各个团队成员分工协作,又相互统一协调,将程序的各个模块逐一分析,给出具体的类图以及框架的设计,并在任务实施的过程中及时交流沟通,在任务认识到自己的不足并进行改进,有的同学将详细设计报告中程序模块进行详细的设计,还有的同学整理总结完成《系统详细设计说明书》,通过各个成员的相互配合协作,最后圆满完成本次改进实验 。
五、问题回答
(1)何谓软件体系结构、软件设计模式?
软件体系结构:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。体系结构的定义在变化,但其意图是清晰的。体系结构设计是一系列决策和基本原理的集合,这些决策的目标在于开发高效的软件体系结构。在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。
软件设计模式:为软件系统的子系统、构件或者构件之间的关系提供一个精炼之后的解决方
案,描述了在特定环境下,用于解决通用软件设计问题的构件以及这些构件相互通信时的各种结构。有代表性的设计模式是Erich Gamma及其同事提出的23种设计模式。在这里对几种常用的软件设计模式给出简短的总结:
1.单例模式:确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。
2.工厂模式:开闭原则:必须修改工厂类的源代码,所以不支持开闭原则。
3.生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
4.适配器模式:类适配器模式:继承关系;对象适配器模式:调用。
5.组合模式:将对象组合成树形结构,以表示“整体-部分”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
6.外观模式:用来隐藏一个软件系统的缩影内部细节,只提供给客户类一个外观类,也叫做接口类。
7.桥接模式:将抽象部分与它的实现部分分离,使它们可以独立地变化。
8.迭代器模式:能够提供一种方法按照顺序访问一个聚合对象中的所有元素,而又不需要暴露该对象的内部表示。
9.访问者模式:指作用于一个对象结构体上的元素的操作。访问者可以使用户在不改变该结构体中的类的基础上定义一个新的操作。
10.命令模式:解除调用者与接收者类之间的耦合。
11.中介者模式:将所有对象之间的交互细节抽象到一个独立的类中,这个类叫做中介者类。
12.策略模式:定义了一系列的算法,将每一个算法封装起来,并且使它们之间可以相互替换。策略模式让算法的变化不会影响到使用算法的客户。
13.状态模式:允许一个对象在其内部状态改变时改变它的行为。这个对象看起来修改了它的类。
(2)什么是C/S与B/S结构
1.C/S架构:所谓"C/S"是指Client/Server(客户机/服务器)。C/S模式是一种两层结构的系统:第一层是在客户机系统上结合了表示与业务逻辑;第二层是通过网络结合了数据库服务器。 简单的说就是第一层是用户表示层,第二层是数据库层。客户端和服务器直接相连,这两个组成部分都承担着重要的角色。
2.B/S架构:所谓"B/S"是指Browser/Server(浏览器/服务器),即客户端是标准的浏览器(如Internet Explore,Netscape Navigator等),服务器端为标准的WEB服务器协同应用服务器响应浏览器的请求。 B/S模式是一种三层结构的系统。第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQ请求,管理数据库。
(3) 什么是MVC设计模式?
模型-视图-控制器(MVC模式)是一种非常经典的软件架构模式,在UI框架和UI设计思路中扮演着非常重要的角色。从设计模式的角度来看,MVC模式是一种复合模式,它将多个设计模式在一种解决方案中结合起来,用来解决许多设计问题。MVC模式把用户界面交互分拆到不同的三种角色中,使应用程序被分成三个核心部件:Model(模型)、View(视图)、Control(控制器)。它们各自处理自己的任务:
模型:模型持有所有的数据、状态和程序逻辑。模型独立于视图和控制器。
视图:用来呈现模型。视图通常直接从模型中取得它需要显示的状态与数据。对于相同的信息可以有多个不同的显示形式或视图。
控制器:位于视图和模型中间,负责接受用户的输入,将输入进行解析并反馈给模型,通常一个视图具有一个控制器。
MVC模式将它们分离以提高系统的灵活性和复用性,不使用MVC模式,用户界面设计往往将这些对象混在一起。MVC模式实现了模型和视图的分离,有几个方面的好处:
1.一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己。
2.模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
3.提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。
(4)结合项目系统设计体验,简要说明(1)、(2)、(3)的内容与软件系统设计的关系。
软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架的作用在于:由于提取了特定领域软件的共性部分,因此在此领域内新项目的开发过程中代码不需要从头编写,只需要在框架的基础上进行一些开发和调整便可满足要求;对于开发过程而言,这样做会提高软件的质量,降低成本,缩短开发时间,使开发越做越轻松,效益越做越好,形成一种良性循环。框架不是现成可用的应用系统。是一个半成品,需要后来的开发人员进行二次开发,实现具体功能的应用系统。框架不是“平台”,平台概念比较模糊可以是一种操作系统,一种应用服务器,一种数据库软件,一种通讯中间件等地那个,因此平台在应用平台主要指提供特定服务的系统软件,而框架更侧重了设计,开发过程,或者可以说,框架通过调用平台提供的服务而起的作用。设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用
(5)详细设计的常见工具有哪些?
1.PDL(过程设计语言):PDL也可称为伪码或结构化语言,它用于描述模块内部的具体算法,以便开发人员之间比较精确地进行交流。语法是开放式的,其外层语法是确定的,而内层语法则不确定。外层语法描述控制结构,它用类似于一般编程语言控制结构的关键字表示,所以是确定的。内层语法描述具体操作,考虑到不同软件系统的实际操作种类繁多,内层语法因而不确定,它可以按系统的具体情况和不同的设计层次灵活选用,实际上任意英语语句都可用来描述所需的具体操作。用它来描述详细设计,工作量比画图小,又比较容易转换为真正的代码。
2.Jackson方法:Jackson设计方法是一种面向数据结构的软件设计方法,Jackson分析方法是面向数据流的分析方法。
3.程序流程图:程序流程图又称为程序框图,是使用最广泛然而也是用得最混乱的一种描述程序逻辑结构的工具。它用方框表示一个处理步骤,菱形表示一个逻辑条件,箭头表示控制流向。其优点是:结构清晰,易于理解,易于修改。缺点是:只能描述执行过程而不能描述有关的数据。
4.UML图:ML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。
5.E-R图:E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
6.盒图(N-S图):盒图是一种强制使用结构化构造的图示工具,也称为方框图。其具有以下特点:功能域明确、不可能任意转移控制、很容易确定局部和全局数据的作用域、很容易表示嵌套关系及模板的层次关系。
7.PAD图:PAD是一种改进的图形描述方式,可以用来取代程序流程图,比程序流程图更直观,结构更清晰。最大的优点是能够反映和描述自顶向下的历史和过程。PAD提供了5种基本控制结构的图示,并允许递归使用。
8.判定表:判定表(Decision table)是另一种表达逻辑判断的工具。与结构化语言和判断树相比,判断表的优点是能把所有条件组合充分地表达出来;其缺点是判定表的建立过程较烦杂,且表达方式不如前两种简便
9.判定数:判定树指的是在处理活动的详细分析中,用树 形逻辑图对单个功能与活动的一种详细分析方法。用判定树进行功能和活动的判定,也较为简单明了,因而广泛地用于信息的系统分析和企业经营决策过程中。
(6)如何绘制符合规范的流程图?
流程图绘制规范:一致性原则、完整性原则、具体性原则
- 字体、字号、底色及格式要保持一致
- 尽量表达出流程的六大要素
- 操作描述用动宾结构语言要简洁清晰
- 动作环节要用规范的动词表述
- 流程衔接处接口应着重描述
- 各项步骤若有选择或决策结果需检查回馈校正流程是否有遗漏以避免悬而未决状况反馈的流程要形成闭环
- 从开始符开始以结束符结束
- 判断框上下端流入流出一般用“Y”左右端流入流出一般用“N”
- 流程图按从左到右、从上至下排列
- 开始符号在流程图中只能出现一次但结束符号不限
- 相同流程图符号大小需一致
- 处理程序须以单一入口不单一出口特性绘制
- 同一路径符号之指示箭头应只有一个
- 流程图中若有参考到其它已定义流程可使用已定义处理程序符号不必重复绘制