《软件工程开发.ppt》由会员分享,可在线阅读,更多相关《软件工程开发.ppt(42页珍藏版)》请在优知文库上搜索。
1、第6章软件工程技术基础软件工程技术基础2第6章目标q掌握软件工程的基本原则掌握软件工程的基本原则q了解软件开发的基本过程了解软件开发的基本过程q可行性论证可行性论证q需求分析需求分析q概要设计概要设计q详细设计详细设计q软件编码软件编码q软件测试软件测试q软件维护软件维护q了解软件开发中的系统分析与设计方法了解软件开发中的系统分析与设计方法q了解软件开发管理技术了解软件开发管理技术焦油坑中挣扎的巨兽4软件危机q随着软件规模增大,复杂程度越来越高,软件的随着软件规模增大,复杂程度越来越高,软件的开发和维护过程中出现了一系列严重问题开发和维护过程中出现了一系列严重问题q从从20世纪世纪60年代末开
2、始出现年代末开始出现“软件危机软件危机”,其主,其主要表现要表现q对软件开发成本以及进度的估计常常很不准确对软件开发成本以及进度的估计常常很不准确 q用户对已完成的软件系统不满意的现象经常发生用户对已完成的软件系统不满意的现象经常发生 q软件产品的质量往往难以保证软件产品的质量往往难以保证 q软件常常是不可维护的软件常常是不可维护的 q软件通常没有适当的文档资料软件通常没有适当的文档资料 q软件成本在计算机系统总成本中所占的比例逐年上升软件成本在计算机系统总成本中所占的比例逐年上升 q软件开发生产率提高的速度,远远比不上计算机应用软件开发生产率提高的速度,远远比不上计算机应用技术的迅速普及技术
3、的迅速普及 国外软件危机的实例国内软件故障实例7软件工程q软件工程是为了解决软件工程是为了解决“软件危机软件危机”而提出来的而提出来的q“软件工程软件工程” 其核心思想是采用工程的概念、原其核心思想是采用工程的概念、原理、技术与方法对软件进行计划、开发和维护,理、技术与方法对软件进行计划、开发和维护,按预期的进度和经费完成软件开发任务。按预期的进度和经费完成软件开发任务。 q所谓软件工程,就是研究大规模程序设计的方法、所谓软件工程,就是研究大规模程序设计的方法、工具和管理的一门工程科学工具和管理的一门工程科学8“工程化”的基本原则q分解分解q将复杂的、难操作的事物分解为较简单的、易处理的将复杂
4、的、难操作的事物分解为较简单的、易处理的事物,然后一一加以解决事物,然后一一加以解决q计划计划q统筹安排要解决问题的时间、费用等等,严格按计划统筹安排要解决问题的时间、费用等等,严格按计划组织工程实施组织工程实施q规范规范q工程实施过程中,严格按照各种规范、技术文件进行工程实施过程中,严格按照各种规范、技术文件进行9软件工程的基本原则q划分软件生命期划分软件生命期q在时间上进行分解,将软件开发过程分解为一系列的在时间上进行分解,将软件开发过程分解为一系列的分阶段的任务分阶段的任务q进行计划评审进行计划评审q和一般工程项目一样,软件开发要严格按计划管理,和一般工程项目一样,软件开发要严格按计划管
5、理,坚持进行阶段评审坚持进行阶段评审q编制软件文档编制软件文档q在软件工程每一阶段都要编制完整、精确的文档在软件工程每一阶段都要编制完整、精确的文档可行性研究与可行性研究与开发计划开发计划 需求分析需求分析 概要设计概要设计详细设计详细设计 开发开发/ /编码编码 维护阶段的测试维护阶段的测试 运行维护运行维护 q软件工程按软件开发活动步骤应制定的计划软件工程按软件开发活动步骤应制定的计划q项目实施总计划项目实施总计划q软件配置管理计划软件配置管理计划q软件质量保证计划软件质量保证计划q测试计划测试计划q安全保密计划安全保密计划q系统安装计划系统安装计划q运行和维护管理计划运行和维护管理计划q
6、必须严格按照计划执行必须严格按照计划执行q必要的计划修改,必须经过严格的审批手续必要的计划修改,必须经过严格的审批手续文档具有非常文档具有非常重要的作用重要的作用10q软件开发基本都需要经历软件开发过程中的几个软件开发基本都需要经历软件开发过程中的几个步骤步骤q但这几个步骤具体如何实施,根据具体项目不同,但这几个步骤具体如何实施,根据具体项目不同,也有所区别也有所区别q制作具体软件时,开发步骤的具体实施方法称为制作具体软件时,开发步骤的具体实施方法称为软开发过程模型软开发过程模型软件开发过程模型 软件开发过程模型软件开发过程模型 瀑布模型瀑布模型 螺旋模型螺旋模型 软件开发过程模型软件开发软件
7、开发可行性研究与计划可行性研究与计划 需求分析需求分析 设计设计 开发开发 评估评估/测试测试 维护维护 建造房屋建造房屋构想构想分析分析设计设计构造构造评估评估维护维护 软件开发生命周期q一个软件从提出开发要求到抛弃不用的整个过程一个软件从提出开发要求到抛弃不用的整个过程,被定义为软件的生存周期。,被定义为软件的生存周期。 q采用生存周期方法就是从时间角度对软件开发和采用生存周期方法就是从时间角度对软件开发和维护等复杂问题进行分解,将软件的生存周期划维护等复杂问题进行分解,将软件的生存周期划分为若干个阶段,采用各个击破的策略降低了整分为若干个阶段,采用各个击破的策略降低了整个软件开发的难度。
8、个软件开发的难度。 需求分析q所谓需求是指软件系统必须满足的所有功能、性所谓需求是指软件系统必须满足的所有功能、性能和限制等用户要求。通常包括功能要求、性能能和限制等用户要求。通常包括功能要求、性能要求、可靠性要求、安全保密要求以及开发费用要求、可靠性要求、安全保密要求以及开发费用、开发周期、可使用的资源等方面的限制。、开发周期、可使用的资源等方面的限制。 q需求说明书主要有三个作用需求说明书主要有三个作用q作为用户和软件开发人员双方对开发的软件系统共同作为用户和软件开发人员双方对开发的软件系统共同理解的成果;理解的成果;q作为开发人员进行设计和编程的根据;作为开发人员进行设计和编程的根据;q
9、作为软件开发完成后验收的依据。作为软件开发完成后验收的依据。 需求分析阶段需求分析q需求分析阶段的工作的需求分析阶段的工作的4个方面个方面 q需求获取需求获取 q需求获取是在同用户的交流过程中不断收集、积累用户的各种需求获取是在同用户的交流过程中不断收集、积累用户的各种信息,并且通过认真理解用户的各项要求,澄清那些模糊的需信息,并且通过认真理解用户的各项要求,澄清那些模糊的需求,排除不合理的,从而较全面地提炼系统的功能性与非功能求,排除不合理的,从而较全面地提炼系统的功能性与非功能性需求。性需求。 q需求分析需求分析 q对获取的需求进行分析和整理,最终给出适合目标系统的解决对获取的需求进行分析
10、和整理,最终给出适合目标系统的解决方案和目标系统的逻辑模型。方案和目标系统的逻辑模型。 需求分析q编写需求规格说明书编写需求规格说明书q需求规格说明书作为需求分析的阶段成果,可以为用户、分析需求规格说明书作为需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。系统的确认,又可以作为控制软件开发进程的依据。 q需求评审需求评审 q对需求分析阶段的工作进行复审,验证需求文档的一致性、可对需求分析阶段的工作进行复审,验证需求文档的一致性、可行性、完整性和有效性。行
11、性、完整性和有效性。 结构化分析方法 q结构化分析方法的实质是着眼于数据流结构化分析方法的实质是着眼于数据流,自顶向下自顶向下,逐层分解,建立系统的处理流程,以数据流图,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。和数据字典为主要工具,建立系统的逻辑模型。 结构化分析方法q结构化分析的步骤如下:结构化分析的步骤如下:q(1)通过对用户的调查,以软件的需求为线索,获通过对用户的调查,以软件的需求为线索,获得当前系统的具体模型;得当前系统的具体模型;q(2)去掉具体模型中非本质因素,抽象出当前系统去掉具体模型中非本质因素,抽象出当前系统的逻辑模型;的逻辑模型;
12、q(3)根据计算机的特点分析当前系统与目标系统的根据计算机的特点分析当前系统与目标系统的差别,建立目标系统的逻辑模型;差别,建立目标系统的逻辑模型;q(4)完善目标系统并补充细节,写出目标系统的软完善目标系统并补充细节,写出目标系统的软件需求规格说明;件需求规格说明;q(5)评审直到确认完全符合用户对软件的需求。评审直到确认完全符合用户对软件的需求。 面向对象的分析方法 q面向对象的分析方法面向对象的分析方法(OOA,Object Oriented Analysis method) qOOA的任务是采用面向对象方法,把对问题论域的任务是采用面向对象方法,把对问题论域和系统的认识理解,正确地抽象
13、为规范的对象和系统的认识理解,正确地抽象为规范的对象(包包括类、继承层次括类、继承层次)和消息传递联系。和消息传递联系。 “一图胜过千言万语” 软件设计 q软件设计是软件工程的重要阶段,是一个把软件软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即软件设计是确定系统的物理模成预定的任务,即软件设计是确定系统的物理模型。型。 软件设计q软件设计的重要性和地位概括为以下几点:软件设计的重要性和地位概括为以下几点:q(1)软件
14、开发阶段软件开发阶段(设计、编码、测试设计、编码、测试)占据软件项占据软件项目开发总成本绝大部分,是在软件开发中形成质目开发总成本绝大部分,是在软件开发中形成质量的关键环节;量的关键环节;q(2)软件设计是开发阶段最重要的步骤,是将需求软件设计是开发阶段最重要的步骤,是将需求准确地转化为完整的软件产品或系统的唯一途径准确地转化为完整的软件产品或系统的唯一途径;q(3)软件设计做出的决策,最终影响软件实现的成软件设计做出的决策,最终影响软件实现的成败败;q(4)设计是软件工程和软件维护的基础。设计是软件工程和软件维护的基础。软件设计遵循软件工程的基本目标和原则q(1)抽象抽象q抽象是一种思维工具
15、,就是把事物本质的共同特性提抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。取出来而不考虑其他细节。 q(2)模块化模块化q模块是指把一个待开发的软件分解成若干小的简单的模块是指把一个待开发的软件分解成若干小的简单的部分。部分。 q(3)信息隐蔽信息隐蔽q信息隐蔽是指在一个模块内包含的信息信息隐蔽是指在一个模块内包含的信息(过程或数据过程或数据),对于不需要这些信息的其他模块来说是不能访问的。对于不需要这些信息的其他模块来说是不能访问的。 软件设计q(4)模块独立性模块独立性q模块独立性是指每个模块只完成系统要求的独立的子模块独立性是指每个模块只完成系统要求的独立的子功能
16、,并且与其他模块的联系最少且接口简单。功能,并且与其他模块的联系最少且接口简单。q 内聚性是一个模块内部各个元素间彼此结合的紧密内聚性是一个模块内部各个元素间彼此结合的紧密程度的质量。程度的质量。 q耦合性是模块间互相连接的紧密程度的度量。耦合性是模块间互相连接的紧密程度的度量。 q 软件编码 q编码是设计的自然结果,即把软件设计的结果译编码是设计的自然结果,即把软件设计的结果译成用某种程序设计语言书写的程序。成用某种程序设计语言书写的程序。 q编写程序时需要注意的方面编写程序时需要注意的方面 q(1)程序内部文档程序内部文档 q(2)语句构造语句构造 q(3)输入输出输入输出 q(4)效率效率 软件编码工作开发阶段开发阶段 对在原型创建阶段构建的对在原型创建阶段构建的用户界面进行最后的修改用户界面进行最后的修改 构建数据库构建数据库 通过添加代码通过添加代码使其具备功能使其具备功能 软件测试q软件测试是在软件投入运行前根据软件需求分析软件测试是在软件投入运行前根据软件需求分析规格说明对软件编码进行查错和纠错。找错的活规格说明对软件编码进行查错和纠错。找错的活动称测试,纠错的活动称调试