文档章节

711总结

zbbmaster
 zbbmaster
发布于 2012/07/11 23:22
字数 1859
阅读 40
收藏 0
在最近的软件开发中发现几个比较影响工作效率和质量的问题,写下来做个总结。

1  缺乏沟通的软件开发

   在开发后台系统CMS的时候 ,课程管理中有一个关于权限管理的功能模块。当时李工提出这个需求后,我们进行了讨论,内容是权限的划分和权限的控制。哪些权限应该分配给产品主管,哪些权限应该分配给产品经理,哪些权限分配给产品编辑等等。在讨论中有一个问题是当课程发布或者上线的时候,主管可以对课程进行修改,然后我就在脑海里记下了:主管可以修改发布或者上线后的课程。 当时我的理解是权限由三部分组成:操作对象(课程)、角色(主管、经理、编辑等)、操作对象的状态(草稿、发布、审核上线、上线等)。 后来李工整理出来了一张权限表,里面清楚的划分出了每一个角色对应的权限。我拿到表之后,看了一会儿,然后就在脑海里面想出了实现思路,权限的控制放到权限层来进行,这个我比较清楚,而不是业务层来实现。 一般权限的判断都是由两部分组成 一个是操作对象,一个是角色或者用户。归纳起来就是 哪个角色可以操作什么。现在以我的理解变成了这样:哪个角色可以在什么状态下操作什么,貌似权限是由3部分组成的,当时隐约的感觉到这块怪怪的。在实现的过程中,果然出了问题,实现的结果是权限层里面出现了业务层的内容,根据我当时的理解权限层里面除了判断操作对象和角色,那么还要加上对课程的状态判断,这样才能准确的判断出这个用户是否有权限。结果就在权限层里面加入了课程状态的获取和判断等业务代码。所以就出现了权限层里面出现了业务代码。当时我总觉的这里有点代码入侵的感觉,由于当时时间紧迫(很大原因是自己思维定式了),我也没仔细想这个问题。再过了2天后,陈爽也要给精彩视频加权限,权限的控制类似课程,那么就要使用我写的这种模式。结果在加入的时候,我当时也想知道我的这种做法是否正确,所以就叫王工给把把关,我给他说了我的实现方式,他看了之后,第一反应就是:权限层里面加入了业务层的东西,不好。然后我就给他讲了课程管理中权限控制的细节和实现的思路。他听了之后说:”当课程需要修改时不应该在发布或者上线状态时修改,应该退回到草稿状态进行修改。然后再发布和上线,这样业务流程比较合理,对上线的课程进行修改你把它看做一个动作,但是这里是2个动作:1 修改课程状态为草稿状态;2 修改课程。这里应该进行拆分”。我也想了一下,发现这个流程比较合理,自己之前想的那个流程忽略了软件设计里面单一职责的规则了。后来对这块进行了重新设计和开发,结果花费了一些额外的时间,本来如果在前期的设计和讨论中如果进行深入沟通,
或者在实现完一小部分后找王工沟通下,那么就不需要这次的修改了,真的是又一次浪费了时间。
      在去年做软件的时候,我才对沟通重视起来,而且发现面对面的沟通真的是最有效的沟通方式(以前半信半疑)。沟通确实能让我们少走一些弯路,而且能开阔你的思维和思路,最主要的是能把问题说清楚,如果你仔细想想以前做过的事情,发现好多问题就是没沟通好才造成不必要的重复或者不必要的误会、错误。

2 功能实现之后缺乏不够仔细的测试

       在最近的开发中,发现开发完一个功能后只是进行了简单的测试 ,而没有进行全面、仔细的测试。没有对该功能的所有异常和正常情况进行测试,结果在测试环境上测试的时候频频出现简单的问题。而且有的问题在这个版本中修复好了,在下一个版本中可能又复现了。改动的时候没有全面的注意到影响的地方,改好之后测试用例想的少。
       所以我想在修改的时候,写下要进行测试的测试用例。比如修改重点地方时,哪些页面会涉及到这部分的修改,
那么就需要记下了这些页面的哪些地方需要重新测试。测试用例可以写简单一点,但是一定要全面。

3 思维定式的无奈

       在开发中不知不觉发现自己思维定式, 也不知道为什么就这么形成了,对一些功能的实现习惯用自己熟悉的方法实现,而没有更多的方法可以参考或者借鉴。实现某一个功能都是凭借当前的思维和经验来实现,或者会出现前几天实现了,感觉还行,也觉得非常合理。但是过了几天再次看这块儿就发现有问题,而且有时候会突然觉得当时是怎么想的,为什么会这么想,并发现当时的想法明显不对。这个可能是短期的思维定式。
在对功能的测试过程中 ,发现也形成了思维定式,在测试中测试的出发的局限在功能的实现和正确流程的测试,而没有更多的异常测试和用户体验方面的思考。也许这就是人们常说的:当局者迷,旁观者清。
       后来想想造成思维定式的原因可能是:缺乏沟通,缺乏那种对软件功能模块从设计到实现,测试,到最后使用的沟通;经验不够是不是也是一方面原因呢,也许是看技术方面的东西少了;每天精力不够可能对短期的思维定式有影响。
       对目前自己的思维定式只是发现阶段,没有具体的解决方法。

       上面这几个问题是自己在工作比较突出的问题,在这里写下来看看今后会不会有所改善,如果改善了说明确实总结了,如果未改善说明问题更严重
 ,最起码说明上一级出了问题,即总结本身就有问题。
       时间浪费不起,既来之,则安之。
 

© 著作权归作者所有

共有 人打赏支持
zbbmaster
粉丝 55
博文 67
码字总数 38770
作品 0
西安
高级程序员
加载中

评论(1)

zbbmaster
zbbmaster
写的不错
Android MediaMuxer录像(支持G711音频)

Android平台的MediaMuxer是个非常好的录像库,它能将H.264视频+AAC音频存储成.mp4格式的文件,而且稳定性、同步效果都非常好。 MediaMuxer在安卓版的EasyPlayer和EasyPusher都用到了该方法来...

jyt0551
2017/05/27
0
0
AAC转码工具库--EasyAACEncoder

EasyAACEncoder 是EasyDarwin开源流媒体服务团队整理、开发的一款音频转码到AAC的工具库,目前支持G711a/G711u/G726/PCM等音频格式的转码,跨平台,支持Windows/Linux/arm....

匿名
2016/01/22
516
0
求助大神,打算做个教务信息查询,可是POST返回的数据和浏览器的不一致

求助大神,打算做个教务信息查询,可是POST返回的数据和浏览器的不一致 Android虚拟机获取到的返回的部分信息为 10-15 11:27:29.701: V/test(401): 10-15 11:27:29.711: V/test(401): 10-15 ...

wuguohao
2013/10/16
296
0
iOS9 HTTP 不能正常使用的解决办法

今天升级Xcode 7.0 bata发现网络访问失败。 输出错误信息 The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. Google......

TomatosX
2015/09/17
104
0
请教安卓sip软电话相关的问题

参考sipdroid开发了个android的sip软电话,注册跟711u,711a拨打正常,现在想在3G环境下使用于是采用729a,对sipdroid熟悉或熟悉sip软电话请指教sip软电话开发最佳方案,编解码用什么最好?Q...

Geekit
2013/08/27
507
0

没有更多内容

加载失败,请刷新页面

加载更多

Java GC机制详解

垃圾收集 Garbage Collection 通常被称为“GC”,本文详细讲述Java垃圾回收机制。 导读: 1、什么是GC 2、GC常用算法 3、垃圾收集器 4、finalize()方法详解 5、总结--根据GC原理来优化代码 ...

小刀爱编程
18分钟前
1
0
ORACEL学习--理解over()函数

二、理解over()函数 1.1、两个order by的执行时机 分析函数是在整个sql查询结束后(sql语句中的order by的执行比较特殊)再进行的操作, 也就是说sql语句中的order by也会影响分析函数的执行结果...

spinachgit
20分钟前
1
0
抽象语法树

import asttree = ast.parse('def hello_word(): print("hello world!")')def hell_word(): print(1)print(ast.dump(tree)) 语法树 可以基于这个实现另外一种编程语言...

colin_86
21分钟前
1
0
Akka查询设备组《fourteen》译

加入以下依赖到项目中: 介绍: 到目前为止,我们看到的会话模式很简单,因为它们要求Actor保持很少或没有状态。 特别: 设备actor返回一个读数,不需要更改状态。 记录温度,更新单个字段。...

woshixin
28分钟前
1
0
wait、notify、notifyAll 的用法

wait()、notify()、notifyAll()是三个定义在Object类里的方法,用来控制线程的状态。这三个方法最终调用的都是jvm的native方法, 随着jvm运行平台的不同可能有些许差异。 wait(): 使持有该对...

noob_fly
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部