【软件开发】Head First 软件开发

1、不可采用一步到位式开发,应采取多个开发循环周期,每个循环包括需求、设计、编码、测试,每个循环都应有产品与客户进行沟通交流,以确定方向。

2、不断与客户交流,确认和细化客户需求。将客户需求和使用情节以其易于理解的方式进行逐条展现,双方进行确定,消除存在的假设,以免造成后续开发的风险。根据客户需求,估计开发耗时,合理确定完成所有需求的耗时。

3、与客户一起进行优先级的制定,合理规划里程碑构建版本所包含的功能内容,里程碑构建版本应尽早实现,然后不断迭代增加新功能。在确定优先级之后,根据优先级和每个需求的所需开发时间来进行开发循环的制定。

4、使用白板以良好的跟踪项目的工作和进度,观察各个任务标签是处于进行中还是已完成的状态,优先级、预估时间、负责开发的人等等信息。同时,跟踪整个项目的进展情况,为意想不到的开发任务预留合理的时间。

5、进行良好的设计,遵循单一责任原则,每一个对象都应该集中在实现与其相关的单一的责任上。同时也应该遵守不自我重复原则,避免通过把共同事物抽取或分离出来,以及把它们置于同一地方来复制代码。合理使用白板,进行项目任务分工和进度跟踪。

6、使用版本控制来跟踪软件的修改并分发给团队成员。使用标记Tags去跟踪项目的里程碑版本(某个开发循环的结束、发布版本、漏洞修复版本等等)。标记是对某一个版本的代码的快照,代码不可以提交到标记上。另外,使用分支branches去维护代码的独立副本,但只在绝对有必要的情况下开设分支。为软件增加新功能的任务,主要放在主干当中。当某一个版本发布之后,需要对该版本的代码进行持续维护和漏洞修复,但又不能影响主干继续开发新的功能,所以可将这个发布的版本再建里一个分支,进行漏洞修复。分支在未来的某一天将最终被丢弃,分支当中修复的漏洞需要合并到主干代码当中。

7、运用自动化构建工具,比如makefile使用的Makefile脚本,java构建工具ant使用的build.xml。

8、测试主要包括三种类型。黑箱测试:站在用户角度,进行功能性测试,关心程序的输入和输出,状态转换,边界案例和缓冲溢出错误等等。灰箱测试:除了做一些功能性的测试,还会进入一部分程序中,比如查询当前数据库内容等。白箱测试:完全了解代码结构和逻辑,针对代码情况做测试。JUnit可以提供Java程序的自动化测试。运用持续集成工具CI,自动管理代码提交和版本控制,程序构建和自动化测试,并通过邮件告知构建和测试情况,并生成网页以供查询。CruiseControl就是一个典型的CI工具。同时,CI生成的报告也会包含测试覆盖率的参数。

9、测试驱动开发,先根据要完成的某项功能编写测试代码,然后实现最简单的程序代码以使得测试代码可以正常运行。不断依此重复,直到实现整个程序的所有功能。可以使用Mock模拟对象来提供测试所需要的各种对象的变化。

10、在结束开发循环之时,要合理进行系统测试,并记录下发现的错误,生成缺陷单,标志为待修复、已修复、已验证、已关闭、重新打开等,以方便查看错误处理和修复情况。缺陷单应详细记录错误问题,复现方法,严重程度,优先级以及预期正确的效果等。开源的错误记录软件有Bugzilla和Mantis。

此条目发表在软件开发分类目录,贴了标签。将固定链接加入收藏夹。

1 则回应给 【软件开发】Head First 软件开发

  1. 丢丢说:

    老公的博客已经全部阅毕~ :mrgreen: 😀

发表评论

电子邮件地址不会被公开。 必填项已用*标注