OO课程学期末总结
OO课程学期末总结
测试VS正确性论证

OCL vs JSF
对象约束语言(Object Constraint Language), 简称OCL, 是一种指示用户建模系统中的限制方式。 他是UML可选的附加内容, 可以用来更好地定义对象的行为, 并为任何类元指定约束。
- 相似性:
- 形式化语言:基础都是集合论和谓词逻辑。是选择有歧义的但是多数人能看懂的自然语言,还是无歧义但少数人才能看懂的数学符号,OCL和JSF选择了“中庸之道”。(不过JSF的形式化没有OCL那么强)【PS:数学、逻辑和计算机科学中,形式语言(英语:Formal language)是用精确的数学或机器可处理的公式定义的语言】
- 声明式语言:就是描述了应该做出什么结果,而不是应该怎样做才能达到某个结果,给出了结果而非具体过程。
描述的约束相似:OCL可以描述4种约束:不变量、前置条件、后置条件、监护条件。JSF类似。
- 不同之处:
- 类型化语言:OCL中的每一个表达式都是具有类型的。这些类型包括:标准类型、UML图中的元素、上述元素的集合。
- 表达能力:OCL表达能力更强、也更严谨。
- OCL是和UML(统一建模语言)绑定的,JSF是直接面向代码。
第14次作业单电梯系统UML图
类图(greenuml自动生成):

时序图(plantuml代码生成):

状态图(不知为啥plantuml用不了,我就画图软件手画了,状态转移比较简单):

【PS:这里的STILL是广义静止,包括 到达某请求目标楼层而导致的静止(可能马上又要移动),及,没有请求而导致的电梯空闲静止】
整理总结一个学期所学所练
关于四个单元模块

- 知识点循序渐进,从基础思想到设计原则,抽象层次越来越高,从代码完成到测试和验证,一步步完整实现工程开发。
- 老师并没有讲语法,毕竟大家都有其它语言的基础,因此语法方面全靠大家自学。
- OO开课前,由于我既没选大一下的java课,也没选暑期java先修课,心里有点虚,于是暑假用两周时间,看了中国大学MOOC浙大翁恺老师开设的:《面向对象程序设计——Java语言》,翁老师讲得真心好,特别是结合了实例,让我对面向对象的基本思想有了比较深入的了解,为本学期的OO课奠定了很好的基础,在这里种草一下。
梳理历次作业的收获和进步

阐述自己对工程化开发的理解
- 百度了下软件工程的开发过程:需求分析、设计(总体)、实现(细节)、测试、验收、维护。
- 工程化的一套流程,使得开发一个复杂易变的大工程这事儿 更加流程明确和高效,真是妙啊。
- 不过OO课只是给我们打开了软件工程的一扇小窗,让我们在一轮又一轮作业中强化体会前四个环节。特别是设计和实现分离,设计好了,实现也就是解决一些小细节而已,要是没设计好就急忙动手,那必然是内心空虚的蜗牛式前进。
- 顺带一提,每次作业都要静下心来认真分析指导书的需求,以后每次做一些很长很复杂的题、或者遇到复杂的实际情况时,就会告诉自己“指导书你都看过那么多了,还对付不了这个吗!”,以增加自己的耐心和自信心,这一点可以说是OO课给我的最大收获了【没事多逼逼自己,如果决定要翻过这面墙,就先把电脑丢过去】
对课程的期望或建议
- 一个不良现象:由于客服群分散为3、4个,因此可能会出现各客服群对同一问题的回答不统一的问题,进而出现 误导学生直至提交作业后在互测时才发现回答不统一,或,误导学生且在未提交作业前突然发现口径不一然后天降需求。这不是学生或助教的错,而是这个问答机制不大完善。用客服助教来模拟用户,结果却发现用户使用了分身术提出不同的需求,这显然不是课程组希望看到的。
- 针对上述不良现象的几个可能的解决方法:
客服群之外再建一个群 专门发通知 不允许发问,但是这就需要每个小客服群在回答每个问题之后就发通知,助教除了要回答问题,还要把问题描述清楚(当然截图也海星)之后发通知,还要注意有没有其他助教已经发过这个问题的通知。助教比较累。
建一个大群,舍弃小群,不允许水群比如发表情包和其它与OO无关的东西。要求提问和解答的内容都尽量控制在一段话内,不要分开发多条消息,想清楚了理好逻辑了再问/再答,每个时间段固定由某位助教回答,重复提问者给予黄牌警告(大家共同监控)。这样能减少水群信息,方便你我他。不过对于提问者和问答者的要求较高,大家不一定能做到,不易实施。
大就大到极端,舍弃群聊,只保留讨论区,这样会减少很多提问的次数,因为大家似乎不大愿意在讨论区发问,进而,按照大家“不提问就不会改需求”的逻辑,改需求这事儿就会变少,顺便要求ddl前一天不允许提问好了,以免天降需求呵呵。
小就小到极端,分成7、8个小群(绝对不能按小班分),保证群内人员互测。对于关键问题的回答,由助教保证与其它助教的回答统一,不关键问题的回答,助教自由发挥,互测时以助教回答为准,该助教负责这个小群内的同学的仲裁工作。但是,或许容易发生私下交易,而且如果指导书的部分需求很不明确时,同学们会大量发问,而且和其它群的同学的问题相似,助教工作较多。
【哇,设计好一门课真是不容易】
- 然后就是互测的问题了,建议在互测仲裁中加入扣分机制。即,仲裁结果分为:
确有其事,报告bug/imcomplete成功,测试者得到测试的加分。
- 双方观点都挺有道理,报告bug/imcomplete成功/失败/和棋。
- 测试者恶意测试,报告bug/imcomplete失败,测试者扣分。
- 最后,希望这门课能越办越好,达到课程组真正的教学目标,同时也得到学生们的认可:
——“这门课虽然虐人,但是学到了好多好东西,被虐得挺值的嘿嘿嘿”。
OO课程学期末总结的更多相关文章
- OO课程的完结,软件工程学习的开始
目录 UML小结 阅读学习 大象:Thinking in UML UML精粹 UML和模式应用 本单元作业的架构设计 四个单元中架构设计及OO方法的演进 四个单元中测试与实践的演进 课程收获 三个具体 ...
- OO课程第三次总结QWQ
调研,然后总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 emmm为这个问题翻遍百度谷歌知乎也没有得到答案,那我就把自己认为最重要的两点简要说明一下吧,欢迎大家补充~ 1.便于完成代码的重用 ...
- OO课程总结
OO课程总结 OO终于划上了句号,这学期熬夜熬得最多的一门课,掉了最多头发的一门课. 一.测试与正确性 测试是最最最常见的用来找到程序错误以及验证程序正确的手段,在之前的作业中,写完代码还是会存在很多 ...
- OO第四单元——基于UML的UML解析器总结&OO课程总结
OO第四单元--基于UML的UML解析器总结&OO课程总结 前言:一学期愉快(痛苦)的OO课程学习结束了,OO几个单元作业都各有特色,实验也各有特色,仔细回味起来,不再是单纯的敲代码(但自己还 ...
- OO第四单元总结暨OO课程总结
一.第四单元作业总结 本单元的主要任务是对 Uml 图元素进行管理和查询,测试一开始会输入一个静态图,之后会对图中相关内容进行查询. 第13,14次作业 第14次作业新增内容很少,故与第13次作业放在 ...
- OO第四单元UML作业总结暨OO课程总结
目录 目录一.第四单元UML两次作业架构设计第一次作业第二次作业二.架构设计总结与OO方法理解演进三.测试理解与实践演进四.课程收获总结五.课程改进建议六.尾声 一.第四单元UML两次作业架构设计 第 ...
- 2019OO第四单元作业总结&OO课程整体总结
第四单元作业总结 第四单元的作业主题是UML图的解析,通过对UML图代码的解析,我对UML图的结构以及各种元素之间的关系的理解更加深入了. ------------------------------ ...
- 第四单元博客总结——暨OO课程总结
第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都 ...
- OO课程中IDEA相关插件的使用
写在前面 由于OO课程博客作业的需要分析代码的复杂度并绘制UML图,但是课件上推荐的分析工具(http://metrics.sourceforge.net )经过自己几个小时的折腾还是没有安装成功 ...
随机推荐
- 【 js 基础 】【 源码学习 】柯里化和箭头函数
最近在看 redux 的源码,代码结构很简单,主要就是6个文件,其中 index.js 负责将剩余5个文件中定义的方法 export 出来,其他5个文件各自负责一个方法的实现. 大部分代码比较简单,很 ...
- Linux服务器开启ssh服务,实现ssh远程登陆!
最近在学linux,使用ssh远程登陆linux,记录下来! 首先进入/etc目录下,/etc目录存放的是一些配置文件,比如passwd等配置文件,要想使用ssh远程登陆,需要配置/etc/ssh/s ...
- redis 单节点安装
wget http://download.redis.io/releases/redis-5.0.3.tar.gz 1.下载解压 2.make编译 3.提示没有安装安装gcc,安装gcc yum in ...
- List中Add()与AddAll()的区别
我们在开发过程中经常会使用到List<Object> list=new ArrrayList<>(); 这个集合,Object 也可以是String.Integer等. 当我们 ...
- 活字格Web应用平台学习笔记2-基础教程-开始
今天先学活字格第一个教程,开始. 目标是能够用活字格创建一个简单的Web页面. 哈哈,简单,跟Excel一样,做单元格输入.合并.文字居中.加底色.加图片,然后发布. 然后就真的生成了一个Web页面! ...
- 网站软件FTP下载
网站软件FTP下载 统一管理站 http://www.mmnt.net/ db2 http://www.mmnt.net/db/0/0/public.dhe.ibm.com/software/hk/ ...
- cuda和gcc版本不兼容
gcc8.1和cuda9.0版本不兼容,比较坑. 下面是各版本cuda支持的gcc: 从CUDA 4.1版本开始,现在支持gcc 4.5.gcc 4.6和4.7不受支持. 从CUDA 5.0版本开始, ...
- jQuery EasyUI datagrid列名包含特殊字符会导致表格错位
首先申明:本文所述的Bug存在于1.3.3以及更高版本中,其它低版本,本人未测试,太老的版本不想去折腾了. 洒家在写前端的SQL执行工具时,表格用了 jQuery EasyUI datagrid,因为 ...
- TSQL使用ADHOC访问Excle文件
如题,今天正好碰到这个问题,现将相关知识点记录如下: --开启高级配置功能 reconfigure --开启导入功能 reconfigure --允许在进程中使用ACE.OLEDB.12 --允许使用 ...
- ensp 路由器无法启动
出现错误代码 40.41等几乎都是虚拟机问题, 卸载干净后重新安装就好.推荐卸载软件:iobit uninstaller 安装注册后无法创建Host-Only,最好更换虚拟机版本, 我用的虚拟机版本是 ...