1、1第第6 6章章 软件工程基础软件工程基础 软件工程概述软件工程概述 软件开发过程软件开发过程 软件计划软件计划 需求分析需求分析 软件设计软件设计 软件编码软件编码 软件测试软件测试26.16.1 软件工程概述软件工程概述 软件工程方法学软件工程方法学:在软件开发、维护全过程中使:在软件开发、维护全过程中使用的技术方法的集合用的技术方法的集合 软件工程方法学软件工程方法学3要素要素:方法、工具和过程:方法、工具和过程 方法:完成软件开发的各项任务的技术方法,回答方法:完成软件开发的各项任务的技术方法,回答“怎样做怎样做”的问题的问题 工具:为运用方法而提供的自动的或半自动的软件工工具:为运用
2、方法而提供的自动的或半自动的软件工程支撑环境程支撑环境 过程:为了获得高质量的软件所需要完成的一系列任过程:为了获得高质量的软件所需要完成的一系列任务的框架,规定完成各项任务的工作步骤务的框架,规定完成各项任务的工作步骤 最常见的软件工程方法学:结构化方法学和面向最常见的软件工程方法学:结构化方法学和面向对象方法学对象方法学36.26.2 软件开发过程软件开发过程p软件生命周期软件生命周期3个时期、个时期、8个阶段个阶段软件定义时期(软件计划、需求分析)软件定义时期(软件计划、需求分析)软件计划阶段:在初步了解软件需求的基础上,软件计划阶段:在初步了解软件需求的基础上,进行可行性研究,理解工作
3、范围和所花代价,估进行可行性研究,理解工作范围和所花代价,估算项目的成本和工作量,做初步的进度安排,并算项目的成本和工作量,做初步的进度安排,并据此制订软件计划。据此制订软件计划。软件需求分析阶段:深入具体地了解用户的要求软件需求分析阶段:深入具体地了解用户的要求,就必须,就必须“做什么做什么”这个问题与用户取得完全一这个问题与用户取得完全一致看法,包括功能需求、性能需求、环境要求与致看法,包括功能需求、性能需求、环境要求与限制等内容,并用规格说明书表达出来。限制等内容,并用规格说明书表达出来。46.26.2 软件开发过程软件开发过程软件开发时期软件开发时期 软件设计阶段软件设计阶段:总体设计
4、和详细设计。总体设计阶段确定:总体设计和详细设计。总体设计阶段确定系统的实现方案,设计软件系统结构,确定各部分之间的系统的实现方案,设计软件系统结构,确定各部分之间的关系,给出模块间传送的数据结构以及每个模块的功能说关系,给出模块间传送的数据结构以及每个模块的功能说明;详细设计阶段则设计出每一模块的内部实现细节。明;详细设计阶段则设计出每一模块的内部实现细节。软件编码阶段软件编码阶段:选择合适的语言与相应支持环境,按软件:选择合适的语言与相应支持环境,按软件设计说明书的要求为每一部分编写出程序代码。设计说明书的要求为每一部分编写出程序代码。软件测试阶段软件测试阶段:发现和排除软件中存在的错误和
5、缺陷,软:发现和排除软件中存在的错误和缺陷,软件测试包括阶段文档的评审和对程序的执行检查,测试步件测试包括阶段文档的评审和对程序的执行检查,测试步骤通常分为单元测试、集成测试、系统测试和验收测试。骤通常分为单元测试、集成测试、系统测试和验收测试。经过测试和排错,得到可运行的软件。经过测试和排错,得到可运行的软件。56.26.2 软件开发过程软件开发过程软件运行和维护时期软件运行和维护时期 对已交付运行的软件继续进行排错、修改、完对已交付运行的软件继续进行排错、修改、完善和扩充善和扩充6p软件开发过程模型软件开发过程模型 1.瀑布模型瀑布模型 7p软件开发过程模型软件开发过程模型 带反馈的瀑布模
6、型带反馈的瀑布模型 8p软件开发过程模型软件开发过程模型 2.原型模型原型模型 9p软件开发过程模型软件开发过程模型 3.螺旋模型螺旋模型 10p软件开发过程模型软件开发过程模型 4.增量模型增量模型 11p软件开发过程模型软件开发过程模型 5.喷泉模型喷泉模型 126.3软件计划软件计划p问题定义问题定义 问题定义报告 用户单位:XX财务处 负责人:XXX 分析员单位:XX软件公司 分析员:XXX 项目名称:水质监测系统 问题概述:利用传感器感知监测区域的水质数据,利用通信系统将感知的数据传回数据中心,进行相应的处理、存档、发布。项目目标:开发一个有效的水质系统 项目规模:开发成本约XXX万
7、元 可行性研究建议:进行一周,费用不超过XXX元 XX XX年XX月XX日 签字:XXX136.3软件计划软件计划p可行性研究可行性研究 经济可行性经济可行性 技术可行性技术可行性 法律可行性法律可行性146.3软件计划软件计划p软件规模估算软件规模估算 代码行技术和功能点技术代码行技术和功能点技术(1)LOC(Line of Code)行数基准法行数基准法 根据估计的最小(乐观)的行数(a)、最大(悲观)的行数(b)和最可能的行数(m),计算程序的最佳期望行数:64bmaL误差:midabL12)6(156.3软件计划软件计划(2)功能点法功能点法 件信息域特性:件信息域特性:输入项数输入项
8、数(Inp)、输出项数、输出项数(Out)、查询数、查询数(Inq)、主、主文件数文件数(Maf)、外部接口数、外部接口数(Inf)估算功能点估算功能点根据软件产品信息域特性等级分配功能点数,例如根据软件产品信息域特性等级分配功能点数,例如,简单级输入项分配,简单级输入项分配3个功能点,平均级输入项个功能点,平均级输入项分配分配4个功能点,复杂级输入项分配个功能点,复杂级输入项分配6个功能点,个功能点,计算功能点数计算功能点数UFP:InfaMafaInqaOutaInpaUFP54321166.3软件计划软件计划 计算技术复杂性因子计算技术复杂性因子TCF:标识名称标识名称F1数据通信F8联
9、机更新F2分布式数据处理F9复杂的计算F3性能标准F10可重用性F4高负荷的硬件F11安装方便F5高处理率F12操作方便F6联机数据输入F13可移植性F7终端用户效率F14可维护性141iiFDIDITCF01.065.0TCFUFPFP技术难度对工作量的影响技术难度对工作量的影响DI一般定为一般定为0,70176.3软件计划软件计划p软件成本和工作量估算软件成本和工作量估算 工作量:人月数或人日数工作量:人月数或人日数不同类型的软件、在不同条件下开发软件,难易不同类型的软件、在不同条件下开发软件,难易度与工作量是不一样的度与工作量是不一样的三种情况:三种情况:有机方式:开发人员较少,具有类似
10、项目的经验有机方式:开发人员较少,具有类似项目的经验嵌入方式:软硬件环境、运行规程有严格限制,开发出嵌入方式:软硬件环境、运行规程有严格限制,开发出的软件,嵌入到这个条件苛刻的大系统中去的软件,嵌入到这个条件苛刻的大系统中去半分离方式:介于有机方式和嵌入方式中间,开发人员半分离方式:介于有机方式和嵌入方式中间,开发人员对该项目具有中等的经验,对接口有一定的限制对该项目具有中等的经验,对接口有一定的限制186.3软件计划软件计划特特 征征方方 式式有有 机机半半 分分 离离嵌嵌 入入开发部门对产品目标的理解程度开发部门对产品目标的理解程度彻底彻底有相当的程度有相当的程度一般一般对有关软件系统的已
11、有工作经验对有关软件系统的已有工作经验有广泛的经验有广泛的经验相当程度的经验相当程度的经验中等中等软件遵循预定需求的必要性软件遵循预定需求的必要性基本上基本上相当程度相当程度全面地全面地软件遵循外部接口规格的必要性软件遵循外部接口规格的必要性基本上基本上相当程度相当程度全面地全面地有关新型硬件与操作过程应否同时开发有关新型硬件与操作过程应否同时开发有一些有一些中等中等广泛广泛是否要开发新的数据处理算法与体系结构是否要开发新的数据处理算法与体系结构很少很少有一些有一些相当多相当多提前完成可获得的奖励提前完成可获得的奖励不多不多有一些有一些相当多相当多产品规模产品规模50KDSI=300KDSI无
12、上限无上限典型例子典型例子批处理数据浓缩批处理数据浓缩大多数事务处理系统大多数事务处理系统大型复杂事务处大型复杂事务处理系统理系统科学、商务模型科学、商务模型新新OS、DBMS大型大型OS熟悉的熟悉的OS与编译程序与编译程序简单的指挥控制系统简单的指挥控制系统大型指挥系统大型指挥系统简单的库存管理、生产控简单的库存管理、生产控制制大型库存管理生产控制系统大型库存管理生产控制系统工作量计算公式工作量计算公式MM(人月人月)2.4(KDSI)1.053.0(KDSI)1.123.6(KDSI)1.28开发时间计算公式开发时间计算公式TDEV(月月)2.5(MM)0.382.5(MM)0.352.5
13、(MM)0.32TDEVMMFSP 人数:19p进度安排进度安排 普通进度图 MS projectExcel月份任务123456789101112子任务1 子任务2子任务3子任务4子任务5工作进度计划表5月工作任务负责人78910111213141516171819202122232425262728293031数据库处理路由建立函数路由更新函数路由修复函数20p进度安排进度安排 甘特图MS project21p进度安排进度安排 PERT(Program Evaluation&Review Technique)图起点A 4B 3C 3D 2G 4E 5F 6H 6终点226.4需求分析需求分析
14、p需求分析工具需求分析工具1.数据流图(数据流图(Data Flow Diagram,DFD)和数据)和数据字典字典236.4需求分析需求分析数据字典数据字典数据存储名称:存折数据存储名称:存折 数据流的来源:储户数据流的来源:储户 数据流的去处:加工数据流的去处:加工“1 检验存折检验存折”数据流的组成:数据流的组成:存折帐号户名开户网点名称存折帐号户名开户网点名称+凭证号签发日期属性凭证号签发日期属性+通存通兑通存通兑 印密印密+1存取记录存取记录120 帐号帐号“00000000000000000001”.“99999999999999999999”户名户名2汉字汉字4 开户网点名称开户
15、网点名称=4汉字汉字20 凭证号凭证号=“000000001”.“999999999”签发日期签发日期=年月日年月日 属性属性=多币种用户多币种用户|双币种用户双币种用户 通存通兑通存通兑=非非|通通 印密印密=密密|无无 246.4需求分析需求分析 2.实体实体-关系图关系图(Entity-Relationship Diagram,ERD)256.4需求分析需求分析3.状态转换图状态转换图(State Transition Diagram,STD)266.4需求分析需求分析 4.层次方框图层次方框图 监测系统数据处理主站发布命令节点接收命令节点数据获取数据发送清洗聚合归并保存276.4需求分
16、析需求分析 5.Use Case图图 查询余额存钱柜员机用户柜员机取钱使用柜员机扩展用户选择查询余额扩展用户选择存钱扩展用户选择取钱打印单据包含包含286.4需求分析需求分析p需求分析过程需求分析过程1.获取初步需求获取初步需求2.获取详细需求获取详细需求 296.4需求分析需求分析p需求分析规格说明书编制需求分析规格说明书编制任务描述任务描述最终用户特点最终用户特点软件功能软件功能软件性能软件性能输入输出要求输入输出要求数据管理能力要求数据管理能力要求故障处理要求故障处理要求运行环境规定运行环境规定控制控制306.5软件设计软件设计p总体设计总体设计给出系统的实现方法,确定软件结构,即模块间
17、的给出系统的实现方法,确定软件结构,即模块间的关系关系 1.总体设计的工具总体设计的工具层次图层次图 316.5软件设计软件设计2.面向数据流的设计方法面向数据流的设计方法326.5软件设计软件设计2.面向数据流的设计方法面向数据流的设计方法336.5软件设计软件设计p详细设计详细设计为每个模块确定实现的算法为每个模块确定实现的算法确定模块使用的数据结构和模块接口的细节确定模块使用的数据结构和模块接口的细节(包括包括内部接口、外部接口、输入、输出及局部数据等内部接口、外部接口、输入、输出及局部数据等)设计一组测试用例,以便在编码阶段对模块代码设计一组测试用例,以便在编码阶段对模块代码进行预定的
18、测试进行预定的测试 346.5软件设计软件设计u详细设计工具详细设计工具IPO图与图与IPO表表356.5软件设计软件设计u详细设计工具详细设计工具流程图流程图366.5软件设计软件设计u详细设计文档详细设计文档 模块描述模块描述 功能功能 性能性能 输入项输入项 输出项输出项 算法算法 流程逻辑流程逻辑 接口接口 存储分配存储分配 注释设计注释设计 限制条件限制条件 测试计划测试计划 尚未解决的问题尚未解决的问题 376.5软件设计软件设计u详细设计文档详细设计文档 模块描述模块描述 功能功能 性能性能 输入项输入项 输出项输出项 算法算法 流程逻辑流程逻辑 接口接口 存储分配存储分配 注释
19、设计注释设计 限制条件限制条件 测试计划测试计划 尚未解决的问题尚未解决的问题 386.6编码编码u工具工具 语言:语言:-C/C+-C#-Java-PHP 开发环境:开发环境:-ASP.NET-Eclipse DB-Oracles-SQL Server-DB2-PostGreSql-MySQL396.6编码编码u编码风格编码风格模块序言性注释一般包括如下内容:模块序言性注释一般包括如下内容:/版权说明:版权说明:/文件名:文件名:/文件编号:文件编号:/项目名称:项目名称:/对应设计文档:对应设计文档:/主要算法:主要算法:/接口:接口:/子程序:子程序:/开发简历:开发简历:/设计者:设计
20、者:/设计日期:设计日期:/复审者:复审者:/复审日期:复审日期:/修改记录:修改记录:/摘要:摘要:/版本:版本:/作者:作者:/更新日期:更新日期:/406.6编码编码 函数的序言性注释函数的序言性注释/*/函数名:函数名:/函数功能、性能等的描述:函数功能、性能等的描述:/被本函数调用的函数:被本函数调用的函数:/调用本函数的函数:调用本函数的函数:/被访问的表(此项仅对于牵扯到数据库操作的程序):被访问的表(此项仅对于牵扯到数据库操作的程序):/被修改的表(此项仅对于牵扯到数据库操作的程序):被修改的表(此项仅对于牵扯到数据库操作的程序):/输入参数说明,包括每个参数的作用、取值说明及
21、参数间关系:输入参数说明,包括每个参数的作用、取值说明及参数间关系:/对输出参数的说明:对输出参数的说明:/函数返回值的说明:函数返回值的说明:/影响到的全局或局部静态变量:影响到的全局或局部静态变量:/测试建议:测试建议:/修改记录:修改记录:/其它说明:其它说明:*/416.6编码编码变量注释/*/变量的作用、含义:/取值范围:/可以读该变量的函数:/可能修改该变量的函数:/其它说明:*/426.6编码编码 命名规则命名规则 程序格式程序格式if()a=a+1;if()a=a+1;436.7软件测试软件测试p测试步骤与过程测试步骤与过程信息流向:信息流向:测试过程:测试过程:446.7软件测试软件测试p测试方法测试方法黑盒测试黑盒测试白盒测试白盒测试测试工具,如测试工具,如Junit
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。