OO第十五次作业
一.测试与正确性论证的效果差异
测试和正确性论证分别是从理论和实践两个角度去规范程序的正确性的,我认为其主要的区别在于对于程序透明度的需求上,
测试作为一种实践手段,他的实施的要求是比较低的:在完全了解程序的结构下可以进行针对性的覆盖测试,在对程序一无所知的时候依旧可以进行压力测试和黑盒测试,但同样的,作为实践手段的测试无法从逻辑上完全的自洽,哪怕是覆盖性的测试,在论述其测试覆盖性的时候其实也经过了很多正确性论证的过程。简而言之,测试能为任何程序都提供一定限度的保证,但这个保障几乎不可能是完备的。
正确性论证是从理论原理和逻辑上证明程序的正确性和可行性,他相较于测试而言需要获得程序自身的全部信息,只有从逻辑层面到设计层面都通透的人才能对程序写出一份有效的正确性论证。其二,正确性论证往往也需要被测试所辅助,因为正确性论证本身的论证过程和实际实现过程都是可能出现人为的受迫性失误的。如果说测试是对程序现象的直接客观反映,在进行正确性论证的过程中的主观部分是很难以摒除的。概而论之,完成一份完美的正确性论证需要的是程序设计规程中的所有资源和细节,而且完美本身就是不可能达到的,但一旦完成了一份正确性论证,程序的逻辑正确性就被完备的保障了,无论程序以后再做何调整,这个单元是不会受到影响的。
测试的优点:
1.种类多样,开始测试的必要条件很少
2.针对性强,可以验证程序对某一类型的输入的处理能力
3.需求指向,可以模拟操作的实践情景
缺点:
1.缺乏逻辑和理论上的可靠性
2.难以获得完备的保障
3.针对性和覆盖性依旧需要正确性论证的部分内容进行辅助
正确性论证的优点:
1.一旦正确,便是逻辑上完全可靠的
2.通过逻辑耦合可以确保完备性
3.可以对每个独立的论证单元进行程序间迁移,在条件不变的情况下正确性也不变
缺点:
1.需要对程序整体逻辑结构和设计结构的高度理解
2.论证过程中可能出现非受迫性失误,需要测试辅助
3.实践性差,某个单元的论证错误很可能导致程序所有样例的崩溃
二.OCL与JSF的异同
同:
二者都是形式化,声明,约束性语言,本质都是前置条件向后置条件的一个导向,对过程规格的关心程度有限。同时,二者都使用了数理化的逻辑,但是出于自然语言的转化困境,二者也都创立了一部分数理逻辑语言之外的,便于规范的新语法。
异:
OCL语言有JSF语言所没有的监控条件部分,使得作为一种约束语言的约束真值表达性更为强大,同时,OCL的语法结构相较于JSF更为复杂,这使得他更便于规格的书写,但难于对于规格的验证。
JSF语言比较于OCL语言多了Modifies域,更好的能够让书写者完成变量监控,同时JSF语言对布尔表达式的数理逻辑依赖性更强,这对书写者提升了抽象性的难度,但是在验证正确性和进行迁移的时候更为方便。
三、UML
UML类图
UML系统时序图
UML状态图
学期总结
阐述四个单元模块知识点之间的关系
四个单元是一个整体的学习流程,第一单元让我们熟悉面向对象的概念思想,第二单元完成线程协调,第三单元和第四单元则是测试和正确性论证,从整体的规划来说是先实践后理论,倒置了一个实际工程的实现流程让我们明白完成一个面向对象项目的四要素。
其实如果在默认同学们有一定的JAVA设计基础的话从第一单元就开始渗透一部分的规格思想会更好一些?毕竟补充规格的过程和设计规格的过程差异还是较大的,联系补充和调整可能并没能达到预期的教学目标
自己在设计、测试和质量上的进步
在这个学期的学习过程中,个人抽象问题的能力和面向对象设计类和方法的能力肯定是有所提升的,在最后几次对最初几次作业代码调整的过程中,都能够在保证正确性的前提下对代码进行大幅度优化。
这门课程是我第一次真正的接触单元测试,先前进行的都是黑盒和完全覆盖性测试比较多;Junit的功能不算强大,但是让我们初窥单元测试还是足够了。
着重考虑代码上的鲁棒性是这门课程给我最大的收获,现在在写代码之前,的确会比先前在代码的健壮性上考虑的全面更多。
对工程化开发的理解
一个规格,一个标准,工程化开发,流水化生产。易于分工,便与协作。高效,准确,可迁移。
对课程的任何期望或建议
课程两头松中间紧的情况太严重了,如果可能的话,能否从新平均分摊一下每一周的作业量和作业安排?
这届实施的错误分支树举措给予好评,的确真正有效的限制了乱报bug的情况,但是现在先挂满树再等人申诉坐地还钱的情况依旧是一本万利,希望课程组能够给被申诉的bug一个阈值,如果某一次作业测试者被申诉成功的bug点超过一定数目,要对测试者予以相应的惩罚。
最后,还是规格这里的教学方式问题,现在的课程安排的确很难让大家意识到他的重要性并去自发的好好学习,况且补充规格这件事的确对设计规格起到的帮助作用有限,是否可以从新考虑一下这里的作业和教学方式呢?哪怕是从规格设计起,用3次作业写一个新项目也是可以的啊
OO第十五次作业的更多相关文章
- 集美大学网络1413第十五次作业成绩(团队十) -- 项目复审与事后分析(Beta版本)
题目 团队作业10--项目复审与事后分析(Beta版本) 团队作业10成绩 --团队作业10-1 Beta事后诸葛亮 团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色 ...
- g第十四周,十五周作业
1.数组中偶数的和 #include <stdio.h> int main(){ ; ]; ;i<=;i++) { scanf("%d ",&a[i]); ...
- OO第十二次作业
规格设计的发展历史 随着计算机软硬件的发展,代码的复杂程度也在不短增加,随着计算机软件规模日渐庞大,结构化程序设计方法开始无法满足用户的需求,面向对象程序设计产生.面向对象程序设计是一场重大的革命,提 ...
- python第八十四天---十五周作业
后台管理页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 软工实践 - 第二十五次作业 Beta 冲刺(3/7)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10116979.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...
- 软工实践 - 第十五次作业 Alpha 冲刺 (6/10)
队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10004469.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...
- Java第十五周作业
Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int mont ...
- C语言——第十四、十五周作业
题目 题目一:交换最小值和最大值 1.实验代码 #include<stdio.h> int main() { ; int i , n; int a[N]; int x , y; scanf ...
- python第三十五天-----作业完成--学校选课系统
选课系统:角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含, ...
随机推荐
- java数组的声明、创建和遍历
一.数组的声明.创建 1.一维数组 先是声明 dataType[] arrayRefVar; // 首选的方法 数据类型[] 数组名; dataType arrayRefVar[]; // 效果相同, ...
- git 分支管理记录
测试环境 :虚拟机(VMware Fusion Centos 6.5) 1.安装git环境 [root@localhost ~]# yum -y install git 2.检测git是否安装成功 [ ...
- 8. Security-oriented operating systems (面向安全的操作系统 5个)
这款出色的可启动live CD的Linux发行版来自于Whax和Auditor的合并. 它拥有各种各样的安全和取证工具,并提供丰富的开发环境. 强调用户模块化,所以用户可以轻松地定制以包括个人脚本,附 ...
- httping使用
httping --help: 显示帮助 httping -V: 显示版本 1.httping国内网站 I) httping -g http://www.jd.com -c 5 -t 5 -F -s ...
- React 组件间通信介绍
React 组件间通信方式简介 React 组件间通信主要分为以下四种情况: 父组件向子组件通信 子组件向父组件通信 跨级组件之间通信 非嵌套组件间通信 下面对这四种情况分别进行介绍: 父组件向子 ...
- python,pil库的小应用
<pre>#euraxluo 5.15 #obj_1#跳一跳的外挂 from PIL import Image import subprocess import time import r ...
- 解决thinkPHP3.2.3使用Smarty模板后无法使用系统常量问题
https://blog.csdn.net/u014520745/article/details/52029411 在ThinkPHP/Library/Think/View.class.php 输出模 ...
- 记录一次Struts s2-045重大安全漏洞修复过程
[升级修复] 受影响用户可升级版本至Apache Struts 2.3.32 或 Apache Struts 2..5.10.1以消除漏洞影响. 官方公告:https://cwiki..apache. ...
- layui select 选完其他选项, 手工清空选项 又恢复最初的选项?
启用layui的select 下拉搜索项: lay-search <div class="layui-inline"> <label class="l ...
- Day14全局变量与局部变量
列表的所有方法都可以用,如remove clear 为了避免容易出错,全局变量名用大写,局部变量名用小写 nonlocal指上一级的name