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,一经查实,立即删除!

相关文章

数据可视化及其重要性: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.对于任何试图从数据中提取和传达见…

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

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

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…

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…

铁拳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…

DengAI —如何应对数据科学竞赛? (EDA)

了解机器学习 (Understanding ML) This article is based on my entry into DengAI competition on the DrivenData platform. I’ve managed to score within 0.2% (14/9069 as on 02 Jun 2020). Some of the ideas presented here are strictly designed for competitions li…

java.net.SocketException: Software caused connection abort: socket write erro

场景:接口测试 编辑器:eclipse 版本:Version: 2018-09 (4.9.0) testng版本:TestNG version 6.14.0 执行testng.xml时报错信息: 出现此报错原因之一:网上有人说是testng版本与eclipse版本不一致造成的&#…

使用K-Means对美因河畔法兰克福的社区进行聚类

介绍 (Introduction) This blog post summarizes the results of the Capstone Project in the IBM Data Science Specialization on Coursera. Within the project, the districts of Frankfurt am Main in Germany shall be clustered according to their venue data using t…

样本均值的抽样分布_抽样分布样本均值

样本均值的抽样分布One of the most important concepts discussed in the context of inferential data analysis is the idea of sampling distributions. Understanding sampling distributions helps us better comprehend and interpret results from our descriptive as …

玩转ceph性能测试---对象存储(一)

笔者最近在工作中需要测试ceph的rgw,于是边测试边学习。首先工具采用的intel的一个开源工具cosbench,这也是业界主流的对象存储测试工具。 1、cosbench的安装,启动下载最新的cosbench包wget https://github.com/intel-cloud/cosbench/release…

因果关系和相关关系 大数据_数据科学中的相关性与因果关系

因果关系和相关关系 大数据Let’s jump into it right away.让我们马上进入。 相关性 (Correlation) Correlation means relationship and association to another variable. For example, a movement in one variable associates with the movement in another variable. For…

vue取数据第一个数据_我作为数据科学家的第一个月

vue取数据第一个数据A lot.很多。 I landed my first job as a Data Scientist at the beginning of August, and like any new job, there’s a lot of information to take in at once.我于8月初找到了数据科学家的第一份工作,并且像任何新工作一样,一…

STL-开篇

基本概念 STL: Standard Template Library,标准模板库 定义: c引入的一个标准类库 特点:1)数据结构和算法的 c实现( 采用模板类和模板函数)2)数据的存储和算法的分离3)高…

rcp rapido_为什么气流非常适合Rapido

rcp rapidoBack in 2019, when we were building our data platform, we started building the data platform with Hadoop 2.8 and Apache Hive, managing our own HDFS. The need for managing workflows whether it’s data pipelines, i.e. ETL’s, machine learning predi…

Mysql5.7开启远程

2019独角兽企业重金招聘Python工程师标准>>> 1.注掉bind-address #bind-address 127.0.0.1 2.开启远程访问权限 grant all privileges on *.* to root"xxx.xxx.xxx.xxx" identified by "密码"; 或 grant all privileges on *.* to root"%…

分类结果可视化python_可视化分类结果的另一种方法

分类结果可视化pythonI love good data visualizations. Back in the days when I did my PhD in particle physics, I was stunned by the histograms my colleagues built and how much information was accumulated in one single plot.我喜欢出色的数据可视化。 早在我获得…

算法组合 优化算法_算法交易简化了风险价值和投资组合优化

算法组合 优化算法Photo by Markus Spiske (left) and Jamie Street (right) on UnsplashMarkus Spiske (左)和Jamie Street(右)在Unsplash上的照片 In the last post, we saw how actual algorithms are developed and tested. In this post, we will figure out the level of…

PS抠发丝技巧 「选择并遮住…」

PS抠发丝技巧 「选择并遮住…」 现在的海报设计,大多数都有模特MM,然而MM的头发实用太多了,有的还飘起来…… 对于设计师(特别是淘宝美工)没有一个强大、快速、实用的抠发丝技巧真的混不去哦。而PS CC 2017版本开始,就有了一个强大…