如何写出好的软件

来源:互联网 发布:华为手表软件 编辑:程序博客网 时间:2024/04/28 19:01

1、需求分析
 需求分析阶段掌握好5个要素,对于一个新的业务需要,需要搞清楚一下最基本也是最关键的几点:
 1.1 输入是什么
 1.2 输出是什么
 1.3 依赖关系(包括内部模块、调用和外部程序的依赖)
 1.4 Validation/Check 的对象和过程
 1.5 异常/错误处理
 1.6 要实现的功能点描述
 
2、设计文档
 设计文档阶段最为重要的是描述清楚实现细节,主要体现在如下两点:
 2.1 系统框架设计(Class diagram)
     类图设计时,尽量从面向对象的角度去设计,不要觉得功能分得太细,类太多,就随意把类合并,这样对以后软件的编码和功能的增加会带来很多不好的结果。每个类和方法都要有意义,意义模糊(如方法的参数都没写)的类图请不要设计,这种类图反而会使其他人糊涂。不太清楚的方法可以先不写,但重要的方法一定要在类图的写出。
 按不同功能或者属性(如GUI显示和后台数据处理)来划分类,尽量减少类之间的耦合。对于一个大的系统、或交互比较多的系统、或基于消息的系统,建议多用事件来封装,通过消息传递数据,或用COMMAND模式或Observer模式来实现。
 
        2.2 系统状态变化和流程(Sequence diagram & State diagram) 
 对状态比较复杂的系统,画一个状态图表,分析出各状态之间转换的条件和过程。对每种状态的改变画出sequence diagram是十分必要的。
 
 从笔者的经验来看,制作出好的class diagram和详细的sequence diagram对加深软件系统的需求和实现有非常大的帮助,对软件编码阶段是有极大帮助的。

3、测试用例
 测试用例一定要在编码前就开始设计,并且设计出大部分的用例,这样编码阶段可以避免一些逻辑错误。并且可以发现部分设计阶段的一些缺陷,不是等编码的才发现。

4、编码
   "编码要严格按照规范,要有必要的注释", 这都是套话了,但是还是得说!确实很重要,不仅是对自己负责,也是对别人负责。对以前代码的修改要有记录,要写清楚为什么目的修改。对于自己特别实现的算法或处理,注释一定要详细,要解释清楚你是如何想的。对自己的代码要经常refactor,用更好的实现代替。

5、测试
   单元测试是必须的,特别是负责计算逻辑的代码。
   功能测试最好能做成自动的,每天定时跑。 
   如果是基于消息通讯的C/S程序,建议编写一套Mock程序来作为测试的Server或Client端,尽量不要直接用实际的Server或Client做为测试对象,那不容易DEBUG,而且一些边界测试条件没法进行测试。

GUI软件开发中的注意点:
1. 了解清楚业务, 尽量了解清楚每个业务的细节
   了解业务的细节有助与你在设计实现模块时,用合适的技术来满足不同的要求。
在没有了解清楚业务细节的情况下开发出来的模块经常会失败或难于维护。
2. 严格用MVC架构来实现,数据的处理和界面的逻辑分开处理。为每个数据模块建一个datastore, 为界面上的每个component在datastore中建一个对于的数据域来存放状态和数据,但要注意datastore和component之间的同步。
3. I18N要在开发一开始就考虑,定好实现方法和接口。
4. 数据处理不要放在界面模块中做。

 

原创粉丝点击