面向对象课程第三次随笔

一、规格化设计的发展历史

  20世纪60年代,软件出现严重危机,Dijkstra提出了goto语句的危害,由此引发了软件界长达数年的论战,并产生了结构化程序设计方法。Pascal语言在20世纪70年代占有统治地位。

  随着计算机技术的发展,结构化设计语言和结构化分析无法满足用户的需求,OOP由此应运而生,即面向对象的程序设计。OOP的诞生是程序设计方法学的一场革命,大大提高了开发效率,减少了软件开发的复杂性,提高了软件的可维护性,可拓展性。1990年以来,面向对象分析、测试、度量和管理研究都得到长足发展。

  规格化设计伴随OOP而生,为了提高程序的规范性,对类、方法等进行规范化设计,有利于程序的模块化划分。这样设计程序的数据更加安全可控,测试也变得容易,软件的维护性得到提高,因而受到程序设计人员的重视。

二、规格bug表格及原因分析

三、前置条件后置条件写法改进

前置条件不好的写法1

对前置条件不做要求,自己在程序其他部分进行限制来保证一些隐含的前置条件会被满足。其实这样不是很好,降低了方法的通用性,如果都是自己写的代码还好说,在遇到继承,或者作为借口时,往往会出现意想不到的问题。最好将前置条件写明,来增强代码的可读性与可复用性。

前置条件不好的写法2

本身这个前置条件问题不大,但是credit既然作为int类型,最好设定好上界2^32-1。即使不是int类型,一些参数最好也设定合理的界限。

前置条件不好的写法3

隐含了(x1,y1),(x2,y2)这两个点必须相邻的要求。这样会导致不处理错误的数据,作为规格并不全面。需要补全相应的约束。不完全的前置条件,给设计者和方法使用者都会带来困扰

 前置条件不好的写法4

只对一个参数进行了前置条件的要求,应该加上对usedgraph的约束,至少保证usedgraph!=null。

前置条件不好的写法5

对于方法内的的变量进行约束是不行的,规格与实现无关。应该去掉distance!=0

后置条件不好的写法1

单纯的通过自然语言来描述后置条件,这样并不如逻辑语言清晰。

改为EFFECTS:\result = max_credit() [min_distance()];

 后置条件不好的写法2

直接将算法写到了EFFECTS。后置条件应该描述结果而不是实现过程,实现过程应该由程序员自己决定。

后置条件不好的写法3

代码中存在IO操作在后置条件中却没有写明。IO操作本身也应该是属于后置条件的范畴,应该在后置条件中加入

后置条件不好的写法4

该方法使用了锁机制来保证方法的线程安全性,后置条件应该说明要锁住哪些对象。

@THREAD_EFFECTS :\locked (cnt);

后置条件不好的写法5

途中MAXNUM是方法内定义的变量,不应该在后置条件中使用。方法内的变量属于如何实现的范畴,与规格无关。

 四、功能bug与规格bug关系分析

总体来说,我个人的功能bug和规格bug聚合度不高。功能bug有两个是没有注意在issue中的补充要求。还有是自己对流量计算方法的错误以及调用迭代器时出错。

五、设计规格撰写规格时的体会

在第九次作业中,由于之前已经完成了程序的大部分设计,因此工作时给已实现了的方法加上JSF。添加JSF时,我发现

(1)自己某些方法功能过多,导致JSF不好描述

(2)方法与方法之间的依赖度过高

后面的作业中,在实现新的功能需要添加新类、方法时,我会先完成Overview和规格的设计,再去进行实现。这样的设计流程,虽然在功能上差别不大,但是程序的安全性(可控制)与可拓展性有了显著的提升。撰写规格时,我主要的考虑顺序是:

(1)需要实现什么功能(EFFECTS)

(2)方法的线程安全性

(3)实现功能需要提供哪些参数(REQUIRES)

(4)在实现过程中改变的什么数据(MODIFIES)

原文地址:https://www.cnblogs.com/mbra/p/9094445.html

时间: 2024-07-31 05:39:17

面向对象课程第三次随笔的相关文章

C#面向对象课程 类与对象,方法重载,类的静态成员,命名空间和类库12月22日

一.类是面向对象课程的基本单元. 在类的里面可以直接定义字段(成员变量),也可以定义方法(函数). 例如: 这里的public是修饰符,修饰符的作用是用来限定它的可访问范围. 两个同范围(同一个类中,或者父子类中)两个同名但参数类型不同或者参数个数不同的方法互相间构成重载关系. 两个构成重载关系的方法(函数)必须满足以下条件: (1)方法(函数)名相同: (2)参数类型不同,或参数个数不同.这里需要注意的是,函数返回值类型的不同不是函数重载的判断条件. 二.静态成员 属性.方法和字段等成员是对象

第三次随笔--安装虚拟机及学习linux系统初体验

第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟机的安装,安装过程可谓一帆风顺,一马平川,并没有遇到什么问题. ·成功安装之后打开虚拟机 对就是这个样子,略微有一点激动,还好,在自己的电脑上运行并不会有太多的卡顿 ·参考老师的学习方法通过实践学习Linux 基础入门(新版)课程,掌握常用的Linux命令,重点是3/4/5/6/7/8节. 虚拟机安

【Java面向对象基础(三)】面向对象思想

[喵"的Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinking in Java中提到“Everything is an object”,即万物皆对象.这里的“对象”指的是任何实体或者任何可以当作实体看待的“虚幻的事物”.比如现实中的人(男人.女人.老人.小孩而...).动物(大象.狮子.猴子...).桌子.凳子.汽车.ATM机等等,也可以使看不见摸不着的空气(氧气.二氧化碳.氮气

JAVA学习--面向对象的特征三:多态性

* 面向对象的特征三:多态性  * 1.多态性指的是什么?多态性,可以理解为一个事物的多种表型形态.  *   1)方法的重载与重写  2)子类对象的多态性  *  * 2.子类对象的多态性使用的前提:①要有类的继承②要有子类对父类方法的重写  *  * 3.程序运行分为编译状态和运行状态.  *   对于多态性来说,编译时,"看左边",将此引用变量理解为父类的类型  *   运行时,"看右边",关注于真正对象的实体:子类的对象.那么执行的方法就是子类重写的.  *

IT行业卓越的目标与绩效管理高级研讨课程大纲 (三天论坛版)

IT行业卓越的目标与绩效管理高级研讨课程大纲 (三天论坛版) (如欲公开以下内容,或者需对大纲作专业化调整,请与本人联系确认) [课程关键词]绩效管理循环.工作计划.MBO\KPI\BSC.企业文化 [课程时长]3天(估计每天6.5小时) [课程对象]企业领导者,部门经理.其他各级经理和主管 [课程形式] 丰富新鲜的案例分析,深刻的问题解决建议,将与授课紧密结合. 授课现场需准备投影仪,电源拖板,如再配白板和白板水笔更好. 采用了电影剪辑和情境片断等多媒体培训技术,力求既紧紧扣住培训要点  又营

C语言基础课程 第三课 ADB(Android Debug Bridge)的使用

?? C语言基础课程 第三课 ADB(Android Debug Bridge)的使用 由于前面已经发布过Linux的博客了 基础班将Linux基础命令就不单独发表博客了,本节课主要就是利用adb连接手机进行一个Linux基本命令的复习.而且熟悉手机的底层运作,不用界面操作照样也能安装软件  卸载软件与pc传数据 目  录 1       将android设备通过USB连接到PC. 3 2       查看当前设备... 3 3       进入设备shell. 4 4       执行shel

金融行业卓越的目标与绩效管理高级研讨课程大纲(三天论坛版)

金融行业卓越的目标与绩效管理高级研讨课程大纲 (三天论坛版) (如欲公开以下内容,或者需对大纲作专业化调整,请与本人联系确认) [课程关键词]绩效管理循环.工作计划.MBO\KPI\BSC.企业文化 [课程时长]3天(估计每天6.5小时) [课程对象]企业领导者,部门经理.其他各级经理和主管 [课程形式] 丰富新鲜的案例分析,深刻的问题解决建议,将与授课紧密结合. 授课现场需准备投影仪,电源拖板,如再配白板和白板水笔更好. 采用了电影剪辑和情境片断等多媒体培训技术,力求既紧紧扣住培训要点  又营

交通行业卓越的目标与绩效管理高级研讨课程大纲(三天实战版)

交通行业卓越的目标与绩效管理高级研讨课程大纲 (三天实战版) (如欲公开以下内容,或者需对大纲作专业化调整,请与本人联系确认) [课程关键词]绩效管理循环.工作计划.MBO\KPI\BSC.企业文化 [课程时长]3天(估计每天6.5小时) [课程对象]企业领导者,部门经理.其他各级经理和主管 [课程形式] 演讲,问题讨论和个案分析. 问题讨论和个案分析将与授课紧密结合. 授课现场需准备投影仪,电源拖板,学员用胶贴纸,铅笔和练习纸,如再配白板和白板水笔更好. 采用了电影剪辑和情境片断等多媒体培训技

房地产行业卓越的目标与绩效管理高级研讨课程大纲 (三天论坛版)

房地产行业卓越的目标与绩效管理高级研讨课程大纲 (三天论坛版) (如欲公开以下内容,或者需对大纲作专业化调整,请与本人联系确认) [课程关键词]绩效管理循环.工作计划.MBO\KPI\BSC.企业文化 [课程时长]3天(估计每天6.5小时) [课程对象]企业领导者,部门经理.其他各级经理和主管 [课程形式] 丰富新鲜的案例分析,深刻的问题解决建议,将与授课紧密结合. 授课现场需准备投影仪,电源拖板,如再配白板和白板水笔更好. 采用了电影剪辑和情境片断等多媒体培训技术,力求既紧紧扣住培训要点  又