分享 实现项目各阶段工作的理解

vbgfnd · 2015年04月24日 · 最后由 billy 回复于 2015年04月26日 · 2112 次阅读

开发项目过程描述:

  1. 首先我先想到了一个功能需求:当自动化跑完案例的时候,对于每个失败的案例,PC 都能记录下当时失败后的环境信息。这样我就不需要调试失败的自动化案例,能直接 轻松分析所有自动化失败案例为什么失败。、 我人类的思维 (人的思维就是他自己动手去处理该如何做的思维): 当案例失败时-》开始动手记录下他当时的环境信息-》保存-》继续执行案例。
  2. 然后我决定设计,但是我考虑到计算机能做的和人类现实世界能做的不完全一样,计算机存在很多局限性。
  3. 比如:如果人类要保存数据,可以有几乎无穷的材料 (如纸张,硬盘) 进行记录,可以记录非常多数据;但是计算机的空间是有限的,不能无穷尽。比如如果我手工记录环境信息,我记录过程中晕倒了,醒来就接着记录(数据不会在记录的过程中丢失,用计算机模拟相当于,每次运行任何数据都直接写入硬盘保存,不会再内存中缓存任何数据);但是计算机如果在记录数据中断电了,数据就会丢失(计算机的机制导致局限性); 正是因为计算机有这么多的局限,和人类手工作业的现实世界不一样,为了保证计算机能正常的完成我的原始功能,我还要在设计时新加入一些逻辑机制,来控制计算机运行的风险。为此我从设计的角度又有了新的需求:要易维护、易差错、防止内存溢出。。。。。。。
  4. 然后我开始设计流程图,过程中同时考虑设计需求和原始需求。
  5. 然后我开始编码,过程中考虑编码的可读性,和流程图逻辑的描述
  6. 然后我开始测试,理想中是覆盖所有代码上的输入输出逻辑,没有开发出多余的未意料过的功能,没少开发功能。
  7. 然后项目结束,完美!

对需求阶段的理解:

  1. 需求分为 2 类,一类是真正人类需要的功能需求,是人用人类思维,用现实操作思维想到的功能需求。一类是设计时因为要考虑到计算机实现等诸多局限性,为了能容错,保护计算机能正常运作而想到的设计需求。
  2. 设计需求一共分为以下几类来源:

a) 程序的软硬件环境局限性:如

i. 内存容量不足了怎么办, ii. 内存条坏了,接触不良了,怎么办 iii. 硬盘坏道了,怎么办 iv. Intel 芯片 bug 了,怎么办 v. 其他软件干扰,怎么办

b) 与其协作完成功能的关联模块局限性:

i. 如程序需与服务器交互,他有 bug 怎么办

c) 开发者添加的约束:

i. 要易维护,易查错 ii. 要易复用易扩展 iii. 要易读懂代码易理解

d) 引用的开发技术的局限:

i. Sql 技术实现,但是容易引出 sql 注入漏洞,要在编码注意 ii. Sql 的接口有 bug,怎么办 iii. C 语言开发有他的语法机制约束:函数是层层调用等机制,组织代码考虑易扩展时要先考虑 C 的机制

e) 其他:

i. 用的要爽!要炫酷!要拽飞天!

  1. 然后针对人的需求,我脑子里想到了所有操作的画面,为了沟通交流,我画出人类思维下的操作逻辑图
  2. 然后针对计算机实现局限性引入的需求,我分析需要重点考虑哪些点,其他的点就算出了事故也不会导致程序从此以后再也不能用了,就规避或者不考虑。

对设计的理解:

  1. 为了满足人类的需求,和设计的需求,我综合考虑后才画出程序的流程图
  2. 为了组织编码和一些设计需求 (易复用,易扩展,易读),我规划出了所有函数,类对象,还规划出了代码中可能用到的所有的名字的规范。以及互相的关系

对编码的理解:

  1. 我按照设计阶段流程图,写出逻辑代码,按照类对象的规定创建类对象,按照名称规范给变量,对象命名。我考虑语法是否写对
  2. 我给代码加注释,解释思路,我考虑十年后能看懂代码的可维护性

对测试的理解:

  1. 测试的思路就 4 个方面:

a) 覆盖思维,代码里所有执行路径,都用输入输出覆盖验证一遍(理想化) b) 有无遗漏,有没有少做什么功能 c) 有无多做,有没有做出没想要的功能

  1. 需求阶段我检查人类思维下的操作逻辑图是否全面,有无遗漏
  2. 设计阶段我检查设计阶段的流程图是否真的覆盖了所有需求,是否遗漏或多了不必要的需求
  3. 编码阶段

a) 我根据设计,需求确定测试重点。如果实现覆盖思维的方法是黑盒测试的话。我画出功能模块之间的交互关系图。针对每个功能模块,我画出各个程序协作的交互图。针对测试重点和逻辑很复杂的点我研究程序流程图。然后决定哪些地方创建输入输出的来覆盖测试。 b) 然后写测试案例

  1. 测试阶段自动化测试和手工测试,修改 bug。
  2. 结束!

对于复杂项目的补充

  1. 天啊,我发现我要做的功能特别多,这个时候我在需求阶段先画出各个功能模块关系,然后再按照上述思路做
  2. 编码阶段的时候,我先吧每个功能模块的独立逻辑编写出来,每个模块之间需交互的部分后续统一编写
  3. 大项目又做完了!思密达!

以上是个人自己思考和总结的开发项目的思路,打算后续自己做个人项目就按照这个流程走,拿出来与大家一起讨论和分享 (这样才能更快成长)

自己本身算是个新手,所以思考的东西也难免有浅薄的地方,也不知道自己按照这个流程走到底对不对,希望各位大大能指教一二,指出我哪里思考的不足,和一些做项目的新思路 3q 思密达 (^__^)

建议楼主把文本贴出来,而不是截图,否则阅读比较困难。

#1 楼 @kgen 啊。。。我原本以为图片的形式更清晰一些= = !!!,贴文本的话 word 上的这些格式就乱了。。。

#2 楼 @vbgfnd 贴文本,排好版

#2 楼 @vbgfnd 正好可以学习并联系一下 Markdown。很爽很强大,谁用谁知道啊,呵呵

#4 楼 @diguage 谢谢看到很多人都推荐这个了,感谢!

#2 楼 @vbgfnd RubyChina 支持 Markdown 正文的,会很清晰的

#7 楼 @kgen 谢谢我会研究的,但不知道在做项目思路上我有什么不足吗?

@Rei:求助,这个帖子哪里不符合要求,怎么到 no point 节点了?

#9 楼 @vbgfnd 不是我移动的,但我估计是贴图片不贴文本的问题。

#10 楼 @rei 谢谢提醒,那等我研究过 markdown 改好再请管理员处理吧= = 。。。。

#10 楼 @rei 您好,我的文章格式 ok 了,请把我的帖子恢复到分享节点吧。3q

#13 楼 @rei 3q,恢复的这么快~你每天都在 ruby 论坛工作吗?

#14 楼 @vbgfnd 我经常刷 Ruby China。我对现在排版还有些疑问,例如用了很多引用格式,引用的语义是这段话不是自己写的。不过目前至少能阅读了,这个排版你喜欢就好。

说实话,没看懂。

#15 楼 @rei 我觉得楼主可能把引用符号用于缩进的需求了。

#15 楼 @rei 我刚学的 markdown,一些功能不会用,还有所有的文字都是我自己写的~

#15 楼 @rei 我只是想表达 1‘2’3 点观点,并且有缩进~

我只想说,你要考虑得太多就啥事也做不成。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号