一.测试与正确性论证的效果差异

测试和正确性论证分别是从理论和实践两个角度去规范程序的正确性的,我认为其主要的区别在于对于程序透明度的需求上,

测试作为一种实践手段,他的实施的要求是比较低的:在完全了解程序的结构下可以进行针对性的覆盖测试,在对程序一无所知的时候依旧可以进行压力测试和黑盒测试,但同样的,作为实践手段的测试无法从逻辑上完全的自洽,哪怕是覆盖性的测试,在论述其测试覆盖性的时候其实也经过了很多正确性论证的过程。简而言之,测试能为任何程序都提供一定限度的保证,但这个保障几乎不可能是完备的。

正确性论证是从理论原理和逻辑上证明程序的正确性和可行性,他相较于测试而言需要获得程序自身的全部信息,只有从逻辑层面到设计层面都通透的人才能对程序写出一份有效的正确性论证。其二,正确性论证往往也需要被测试所辅助,因为正确性论证本身的论证过程和实际实现过程都是可能出现人为的受迫性失误的。如果说测试是对程序现象的直接客观反映,在进行正确性论证的过程中的主观部分是很难以摒除的。概而论之,完成一份完美的正确性论证需要的是程序设计规程中的所有资源和细节,而且完美本身就是不可能达到的,但一旦完成了一份正确性论证,程序的逻辑正确性就被完备的保障了,无论程序以后再做何调整,这个单元是不会受到影响的。

测试的优点:

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第十五次作业的更多相关文章

  1. 集美大学网络1413第十五次作业成绩(团队十) -- 项目复审与事后分析(Beta版本)

    题目 团队作业10--项目复审与事后分析(Beta版本) 团队作业10成绩 --团队作业10-1 Beta事后诸葛亮  团队/分值 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色 ...

  2. g第十四周,十五周作业

    1.数组中偶数的和 #include <stdio.h> int main(){ ; ]; ;i<=;i++) { scanf("%d ",&a[i]); ...

  3. OO第十二次作业

    规格设计的发展历史 随着计算机软硬件的发展,代码的复杂程度也在不短增加,随着计算机软件规模日渐庞大,结构化程序设计方法开始无法满足用户的需求,面向对象程序设计产生.面向对象程序设计是一场重大的革命,提 ...

  4. python第八十四天---十五周作业

    后台管理页面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. 软工实践 - 第二十五次作业 Beta 冲刺(3/7)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10116979.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  6. 软工实践 - 第十五次作业 Alpha 冲刺 (6/10)

    队名:起床一起肝活队 组长博客:https://www.cnblogs.com/dawnduck/p/10004469.html 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过 ...

  7. Java第十五周作业

    Cola公司的雇员分为以下若干类:(知识点:多态) [必做题]• 4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份.方法:getSalary(int mont ...

  8. C语言——第十四、十五周作业

    题目 题目一:交换最小值和最大值 1.实验代码 #include<stdio.h> int main() { ; int i , n; int a[N]; int x , y; scanf ...

  9. python第三十五天-----作业完成--学校选课系统

    选课系统:角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. 课程包含, ...

随机推荐

  1. 为什么要用docker

    一:更高效的利用系统资源            由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高.无论是应用执行速度.内存损耗或者文件存储速度,都要比传统 ...

  2. NPOI设置单元格背景色

    NPOI设置单元格背景色在网上有好多例子都是设置为NPOI内置的颜色值 但是想用rgb值来设置背景色,即:通过HSSFPalette类获取颜色值时会抛出异常:Could not Find free c ...

  3. MySQL Hardware--CentOS 6查看CPU信息

    查看CPU信息 cpu_model=`cat /proc/cpuinfo |grep "model name"|awk -F ':' '{print $2}' |uniq` cpu ...

  4. 18.24 Ubuntu修改静态IP

    1.查询系统当前的ip地址配置信息,输入ifconfig命令进行查看 2.打开文件设置静态IP sudo vi /etc/network/interfaces 3.设置address ip.gatew ...

  5. visual studio 2017下载地址

    因为Visual studio 2017采用的是下载安装模式,所以下载比较慢,安装不方便.所以,这几天将下载过的visual studio 2017的文件打包成ISO文件并存到了百度网盘.希望对现在需 ...

  6. docker-solr 使用host模式修改默认的8983端口号

    1.使用root账号进入docker-solr docker exec -it 127627ab6247 -u root /bin/bash 2.安装vim apt-get update apt-ge ...

  7. 交互课件用什么软件------承接教育类k12/幼儿html5交互课件/动画外包

    flash交互课件能生动表达教学内容,也深受广大教育工作者的喜爱,但是目前flash课件只能在pc电脑平台上进行展示,随着移动网络的发展,Adobe宣布2020年停止对flash更新和维护,越来越多的 ...

  8. SpringMVC Mybatis Spring

    Spring MVC Mybatis整合过程中 Mapper.java 不需要使用 @componenet, Service 等spring注解 但是在service 中创建mapper对象的时候是需 ...

  9. 多个ROS工作空间常见的问题

    1. 在/home/user_name/.bashrc文件中写入多个工作空间的环境变量,这样会导致环境变量之间相互覆盖.最常见的问题就是找不到工作空间中某个launch文件.节点.rviz插件等. 解 ...

  10. USB协议学习

    URB:USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结构体.