OO期末总结


$0 写在前面


善始善终,临近期末,为一学期的收获和努力画一个圆满的句号。

 


 $1 测试与正确性论证的比较


 


$1-0 什么是测试?


 

测试是使用人工操作或者程序自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。

Glenford J.Myers曾对测试的目的提出过以下观点:

 (1)测试是为了发现程序中的错误而执行程序的过程。

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

(3)成功的测试是发现了至今为止尚未发现的错误的测试。

(4)测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。

(5)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。

(6)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

(7)另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

测试目标包括以下几点

(1) 发现一些可以通过测试避免的开发风险。

(2) 实施测试来降低所发现的风险。

(3) 确定测试何时可以结束。

(4) 在开发项目的过程中将测试看作是一个标准项目。


$1-1 什么是正确性论证?


 

程序正确性论证是程序设计理论的一个重要组成部分,研究如何使用程序设计语言编制程序,以正确实现预定的目标。

程序正确性论证提出编制正确程序的两种途径一种称为程序验证,研究如何使用数学推理来严格论证程序是否符合其目标。

另一种称为程序综合,研究如何由给定目标出发,逐步构造一个在计算机系统上可运行的程序,而且要求构造过程的每一步都是严格保持正确无误的。

在保证正确性的前提下,为提高程序运算效率而实现的程序之间的转换,称为程序变形,也是程序正确性论证的一个重要内容。

程序综合和程序变形是自动程序设计的理论基础。


 $1-2 测试与正确性论证的效果差异


 

测试是使用测试样例对程序进行检测而正确性论证则是根据代码的逻辑进行验证。

测试想要完全覆盖的难度较大,需要大量的样例才能达到近似的完全覆盖,而正确性论证则不需要花费那么大的精力,只需要根据代码的逻辑和规格进行一系列验证即可。

二者相互补充,相辅相成。正确性论证可能由于一开始设计的错误导致程序运行的错误,而测试则难以覆盖全面,二者相互补充之后便可以对程序进行充分的测试。

总体而言,二者都是用于工程化测试的好方法,但是面向对象本身就是一种极为具体化的简单设计思路,大多数情况使用单元测试就能很好的应对测试需求。

 


 $2 OCL语言调研


 


 $2-0 关于OCL


 对象约束语言是一种用于施加在指定的模型元素上约束的语言。

对象约束语言简称OCL(Object Constraint Language)。

对象约束语言(Object Constraint Language, OCL)作为图形符号的补充,说明建模元素的有关细节,例如:约束,前置条件,后置条件等。

OCL(object constraint language) 对象约束语言。用来进行约束定义的,形式化的无二义的语言。

OCL语言有如下特征

      (1) 声明性语言,不会改变模型中的内容。

      (2) 形式化语言语言。

      (3) 无二义规范语言。

      (4) 类型性语言,每一个表达式都有类型;

      (5) 易学好用。


 $2-1 OCL与JSF的异同


与JSF相比的相似点:二者都是形式语言,声明式的语言,都没有二义性,都有前置条件和后置条件以及不变式;

与JSF相比的不同点:OCL每个表达式都是具有类型的,且具有许多的基本数据类型等,不像JSF一样完全使用逻辑表达式。

 


 $3 关于第14次作业的单电梯系统


 

根据第十四次作业的单电梯系统,针对调度器、电梯、请求队列和请求,整理出如下的UML类图以及时序图,采用图(graph)来演示成如下模型:

 


 $3-0 类图


 

 

【图1】 单电梯系统的类图

类图中表示了不同类之间的继承依赖关系,在各个类中呈现了类全部的属性和方法。


 $3-1 时序图


 

【图2】时序图

该时序图呈现了程序的执行过程,以及状态转换逻辑。

 


 $4 学期小结


 


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


 (1) 单元一主要介绍了JAVA面向对象语言的思想等,主要注重对语言基础知识的训练以及对面向对象思想的初步了解;

 (2) 单元二开始变涉及多线程的编程训练,介绍了多线程的机制、冲突,对面向对象的继承、封装、多态的特征也有了更进一步的深入介绍;

 (3) 单元三开始进行规格化设计,通过JSF语言的书写来实现程序的规格化设计;

 (4) 单元四则是队代码的验证与测试,编写JUnit测试单元对程序开展自动化测试、编写正确性论证文档对程序类和方法实现的正确性进行论证等。

 这四个单元循序渐进,相辅相成,一步步引导我们逐步深入的对面向对象的编程思想进行了解。


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


 本学期我一共实现了两个独立作业和两个系列作业。

最开始的多项式处理作业,让我对JAVA语言的基本运用有了初步的了解;

到后来电梯、出租车系列作业让我接触到了面向对象编程思想以及多线程编程的模式;

编写单元测试JUnit,让我掌握了自动化测试方法;

从头至尾认真梳理下来,当我再次打开前几次的代码作业的时候,

令我欣慰的是,我能够从中看到自己的进步:

(1) 编码风格的进步:变量名、方法名的命名规范;方法的代码行数明显缩短;类的功能层次明显。

(2) 符合规格规范:通过对JSF的编写,能够按照规格,来编写符合规格约束的方法代码。

(3) 对SOLID设计原则的更深刻体会:代码不再是“灵机一动”的产物,而是经过思考和设计所编写的、符合设计原则的代码。


$4-2 阐述自己对工程化开发的理解


 工程化开发和作业由着本质的不同。作业更注重的是结果的正确性,而工程化开发则要求设计人员有着良好的代码素养,和工程化开发规范。

工程过程的不同,工程化开发要求将系统化的、规范的、可度量的方法应用于程序的开发、运行和维护的过程,即将工程化应用于软件过程。

工程着重应用,工程项目一定是软件过程的一个产出,一个个性化的实例!换句话来讲,工程也是由过程组成的。

工程化开发遵从一定的规格设计进行程序的开发,十分有利于于团队协作,提高工作效率和降低成本。

良好的工程化,能降低沟通成本,实现更好的协同,节省开发和测试人员的重复劳动,降低发布的常见问题的复现率等等。


 $4-3 对课程的任何期望或建议


 衷心的希望课程越办越好,让更多的人从中受益。

转载于:https://www.cnblogs.com/chrischen98/p/9225658.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

puppet puppet模块、file模块

转载:http://blog.51cto.com/ywzhou/1577356 作用:通过puppet模块自动控制客户端的puppet配置,当需要修改客户端的puppet配置时不用在客户端一一设置。 1、服务端配置puppet模块 (1)模块清单 [rootpuppet ~]# tree /et…

数据可视化及其重要性:Python

Data visualization is an important skill to possess for anyone trying to extract and communicate insights from data. In the field of machine learning, visualization plays a key role throughout the entire process of analysis.对于任何试图从数据中提取和传达见…

熊猫数据集_熊猫迈向数据科学的第三部分

熊猫数据集Data is almost never perfect. Data Scientist spend more time in preprocessing dataset than in creating a model. Often we come across scenario where we find some missing data in data set. Such data points are represented with NaN or Not a Number i…

Pytorch有关张量的各种操作

一,创建张量 1. 生成float格式的张量: a torch.tensor([1,2,3],dtype torch.float)2. 生成从1到10,间隔是2的张量: b torch.arange(1,10,step 2)3. 随机生成从0.0到6.28的10个张量 注意: (1).生成的10个张量中包含0.0和6.28&#xff…

mongodb安装失败与解决方法(附安装教程)

安装mongodb遇到的一些坑 浪费了大量的时间 在此记录一下 主要是电脑系统win10企业版自带的防火墙 当然还有其他的一些坑 一般的问题在第6步骤都可以解决,本教程的安装步骤不够详细的话 请自行百度或谷歌 安装教程很多 我是基于node.js使用mongodb结合Robo 3T数…

【洛谷算法题】P1046-[NOIP2005 普及组] 陶陶摘苹果【入门2分支结构】Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P1046-[NOIP2005 普及组] 陶陶摘苹果【入门2分支结构】Java题解🌏题目…

web性能优化(理论)

什么是性能优化? 就是让用户感觉你的网站加载速度很快。。。哈哈哈。 分析 让我们来分析一下从用户按下回车键到网站呈现出来经历了哪些和前端相关的过程。 缓存 首先看本地是否有缓存,如果有符合使用条件的缓存则不需要向服务器发送请求了。DNS查询建立…

python多项式回归_如何在Python中实现多项式回归模型

python多项式回归Let’s start with an example. We want to predict the Price of a home based on the Area and Age. The function below was used to generate Home Prices and we can pretend this is “real-world data” and our “job” is to create a model which wi…

充分利用UC berkeleys数据科学专业

By Kyra Wong and Kendall Kikkawa黄凯拉(Kyra Wong)和菊川健多 ( Kendall Kikkawa) 什么是“数据科学”? (What is ‘Data Science’?) Data collection, an important aspect of “data science”, is not a new idea. Before the tech boom, every industry al…

文本二叉树折半查询及其截取值

using System;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Collections;using System.IO;namespace CS_ScanSample1{ /// <summary> /// Logic 的摘要说明。 /// </summary> …

nn.functional 和 nn.Module入门讲解

本文来自《20天吃透Pytorch》 一&#xff0c;nn.functional 和 nn.Module 前面我们介绍了Pytorch的张量的结构操作和数学运算中的一些常用API。 利用这些张量的API我们可以构建出神经网络相关的组件(如激活函数&#xff0c;模型层&#xff0c;损失函数)。 Pytorch和神经网络…

10.30PMP试题每日一题

SC>0&#xff0c;CPI<1&#xff0c;说明项目截止到当前&#xff1a;A、进度超前&#xff0c;成本超值B、进度落后&#xff0c;成本结余C、进度超前&#xff0c;成本结余D、无法判断 答案将于明天和新题一起揭晓&#xff01; 10.29试题答案&#xff1a;A转载于:https://bl…

02-web框架

1 while True:print(server is waiting...)conn, addr server.accept()data conn.recv(1024) print(data:, data)# 1.得到请求的url路径# ------------dict/obj d["path":"/login"]# d.get(”path“)# 按着http请求协议解析数据# 专注于web业…

ai驱动数据安全治理_AI驱动的Web数据收集解决方案的新起点

ai驱动数据安全治理Data gathering consists of many time-consuming and complex activities. These include proxy management, data parsing, infrastructure management, overcoming fingerprinting anti-measures, rendering JavaScript-heavy websites at scale, and muc…

从Text文本中读值插入到数据库中

/// <summary> /// 转换数据&#xff0c;从Text文本中导入到数据库中 /// </summary> private void ChangeTextToDb() { if(File.Exists("Storage Card/Zyk.txt")) { try { this.RecNum.Visibletrue; SqlCeCommand sqlCreateTable…

Dataset和DataLoader构建数据通道

重点在第二部分的构建数据通道和第三部分的加载数据集 Pytorch通常使用Dataset和DataLoader这两个工具类来构建数据管道。 Dataset定义了数据集的内容&#xff0c;它相当于一个类似列表的数据结构&#xff0c;具有确定的长度&#xff0c;能够用索引获取数据集中的元素。 而D…

铁拳nat映射_铁拳如何重塑我的数据可视化设计流程

铁拳nat映射It’s been a full year since I’ve become an independent data visualization designer. When I first started, projects that came to me didn’t relate to my interests or skills. Over the past eight months, it’s become very clear to me that when cl…

Django2 Web 实战03-文件上传

作者&#xff1a;Hubery 时间&#xff1a;2018.10.31 接上文&#xff1a;接上文&#xff1a;Django2 Web 实战02-用户注册登录退出 视频是一种可视化媒介&#xff0c;因此视频数据库至少应该存储图像。让用户上传文件是个很大的隐患&#xff0c;因此接下来会讨论这俩话题&#…

BZOJ.2738.矩阵乘法(整体二分 二维树状数组)

题目链接 BZOJ洛谷 整体二分。把求序列第K小的树状数组改成二维树状数组就行了。 初始答案区间有点大&#xff0c;离散化一下。 因为这题是一开始给点&#xff0c;之后询问&#xff0c;so可以先处理该区间值在l~mid的修改&#xff0c;再处理询问。即二分标准可以直接用点的标号…

从数据库里读值往TEXT文本里写

/// <summary> /// 把预定内容导入到Text文档 /// </summary> private void ChangeDbToText() { this.RecNum.Visibletrue; //建立文件&#xff0c;并打开 string oneLine ""; string filename "Storage Card/YD" DateTime.Now.…