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

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

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

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

测试的优点:

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. servlet_3

    ServletContext 介绍 提供的功能 servlet中获取servletcontext实例 servletcontext接口的方法 package com.fgy; import java. ...

  2. 【备份】如何在 PADS Layout 中选择 Gerber 274X 格式

    如何在 PADS Layout 中选择 Gerber 274X 格式. 起初原因是 JLC 说 274X 和 274D 的差别. 有小伙伴使用了 274D 的格式,结果做出来的 PCB 有问题.

  3. 测试CentOS-7-x86_64-Minimal-1708.iso这种光盘安装效果

    在dvd1光盘安装选择mininal时有292个包 [root@localhost ~]# rpm -qa|wc -l 292 [root@localhost ~]# 测试下使用mininal的iso ...

  4. sharding sphere 分表分库 读写分离

    sharding jdbc: sharding sphere 的 一部分,可以做到 分表分库,读写分离. 和 mycat 不同的 是 sharding jdbc 是 一个 jdbc 驱动 在 驱动这个 ...

  5. Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器

    第一个版本发布内容如下: 开源组件(spring-cloud-alibaba开头): 服务发现(Service Discovery) 配置管理(Configuration Management) 高可 ...

  6. Winform外包团队 项目案例展示

    北京动点飞扬软件开发团队 C# WInform项目案例展示 长年承接WInForm C#项目开发,商业案例欢迎联系我们索取 有相关项目外包定制开发 欢迎联系我们 qq372900288 Tel 139 ...

  7. 生成用于ROM初始化的coe文件---使用matlab

    生成用于ROM初始化的coe文件---使用matlab t=0:2*pi/2^12:2*pi; y=0.5*sin(t)+0.5; r=ceil(y*(2^8-1)); fid = fopen('si ...

  8. 屏蔽F12审查元素,禁止使用右键菜单

    一.屏蔽F12审查元素 <script type="text/javascript"> document.onkeydown = function() { ) { al ...

  9. IntelliJ IDEA取消自动import所有import *

    自动导入新类的时候,往往会把几个import合并为一个*,如何只单独import单个类:

  10. 微信小程序中的组件使用2

    需求    上面两个页面是同一个小程序的不同页面,两个页面中都是用到了label,有相似的地方,但是也有不同之处,这个时候,如果我们想要将这些label做出组件,然后复用,有该怎么做呢? 基础组件 首 ...