OO第三阶段总结
软件形式化方法历史
- 形式化方法的研究高潮始于20世纪60年代后期,针对当时所谓“软件危机”,人们提出种种解决方法,归纳起来有两类:一是采用工程方法来组织、管理软件的开发过程;二是深入探讨程 序和程序开发过程的规律,建立严密的理论,以其用来指导软件开发实践。前者导致“软件工程”的出现和发展,后者则推动了形式化方法的深入研究。经过30多 年的研究和应用,如今人们在形式化方法这一领域取得了大量、重要的成果,从早期最简单的形式化方法一阶谓词演算方法到现在的应用于不同领域、不同阶段的基于逻辑、状态机、网络、进程代数、代数等众多形式化方法。形式化方法的发展趋势逐渐融入软件开发过程的各个阶段,从需求分析、功能描述(规约)、(体系结构/算法)设计、编程、测试直至维护。
规格BUG分析
| 作业次数 | 规格bug | 名称 | 雷同bug数量 |
|---|---|---|---|
| 9 | 4 | Modifies不完整/Effects逻辑错误/不符合JSF规范/Requires逻辑错误 | 0 |
| 10 | 1 | repOK逻辑错误 | 0 |
| 11 | 0 | \ | 0 |
规格BUG产生原因
- 规格bug各自都有各自的看法,对于规格自己反正也不太理解,所以出现错误也不知道是真的有问题还是这样也行,水平不够,继续提高
不好写法及其改进
public LinkedList<Integer> getDis(int startNode , int endNode){
/**
* @REQUIRES:(\all int startNode; 0<=startNode<=6399);(\all int endNode; 0<=endNode<=6399);
* @MODIFIES:None;
* @EFFECTS:\result == map.Bfs(arrays,endNode);
*
*/
引用了中间变量
public LinkedList<Integer> getDis(int startNode , int endNode){
/**
* @REQUIRES:(\all int startNode; 0<=startNode<=6399);(\all int endNode; 0<=endNode<=6399);
* @MODIFIES:None;
* @EFFECTS:return the shortest distance nodes between startNode and endNode;
*
*/
public synchronized void Set(int startnode, int endnode , int value){
/**
* @REQUIRES:(\all int startnode; 0 <= startnode <= 6399);(\all int endnode; 0 <= endnode <= 6399);(\all int value; 0 <= value <= 6399);
* @MODIFIES:None;
* @THREAD_EFFECTS:lock(this);
* @EFFECTS:set flow of the road between startnode and endnode to value;
*
*/
int roads = startnode*6400 + endnode;
int roads_copy = endnode*6400 + startnode;
roadMap.put(roads,value);
roadMap.put(roads_copy,value);
}
Modifies不完整
public synchronized void Set(int startnode, int endnode , int value){
/**
* @REQUIRES:(\all int startnode; 0 <= startnode <= 6399);(\all int endnode; 0 <= endnode <= 6399);(\all int value; 0 <= value <= 100);
* @MODIFIES:roadMap;
* @THREAD_EFFECTS:\lock(this);
* @EFFECTS:set flow of the road between startnode and endnode to value;
*
*/
int roads = startnode*6400 + endnode;
int roads_copy = endnode*6400 + startnode;
long times = System.currentTimeMillis();
for(int i = 0 ; i < value ; i++){
roadMap.get(roads).add(times);
roadMap.get(roads_copy).add(times);
}
}
public void set(int state , int credit , int PosNode){
/**
* @REQUIRES:(\all int state; 0<=state<=4);(\all int PosNode; 0<=PosNode<=6399);
* @MODIFIES:this.credit;this.posNode;this.state;
* @EFFECTS:this.credit==credit;this.posNode==PosNode;this.state==state+1;
*
*/
this.credit = credit;
this.posNode = PosNode;
this.state = state + 1;
}
逻辑错误
public void set(int state , int credit , int PosNode){
/**
* @REQUIRES:(\all int state; 0<=state<4);(\all int PosNode; 0<=PosNode<=6399);
* @MODIFIES:this.credit;this.posNode;this.state;
* @EFFECTS:this.credit==credit;this.posNode==PosNode;this.state==state+1;
*
*/
this.credit = credit;
this.posNode = PosNode;
this.state = state + 1;
}
功能bug与规格bug在方法上的聚集关系
- 个人感觉功能bug与规格bug可能并没有太大关系,测试者找bug之时,规格bug大部分不是因为功能bug导致的,而是后写规格容易遗漏规格的要点等内容,或者是写好规格之后修改了相应代码,总之感觉写规格更多考虑是怎么才不会被扣,感觉违背了教学初衷
基本思路与体会
- 基本都是先写好全部方法然后再动手开始写规格,写之前自己也确实是按照一定思路进行写代码的,但是没有按照规格的方式写下来。水平不够,仍需继续努力
OO第三阶段总结的更多相关文章
- OO第三阶段纪实
$0 写在前面 万里长征已过大半,即将迎来胜利的曙光.一路走来,经历过种种艰难,体会颇深.希望能记录下这篇博文,来总结这一个月来的收获与感悟. $1 规格化设计的发展历史 上世纪50年代,软件伴随着第 ...
- OO第三阶段作业总结
调研: 最早的程序设计是直接采用机器语言来编写的,或者使用二进制码来表示机器能够识别和执行的指令和数据.机器语言的优点在于速度快,缺点在于写起来实在是太困难了,编程效率低,可读性差,并且 ...
- 2021S软件工程——结对项目第三阶段
2021S软件工程--结对项目第三阶段 2021春季软件工程(罗杰 任健) 项目地址 1020 1169 1 实践反思 1.1 问题分析 两人习惯不一致 没有具体制定时间节点 写完代码才开始" ...
- OO前三次作业思考(第一次OO——Blog)
OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开 ...
- Bete冲刺第三阶段
Bete冲刺第三阶段 今日工作: web: 检索了各类资料,今日暂时顺利解决了hibernate懒加载异常的问题,采用的凡是也比较简单就是添加了一个OpenSessionInViewFilter的过滤 ...
- [课程设计]Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...
- Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划)
Scrum 3.1 多鱼点餐系统开发进度(第三阶段项目构思与任务规划) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到 ...
- 分布式事务 & 两阶段提交 & 三阶段提交
可以参考这篇文章: http://blog.csdn.net/whycold/article/details/47702133 两阶段提交保证了分布式事务的原子性,这些子事务要么都做,要么都不做. 而 ...
- 第一阶段,第二阶段,第三阶段团队github更新项目地址
第一阶段:https://github.com/yuhancheng/stage-1--last-sprint 第二阶段:https://github.com/yuhancheng/stage-2-- ...
随机推荐
- BZOJ2144跳跳棋——LCA+二分
题目描述 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子.我们用跳跳棋来做一个简单的 游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他们的位置移动 ...
- Codeforces976D Degree Set 【构造】
题目大意:构造一个点数为dn+1的无向图,无向图中点的度数的集合等于给出的集合d. 题目分析: 当n=0的时候,一个点即可. 当n=1的时候,答案是一个包含d1+1个点的完全图. 否则将d2~dn-1 ...
- 自学Linux Shell12.2-test命令
点击返回 自学Linux命令行与Shell脚本之路 12.2-test命令 if-then语句不能测试命令退出状态码之外的条件,test命令提供了在if-then语句中测试不同条件的途径. 如果tes ...
- 自学Linux Shell13.3-获得用户输入(read命令)
Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个字母)主要getopt.getopts命令 直接从键 ...
- 自学Zabbix4.1 zabbix监控web服务器访问性能
自学Zabbix4.1 zabbix监控web服务器访问性能 使用Zabbix实现对web性能的监控,通过它可以了解web站点的可用性以及性能.最终将各项指标绘制到图形中,这样我们可以了解到一个站点的 ...
- 自学Zabbix7.1 IT services
自学Zabbix7.1 IT services 1. 概念IT Services 服务器或者某项服务.业务的可用率,不懂技术的上级领导会过问最近服务器可用率如何.所有api的状况怎么样?通常一些技术人 ...
- 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表.Hosts_grou ...
- 架构师成长之路7.1 CDN理论
点击返回架构师成长之路 架构师成长之路7.1 CDN理论 CDN,Content Distribute Network,内容分发网络:CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数 ...
- 【bzoj1565】 NOI2009—植物大战僵尸
http://www.lydsy.com/JudgeOnline/problem.php?id=1565 (题目链接) 题意 给出$n*m$的棋盘,僵尸攻击每个格子可以获得$v$的分数,每个格子又会保 ...
- Azure vm 扩展脚本自动部署Elasticsearch集群
一.完整过程比较长,我仅给出Azure vm extension script 一键部署Elasticsearch集群的安装脚本,有需要的同学,可以邮件我,我给你完整的ARM Template 如果你 ...