




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
软件工程基础
2第1章概述
31.1软件工程简介
1.1.1软件生产的发展软件是指计算机程序及其有关的数据和文档。软件生产的各个阶段必需完成的有关计算机程序的功能、设计、编制的文字或图形资料,这些资料称为“文档”。1.程序设计时期2.软件=程序+文档时期3.软件工程阶段4.第4阶段41.1.2软件危机
软件危机是指在计算机软件开发和维护时所遇到的一系列问题。软件危机主要包含的问题:如何开发软件以满足对软件日益增长的需求;如何维护数量不断增长的已有软件。1.软件危机主要表现形式2.软件危机产生的原因3.解决软件危机的途径51.1.3软件工程1.什么是软件?软件是指计算机程序及其有关的数据和文档。软件文档(softwaredocumentation)是以人们可读的形式出现的技术数据和信息。“软件是程序以及开发、使用和维护所需要的所有文档(document)。”2.什么是软件工程?软件工程(softwareengineering)是软件开发、运行、维护和引退的系统方法。软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。6
1.2软件工程学
1.2.1软件工程学的内容软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件工程环境。软件工程管理学包含软件工程经济学和软件管理学。1.软件工程方法学三个要素:方法,工具,过程。2.软件工具3.软件工程环境:是方法和工具的结合。“软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成”。计算机辅助软件工程(ComputerAidedSoftwareEngineering,CASE)是一组工具和方法的集合,可以辅助软件生存周期各阶段进行软件开发活动。4.软件工程管理目的是为了能按预定的时间和费用,成功地生产软件产品。内容:费用管理、人员组织、工程计划管理、软件配置管理。软件工程各阶段所产生的全部文档和软件本身构成软件配置。71.2.2软件工程过程
软件过程是“把输入转化为输出的一组彼此相关的资源和活动”。软件过程是软件工程方法学的三个要素(方法、工具和过程)之一。1.2.3软件工程基本原理用分阶段的生存周期计划进行严格的管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;软件工程结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性。81.3软件生存周期1.软件生存周期定义从设计软件产品开始到产品不能使用为止的时间周期。软件生存周期中,软件开发与维护时的费用越低,软件的使用寿命越长,产生的价值就越大,这就是掌握软件工程学的目的。2.软件生存周期划分的原则3.软件生存周期的阶段划分由软件计划、软件开发和软件运行维护三个时期组成。软件计划时期分为问题定义、可行性研究、需求分析三阶段。软件开发时期分为软件概要设计、软件详细设计、软件实现、综合测试等阶段。软件运行过程中需要不断地进行维护,使软件持久满足用户需要。91.4软件开发模型1.4.1瀑布模型(WaterfallModel)
101.4.2快速原型模型快速原型模型(RapidPrototypeModel)是快速开发一个可以运行的原型系统,通常有三种类型:渐增式的原型:也称增量模型。用于验证软件需求的原型。用于验证设计方案的原型。111.4.3增量模型增量方式包括:增量开发增量提交121.4.4喷泉模型适用于面向对象方法。主张分析和设计过程的重叠、不严格区分。模块集成过程:反复经过分析、设计、测试、集成,再分析、设计、测试、集成。
131.4.5螺旋模型
142.1软件定义与可行性研究
系统定义的目的系统定义的任务2.1.1软件定义1.明确系统目标规模、基本要求2.对现有系统的分析3.设计新系统可能的解决方案2.1.2可行性研究技术可行性经济可行性社会因素方面的可行性2.1.3可行性研究的结论1.可以进行开发。2.需要等待某些条件3.需要对开发目标进行某些修改之后才能开发。4.不能进行或不必进行开发。152.2软件工程开发计划2.2.1软件工程项目概述和实施计划1.项目概述2.软件工程实施计划Gantt图法工程网络技术。2.2.2软件开发计划与复审项目开发计划的编写内容163.1需求分析任务需求分析的基本任务是软件人员和用户一起完全弄清用户对系统的确切要求。需求分析是发现、逐步求精、建模、规格说明和复审的过程。3.1.1确定目标系统的具体要求(1)确定系统的运行环境要求(2)系统的性能要求(3)确定系统功能173.1需求分析任务3.1.2建立目标系统的逻辑模型模型是为了理解事物而对事物做出一种抽象,对事物的无歧义的书面描述。模型由一组图形符号和组成图形的规则组成。建模的基本目标是:描述用户需求为软件的设计奠定基础定义一组需求,用以验收产品。模型分为:数据模型:用实体—关系图功能模型:用数据流图行为模型:用状态转换图数据字典用来描述软件使用或产生的所有数据对象,并对各种图形工具所不能表达的内容加以补充。18【例3.1】某高校医疗费管理系统
医疗费:校内门诊费、校外门诊费、住院费、子女医疗费。要求数据库中存放每个职工的职工号、姓名、所属部门。报销时填写所属部门、职工号、姓名、日期、医疗费种类和数额。该校规定,每年每个职工的医疗费报销有限额(如480元),限额在年初时确定,每个职工一年内报销的医疗费不超过限额时可全部报销;超过限额时,超出部分只可报销90%。职工子女的医疗费也有限额(如240元)。医疗费管理系统每天记录当天报销的若干职工或职工子女的医疗费的类别、金额。让系统自动结账、统计当天报销的医疗费总额,供出纳员核对。每笔账要保存备查,每天所报销的费用要和各个职工已报销的金额累计起来,以检查哪些职工已超额。系统要设计适当的查询功能。年终结算、下一年度开始时,要对数据库文件进行初始化,职工医疗费余额累加到下一年度的余额中。
193.2.1进行调查研究调查研究的目的:是了解用户的真正需要调查研究的方法访谈:正式访谈和非正式访谈。分发调查表。开会—讨论—确认的方法。203.2.2分析和描述系统的逻辑模型
1.建立起目标系统的逻辑模型2.沿数据流图回溯3.2.3需求分析的复审内容包括:一致性完整性现实性有效性213.3需求分析图形工具
实体-关系图数据流图状态转换图
IPO图。223.3.1实体-关系图1.数据对象2.属性3.关系【例3.2】学生成绩管理系统233.3.2数据流图
1、数据流图的基本符号242、数据流图的附加符号
*表示数据流之间是“与”关系(同时存在)+表示数据流之间是“或”关系⊕表示只能从几个数据流中选一个(互斥关系)253、画数据流图的步骤
画顶层数据流图画分层数据流图画总的数据流图4、几点注意事项【例3-3】画学生成绩管理系统的数据流图。263.3.3状态转换图
1.什么情况下要画状态转换图2.状态转换图的符号【例3.4】画出数据结构中“栈”对象的状态转换图。273.3.4IPO图输入/处理/输出(InputProcessOutput)图的简称。【例3.5】画出学生成绩管理系统的IPO图。283.4数据字典
数据字典(DataDictionary,DD)是对实体-关系图、状态转换图和数据流图中出现的所有数据对象、属性、关系、状态、数据流、文件、处理等元素的定义的集合。3.4.1数据字典的内容1.数据元素2.数据流3.数据存储4.数据处理293.4.2数据字典使用的符号
=表示“等价于”或“定义为”+连接[],|表示“或”,用“|”分隔,表示可任选其中某一项{}表示“重复”
()表示“可选”,用“,”号隔开1{A}表示A的内容至少要出现1次。{B}表示B的内容允许重复0
至任意次。如:成绩单=学号+姓名+1{课程名+成绩}3也可写为成绩单=学号+姓名+{课程名+成绩}30
3.5需求分析文档
3.5.1软件需求规格说明框架:1.引言
2.信息描述3.功能描述
4.行为描述
5.确认标准
6.运行需求7.附录。3.5.2编写需求分析文档的步骤编写软件需求分析说明书编写初步的用户手册编写确认测试的计划,作为今后软件确认和验收的依据。修改、完善项目开发计划。3.5.3用户手册编写提示1.引言2.用途3.运行环境4.使用过程314.1概要设计步骤
概要设计的基本任务1.
审查可行性研究报告和需求分析规格说明书。2.
确定模块结构、数据文件结构、系统接口设计和测试方案策略。3.
编写概要设计说明书、用户手册和测试计划。4.
复审。概要设计的基本步骤:进行软件结构设计、数据文件设计、系统接口设计、测试方案设计、复审。324.1.1软件结构设计1.设计供选择的方案2.推荐最佳实现方案3.设计软件结构4.1.2数据结构及数据库设计数据结构设计数据库设计4.1.3系统接口设计系统接口包括内部接口、外部接口和用户接口。数据流图和控制情况是接口设计的基础。4.1.4设计测试方案在概要设计阶段,测试方案主要根据系统功能来设计,称为黑盒法测试。334.2软件设计的基本原理
4.2.1模块与信息隐蔽(1)模块模块(module)是能够单独命名,能独立地完成一定功能,由边界元素限定的程序元素的序列。模块的基本属性:名称、接口、功能、逻辑、状态。(2)信息隐蔽指在设计和确定模块时,使一个模块内包含的信息,对于不需要这些信息的其他模块来说,是不能访问的。344.2.2模块化模块化(Modularization)是把系统分割成能完成独立功能的模块。1.模块化可产生的效果2.模块分割方法(1)抽象与详细化(2)根据功能来划分模块
①横向分割
②纵向分割③先确定中心控制模块,由控制模块指示从属模块,逐次进行分解。354.2.3模块的耦合和内聚
1.模块的耦合软件结构中模块之间互相依赖的程度用耦合来度量。数据耦合控制耦合公共环境耦合内容耦合总之,应:在尽量使用数据耦合,少用控制耦合。用参数传递信息,不采用内容耦合,尽量控制公共环境耦合。362.模块的内聚
一个模块内各个元素彼此结合的紧密程度用内聚来度量。(1)偶然内聚(2)逻辑内聚(3)时间内聚
(4)通信内聚
(5)顺序内聚
(6)功能内聚内聚按紧密程度从低到高排列:偶然内聚、逻辑内聚、时间内聚、通信内聚、功能内聚。374.2.4软件结构设计优化准则1.提高模块独立性2.模块接口的准则模块的接口要简单、清晰,含义明确,便于理解,易于实现、测试与维护。3.模块的作用范围应在控制范围之内4.模块的深度、宽度、扇出和扇入应适当5.模块的大小应适中384.3软件结构设计的图形工具
4.3.1层次图(或HIPO图)394.3.2结构图
1.结构图的符号(1)方框代表模块,框内注明模块的名字和主要功能。(2)方框之间的大箭头或直线表示模块的调用关系。(3)带注释的小箭头表示模块调用时传递的信息及其传递方向。尾部加空心圆的小箭头表示传递数据信息。尾部加实心圆的小箭头表示传递控制信息。(4)选择结构(5)循环结构,模块H循环调用模块A,B,C,见图4.5(b)。402.结构图的绘制
【例4-6】学生成绩管理系统的结构图414.4概要设计方法4.4.1结构化方法结构化方法又称面向数据流设计方法(StructuredDesign,SD)。设计步骤是先根据系统数据流图建立系统逻辑模型,再进行结构设计。1.建立系统逻辑模型(1)变换型数据流(2)事务型数据流【例4.7】学生成绩管理系统系统属于变换型数据流。【例4.8】工资管理系统属于事务型数据流。【例4.9】医疗费管理系统中事务型、变换型两种数据流同时存在
2.完成软件结构设计424.4.2面向数据结构设计方法
Jackson把数据结构(或程序结构)分为以下三种基本类型:(a)顺序(b)选择(c)循环43Jacksan图特点:
l
能对结构进行自顶向下分解,可以清晰地表示层次结构
l
结构易读、形象、直观
l
既可表示数据结构也可表示程序结构
Jackson设计方法的四个步骤:1、分析并确定输入数据和输出数据的逻辑结构;2、找出输入数据结构和输出数据结构中有对应关系的数据单元;3、从描述数据结构的Jackson图导出描述程序结构的Jackson图;4、列出所有的操作和条件,并把它们分配到程序结构图中去。
44【例4.11】用Jacksan方法对学生成绩管理系统进行结构设计。例3.2学生成绩管理系统在学生入学时输入学生基本信息。每次单科成绩是按班级内学生学号的顺序依次输入每位学生的平时成绩和考试成绩,成绩输入格式见表4.1。然后由计算机计算每位学生的单科成绩总评分。输出的学生个人成绩单格式,见表4.2;班级各科成绩汇总表格式,见表4.3。4546474.5代码设计
1.代码的定义和作用代码是为了对数据进行识别、分类、排序等操作所使用的数字、文字或符号。2.代码的性质
4.5.1代码设计原则1、标准化:国际标准、国家标准、部颁标准或习惯标准2、惟一性
3、可扩充性4、
简单性5、规范化6、适应性
484.5.2代码种类
1.顺序码
2.信息块码
3.归组分类码
见表4.4归组代码示例
4.助记码
5.数字式字符码
6.组合码
49表4.4归组代码示例信息代码哲学100宗教200社会科学300法律320商法325公司法3252股份公司法32524合股公司法32525504.5.3代码设计方法
基本步骤如下:1.确定编码对象2.明确编码目的3.确定代码的个数4.确定代码使用范围和使用期限5.确定代码体系和代码位数6.确定编码规则7.编写代码8.编写代码词典514.6数据输入输出设计4.6.1输入设计4.6.2输出设计524.7数据安全设计
软件系统发生的事故类型。数据安全控制方法:1.检查数据的正确性、完整性2.检查用户使用权限3.系统运行日志4.监督检查违规行为5.加密6.数据安全受破坏时的措施534.8概要设计文档与复审
4.8.1概要设计说明书4.8.2概要设计复审4.8.3数据库设计说明书54详细设计的主要任务:
过程设计和系统界面设计系统界面设计要完成系统外部接口、系统内部模块接口和用户界面的设计。用户界面设计是软件与使用它的人之间的通信接口的设计。过程设计的任务是设计软件结构中每个模块功能的实现算法。结构化设计建立在自顶向下设计、逐步求精方法和数据流分析等原则基础上。结构化设计只用三种基本控制结构:顺序结构、条件结构和循环结构。555.1用户界面设计
5.1.1用户界面设计问题1.系统响应时间2.用户帮助设施3.出错信息处理4.命令交互5.1.2用户界面设计过程用户界面设计是一个迭代的过程,一般步骤如下:先设计和实现用户界面原型。用户试用该原型,向设计者提出对界面的评价。设计者根据用户的意见修改设计并实现下一级原型。不断进行下去,直到用户满意为止。5.1.3用户界面设计的基本原则(1)可靠性(2)简单性(3)易学习性和易使用性(4)立即反馈性5.1.4用户界面设计指南1.一般交互2.信息显示3.数据输入56
5.2过程设计
过程设计就是用顺序、选择和循环三种结构的有限次组合或嵌套,描述模块功能的实现算法。过程设计阶段的工具:流程图、N_S图、问题分析图(PAD图)、判定表、判定树、过程设计语言(PDL)等。5.2.1流程图1.流程图的分类(1)数据流程图(2)程序流程图(3)系统流程图(4)程序网络图(5)系统资源图572.流程图符号583.流程图使用约定
594.流程图的三种基本结构:
顺序、选择、循环。
605.2.2盒图
盒图是Nassi和Shneiderman提出的,又称N_S图。
1.盒图的符号61【例5.1】将下述含有GOTO语句的用程序流程图,改为N_S图。
62【例5.2】学生成绩管理系统的N-S图。
635.2.3PAD图
基本符号64【例5.3】学生成绩管理系统的PAD图
655.2.4判定表
1.判定表的组成左上部列出所有条件。左下部列出所有可能做的工作。右上部每一列表示各种条件的一种可能组合,所有列表示条件组合的全部可能情况。右下部的每一列是和每一种条件组合所对应的应做的工作。2.判定表中的符号右上部用“T”表示条件成立,用“F”表示条件不成立,空白表示条件成立与否不影响。右下部画“X”表示做该行左边列出的那项工作,空白表示不做该项工作。66例5.4用判定表表示旅游票价的优惠规定。
某旅行社根据旅游淡季、旺季及是否团体订票,确定旅游票价的折扣率。具体规定如下:人数在20人以上的属团体,20人以下的是散客。每年的4-5月、7-8月、10月为旅游旺季,其余为旅游淡季。旅游旺季,团体票优惠5℅,散客不优惠。旅游淡季,团体票优惠30℅,散客优惠20℅。用判定表表示旅游订票的优惠规定。67例5.5用判定树表示旅游价格优惠规定。某旅行社根据旅游淡季、旺季及是否团体订票,确定旅游票价的折扣率。具体规定如下:人数在20人以上的属团体,20人以下的是散客。每年的4-5月、7-8月、10月为旅游旺季,其余为旅游淡季。旅游旺季,团体票优惠5℅,散客不优惠。旅游淡季,团体票优惠30℅,散客优惠20℅。用判定表表示旅游订票的优惠规定。685.2.6过程设计语言
过程设计语言(ProgramDesignLanguage,简称PDL),也称伪码,是一种混杂语言,说明某种结构化的程序设计语言的语法形式。用PDL表示的程序结构:1顺序结构
处理1处理2
…处理3选择结构
IF-THEN-ELSE结构:IF条件处理1ELSE处理2ENDIFIF-THEN结构:IF条件处理1NDIF69CASE结构:CASE条件OFCASE(1)处理1CASE(2)处理2
…CASE(n)处理n3。循环结构FOR循环结构:FORi=1TOn循环体ENDFORWHILE循环结构:WHILE条件循环体ENDWHILEUNTIL循环结构:REPEAT循环体UNTIL条件704.模块定义和调用模块定义PROCEDURE模块名(参数)
…RETURE模块调用CALL模块名(参数)数据定义DECLARE类型变量名,…其中,类型可以有:字符、整型、实型、双精度、指针、数组及结构等类型。5.输入或输出GET(输入变量表)PUT(输出变量表)715.3详细设计文档与复审5.3.1详细设计说明书5.3.2操作手册编写提示5.3.3详细设计的复审用下列形式之一完成:设计者和设计组的另一成员一起进行静态检查;由检查小组进行较正式的软件结构设计检查;由检查小组进行正式的设计检查,对软件设计质量给出评价。72
用户界面设计的质量直接影响用户对软件产品的评价,应对用户界面设计给以足够的重视。过程设计应在数据设计、概要设计、接口设计完成之后进行,是详细设计阶段应完成的主要任务。详细设计阶段使用的工具:流程图、N_S图、PAD图、判定表、判定树、过程设计语言(PDL)等,读者应当熟练掌握这些工具。736.1结构化程序设计方法
1.什么是结构化程序设计结构化程序(StructuredProgram)是由基本的控制结构,构造而成的程序。每个控制结构只有一个入口点和一个出口点。结构化程序设计(StructuredProgramming,SP)结构化程序设计强调对模块采用自上而下、逐步细化的设计方法;不主张用GOTO语句来随意转移程序的控制;主张仅采用顺序、选择、重复三种基本控制结构;每种基本控制结构只有一个入口、一个出口、完成一个操作;将这三种基本控制结构根据程序的逻辑,嵌套或组合成结构化程序,完成预定的功能。2.结构化程序设计的特点源程序有清晰性,并能较好地适合自顶向下或自底向上的程序设计技术。在详细设计阶段,使系统结构具有模块化和清晰性的特性。在软件编码阶段,使软件易于理解、修改,便于重复使用。746.2选择程序设计语言1.程序设计语言的分类(1)面向机器语言:包括机器语言和汇编语言。(2)高级程序设计语言2.高级语言选用的实用标准(1)项目的应用领域(2)软件开发环境(3)根据系统用户的要求来选择(4)软件开发人员的知识
如果和其他标准不矛盾,则应选择一种软件开发人员熟悉的语言,使开发速度更快,质量更易保证。但是开发人员应仔细分析软件项目的类型,敢于学习新知识、掌握新技术。756.3程序设计风格源程序文档编写规则1.源程序文档编写时,其标识符名称、注解和程序布局等要合理。2.数据说明3.语句构造要简单直接4.输入输出语句5.程序效率程序设计主要应考虑的是程序的正确性、可理解性、可测试性和可维护性。766.4程序设计质量的评价正确性清晰的结构易使用性易维护性简单性易移植性776.5程序设计文档软件编码阶段的主要文档是源程序。程序设计文档在保存时要记载:开发时间、开发者、测试记录、用户手册等。每次程序修改要及时更改程序所对应的各项软件配置。786.6软件测试目标和原则6.6.1软件测试目标(1)软件测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案能够发现尚未发现的错误;(3)成功的测试是发现了尚未发现的错误的测试。软件测试的目的是,通过人工或计算机执行程序来有意识地发现程序中的设计错误和编码错误。6.6.2测试原则796.7软件测试方法
6.7.1静态分析与动态测试1.静态分析2.动态测试:以执行程序并分析程序来查错。为了进行软件测试,需要预先准备好两种数据:①输入数据;②预期的输出结果。我们把以发现错误为目标的用于软件测试的输入数据及与之对应的预期输出结果叫测试用例。6.7.2黑盒法与白盒法1.黑盒法黑盒法(Black.BoxTesting)又称功能测试,其测试用例完全是根据程序的功能说明来设计的。2.白盒法白盒法(WhiteBoxTesting)又称结构测试,其测试用例是根据程序内部的逻辑结构和执行路径来设计的。常把黑盒法和白盒法联合起来进行,这也称为灰盒法。806.8软件测试步骤
6.8.1模块测试模块测试也称单元测试,其目的是检查每个模块是否能独立、正确地运行。模块测试通常在程序设计时进行。驱动程序代替主程序,用来测试子程序。存根程序也称“虚拟子程序”,测试主模块。6.8.2集成测试子系统的组装称为集成化。集成测试分为子系统测试和系统测试两种。渐增式测试、非渐增式测试1、自顶向下集成2、自底向上集成6.8.3程序审查会和人工运行1.程序审查会2.人工运行6.8.4确认测试1.确认测试必须有用户积极参与,或以用户为主进行。2.软件配置复审3.Alpha测试和Beta测试6.8.5平行运行816.9设计测试方案测试方案包括三个内容:要测试的功能输入的数据对应的预期输出结果826.9.1等价类划分法1、方法2、等价类划分的规则3、等价类划分法步骤4、等价类测试步骤6.9.2边界值分析法6.9.3错误推测法6.9.4逻辑覆盖法1.语句覆盖2.判定覆盖3.条件覆盖4.判定/条件覆盖5.条件组合覆盖6.点覆盖7.边覆盖8.路径覆盖83【例6.1】按不同逻辑覆盖法设计测试数据
例6.1测试数据的条件组合及对应的执行路径846.9.5因果图法1.因果图法测试用例设计步骤2.因果图基本符号图6.3因果图基本符号853.因果图约束符号
86【例6.2】用因果图法设计测试用例某规格说明规定:输入的第一列字符必须是A或B,第二列字符必须是一个数字。第一、二列都满足条件时执行操作H;如果第一列字符不正确,则给出信息L;如果第二列字符不正确,则给出信息R。根据上述要求画出因果图,并设计测试用例。87图6.5例6.2因果图
表6.2例6.2判定表886.9.6实用测试策略
用等价类划分法设计测试方案。
使用边界值分析方法,既测试输入数据的边界情况又包括输出数据的边界情况。(3)如果含有输入条件的组合情况,一开始就用因果图法。(4)必要时用错误推断法补充测试方案。(5)用逻辑覆盖法检查现有测试方案,若没有达到逻辑覆盖标准,再补充一些测试用例。【例6.3】对学生成绩管理系统“输入学生成绩”子模块设计测试用例。896.10软件调试、验证与确认
6.10.1软件调试软件调试也称纠错。首先进行软件测试,第二步是纠错6.10.2程序正确性验证(软件验证)是确定软件开发周期中的一个给定阶段的产品是否达到需求的过程。6.10.3软件确认软件确认的方法:1.系统功能和性能满足需求说明书中的全部要求,得到用户认可。2.完成测试计划中的所有要求,并书写测试分析报告和开发总结。3.按用户手册和操作手册进行软件实际运行。本阶段结束时应完成的文档有:1.测试分析报告;2.经确认的用户手册和操作手册;3.软件开发总结。906.11软件测试计划和分析报告1.软件测试计划2.测试说明文件测试设计说明测试用例说明测试规程说明3.软件测试分析报告91第6章小结
程序设计也称软件编码,通过软件编码得到软件设计的结果。在设计应用软件时,应当优先选用高级程序设计语言,只有三种情况选用汇编语言。结构化程序设计是将顺序、选择、重复三种基本控制结构进行组合和嵌套,以容易理解的形式和避免使用GOTO语句等原则,进行的程序设计方法。软件设计风格直接影响软件的质量,影响软件的可维护性和可移植性。软件编码阶段应对源程序进行静态分析和模块测试,以保证程序的正确性。软件测试(testing)是由人工或计算机来执行或评价系统或系统部件的过程,以验证它是否满足规定的需求或识别期望的结果和实际结果之间有无差别。测试的根本任务是发现并改正软件中的错误。测试过程的早期使用白盒法,后期使用黑盒法。设计测试方案的基本目标是,选用尽可能少的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的错误。92
1.使用边界值分析方法。既包括输入数据的边界情况又包括输出数据的边界情况。2.用等价类划分法补充测试方案。3.必要时用错误推断法补充测试方案。4.用逻辑覆盖法检查现有测试方案,若没有达到逻辑覆盖标准,再补充一些测试方案。软件调试是查找、分析和纠正程序中错误的过程。测试和调试常常交替进行。软件确认是指在软件开发过程结束时,对所开发的软件进行评价,以确定它是否和软件需求相一致的过程。937.1.2结构性维护与非结构性维护
947.1.3维护的费用
7.1.4维护的困难
7.1.5维护的实施
1.维护组织2.维护文档有两种:维护要求表,维护修改报告。3.维护的流程(1)确定类型(2)维护记录的保存(3)维护的复审7.1.6维护的副作用编码副作用数据副作用文档副作用957.2软件的可维护性软件可维护性指软件被理解、改正、调整和改进的难易程度。7.2.1决定可维护性的因素是否拥有一组训练有素的软件人员;系统结构是否可理解、是否合理;文档结构是否标准化;测试用例是否合适;是否已有嵌入系统的调试工具;是否使用标准的程序设计语言;是否使用标准的操作系统和程序设计语言等。967.2.2可维护性的度量
7.2.3提高软件的可维护性1.明确软件工程的质量目标2.利用先进的软件技术和工具3.选择便于维护的程序设计语言4.采取有效的质量保证措施5.完善程序的文档97
软件维护(softwaremaintenance)就是在软件产品交付之后对其进行修改,以纠正故障,或改进性能和其它属性,或使产品适应改变了的环境。四种软件维护:改正性维护、适应性维护、完善性维护和预防性维护。软件可维护性就是维护人员对该软件进行维护的难易程度,具体包括理解、改正、改动和改进该软件的难易程度。提高软件的可维护性是软件工程各阶段追求的目标之一。在开发时明确质量目标、考虑软件的维护问题是必须的、重要的。在软件开发阶段提供完整、一致的文档,采用先进的软件开发方法和软件开发工具是提高软件可维护性的关键。98面向对象方法简称为OO(ObjectedOriented)方法面向对象分析(ObjectOrientedAnalysis,简称OOA)面向对象设计(ObjectOrientedDesign,简称OOD)统一建模语言UML(UnifiedModelingLanguage)是一种直观的、通用的、可视化建模语言。本章主要内容:面向对象方法概述
UML概述
UML图本章重点:面向对象方法学的主要概念
UML图998.1面向对象方法概述
对象(Object):面向对象方法把客观世界中的实体抽象为问题域中的对象。类(Class):类是对具有相同数据和相同操作的一组相似对象。继承(Inheritance):在层次结构中,下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承。消息传递:对象彼此之间仅能通过传递消息相互联系。封装性:对象的信息都被封装在该对象类的定义中,必须发消息请求它执行其某个操作,处理它的数据,不能从外界直接对它的数据进行操作。OO=Objects+Classes+Inheritance+CommunicationwithMessages面向对象=对象+类+继承+消息传递1008.1.1面向对象方法学的主要优点
1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.较易开发大型软件产品5.可维护性好1018.1.2面向对象的概念
1.对象(object)(1)对象的定义:在应用领域中有意义的、与所要解决的问题有关系的任何事物都可作为对象。
(2)对象的特点2.类(Class):类是具有相同属性和相同方法的一组对象的集合。3.实例(Instance):一个对象是类的一个实例。4.属性(Attribute):是类中所定义的数据。5.消息(Message):消息就是向对象发出的服务请求。6.方法(Method):方法是对象所能执行的操作,是类中所定义的服务。7.封装(Encapsulation)8.继承(Inheritance)
单继承和多重继承。9.多态性(Polymorphism)10.重载(Overloading)1028.2UML概述
8.2.1UML的发展统一建模语言UML(UnifiedModelingLanguage)模型由一组图形符号和组织这些符号的规则组成,模型的描述应当无歧义。8.2.2UML设计目标和内容UML是一种描述、构造、可视化和文档化的软件建模语言。UML是面向对象技术软件分析与设计中的标准建模语言统一了面向对象建模的基本概念、术语及其图形符号,建立了便于交流的通用语言。1.UML的设计目标2.UML的内容包括UML语义、UML表示法和几种模型。UML表示法由UML图、视图、模型元素、通用机制和扩展机制组成。103UML表示法:
由UML图、视图、模型元素、通用机制和扩展机制组成。
(1)图(diagram)5类9种图。
1)用例图
2)静态图:包括类图及包、对象图。
3)行为图:包括状态图和活动图
4)交互图:包括顺序图和合作图
5)实现图:包括构件图和配置图
(2)视图(view)(3)模型元素(modelelement)(4)通用机制:(5)扩展机制:标签、约束、版型UML模型:用例模型静态模型动态模型1048.3UML图以下几种符号在各种UML图中可能都要用。注释(a)消息(b)105
8.3.1用例图
用例图从用户的角度描述系统功能,并指出各功能的操作者。
(1)用例
(2)执行者:执行者也称为角色,用一个小人图形表示。
(3)通信联系
(4)脚本
106【例8.1】饮用水自动售水系统如果投入1元硬币,则自动放水5立升;投入5角硬币,放水2.5立升;如果选择1元,投入2个硬币,也可放水5立升。如果饮用水来不及生成,会把硬币落下来并亮红灯。硬币由收银员定时回收。1078.3.2类图和包
1.类图的符号属性的语法格式为:可见性属性名:类型名=初值{性质串}操作的语法规则为:可见性操作名(参数表):返回值类型{性质串}1082.类的关联关系
类的关联关系表示类与类之间存在某种联系。
普通关联限定关联关联类共享聚集复合聚集1093.类的一般-特殊关系4.类的依赖关系.1105.类的细化关系:
用于表示类的模型的相互关系。
类图可分为三个层次概念层类图说明层类图实现层类图1116.包重用等价原则共同闭包原则共同重用原则非循环依赖原则8.3.3对象图对象有三种表示方式:对象名:类名:类名对象名1128.3.4状态图
【例8.2】状态机举例1138.3.5顺序图
顺序图有两个方向:
【例8.3】用顺序图描述打电话的操作过程。
1148.3.6活动图
活动图(activitydiagram)是状态图的一种特殊情况。
【例8.4】用活动图描述打电话过程。
115.3.7协作图1168.3.8构件图1178.3.9部署图
含有以下要素:结点及其连接,构件及其接口,对象。
【例8.5】用部署图描述使用金龙卡的饮食销售系统。1189.1面向对象分析9.1.1面向对象分析过程1.分析对象的属性、服务及消息的传递。2.分析对象在系统中的不同状态及状态的转换。建立三种模型:描述系统数据结构的对象模型。描述系统控制结构的动态模型。描述系统功能的功能模型。9.1.2面向对象分析原则1.包含原则2.排斥原则1199.2建立对象模型
9.2.1确定对象和类1.对象2.类类是具有相同属性和服务的一组对象的集合。对象有三种表示方式:对象名:类名:类名对象名1209.2.2确定类的相互关系1.类的一般-特珠关系1212.聚集关系
“整体—部分”关系1223.关联关系阶链属性限定123【例9.1】教师指导学生毕业设计,多对多关联的分解。1244.主动对象
一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称为主动服务)。125
9.2.3划分主题
【例9.2】商品销售管理系统主题图1269.3建立动态模型
9.3.1编写脚本
【例9.3】打电话、通话过程的脚本打电话、通话过程的一系列事件列出如下:打电话者拿起电话受话器电话拨号音开始打电话者拨数字(8)电话拨号音结束打电话者拨数字(2).......打电话者拨数字(3)如果电话号码拨错,交换机提示出错信息;如果号码正确,且对方空闲,则接电话者的电话开始振铃铃声在打电话者的电话上传出如果在30秒钟内,接电话者拿起话筒接电话者的电话停止振铃打电话者的电话停止振铃通电话.........接电话者挂断电话电话切断打电话者挂断电话如果拨号正确,对方忙,打电话者的电话上传出忙音如果接电话者在30秒钟内,不接听电话,双方电话停止振铃1279.3.2设计用户界面
9.3.3画UML顺序图或活动图
【例9.4】画出招聘考试管理系统的顺序图
某市人事局举行统一招聘考试。首先,各招聘单位向人事局登记本单位各专业的招聘人数,由人事局向社会公布招聘情况;考生报名、填志愿;人事局组织安排考试;录入考试成绩;向考生和招聘单位公布成绩;招聘单位进行录用;发录用通知书。这里,共有三个对象类:人事局、考生和招聘单位。128【例9.4】画出招聘考试管理系统的顺序图1299.3.4画状态转换图
【例9.5】分别画出旅馆管理系统中旅客和床位的状态转换图。1309.4建立功能模型
确定输入、输出值数据流图中的输入、输出值是系统与外部之间进行交互的事件的参数。画数据流图定义服务1319.5面向对象设计9.5.1系统设计1.将系统分解为子系统2.设计问题域子系统3.设计人-机交互子系统4.设计任务管理子系统5.设计数据管理子系统9.5.2对象设计1.对象描述2.设计类中的服务3.设计类的关联4.链属性的实现5.设计的优化1329.5.3面向对象设计的准则1.模块化2.抽象3.信息隐藏4.低耦合(弱耦合)5.高内聚(强内聚)6.重用性9.5.4面向对象设计的启发规则1.设计结果应该清晰易懂2.一般—特殊结构的深度应适当3.设计简单的类4.使用简单的协议5.使用简单的服务6.把设计变动减到最小1339.6UML的应用
9.6.1UML模型1.用例模型2.静态模型3.动态模型4.实现模型1349.6.2UML视图视图域视图图主要概念结构分类静态视图类图类、关联、泛化、依赖关系、实现、接口用例视图用例图用例、执行者、关联、扩展、包含、用例继承实现视图构件图构件、接口、依赖关系、实现动态行为部署视图部署图结点、构件、依赖关系、位置。状态视图状态图状态、事件、转换、动作活动视图活动图状态、活动、转换、分叉、连接交互视图顺序图交互、对象、消息、激活协作图协作、交互、角色、消息模型管理模型管理视图类图包、子系统、模型。可扩展性所有所有约束、版型、标签值1359.6.3UML使用准则
选择使用合适的UML图只对关键事物建立模型分层次地画模型图模型应具有协调性模型和模型的元素大小适中1369.6.4UML的扩展机制1.标签值2.约束3.版型9.6.5UML的应用领域UML的目标是,用面向对象的图形方式来描述任何系统。UML适用于系统开发的全过程,应用于需求分析、设计、编码和测试的所有阶段。1379.7面向对象系统的实现9.7.1选择程序设计语言1.选择编程语言的关键因素2.面向对象语言的技术特点3.选择面向对象语言的实际因素9.7.2面向对象程序设计1.提高软件的可重用性2.可扩充性3.健壮性1389.7.3面向对象的测试
1.
面向对象的测试步骤分为四个层次:a)
算法层:测试类的每个服务。b)
类层:测试同一类中的所有服务与属性之间相互作用。c)
模板层:测试协同工作的类之间的相互作用。d)
系统层:把子系统组装成完整的面向对象软件系统,同时进行测试。2.面向对象的确认测试主要用黑盒法,根据动态模型和描述系统行为的脚本来设计测试用例。1399.8统一过程RUPRUP(RationalUnifiedProcess)9.8.1RUP的开发模式1409.8.2统一过程的特点1.基于构件2.使用UML统一建模语言3.Rational统一过程是用例驱动的4.RUP采用迭代增量方式5.Rational统一过程采用构架优先方法9.8.3统一过程的要素.项目产品人员过程工具建议访问中文网站
和http://www.uml。14110.1软件开发工具
软件开发工具是一种计算机程序系统,用来帮助软件的开发、维护和管理。1.软件开发工具的功能是指在软件开发过程中能提供哪些支持或帮助。2.软件开发工具的性能则是支持或帮助的程度。3.软件开发工具的分类4.软件工具发展的特点10.2软件工程环境1.软件工程环境的定义软件开发环境是指在计算机基本软件的基础上,为了支持软件的开发而提供的一组工具软件系统。“软件工程环境是一组方法、过程及计算机程序的整体化构件,它支持从需求定义、程序生成直到维护的整个软件生存周期。”2.软件工程环境的分类3.软件工程环境的构成和特性10.3CASE技术计算机辅助软件工程(ComputerAidedSoftwareEngineering,CASE)技术是一组工具和方法的集合,可以辅助软件生存周期各阶段进行软件开发活动。1.CASE技术种类2.CASE工具的分类3.CASE的集成14211.1可重用的软件成分软件的重用分为三个层次知识重用方法和标准的重用软件成分的重用:源代码的重用设计结果重用分析结果重用14311.2软件重用过程11.2.1软件重用过程模型1.软件重用的组装模型1442.类构件
实例重用
继承重用
多态重用
3.软件重用过程模型
14511.2.2开发可重用的软件构件
分析过程开发可重用的软件构件。传播软件构件。11.2.3分类和检索软件构件枚举分类(EnumeratedClassification)刻面分类(FacetedClassification)属性值分类(Attribute-ValueClassification)11.2.4软件重用环境构件库:存放软件构件和检索构件所需要的分类信息。构件库管理系统:管理对构件库的访问。软件构件库检索系统:用户应用系统通过检索系统,检索构件、重用构件。CASE工具:帮助用户把重用的构件集成到新的设计中。14612.1软件工程管理概述1.软件产品的特点2.软件工程管理的重要性3.软件工程管理的内容包括对软件开发成本、控制、开发人员、组织机构、用户、软件开发文档、软件质量等方面的管理。14712.2软件规模估算12.2.1软件开发成本估算方法12.2.2代码行技术和任务估算技术1.代码行技术2.任务估算技术14812.2.3功能点技术
信息域特性
输入项数、输出项数、查询数、主文件数和外部接口数。
估算功能点的步骤
估算功能点的步骤有三个。
计算未调整的功能点数UFP149计算未调整的功能点数UFP
UFP=a1×Inp+a2×Out+a3×Inq+a4×Maf+a5×Inf
其中,ai(1≤i≤5)是信息域特性系数,值由相应特性的复杂级别决定。
计算技术复杂因子TCF序号技术因素Fi技术因子值1数据通信F12分布式数据处理F23性能标准F34高负荷的硬件F45高处理率F56联机数据输入F67终端用户效率F78联机更新F89复杂的计算F912可重用性F1211安装方便F1112操作方便F1213可移植性F1314可维护性F14150计算技术因子对软件规模的综合影响程度DI:技术复杂性因子TCP由下式计算:TCP=0.65+0.01×DI计算功能点数FP
FP=UFP×TCP15112.2.4COCOMO模型1.COCOMO(COnstructiveCOstMOdel)模型是Boehm提出的构造性成本模型。三种COCOMO模型1)基本COCOMO模型2)中级COCOMO模型3)高级COCOMO模型15212.2.4COCOMO模型
2.COCOMO估算公式1)基本COCOMO模型估算公式式中,E为开发所需的人力(人月),D为所需的开发时间(月),KLOC为估计提交的代码行数,ab,bb,cb和db是指不同软件开发方式对应的值,导出生产率(代码行/人月)和所需人员数的计算公式:生产率=(KLOC)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高考语文一轮复习高中语文必修上理解性默写(打印版)
- 部编版一年级语文下册 期中考试卷(含答案)
- 手房房屋买卖合同答辩状
- 服务器硬件故障应急响应
- 代养收养入住协议
- 农业生产三农村电商人才培养方案
- 网络推广策略效果统计表
- 安徽初一下数学试卷
- 门店承包租赁合同
- 三农产品电商平台数据挖掘与分析与应用方案
- 前言 马克思主义中国化时代化的历史进程与理论成果
- 思想道德与法治2023版教学设计第二章 追求远大理想 坚定崇高信念
- 21ZJ111 变形缝建筑构造
- 电子商务概论目录
- 装修返工合同
- 高等数学考研辅导课(一)学习通超星课后章节答案期末考试题库2023年
- 消力池砼施工工法
- 国家职业类别1-6类明细表
- 中国文艺美学要略·论著·《画学心法问答》
- 如何建立卓越地价值观
- 舞台搭建方面基础知识
评论
0/150
提交评论