软件工程uml画图期末考试(新闻发布系统)
前文
学校的软件工程考试,基本都是画uml图,不知道其他学校是什么样子。这里就在学习的同时,从考试角度把各种图简单分析下,在网上找了找确实也不太好找各类图的画法,觉得我写的有问题的可以指出来。
题目
某客户要求开发用于新闻发布管理系统,以下是调研记录:
记录1:NPS主要功能:用户选择不同栏目及类别浏览、发布、评论、审核。。。
记录2:注册用户浏览、发布、评论新闻。
记录3:管理员对用户、新闻、栏目(大类别)、类别(某栏目的小分类)等进行管理。
记录4:未注册用户只可浏览新闻。
记录5:用户、新闻和访问记录等信息都存储在数据库系统。
记录6:系统要求采用便于扩展的分层设计(至少客户层、业务层、实体层等三层)、 兼容PC、移动的多端应用。
一、需求工程分析绘制需求图RD(共8分)
根据调研记录整理项目需求,要求: ①识别功能性和非功能性需求,②根据业务规则。③绘制系统需求图。至少3层次,各需求描述正确、含义清晰完整。
分析
这类题有两种画法,一种是从角色来表达也就是图上这种,一种是从功能来表达,这里给个例子自己领悟,考试觉得哪种方便用哪种。
这里要注意上一层的需求到下一层的子需求之间是聚合关系,要用空心的菱形连接
这一题算比较简单的了,基本上看下图基本都能看懂,就不再做过多介绍。
二、数据建模绘制逻辑类图CD(8分)
根据调研记录抽象项目的对象、属性及实体间关系,需求:①识别出业务实体,②识别出必要的属性,及其类型、大小,是否空:缺省值等。③识别出对象之间的联系和权重,④图素符号准确.布局合理。
分析
栏目、 用户、新闻、类别之间的关系要弄清楚,中文英文都可以。
其次是他们的权属和方向性最好标注出来,中文英文都可以。
必要的属性就行,实体识别出来就可以了,不需要写更多的属性。
不需要很多方法,这是不对的,主要是业务的属性,注意是逻辑建模。
三、架构分析与设计层次结构建模(8分)
根据调研记录和需求分析以及业务数据逻辑类图CD.利用分层设计架构设计系统的体系结构,要求:①至少分3层绘制结构模型图,②标往清晰层次:不要多余和错误的功能,综合考虑分层分包。
分析
首先要分层来画。(3分)
其次用uml来表示架构的时候,我们用包来组织。(3分)
其次是关系,这里的关系主要是依赖。(2分)
包内的元素写多写少都没有太大关系,因为这是分层的体系结构。
三、面向对象分析与设计用例建模
根据调研记录整理出系统用例图,要求:①识别出参与者,②识别出用例,③识别出系统边界,对象属性留息存储于数据库中,④绘制用例图,图素正确。要素齐全,井填写用例规约,每个路径步骤擄述要简洁,见下表。1.绘制整个系统用例图UCD
分析
得分点:识别出角色、识别出主要用例、各类关系正确
浏览新闻、登录系统等等这些表述一定要注意动宾结构。后面的包含关系要写出来。
用例规约 UCI(10分)
这里要求写出 删除新闻 的用例规约
分析
每空一分,10分
用例名称 删除新闻
用例编号 NEWS001
用例描述 根据新闻标号选择删除,确认后从数据库删除
参与者 管理员
前置条件 登录系统
基本路径 管理员登录,选择删除新闻操作,选择待删新闻,提交删除,系统确认是否删除,确认后从数据库中删除,数据库减少一条记录
备选路径 确认删除时没选择取消,删除失败
异常路径 1. 如果数据库出现故障,回滚事务结果
2. 如果服务器出现故障,检查系统日志目录并采取相应措施
后置条件 数据库删除一条新闻信息
绘制分析鲁棒图RD
根据调研记录设计开发所需要的系统类图,要求:①识别出类及其必要的属性和操作(重点是非属性的访问与设置器),②识别出类间的正确关系,③属性和操作必须有清晰、明确的声明和签名,④检制鲁櫸園需给出边界、控制、实体绘制模型中.●层的类及其依赖类的类图,需给出接口、抽象类和具体类的符号,⑤关系和符号表达准确,所有元素为英文,出现中文扣分。
这里是添加新闻的鲁棒图。
分析
一般只要元素正确就没问题。
绘制类及其依赖的类图CD
绘制NewsDao及其依赖类图
分析
跟NewsDao相依赖的 News实体类,这里的属性可以写多写少,写一个,其他…也行。
最重要的NewsDao,比如说save(News),注意save的参数是News类型,所以和News之间构成了依赖关系。
NewsDao我们可能会定义个BaseDao抽象类的实现类,这个可以不写,但是NewsDao和News要写。
高阶活动图
评论新闻的高阶活动图。
分析
得分点。
1.抽取出三个以上活动,分区,得4分。
2.有出点和终点,得2分
3.有决策、同步和转移,得3分
4.内同正确,布局合理,1分
- 要把普通用户和管理员合起来,在一张图上画。
- 用户的普通的逻辑,新闻是保存入库的。管理员从入库的新闻开始入手,然后做两个判断,一个是写的评论是否合法的,一个是审核评论是否通过的。
顺序图
时序图就有点复杂了,这里给一个链接,是教你10分钟学会画时序图
https://www.bilibili.com/video/BV12f4y127pp?from=search&seid=6737327818590504170
先给个登录的时序图方便边看边理解。(此图有问题)
总结视频的几个重点:
1.序列图显示了系统中的对象或代码中的类如何交互,可以理解成显示事件的顺序。
2.为每个对象添加生命线,生命线是垂直虚线,从上往下意味着时间正在过去。
3.返回信息用虚线,虚线表示返回消息或从接收对象返回到请求对象的消息。
4.备用帧象征着两个或多个消息序列之间的选择,这些选择通常是互斥的。如上图的成功、失败。
当使用备用帧时,需要使用选择框。
5.当表画完后,可以添加激活框,就是上图竖着的长条,从第一个活动消息连到最后一活动消息。激活框显示对象执行过程的时间和持续时间。
角色是外部对象,不需要激活框,所以上图老师给的图有问题。。。,激活框的持续时间也不对。
这里给出视频中的标准序列图,例子是ATM取款。
七、面向对象分析与设计实现测试(30分)
7.1 java代码编写
(1)根据的NPS使用的单例模式,读下图完成编码。①不考虑命名空间和导包,资源文件在项目类路径下,②注意类间关系,重点是属性和方法Java代码编写(10分),
分析
从图上看Env继承Properties类,依赖于InputStream。
其中有一个私有的属性Instan,类型为Env。
一个公共的方法getInstance,类型为Env。
一个私有方法makeInstance,类型为void。
一个不带参的构造方法Env。
答案
public final class Env extends Properties{private static Env instance;//私有的构造方法,写公共的不给分private Env() {InputStream is = getClass().getResourceAsStream("/db.properties");try {load(is)}catch(Exception e){e.printStackTrace();System.out.println("db.properties isnot exists!");}}public static Env getInstance() {if(instance != null) {return instance;}else {makeInstance();return instance;}}//私有 同步 静态private synchronized static void makeInstance() {//双检查if(instance == null) {instance = new Env();}}
}
总结这道题,基本上框子写出来了,注意些细节就可以拿6分以上了。
类名写好,私有属性写好,这是一个得分点。
私有的构造方法Env,里面的内容记不住就不写,写好方法框架就有分了。
后面两个方法要写出来,都是得分点。
7.2 Java多线程实现事件监听(10分)。
(2)根据NPS用户登录实现见下图,设计单元测试用例并改写为可测程序。
public class LoginAciton extends BaseAction implements Action{protected boolean interceptorServlet(String uname,String upwd) {if(uname=="" || upwd=="") {String strLog = "System.out.println:用户名密码为空 LoginAction拦截了,不必去db服务了\n";System.out.println(strLog);return true;}return false;}public String login(HttpServletRequest request,HttpServletResponse response) throws Exception{String result="";String nps_username = request.getParameter("username");String nps_password = request.getParameter("username");String nps_usertype = request.getParameter("usertype");if(interceptorServlet(String uname,String upwd)) {String message = "用户名或密码为空!";request.setAttribute("loginmessage",message);return result = "loginError";}User voUser = new User();voUser.setNps_username(nps_username);voUser.setNps_password(nps_password);voUser.setNps_usertype(nps_usertype);LoginService loginService = new LoginService();if(loginService.login(voUser)) {request.setAttribute("currentUser",voUser);if(voUser.getNps_usertype().equals("管理员")) {List<User> userList = loginService.findAll();request.setAttribute("userList",userList);result = "loginAdmin";}else if(voUser.getNps_usertype().equals("普通用户")) {NewsService newsService = new NewService();List<News> newsList = newsService.findAll();request.setAttribute("newsList",newsList);result = "loginUser";}}else {String message = "用户名或密码错误,登录失败!";request.setAttribute("loginmessage",message);result = "loginFail";}return result;}
}
得分点
1.每个if else2分,共6分
2.必要说明,3分
3.程序正确,1分
答案
public String login(HttpServletRequest request,HttpServletResponse response) throws Exception{String result=null;String nps_username = request.getParameter("username");String nps_password = request.getParameter("username");String nps_usertype = request.getParameter("usertype");User voUser = new User();voUser.setNps_username(nps_username);voUser.setNps_password(nps_password);voUser.setNps_usertype(nps_usertype);request.setAttribute("currentUser",voUser);//将拦截操作移至服务层LoginService loginService = new LoginService();if(loginService.login(voUser)) {if(voUser.getNps_usertype().equals("管理员")) {//将加载用户信息移至服务层result = "loginAdmin";}else if(voUser.getNps_usertype().equals("普通用户")) {//将加载新闻信息移至服务层result = "loginUser";}}else {String message = "用户名或密码错误,登录失败!";request.setAttribute("loginmessage",message);result = "loginFail";}return result;}
}
(2)采用白盒测试技术的路径覆盖方法为login设计多组测试用例,填在下表(4分)
测试用例编号 | 输入 | 输出 | 结果 |
---|---|---|---|
TC001 | 206004 osgis123! 管理员 | loginAdmin | 管理员页面一致 |
TC002 | 206004 osgis123! 普通用户 | loginUser | 浏览新闻页面一直 |
TC003 | 206004 osgis123!! 管理员 | loginFail | 登陆失败 一致 |
TC004 | “” “” 管理员 | loginError | 异常 一致 |
软件工程uml画图期末考试(新闻发布系统)相关推荐
- 【毕业设计】【期末作业】新闻发布系统(php+mysql)
分享一个新闻发布系统网站,后台主要是采用php的thinkphp框架制做的,数据库采用mysql进行处理 这个系统主要分为用户模块和后台管理模块,具体功能有 用户模块:注册,登陆,查看个人信息,修改个 ...
- 14.4 设计新闻发布系统
14.4 设计新闻发布系统 上面对环境配置完毕.在开始编码之前,先来设计新闻发布系统,包括设计页面.设计业务逻辑和设计数据库. 14.4.1 设计页面 为了示例方便,这里的页面都没有使用图片. 从 ...
- javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统
javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管理 ...
- 【计算机毕业设计】新闻发布系统
一.系统截图(需要演示视频可以私聊) 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们 ...
- Jsp+Sevlet新闻发布系统
新版本已经发布, 点击查看2.0版本 . 一开始叫我写这个新闻发布系统的时候其实我是拒绝的,因为我有事,我想去写我的考试系统,但是他们说这个有学分,写完之后毕业变得很简单.很轻松.duang-的一 ...
- 新闻发布系统——用例图知识,温故知新
引言 牛腩新闻发布系统看起来很有feel,一条线的感觉,毕竟,这是一个系统实现的教程,包含了各种细节,虽然只是看了10集左右,但是深深的被牛腩老师的讲解思路带进去了,尤其是一些以前学习的过程中忽略的细 ...
- 【牛腩新闻发布系统】开发前的准备01
前言: 牛腩新闻发布系统已经完成了很久了,在完成的过程中,一步步按照视频的步骤在走,中间探索了一下注释部分是怎么出来的.整个学习过程紧凑而且有序,中间也拖沓了两周有开始接着完成,接下来是整个过程中一些 ...
- 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...
文件名称: phphtml下载 收藏√ [ 5 4 3 2 1 ] 开发工具: PHP 文件大小: 1076 KB 上传时间: 2016-01-07 下载次数: 0 提 供 者: zfl ...
- 牛腩新闻发布系统——后台前台整合技术
在牛腩新闻发布系统中用到了一些技术我就来总结下 一.鼠标超链接设置 一开始就用到了鼠标超链接的设置.尾部样式的设置,这个东西每个网站都要用到非常长用所以可以写下来积累积累. 举个例子 如图:鼠标没有移 ...
- 【NodeJS 学习笔记04】新闻发布系统
前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...
最新文章
- 转:Ubuntu中安装和配置 Java JDK,并卸载自带OpenJDK(以Ubuntu 14.04为例)
- 二分图的最大匹配—匈牙利算法
- 【sprinb-boot】改造成 spring-cloud 项目
- python内置函数 pdf_关于Python巧妙而强大的内置函数
- Java-排序算法-冒泡排序
- VNC客户端连接MacOS时一闪而过的解决办法
- python 中json和字符串互相转换
- 如何优雅地本地化构建Mybatis源码
- 关于HTML和CSS
- ie下解决PNG图片不透明问题
- 管理之道(七) - 不可奖励员工错误的行为
- Arcgis3_地图符号制作与地图数据符号化
- 信号与系统实验六 傅里叶分析方法的应用
- Honeyview 漫画阅读器 v5.30.zip 下载
- python扩展模块开发
- win7装sql2000找不到服务器,Win7怎么正确安装使用sql2000教程
- 塔防游戏路点---编辑器脚本设计
- MSP430-流水灯和key
- 对 算术基本定理 的研究
- 11-02 生产环境部署 部署微电影网站
热门文章
- python写界面c这算法_OpenCV算法精解:基于Python与C.pdf
- c语言十七算法,算法精解十七(C语言版)
- centos 添加windows字体库
- 深入理解jvm虚拟机(面试复习)
- 【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(一)基本配置
- python实现图片拼接长图_用Python实现长截图拼接
- python 实时取色器3.0(升级版)【内附源码】
- ug12.0安装教程(超级详细安装步骤)
- 三星或将80%手机生产转至越南
- 银行转账java代码事务实现_Spring事务银行转账示例