博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OO第三次博客作业
阅读量:7093 次
发布时间:2019-06-28

本文共 1419 字,大约阅读时间需要 4 分钟。

一、规格化设计调研

在《程序开发原理:抽象、规格与面向对象设计》一书中,提到了两种重要的程序语言的抽象方法:参数化抽象(abstraction by parameterization)和规格化抽象(abstraction by specification)。其中,关于规格化抽象,有如下的描述:

规格化抽象,是将执行细节(即模块如何实现)抽象为用户所需求的行为(即模块做什么)。这是从具体实现中抽象出模块,需要的仅仅是模块的实现能符合我们所依赖的表述形式。

当需要将某个过程与一个注释相关联时,使用规格化抽象是一个不错的选择。本书提及的是一种“Liskov风格”的规格设计方法,通常以成对的断言(assertion)注释出现:requires assertion(或称前置条件)和effects assertion(后置条件)。

而使用规格的一个理由在于过程调用的意义,通过如下两个严格的规则我们可以窥见规格抽象的好处:

  1. 在过程执行完毕后,可以认为后置条件中包含了当开始调用的时候前置条件成立所包含的内容。
  2. 我们仅仅认为那些从后置条件的出来的结论是成立的。

前一个规则使得用户不必关注具体实现的主体,后一个规则说明使得我们可以尽可能忽略不相干的信息。好的规格设计大大提高了抽象在程序设计中的作用,能够给开发者和设计者带来诸多的便利,更使得程序逻辑更加清晰,抽象出来的层次更加高级易懂。

二、规格BUG分析

前两次没有被找规格的bug,下面是最后一次被找的bug

规格bug分析
类别 错误原因 被挂个数 备注
针对构造方法,初始状态repOK为真 没有写repOK 2
Effects不完整 同步方法忘记写多线程的后置条件 3 同学找得很仔细

 

三、前置及后置条件改进例子

  1. 不好写法
    1. 过多使用自然语言
    2. effects写成具体实现过程
    3. 使用了中间变量
    4. 进行了同步控制却没有写相关的effects
    5. 格式不正确
  2. 改进措施
    1. 详细阅读JSF格式规范
    2. 学习其他JSF写得好的同学的代码
    3. 注意effects不关心开发者具体如何实现功能的
    4. 先写规格,再写方法体。先写规格,再写方法体
    5. 能使用数学语言描述就不要偷懒用自然语言代替

 

四、功能与规格BUG聚类分析

方法名 功能bug数 规格bug数
main 1 2
readmap 3 1
run 0 2

 

五、设计与撰写规格的一些体会

这几次作业关于程序功能实现部分的代码量减少了,随之而来的是许多的规格书写。

其实并没有什么值得分享的规格设计与撰写的心得,因为和大部分一样写JSF时主要是为了能减少互测时被报规格bug,就只是做到了写得规矩,但绝对谈不上写得好,撑死了也只能算是差强人意吧。

体会倒是有。当面对一个复杂方法想了半天怎样用规范的数学语言书写规格,然而最后还是投降乖乖写自然语言的时候,觉得其实很多情况下,虽然自然语言显得不那么严谨,但确实在面对某些比较复杂的问题时,毋庸置疑它是比任何严谨的公式都要来得便捷易懂的交流工具。所以大概就像像荣老师说的吧,JSF这个东西说白了我们今后工作大概率不会使用到,更多的是使用自然语言撰写规格,但是,这个过程的训练可以使人的思维更缜密,更有逻辑性,会让之后使用自然语言写东西时逻辑更加顺畅,表达更加清楚,不会出现表意不清、歧义、不知所云的情况。

转载于:https://www.cnblogs.com/yuanjinglin/p/9102084.html

你可能感兴趣的文章
借鉴bootstrap的方法,快速实现响应式开发
查看>>
windows+python3.6下安装fasttext+fasttext在win上的使用+gensim(fasttext)
查看>>
C# 语法特性
查看>>
查询锁谁阻塞了谁
查看>>
zabbix报错整理--持续更新
查看>>
类和实例
查看>>
uglifyjs2全局混淆
查看>>
在centos上,oracle数据库更改IP后无法启动监听,解决方法
查看>>
JAVA语言基础组成(1)
查看>>
Smarty的基本语法------变量调节器
查看>>
上架流程:(0)上架流程
查看>>
vim 代码提示功能,让vim可以媲美IDE(转)
查看>>
Hive Explain(翻译自Hive wiki)
查看>>
node开子线程模块--tagg2
查看>>
c# excel xls保存
查看>>
php curl的隐藏BUG
查看>>
程序员眼中的中国传统文化-王阳明《传习录》
查看>>
1216 递归下降分析法
查看>>
ajax四,封装ajax并优化
查看>>
剑指offer 第九天
查看>>