软件的生命周期详细(转载)
1.软件立项与合同:
a) 软件项目的来源一般有两个渠道,一是自主研发的“非订单软件”,二是为用户开发的“订单软件”。前者需要立项,后者需要签订合同。所以“立项”和“合同”是IT企业软件项目(或产品)的两个源头。一旦立项或者签订合同成功,企业领导或软件管理部门就要下达“任务书”
b) 相关文档:《立项建议书》 《合同》、《任务书》
c) 该步骤也可叫“项目可行性分析”,可行性分析是立项的前提,立项时可行性分析的结果。对于软件企业,一般不叫项目可行性分析,只有在学校、机关、科研所等单位,才叫项目可行性分析。
2.软件需求
a) 需求分析的输入时软件《合同》或《立项建议书》,输出《用户需求报告》/《需求规格说明书》。从根本上讲,软件需求就是为了解决现实世界中的特定问题,软件必须展现的属性。软件需求的属性主要是可验证性、优先级和唯一性。
b) 需求来源:系统目的、行业知识、软件设众、运行环境、组织环境;
需求角色:用户、客户、市场分析人员、软件分析师
c) 需求的描述工具:
实体-关系模型:明确描述应用系统的概念结构数据模型,E-R模型即是表达用户需求的工具,又是数据库概念设计的工具,在需求分析中又叫E-R模型,在数据库设计中叫做概念数据模型(CDM)。
数据流图:先画出顶层数据流图,它高度的反应了系统的全貌,在注=逐层画出底层系统的数据流图,具体描述每个加工的处理过程和方法。描述符号主要有4种,数据源或数据谭,数据流动的连线,数据加工或处理泡,输入或输出文件。
用例图:用于定义系统的行为、展示角色与用例之间的项目作用。
活动图:用于描述系统行为,在需求阶段,可以配合用例图说明复杂的交互过程。
3.软件策划:软件策划的输入是《合同》或《立项建议书》,《任务书》,《用户需求报告》, 输出是《软件开发计划》。
a) 应该包括质量保证计划,软件配置管理计划,测试计划、评审计划。要使策划工作十分准确是十分困难的事,
b) 共分4个步骤,
1.估计软件工作产品的规模、工作量、费用及所需的资源。
2.制定时间表
3.鉴别和评估风险
4.与相关的组或人协商策划中的有关约定
c) 编制工具:word+Project
4.软件设计
a) 分《概要设计说明书》和《详细设计说明书》。前者注重框架上的设计,后者注重微观上和框架内的设计。
b) 面向过程设计:1.流程图2.N-S图3.程序设计语言4.决策表
c) 面向数据设计:以E-R模型为基础,按照一定的规则将概念数据模型(CDM)转换成能被某种数据库管理系统接受的物理数据模型(PDM)。
d) 面向对象设计:UML
5.软件建模:三个模型:业务建模(对系统的业务流程的定义)、功能建模(描述系统功能)、 数据建模(对系统数据结构的定义)
a) 功能建模和业务建模在需求分析时建模,数据模型在设计时建模。通常,数据模型建模用PD、ERWin等;功能模型用功能点列表或用例表示;业务建模用自然语言加上流程图或时序图表示。
6.软件实现
a) 宏观上,软件实现包括详细设计、编码实现、单元测试、和集成测试
b) 微观上,软件实现指编程和单元测试
7.软件测试
a) 测试中心或者测试部门是发现“不符合项”或错误的,却不能改正软件产品的错误,所以不能直接提高软件产品的质量
b) 系统软件测试:发现bug,对应的测试报告为bug测试报告
c) 应用软件测试:发现“不符合项”
8.软件发布与实施
a) 软件产品分类:
不需要客户化的软件产品: 系统软件
只需要少量客户化工作的产品: 专业性特别强的应用软件产品
需要重新做业务流程和需求规格定义的软件产品:分行业ERP
b) 软件项目:为用户定制的软件系统,专用型强,通用性差
9.软件维护:软件维护过程是软件开发过程的缩影。
a) 可维护性:维护人员理解、掌握、修改被维护软件的难以程度。可维护软件应该具备以下4条性质:
可理解性:软件功能模块化、结构化、代码风格化、文档清晰化
可测试性:文档规范化、代码注视化、测试会规划
可修改性:模块间低耦合、高内聚、程序块的单入口和单出口、数据局部化、 公用模块组建化
可移植性