热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OO学期总结

一、测试与正确性论证程序测试(programtesting)是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。软件的正确性尚

一、测试与正确性论证

       程序测试(program testing)是指对一个完成了全部或部分功能、模块的计算机程序在正式使用前的检测,以确保该程序能按预定的方式正确地运行。软件的正确性尚未得到根本的解决,软件测试仍是发现软件错误和缺陷的主要手段。为了发现系统中的错误,应竭力设计能暴露错误的测试用例。测试用例是有测试数据和预期结果构成的。一个好的测试用例是极有可能发现至今为止尚未发现的错误的测试用例。

       程序正确性理论 [1]  (theory of program correctness)程序设计理论的一个重要组成部分.研究如何使用程序设计语言编制程序,以正确实现预定的目标.程序正确性理论提出编制正确程序的两种途径一种称为程序验证,研究如何使用数学推理来严格论证程序是否符合其目标.另一种称为程序综合,研究如何由给定目标出发,逐步构造一个在计算机系统上可运行的程序,而且要求构造过程的每一步都是严格保持正确无误的.在保证正确性的前提下,为提高程序运算效率而实现的程序之间的转换,称为程序变形,也是程序正确性理论的一个重要内容.程序综合和程序变形是自动程序设计的理论基础.

其中正确性论证的抽象程度更高,可靠性更好,覆盖路更高,但是相对成本也会更高,软件测试和正确性论证需要在不同的场景中灵活运用,结合两者的优点,才会发挥更大的作用,收获更好的效果。

二、OCL(Object Constrain Language)

       OCL,是一种指示用户建模系统中的限制方式。它是UML可选的附加内容,可以用来更好的定义对象的行为,并为任何类元指定约束。

       特点:

  1.是一种精确的、无二义性的语言,易于使用和掌握。

  2.是一种规范说明性语言,它是具有没有任何副作用的声明性语言。对OCL表达式的计算将返回一个值,计算不会改变系统的状态。

  3.是一种类型化语言,即OCL中的每个表达式都是具有类型的。

  4.不是一种程序设计语言,,不能用OCL变现程序逻辑和控制流程。

       JSF和OCL具有很多相似点,但是JSF的规范性不够强,并且OCL具有很多类型,而JSF的类型较为单一。

三、 捎带电梯

1. 类图

技术分享图片

2. 时序图

技术分享图片

3. 状态图

技术分享图片

四、学期总结

4.1单元模块

       四个单元模块分别为Java基础、多线程和线程安全设计、抽象与规格、测试与论证。这四个单元模块是循序渐进的,又有所交叉的。首先Java基础是认识面向对象,从对类的划分,再到Java多线程,难度逐渐上升,至少类的划分不能再是问题。在此基础上,提出类对规格和抽象,逐渐上升到代码质量的层次,最后是论证程序的正确性,工程化要求。

4.2 设计、测试、代码质量分析

       最初是完全不会设计的,但一学期的训练,至少懂得了该如何分析与设计,且不说设计的好坏,懂得了程序的设计对于程序实现的重要性,不同的设计在代码实现上难度是不同的,并且在后期测试,论证等方面都能很明显的体现出来,磨刀不费砍柴工,设计很重要。第二,测试是软件工程中十分重要的一个流程了。程序是完成用户的需求,而测试就是检测相关功能是否实现,以及其他边界情况。好的测试,会增加代码的鲁棒性,健壮性,以及可靠性,通过测试,能够更快的对整个程序的功能实现有所了解,为后续的交付提供依据。第三,代码质量,是设计,测试,代码风格的综合体现。想起自己以前的面条式代码,可以说非常惭愧了。首先,在设计上了解了Java的相关设计模式,在测试上,懂得了鲁棒性测试,以及分支树测试,在代码风格上,良好的缩进,合适的方法职责等。总的来说自己这一学期是从无到有的过程,确实是学到了很多东西。

4.3 工程化开发

       一个工程,需要设计、实现、测试、论证等一系列工作的完成。工程是严谨的,是面向需求的,在实现需求的基础上,减少实现成本,提高实现的可移植性。工程化开发具有多人合作性,即需要规范化实现,提高团队的效率,减少错误的出现。我认为大概步骤如下:

  1. 需求分析;
  2. 架构设计;
  3. 具体类的设计;
  4. 规格实现(JSF);
  5. 代码实现;
  6. 工程测试;
  7. 正确性论证;
  8. 交付客户;
  9. 客户反馈;
  10. 更新设计,实现改动;

上面的过程并不仅仅是次序关系,在整个工程的过程中是有所交叉的。总的来说,工程化开发首先是面向需求,其次是规格化,提高团队效率,减少错误。

4.4 对课程的期望与建议

       当我置身事外来看OO时,其实感觉OO这门课所教授的也不过是工业界的一角。我们训练的内容不过也是很简单的东西,但对于我来说已经是比较难了(当时觉得,现在活过来了,觉得还好)。对这门课的期望,也许就是更加公平化的测试了吧。我觉得是分数限制了这门课的良好效果。如果没有那么多的分数利益(通过非正当方式),也许就会更加关注提高自身,从而获得更高的分数,但有的时候这个制度确实是伤了勤勤恳恳的同学的心。不管这门课有多少槽点,我还是要感谢这门课,因为我也确实是学到了很多知识(从小白做起),希望OO越办越好,加油!

[引用]

https://wenku.baidu.com/view/aa4124c70408763231126edb6f1aff00bed570ae.html。

OO学期总结


推荐阅读
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • vue使用
    关键词: ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • IT联合协会创始人分享的学习、创业和人生感悟
    本文分享了IT联合协会创始人的学习、创业和人生感悟,包括创办协会的经历、参与的比赛和活动、所关注的领域以及一些高效技巧。创始人强调了大学和工作前几年的学习资源的重要性,以及沉淀个人学习、生活和灵感资源对于大学和职场能力的影响。他还分享了自己关注的领域,包括软件开发和产品经理相关的专业方向。文章最后,他表达了对未来的期望和目标,并邀请有缘人一起交流。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
author-avatar
24吴梦琦_581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有