软件生命周期分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件生命周期分析
(1)软件项目之需求分析
需求分析不要像侦探推理那样从蛛丝马迹着手,而是应该先了解宏观的问题,
再了解细节问题。
首先项目名称、项目背景、项目的开发目标和应用目标项目的范围(包含的业务),项目开发的假定和约束,例如经费限制、开发期限等,大概的说就是建立合作意向后,我们首先会对客户要求有详尽的了解,准确知道客户需求、客户的商业模式和业务流程,并结合自身的经验,为客户提出改进建议。
在此期间我们应很好地进行需求调研:
主要目的:获取客户的需求信息,经过分析后要有相应的文档说明书。需求调研相当重要,做好需求调研时获取正确的软件需求的前提,正确的软件需求是项目成果的关键。
大致将软件需求分三个层次:
1.业务需求
2.用户需求
3.功能需求和非功能需求
1.业务需求反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
2.用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。
3.功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
4.非功能性的需求——描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和约束,操作界面的具体细节和构造上的限制。
(2)软件项目之设计
设计是根据需求调研的结果,对产品的技术实现有粗到细进行设计,而根据设计粒度和目的的不同可以将设计分为概要设计、详细设计等阶段以便于管理和确保质量。
概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
概要设计阶段
一般在概要设计这个阶段,主要集中于划分模块、分配任务、定义调用关系,模块间的接口与传参在这个阶段要定得十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。概要设计一般不是一次就能做到位,而是反复地进行结构调整。典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。
概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。以概要设计文档为依据,各个模块的详细设计就可以并行展开了。
详细设计阶段
这个阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。
详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。
概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。
概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。
概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。
(3)软件项目之编码
有了上述两个阶段完成了,有了相应的需求文档,以及设计文档,Now,接下来对Coding人员相对来说就相对Easy了,数据约束神马的都有了,业务逻辑神马的也有了,根据相要求完成相应模块,按标准完成任务。
(4)软件项目之测试
功能测试用户界面测试性能测试压力测试容量测试配置测试安装测试
(5)软件项目之维护
项目中的维护任务主要指为保障信息系统正常运行提供支持服务,配合业务变更对软件系统进行维护等,包括软件功能变更等开发维护、日常运维支持和一些临时性工作需求。根据风险控制等管理需要,将维护工作分为以下五类,不同的工作类别采用不同的管理手段。
(1)新增功能。在业务模块中添加新的业务功能或操作。
(2)功能变更。对已上线使用的业务功能进行修改、完善和功能扩充或变更、下线操作。以上两类一般需要修改源代码,明确需求后,经过严格的变更影响分析,按照开发流程实施,经过测试后上线。
(3)辅助性操作。分为数据相关和非数据相关两个部分,不涉及代码的修改,用于支持用户更好地开展工作或者进行开发的辅助工作。数据相关工作主要是配合用户的临时需求进行数据统计、回溯等工作;非数据相关工作包括用户账户开设、培训、应用软件安装等事务性工作。
(4)常规操作。周期性的系统运维工作,包括日常例行检查、日常维护操作等。
(5)应急处理。对各类因系统故障、软件功能缺陷等突发事件处理和应对,确保系统尽快提供服务,避免对业务的开展造成影响。
软件外包流程
一个完整的软件外包项目流程包括:需求分析、总体设计、详细设计、开发编程、测试分析、系统整合及现场支持。