记录下一点自己的心得体会,分享给大家,有不足之处,望指教。
第一阶段:假想阶段
本阶段是整个软件开发的开始阶段,输入可以是为了提高工作效率的某个好的想法或者是公司领导为了帮助管理发出的命令。输出就是业务需求文档,英文称为Business Requirement Document。这个文档的文字描述的抽象层次很高,比如业务人员说我需要一个软件,能够实现无纸化办公,能够管理合同,管理客户信息,能够在登录时选择角色,选择显示语言,登录成功后自动列出登录人的当前要做的任务项,等等。这个文档主要来自业务人员,所以主要完成业务概念的描述。
第二阶段:需求开发阶段
本阶段的主要工作是基于业务需求文档进一步分析业务人员的真实需求,输入是假想阶段的业务需求文档,输出是功能说明文档,英文称为Funtion Specification。功能说明文档与业务需求文档的主要区别是业务需求文档主要描述业务概念,而功能说明描述的是信息技术概念,此文档的主要功能是完成从业务概念到信息技术概念的匹配和对齐,在保证实现业务人员真实想法的同时还要结合信息技术保证系统功能的逻辑合理性和优化性。可以说通常业务需求文档描述的一个点到这里都会扩展成为一个面。作者认为本阶段的工作至关重要,这个阶段的工作输出会直接影响到下面的设计阶段和实现阶段的工作。所以本阶段需要很多重要角色的参与,之前提到过的有软件产品设计师,软件开发架构师,软件开发负责人,软件测试负责人和业务负责人。这些角色要共同齐心合力完成一份高质量的功能说明文档。
第三阶段:设计阶段
本阶段的输入是功能说明文档,输出是软件架构设计文档,硬件架构设计文档,测试计划文档。这三份文档可以同时进行,值得一提的是软件架构设计和硬件架构设计通常是同时考虑完成的,没有绝对的谁先完成谁后完成,并且都可以再细分。硬件设计可以分为概要设计和详细设计,概要设计通常要描述出有几个环境,每个环境有几台服务器,使用的是虚拟服务器还是物理服务器,每个服务器的作用,分别在哪个级别的安全区域,防火墙分布,负载均衡设备的分布,数据库产品信息,是单实例还是集群;详细设计除了要描述出这些信息还要描述出每台服务器的硬件配置信息,地址,开放的端口,HTTP请求或者其他类型的请求的走向,是单方向还是双方向,每台服务器上运行的操作系统,应用服务器的产品信息和版本信息,防火墙的设置,负载均衡设备的设置,数据库实例名称,软件的所有组件在每个应用服务器上的分布信息等。
软件设计可以分为概要设计和详细设计,概要设计通常要描述出有几个主要组成部分,每个部分的存在形式和功能。举个简单的例子,有这样一个系统,它包括业务子系统,存储子系统,打印子系统,银行对接子系统,政府对接子系统;存在的形式可能是Java开发的独立系统,操作硬件设备的服务接口,外部机构官方提供的对外公开的Web Service接口,外部机构官方提供的对外公开的官网。详细设计通常要描述出各个子系统的对接形式,通信协议,权限控制。比如是基于TCP/IP协议的数据库层面的对接,还是基于TCP/IP协议的socket形式的对接,还是基于HTTP协议的web service形式的对接;当然如果对方的存在形式不容易实现对接可以在子系统内部做适当的转换处理,比如说对方是公开出来的网站。对于每个子系统的内部通常要描述出权限控制机制,系统的分解和集成机制,实现技术的组成;权限控制要结合具体的系统分析判断;系统的分解和集成通常要结合实现技术考虑,模块和层次的划分都有成熟的可供参考的原则和解决方案;值得一提的是展现层的设计,输出应该包括动态形式的原型系统和静态形式的文档,前者的重点是软件的行为定义,后者的重点是软件的业务逻辑定义;实现技术部分要把所有用到的运行时环境,编程语言,第三方类库描述清楚。作者不主张在这个阶段对类和成员的定义已经类之间的调用做出规定,这个层次的问题留给实现阶段来考虑。所以在本阶段作者更多地是关注架构模式和框架模式的考虑,对于设计模式的考虑则留给实现阶段。
测试计划分为功能测试计划,性能测试计划,安全测试计划。通常要描述出测试案例,测试环境的组建,测试工具,测试技术。每个测试的话题都可以作为一个专业的方向单独拿出来描述,限于篇幅,这里就不多说了。
第四阶段:实现阶段
如果设计阶段的工作做得足够充分,那么这个阶段的工作将变得容易得多。这个阶段的输入是设计文档。输出是源代码和构建出来的软件安装包。源代码的书写必须遵循统一的规范,必须遵循设计阶段定义的统一的架构,必须达到规定的安全标准,用合理的方式实现设计文档所设计的功能。
第五阶段:质量检查阶段
这个阶段的输入是准备测试的系统和测试案例。输出是缺陷记录和缺陷报告。
第六阶段:部署阶段
这个阶段的输入是可供部署的软件安装包和部署文档。输出是可供用户使用的业务系统,备份和恢复计划。
总结:
我们可以这样看待一个业务软件,对于一个业务软件有业务线,软件线,硬件线三条线,业务想法由软件来实现,软件需要运行在硬件上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)