软件工程与软件开发主要内容1.软件工程的必要性2.软件工程开发基本阶段3.软件开发流程4.软件工程的主要特点5.软件工程带来的好处软件工程的必要性(一)•为什么需要软件工程化软件项目开发规模的扩大+软件开发人员的增加===》软件开发过程失控•开发进度•开发成本•软件质量•维护成本软件工程的必要性(二)•软件工程的定义软件工程学是为在成本限额以内按质按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科。软件工程开发基本阶段(一)•软件工程开发基本阶段可行性分析—软件计划—需求分析—概要设计—详细设计—编码实现—单元测试—集成测试—系统测试—现场测试—产品发布—运行维护软件工程开发基本阶段(二)•可行性分析阶段主要内容:-市场营销人员从市场的角度分析潜在的客户需求、给公司可能带来的利润以及可信度(《市场需求分析报告》):·客户需求(功能、时间);·给公司带来的直接利润额度以及可信度;·对公司发展的间接影响。-研发人员根据客户需求确定项目开发的总目标和总要求,进行技术可行性分析(《可行性研究报告》):·所建议开发的软件的基本要求;·所建议软件的主要技术风险;·所开发软件的资源和时间要求。软件工程开发基本阶段(三)•软件计划阶段主要内容:-确定项目负责人;-项目负责人定义产品开发过程的组织结构、开发流程、各项开发任务的负责人员、开发进度、经费预算、硬件和软件资源条件等,使得产品开发全过程可根据项目开发计划来开展和检查开发工作,保证项目开发成功(《项目开发计划》);-根据《概要设计说明》来修改《用户手册》。·主要参加人员以及相应职责;·项目进度(给出每个开发阶段的开始和结束日期);·每个阶段移交的产品(代码、文档、可执行程序);·项目经费预算;·项目开发需要的软、硬件资源;软件工程开发基本阶段(四)•需求分析阶段主要内容:-深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求(《软件需求规格说明》);-描述软件开发项目的质量目标以及在该项目开发过程中要建立的质量管理机构和需要执行的质量管理过程(《质量保证计划》);-描述进行系统测试的进度安排、所需资源以及测试需求(《系统测试计划》);-描述如何使用该软件(《用户手册》);-根据《需求规格说明》来修改《项目开发计划》。软件工程开发基本阶段(五)•概要设计阶段主要内容:-描述软件开发项目的功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等(《概要设计说明》);-描述进行集成测试的进度安排、所需资源以及测试需求(《集成测试计划》);-根据《概要设计说明》来修改《用户手册》。软件工程开发基本阶段(六)•详细设计阶段主要内容:-描述每一模块是怎样实现的,包括实现算法、逻辑流程等,为开发人员进行编码打下基础。(《详细设计说明》);-描述进行单元测试的进度安排、所需资源以及测试需求(《单元测试计划》);-根据《详细设计说明》来修改《用户手册》。软件工程开发基本阶段(七)•编码实现阶段主要内容:-软件开发人员按照《详细设计说明》的描述完成每个模块的计算机语言实现,交付源程序清单;-软件测试人员按照《系统测试计划》和《集成测试计划》的需要准备测试环境和测试工具,如果必要,可根据项目测试需要准备测试所需的模拟数据、测试脚本程序以及简单的测试工具。软件工程开发基本阶段(九)•单元测试阶段主要内容:-软件开发人员按照《单元测试计划》编写《单元测试说明》,设计用于单元测试的所有测试用例;-软件开发人员根据《单元测试说明》对各模块进行正确性检验,发现各模块内部可能存在的各种差错;-测试完毕后,编写《单元测试报告》,对所开发软件进行质量评估。同时,对测试中发现的问题进行更正,提交修改后的源程序清单。软件工程开发基本阶段(十)•集成测试阶段主要内容:-软件测试人员按照《集成测试计划》编写《集成测试说明》,设计用于集成测试的所有测试用例;-软件测试人员根据《集成测试说明》将所有模块按照设计要求组装成为系统;-测试完毕后,软件测试人员编写《集成测试报告》,对所开发软件进行质量评估。同时,软件开发人员测试中发现的问题进行更正,提交修改后的源程序清单。软件工程开发基本阶段(十一)•系统测试阶段主要内容:-软件测试人员按照《系统测试计划》编写《系统测试说明》,设计用于系统测试的所有测试用例;-软件测试人员根据《系统测试说明》将该软件开发项目作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据等其它元素结合在一起进行测试;-测试完毕后,软件测试人员编写《系统测试报告》,对所开发软件进行质量评估。同时,软件开发人员测试中发现的问题进行更正,提交修改后的源程序清单。软件工程开发基本阶段(十二)•现场测试阶段主要内容:-在系统测试的基础上,选择适当的软件应用对象所在地,由客户完成对软件的测试;-测试完毕后,软件测试人员了解客户的测试情况,编写《现场测试报告》,对所开发软件进行质量评估。同时,软件开发人员测试中发现的问题进行更正,提交修改后的源程序清单。软件工程开发基本阶段(十三)•产品发布阶段主要内容:-完成上述所有开发阶段后,配置管理人员构建软件最终产品,并将该产品放入公司产品库。产品入库后,提交软件开发项目的配置审计报告;-项目负责人对开发项目进行总结,编写《项目开发总结报告》:·对产品开发质量进行评估;·对项目控制进行评估;·对所实施的软件过程进行评估。软件工程开发基本阶段(十四)•运行维护阶段主要内容:-技术支持人员对软件运行过程中出现的问题填写《软件处理报告单》,记录产品在运行过程中出现的所有问题,并及时反馈给相关负责人;-技术支持人员要对问题的解决过程全程跟踪,直到问题得到完全解决。软件开发流程(一)•软件开发里程碑(milestone)定义:是软件生存周期各开发阶段末尾的特定点,其作用是把各阶段的开发工作划分得更加明确,使得本来连续的工作在这些点断开,使之便于检验和确认阶段开发成果。主要内容:对每个阶段的阶段性成果进行技术评审,尽量不让错误传播到下一个开发阶段,主要包括:·需求分析评审;·概要设计评审;·详细设计评审;·单元测试评审;·集成测试评审;·系统测试评审。软件开发流程(二)•项目开发组织架构项目经理开发小组质量保证小组市场营销小组开发人员质量保证人员市场营销人员软件开发流程(三)•软件开发流程-多条线并行开发-评审确认制度-测试=测试需求+测试设计+测试结果软件工程的主要特点(一)•项目管理主要体现在项目经理的职责上:-明确项目目标;-制订项目计划;-建立项目管理的信息系统;-建立及贯彻项目管理制度;-项目资源的组织;-项目团队的建设;-项目控制;-成员考核。软件工程的主要特点(二)•独立测试体现在测试人员与开发人员独立:-测试目的不同;-测试心态不同;-测试范围不同。软件工程的主要特点(三)•过程控制提升软件开发过程控制的地位:-为每个开发项目建立相应的软件开发过程;-控制软件开发的开发使之遵循软件开发过程;-根据软件开发实践活动改进软件开发过程。软件工程的主要特点(四)•文档与评审-每个阶段应提供相应的文档;-文档的编写应遵循已有的标准;-文档通过阶段评审是阶段结束的标志。软件工程带来的好处(一)•从软件产品角度看-提高软件产品的质量;-有效地控制软件开发的进度;-改进软件产品的可维护性;-减少软件产品开发的成本。软件工程带来的好处(二)•从公司的角度看-提升公司软件开发整体能力;-增加公司的市场竞争能力;-为公司积累资产:·技术文档;·管理制度;·技术积累。软件工程带来的好处(三)•从个人的角度看:-增强个人的团队合作精神;-熟悉、精通软件开发的行业规范;-熟悉、掌握软件开发管理的技能;-全面提升个人能力。