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 对课程的任何期望或建议
衷心的希望课程越办越好,让更多的人从中受益。
OO期末总结的更多相关文章
- OO课程学期末总结
OO课程学期末总结 测试VS正确性论证 OCL vs JSF 对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式. 他是UML可选 ...
- OO第四单元总结暨期末总结
OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 ...
- OO第四次博客作业(第四单元作业及期末总结)
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1 我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不 ...
- oo第四单元及期末总结
一.第四单元作业架构总结 第一次UML作业: 在分析各指令所需要的信息后建立了类(class),操作(operation),属性(Attribute)这几个类用来存储分析后的结果,而接口在本次作业中与 ...
- python 有class外壳不一定是oop,到底怎么oo?
1.继承 封装 多态是面向对象的三大特点,当年在考c++期末考试时候这三个特点还是作为填空题出现的. 而且老师也反复唠叨继承封装 多态,这三个词语是背得滚瓜烂熟了,但因为不是特别专业的计算机科班,学得 ...
- [buaa-SE-2017]个人作业-期末总结
个人作业-期末总结 Part1: 阅读作业 在这一部分,首先我将说说我对这次阅读作业中每篇文章的理解,最后结合这次团队项目的经理谈谈自己对软件开发的看法. 1. No Silver Bullet 文章 ...
- 北航oo作业第四单元小结
1.总结本单元两次作业的架构设计 在我动手开始总结我的设计之前,我看了其他同学已经提交在班级群里的博客,不禁汗颜,我是真的偷懒.其他同学大多使用了新建一个类,用以储存每一个UMLelemet元素的具体 ...
- 【BZOJ4868】期末考试(整数三分)
题意: 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待 ...
- UML期末绘图及细节总结
往届期末绘图的题目例如以下所看到的: Read the providing materials carefully, and then do tasks. 2.1: Use Case Diagram ...
随机推荐
- Android为TV端助力 UDP协议
废话不多说.直接上代码! 一. 接收端 1.创建UDP连接 public void init() { try { //开关的作用 isRunning = true; DatagramSocket mU ...
- [Android][Recovery] Recovery下找不到sdcard路径
做升级的时候,把更新包拷贝到sd卡中,然后调用接口进行重启升级 wossoneri.github.io File update_file = new File("/sdcard/update ...
- ssh服务突然连接不了案例总结
ssh服务突然连接不了案例总结 一台Oracle数据库服务器(Linux版本为Oracle Linux Server release 5.7)今天中午突然出现短暂的ssh连接不上的情况,ssh连接 ...
- SQL Server -- 回忆笔记(三):ADO.NET之C#操作数据库
SQL Server知识点回忆篇(三):ADO.NET之C#操作数据库 1.连接数据库 (1)创建连接字符串: 使用windows身份验证时的连接字符串: private string conStr= ...
- Jenkins自动化部署-----持续交付【转】
感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...
- 【转载】xilinx 高速收发器Serdes深入研究
此篇文章深入浅出介绍了关于高速串行收发器的几个重要概念和注意事项,为方便知识点复习总结和后续查阅特此转载,原文标题及链接为:xilinx 高速收发器Serdes深入研究 - CSDN博客 http ...
- ubuntu14.04 安装 php Composer时 composer:未找到命令
在Ubuntu14.04环境下,进行composer安装时,各个方面都很顺利,安装完成后,出现了如下的错误提示: 百思不得其解!本人的环境是Ubuntu14.04 ,安装过程也是严格按照compose ...
- SQLServer之创建唯一非聚集索引
创建唯一非聚集索引典型实现 唯一索引可通过以下方式实现: PRIMARY KEY 或 UNIQUE 约束 在创建 PRIMARY KEY 约束时,如果不存在该表的聚集索引且未指定唯一非聚集索引,则将自 ...
- 创建DVWA环境时遇到的问题
前言:我下载了PHP Study,也按照步骤下载保存了DVWA,之后我又按照百度的准备登陆检查是否正确安装DVWA,于是,我登录了百度上查到的链接:http://localhost/DVWA-mast ...
- iis+nginx实现负载均衡
简要说明:nginx的简介自行百度. 目的:把用户的请求分到各个服务器减轻压力.nginx把监听的端口的请求平均转到布署了网站的服务器. 一.windows上安装nginx 1.官网下载windows ...