前文

学校的软件工程考试,基本都是画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分

  1. 要把普通用户和管理员合起来,在一张图上画。
  2. 用户的普通的逻辑,新闻是保存入库的。管理员从入库的新闻开始入手,然后做两个判断,一个是写的评论是否合法的,一个是审核评论是否通过的。

顺序图

时序图就有点复杂了,这里给一个链接,是教你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画图期末考试(新闻发布系统)相关推荐

  1. 【毕业设计】【期末作业】新闻发布系统(php+mysql)

    分享一个新闻发布系统网站,后台主要是采用php的thinkphp框架制做的,数据库采用mysql进行处理 这个系统主要分为用户模块和后台管理模块,具体功能有 用户模块:注册,登陆,查看个人信息,修改个 ...

  2. 14.4 设计新闻发布系统

    14.4  设计新闻发布系统 上面对环境配置完毕.在开始编码之前,先来设计新闻发布系统,包括设计页面.设计业务逻辑和设计数据库. 14.4.1  设计页面 为了示例方便,这里的页面都没有使用图片. 从 ...

  3. javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统

    javaweb JSP JAVA 新闻发布系统源码(新闻管理系统)jsp新闻发布系统 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房,屋租赁,教务管理 ...

  4. 【计算机毕业设计】新闻发布系统

    一.系统截图(需要演示视频可以私聊) 摘  要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们 ...

  5. Jsp+Sevlet新闻发布系统

    新版本已经发布, 点击查看2.0版本   . 一开始叫我写这个新闻发布系统的时候其实我是拒绝的,因为我有事,我想去写我的考试系统,但是他们说这个有学分,写完之后毕业变得很简单.很轻松.duang-的一 ...

  6. 新闻发布系统——用例图知识,温故知新

    引言 牛腩新闻发布系统看起来很有feel,一条线的感觉,毕竟,这是一个系统实现的教程,包含了各种细节,虽然只是看了10集左右,但是深深的被牛腩老师的讲解思路带进去了,尤其是一些以前学习的过程中忽略的细 ...

  7. 【牛腩新闻发布系统】开发前的准备01

    前言: 牛腩新闻发布系统已经完成了很久了,在完成的过程中,一步步按照视频的步骤在走,中间探索了一下注释部分是怎么出来的.整个学习过程紧凑而且有序,中间也拖沓了两周有开始接着完成,接下来是整个过程中一些 ...

  8. 新闻更新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 ...

  9. 牛腩新闻发布系统——后台前台整合技术

    在牛腩新闻发布系统中用到了一些技术我就来总结下 一.鼠标超链接设置 一开始就用到了鼠标超链接的设置.尾部样式的设置,这个东西每个网站都要用到非常长用所以可以写下来积累积累. 举个例子 如图:鼠标没有移 ...

  10. 【NodeJS 学习笔记04】新闻发布系统

    前言 昨天,我们跟着这位大哥的博客(https://github.com/nswbmw/N-blog/wiki/_pages)进行了nodeJS初步的学习,最后也能将数据插入数据库了 但是一味的跟着别 ...

最新文章

  1. 转:Ubuntu中安装和配置 Java JDK,并卸载自带OpenJDK(以Ubuntu 14.04为例)
  2. 二分图的最大匹配—匈牙利算法
  3. 【sprinb-boot】改造成 spring-cloud 项目
  4. python内置函数 pdf_关于Python巧妙而强大的内置函数
  5. Java-排序算法-冒泡排序
  6. VNC客户端连接MacOS时一闪而过的解决办法
  7. python 中json和字符串互相转换
  8. 如何优雅地本地化构建Mybatis源码
  9. 关于HTML和CSS
  10. ie下解决PNG图片不透明问题
  11. 管理之道(七) - 不可奖励员工错误的行为
  12. Arcgis3_地图符号制作与地图数据符号化
  13. 信号与系统实验六 傅里叶分析方法的应用
  14. Honeyview 漫画阅读器 v5.30.zip 下载
  15. python扩展模块开发
  16. win7装sql2000找不到服务器,Win7怎么正确安装使用sql2000教程
  17. 塔防游戏路点---编辑器脚本设计
  18. MSP430-流水灯和key
  19. 对 算术基本定理 的研究
  20. 11-02 生产环境部署 部署微电影网站

热门文章

  1. python写界面c这算法_OpenCV算法精解:基于Python与C.pdf
  2. c语言十七算法,算法精解十七(C语言版)
  3. centos 添加windows字体库
  4. 深入理解jvm虚拟机(面试复习)
  5. 【UG NX MCD 机电一体化概念设计】UG NX MCD+PLCSIM Advanced联合仿真实例(一)基本配置
  6. python实现图片拼接长图_用Python实现长截图拼接
  7. python 实时取色器3.0(升级版)【内附源码】
  8. ug12.0安装教程(超级详细安装步骤)
  9. 三星或将80%手机生产转至越南
  10. 银行转账java代码事务实现_Spring事务银行转账示例