第三次博客作业JSF
JSF规格化设计发展史以及为什么得到人们重视
查阅了n多资料但是仍然没找到。

就说一些jsf的优势吧。
优势: (1)UI组件
(2)事件驱动模式
(3)用户界面到业务逻辑的直接映射
(4)程序员和网页设计的人员分工
(5)请求处理生命周期的多阶段划分
(6)伴随工具而生存
(7)全面的用户自定义支持
(8)Web开发的官方标准之一
参考链接:JSF的优势及未来发展趋势
被报告的规格bug
| JSF bug | 原因 |
| REQUIRES:1 |
没有判断参数条件 |
| MODIFIES:0 |
无 |
| EFFECTS:3 |
没有使用布尔表达式 不完整 判断“==”写成“=” |
第十次作业中无论方法代码长短(即代码行数无参考价值),都出现了这些bug,长代码仍然难以改正
第十一次作业修正了除了run方法以外的其余短方法,但是任然漏了==号
规格bug产生原因
短方法开始并没有重视,长方法由于代码上百行(例如整个taxi的状态转移算法都实现在了run里面),jsf无从下手,只好写个描述了出租车运行状态转移变化。
jsf参考文档并未理解精髓,总想着使用自然语言水过去,但是测试者不放过。
列举前置后置条件不好的写法
(1)自然语言,虽然开始算对但是用自然语言确实不太好(但是分高啊)
(2)对于多种可以合并的判断条件没有合并,条件过长
(3)表示模糊,泛泛带过
(4)格式不一致
(5)对于带锁多线程额外规格未处理
修改方案:一定要使用布尔表达式,不要再笼统盖过,方法写短,判断条件可合并简化则简化。清楚自己实现的到底是什么功能,仔细写规格。对于带锁多线程加上新规格。
分析
| 方法 | 功能bug | 规格bug |
| main | 3 | 1 |
| scanftxt | 4 | 1 |
| 一些短方法 | 0 | 2 |
个人认为规格bug和功能bug并没有直接的联系,长方法实现功能多,规格就一个,短方法往往功能不出错反而被扣规格。
体会
能认真改的地方就改一改,虽然改了也可能会被扣,但不改更可能。
多次继承的作业一定要仔细修订先前错误,否则越后期越难改。
希望能把代码写的越来越优秀,不被测试者喷格式垃圾(又没办法反驳毕竟他说的没啥不对)。
第三次博客作业JSF的更多相关文章
- [BUAA OO]第三次博客作业
OO第三次博客作业 1. 规格化设计的发展 我认为,规格化设计主要源自于软件设计的两次危机.第一次是由于大量存在的goto语句,让当时被广泛应用的面向过程式的编程语言臃肿不堪,在逻辑性上与工程规模上鱼 ...
- OO第三次博客作业——规格
OO第三次博客作业——规格 一.调研结果: 规格的历史: 引自博文链接:http://blog.sina.com.cn/s/blog_473d5bba010001x9.html 传统科学的特点是发现世 ...
- [2017BUAA软工]第三次博客作业:案例分析
第三次博客作业:案例分析 1. 调研和评测 1.1 BUG及设计缺陷描述 主要测试博客园在手机端上的使用情况. [BUG 01] 不能后退到上一界面(IOS) 重现步骤:打开博客首页中任意博文,点击博 ...
- 北航OO(2020)第三单元博客作业
一.JML理论基础及相关工具链 1.JML理论基础 该部分梳理本单元作业中涉及到的JML知识. 1.1注释结构 JML采用javadoc注释的方式来表示规格,且每行以@开头.通过使用//@annota ...
- 第三周博客作业<西北师范大学|李晓婷>
1.助教博客链接:https://www.cnblogs.com/lxt-/MyComments.html 2.学生作业打分要求: https://www.cnblogs.com/nwnu-dai ...
- 规格化设计-----JSF(第三次博客作业)
从20世纪60年代开始,就存在着许多不同的形式规格说明语言和软件开发方法.在形式规格说明领域一些最主要的发展过程列举如下: 1969-1972 C.A.R Hoare撰写了"计算机编程的公理 ...
- OO第三次博客作业---透过代码看设计
不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇 ...
- C语言第三次博客作业---单层循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数,i记录循环变量 double height; //height放身高 char sex; //sex放性别F为女,M为男 s ...
- C语言第三次博客作业—循环结构
一.PTA实验作业 题目1 1.实验代码 int N,i; //N为用户数 char sex; //sex表示性别 double High; //Hight表示身高 scanf("%d&qu ...
随机推荐
- zabbix 监控机器监听的端口 + 触发器 表达式理解
在zabbix web 页面配置item,监控监听的21端口 配置trigger 参考:http://www.cnblogs.com/saneri/p/6126786.html 5. {www.zab ...
- 20145234黄斐《java程序设计》第十三周代码检查
在IDEA中对P145 MathTool.java 使用JUnit进行单元测试,测试用例不少于三个,要包含正常情况,边界情况. 提交测试代码和运行结果截图,加上学号水印,提交码云代码链接. 码云链接 ...
- RabbitMQ(三):消息持久化策略
原文:RabbitMQ(三):消息持久化策略 一.前言 在正常的服务器运行过程中,时常会面临服务器宕机重启的情况,那么我们的消息此时会如何呢?很不幸的事情就是,我们的消息可能会消失,这肯定不是我们希望 ...
- mfc 函数模板
函数模板的使用 一. 函数模板的使用 使用函数模板可以简化 形参个数相同,而类型不同的函数. template<typename T> //可以用class替换typename int m ...
- 公历转农历的python实现
大杂烩.作为自己的记录,保存. 两个要点: 1.公历转农历用了查表法(第126行) 2.节气用了天文法?(第176行) 运行图 (背景是hao123万年历) 源代码: # lunar.py # 20 ...
- 正则表达式简介及在C++11中的简单使用
正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex.regexp.RE.regexps.regexes.regexen. 正则表达式是一种 ...
- AtCoder ExaWizards 2019 D Modulo Operations
题意 给出一个长度为\(n\)的数列和数字\(X\),对于数列的每一种排列,其权值\(X\)依次对排列中的数取模,求出\(n!\)种情况最后剩下的数的权值和 分析 如果大的数字排在小的数字后面,那么大 ...
- Ansible详解(一)基础安装和配置
ansible 是一款轻量级自动化运维工具,由的 Python 语言开发,结合了多种自动化运维工具的特性,实现了批量系统配置,批量程序部署,批量命令执行等功能; ansible 是基于模块化实现批量操 ...
- 微信小程序列表项滑动显示删除按钮
微信小程序并没有提供列表控件,所以也没有iOS上惯用的列表项左滑删除的功能,SO只能自己干了. 原理很简单,用2个层,上面的层显示正常的内容,下面的层显示一个删除按钮,就是记录手指滑动的距离,动态的来 ...
- 在Telnet中用FTP传输文件
如果用 Telnet 传输文件? 在自己的机子上架设FTP服务器,然后登陆远程机后,就可以登录自己的FTP.利用PUT(上传命令),就可以把远程电脑的文件下载下来. 如果出现连接不上FTP,也 ...