作业十五

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

程序的测试需要通过输入特定数据等方式,检查程序是否和预期相同,因为测试不可能穷举,导致了不穷举的测试不可能验证程序是完全正确的,只能验证程序在测试时没有发生错误,尽管如此,测试依然是一种高效的检查程序的方法,通过输入数据或复现现场,直观的发现代码的问题,进而在代码中找到问题的来源并修正。

程序的正确性论证是在用户提出需求后,进行规格撰写后,论证程序是否符合规格的过程。因为规格往往是布尔型或自然语言,对程序员来说并不如代码和测试数据直观,且工作量巨大。但相应的,好处是对代码整体进行了具体的剖析,在规格符合需求的前提下,能够发现程序与规格间的逻辑上的不符。

二者相比较而言,测试是一种较为简单,较为直接与直观的方法。通过编写测试数据就可以对于程序进行黑盒测试,不需要花大量时间在理解程序本身上。相比之下正确性论证就需要测试者对于程序本身就很细致的了解,对于要求功能有很细致的了解,每一部分的测试都会显得十分麻烦,尤其是在面对一些逻辑较为复杂的代码,正确性论证的工作量呈指数型增长。

OCL语言和JSF规格的对比

OCL语言全拼为objective constraint language,中文叫做对象约束语言,是用来约束定义的,形式化无二义的语言。OCL语言是一种声明式语言,用来描述应用于UML模型的规则,现在是UML标准的一部分。OCL语言和JSF都是声明式语言,但OCL一般与UML图相关,语法更规范。

第十四次作业

UML类图

UML顺序图

UML状态图

总结

阐述四个单元模块知识点之间的关系

本学期所学内容大概可分为以下四个单元。

一、什么叫做面向对象编程,面向对象和面向过程的区别在哪里。主要是第一次至第四次作业。

二、多线程编程,多线程编程的运行特点及调试方法。主要是第五次至第九次作业。

三、规格设计,如何在宏观上对于程序进行设计与调试,为以后大规模的软件开发打基础。主要是第十次至第十三次作业。

四、正确性论证,从科学理论的角度去评价一个程序的好坏,改变之前黑盒测试的逻辑习惯。主要是第十四次作业。

四个单元深入浅出,从全面讲解java知识,深入多线程设计,到较为轻松的测试和jsf论述,我们体验了从语言学习、构建工程到单元测试的完整过程。

梳理自己所设计实现的程序,分析自己在设计、测试和质量上的进步

应该说OO这门课给我带来了很大的提升。一是面向对象的编程,二是多线程的相关内容,三是工程化开发的相关知识。在阅读博客,进行互评,与室友同学的交流过程中,我学到了很多东西,简单的如常量的定义(其实很想叫他宏定义,因为主要作用其实类似于宏定义),大到编程风格,编程结构,可以说,没有与同学们之间的大量交流,我是难以获得这些提高的。在面向对象课程之前,虽然我也编写过一些小型的程序,基本没有接触过测试方面的内容,测试时也更多地根据自己想当然的方式来测试,没有一个规范的,高效的方式,在现在看来,以前自己的测试也略显笨拙。

阐述自己对工程化开发的理解

软件开发无疑需要大量的团队合作,工程化代码就尤为重要。代码规范、JSF规范,都是方便工程化开发的实用工具。工程化之所以出现,也是因为计算机行业从量变到质变的一个过程,一个人编写代码,只需要自己能够编写时读懂,甚至不需要考虑维护。几个人开发的程序,需要有一定的规范,方便他人阅读,对接。几十上百人的工程,需要的则是一个高效的开发规范,不仅需要考虑到当前的开发成本,甚至需要考虑到多年后,其他人阅读并维护代码的代价。个人代码的可阅读性,鲁棒性,与整个工程息息相关,一个人的不留意可能会带来整个团队很大的困扰。工程化开发正是适合当前的大规模计算机开发的一个有效手段。

对课程的任何期望或建议

首先不能否认,OO这门课有一定的不足,经过一个学期的学习,大家也能体验到不少。但总的来说OO这门课,是利大于弊的,对我们个人能力的提升非常巨大,所以个人还是认为可以保留当前OO的主要形式,但也不可否认需要一些改进,比如受到很多人吐槽的指导书经常修改,助教的解答甚至互相矛盾等等,这些也需要助教团队和老师们多总结以前的同学们的常见问题,以减少不必要的工作量

同时,对于不少同学恶意的查找bug,乱报bug的行为,个人认为可以采用同学们曾经提到过的,每次测试后,由被测者给测试者打一个印象分,对于乱找bug的同学报以相对较低的分数,除了段位匹配外,也增加印象分的匹配,从而可以一定程度上限制一些同学乱报bug的风气。

第十五次oo作业的更多相关文章

  1. 第十四,十五周PTA作业

    1.第十四周part1 7-3 #include<stdio.h> int main() { int n; scanf("%d",&n); int a[n]; ...

  2. 第十二次oo作业

    作业十二 规格化设计简介 规格化设计的发展历史 1950年代,第一次分离,主程序与子程序的分离结构是树状模型,子程序可先于主程序编写.通过使用库函数来简化编程,实现最初的代码重用.产生基本的软件开发过 ...

  3. 团队作业一 庆祝"十五万的总冠军"成立

    很荣幸能够撰写我们团队的第一篇博客. 我们这些同学能组成一个新的团队真的很高兴,团队中的每一个人都有自己的优点的长处.希望在工作中我们能竭尽 所能,充分发挥我们的本事,让我们大家各自发挥自己的才能.. ...

  4. 第十五周博客作业 <西北师范大学| 周安伟>

    第十五周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10946673 ...

  5. 第十五周java实验作业

    实验十五  GUI编程练习与应用程序部署 实验时间 2018-12-6 1.实验目的与要求 (1) 掌握Java应用程序的打包操作: Java程序的打包,程序编译完成后,程序员将.class文件压缩打 ...

  6. oo作业总结(四)

    测试与正确性论证 测试是通过构造一系列测试数据,通过对比程序的实际运行结果和预期输出结果来判断程序是否有bug的一种手段.同时,在测试的时候是默认看不到程序的具体实现的,即进行黑盒测试,例如每次OO作 ...

  7. PS:改装店收的是友情价,包安装十五个毛主席。

    糟糠之妻下堂,娇俏公主上位--更换宝马三系座椅作业 - 切诺基 Jeep家族 越野e族论坛 越野/SUV/旅行/赛事/改装/互动中心         PS:改装店收的是友情价,包安装十五个毛主席.

  8. 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记

    第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能 ...

  9. spring boot / cloud (十五) 分布式调度中心进阶

    spring boot / cloud (十五) 分布式调度中心进阶 在<spring boot / cloud (十) 使用quartz搭建调度中心>这篇文章中介绍了如何在spring ...

随机推荐

  1. [20181116]18c DML 日志优化.txt

    [20181116]18c DML 日志优化.txt 1.环境:xxxxxxxx> select banner_full from v$version;BANNER_FULL---------- ...

  2. java开发基础知识学习

    java环境配置 classpath: .当前目录 path: java 命令所在目录 jdk安装目录 jdk/bin jre安装目录 jre/bin 安装JDK后配置环境变量如下: 安装过程用到了j ...

  3. Mysql内置优化工具show profiles

    一.概述: Mysql的explain工具目前还没有Oracle的explain plan工具那么强大,但是结合show profiles工具可以实现相似的效果.show profiles语句用于在当 ...

  4. scrapy中pipeline的一点综合知识

    初次学习scrapy ,觉得spider代码才是最重要的,越往后学,发现pipeline中的代码也很有趣, 今天顺便把pipeline中三种储存方法写下来,算是对自己学习的一点鼓励吧,也可以为后来者的 ...

  5. 【Ubuntu16.04.4】常用配置

    1.为root用户设置密码 sudo passwd root 2.设置用户登陆界面 sudo gedit  /usr/share/lightdm/lightdm.conf.d/50-unity-gre ...

  6. LeetCode算法题-Add Strings(Java实现)

    这是悦乐书的第223次更新,第236篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第90题(顺位题号是415).给定两个非负整数num1和num2表示为字符串,返回num ...

  7. Linux 小知识翻译 - 「SCP和SFTP」

    这次想说说「SCP和SFTP」. 不管SCP还是SFTP,都是SSH的功能之一.都是使用SSH协议来传输文件的. 不用说文件内容,就是登录时的用户信息都是经过SSH加密后才传输的,所以说SCP和SFT ...

  8. 英语进阶系列-A03-英语升级练习一

    古诗背诵 要求:根据诗句,先翻译成现代文,然后绘制图像. 词汇系列 要求:认真朗读单词,然后通过该单词联想2个词汇,然后给每个单词造句. 例子:class班级,联想到了classroom教室,clas ...

  9. hTML 如何在不同页面上传递参数( 1 )

    (1).一种是重定向跳转,超连<a>就是一种重定向跳转,这样的跳转request对象是传不到下一个页面的,下一个页面得到的request对象是一个新的对象,而不是上一个页面传过来的就得不到 ...

  10. C. Lorenzo Von Matterhorn LCA

    C. Lorenzo Von Matterhorn time limit per test 1 second memory limit per test 256 megabytes input sta ...