软件开发技术基础 第4版 课件 第1章软件开发方法_第1页
软件开发技术基础 第4版 课件 第1章软件开发方法_第2页
软件开发技术基础 第4版 课件 第1章软件开发方法_第3页
软件开发技术基础 第4版 课件 第1章软件开发方法_第4页
软件开发技术基础 第4版 课件 第1章软件开发方法_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章软件开发方法2024西安交通大学11.1软件工程概述计算机软件是计算机程序、数据及相关文档的集合。软件的开发和使用过程中常常受许多问题的困扰计算机软件的开发和维护过程中所遇到的一系列严重问题称为“软件危机”软件危机的特征1)软件开发进度难以预测2)软件开发成本难以控制3)用户对软件产品的功能要求难以满足4)软件产品的质量无法保证,系统中的错误难以消除5)软件产品难以维护6)软件通常缺少文档资料7)软件成本不断提高8)软件开发生产率的提高速度难以满足社会需求的增长率西安交通大学21.1.1软件的特征1.软件产品的特征1)软件是一种逻辑的产品。2)软件产品质量的体现方式不同。3)软件产品的成本构成不同。4)软件产品的失败曲线不同。5)大多数软件仍然是定制生产的。2.产生软件危机的原因西安交通大学3软件项目失败的主要原因西安交通大学43.解决软件危机的途径组织管理、技术方法西安交通大学51.1.2软件工程1.软件工程的定义IEEE:将系统的、规范的和可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。国标GB/T11457-2006:应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科西安交通大学62.软件工程的目标在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可操作性且满足用户需求的产品。1)提高软件的生产效率,更快、更多地开发软件,按时完成开发任务。2)达到软件要求的功能。3)取得较好的软件性能,包括易于移植、易于维护,可靠性高等。4)降低软件的开发成本。西安交通大学73.软件工程的研究内容1)软件开发技术软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境。软件开发方法学软件开发过程软件工具软件开发环境4.软件开发方法1)结构化方法自顶向下、逐步求精模块化设计、语句结构化结构化方法的不足西安交通大学82)面向对象方法(1)面向对象方法简介面向对象方法是基于“对象、类、继承性、消息机制和多态性等技术特征”的构造软件系统的开发方法。把对象(Object)作为一种统一的软件构件,它将数据及在数据上的操作行为融合为一体。软件中的类(Class)是一类事物的描述。类具有层次结构,子类可以继承父类的特性和方法(继承性)。对象之间只能通过传递消息构成相互之间的联系(消息机制)。西安交通大学9(2)面向对象方法实施的基本步骤面向对象分析、面向对象设计面向对象编程、面向对象测试面向对象的软件维护(3)面向对象方法的主要优点与人类习惯的思维方式一致。稳定性好。可重用性好。可维护性好。西安交通大学101.1.3生命周期模型软件生命周期软件产品从提出开发要求开始,经过需求分析、设计、编码、测试、使用,直到该软件产品被淘汰为止的整个过程。1.软件生命周期各阶段的任务1)软件定义时期问题定义可行性研究需求分析2)软件开发时期总体设计详细设计编码阶段测试阶段3)软件维护时期西安交通大学112.软件生命周期模型软件开发中如何划分阶段,完成哪些工作,如何评价和评审,它们的顺序如何等等的组织方案1)瀑布模型(WaterfallModel)西安交通大学122)快速原型模型(RapidPrototypeModel)快速建立反映用户主要需求的系统原型用户试用后提出修改意见开发人员按照用户意见不断修改原型系统直到用户确认原型系统确实能实现所需的功能开发人员据此编写规格说明书根据这份文档完成满足用户需求的软件西安交通大学133)增量模型(IncrementalModel)西安交通大学144)螺旋模型(SpiralModel)西安交通大学155)敏捷软件开发(1)敏捷宣言个体和交互优于过程和工具可工作的软件优于面面俱到的文档客户合作优于合同谈判响应变化优于遵循计划(2)敏捷开发的12条原则①通过及早、持续交付有价值的软件来满足客户需求。①通过及早、持续交付有价值的软件来满足客户需求。②欢迎需求变化,即使是在软件开发的后期。③频繁交付能用的软件,交付频率从两周到两个月或更短。④业务人员和开发人员必须合作,这种合作贯穿于每一天。西安交通大学16⑤围绕主动性强的人来立项,为他们提供必要的环境和支持。⑥开发团队内部及跨团队之间最有效和最高效的信息传递方式是面对面交流。⑦能用起来的软件是衡量进度的基本依据。⑧倡导可持续开发,开发人员和用户都应能够长期保持稳定、可持续工作节拍。⑨持续保持对技术卓越和设计优良的关注。⑩简洁为本,极简就是消除浪费的艺术。⑪最好的架构、需求和设计是从自组织团队中涌现出来的。⑫团队按固定的时间间隔反思提效方式,从行动上做出相应的优化和调整。西安交通大学176)极限编程(1)客户团队成员(2)用户故事。(3)短交付周期。(4)验收测试。(5)结对编程。(6)测试驱动开发。(7)集体所有权。(8)持续集成。(9)可持续的开发速度(11)规划游戏。(12)简单设计。(13)重构。(14)隐喻。西安交通大学187)Scrum(1)三种制品产品待定项冲刺待定项代码增量(2)三个角色产品负责人开发团队敏捷教练(3)四项活动规划会议每日站立会演示评审会冲刺回顾西安交通大学191.2软件开发过程1.2.1需求分析1.软件需求要了解的问题功能性需求限制条件质量需求2.软件需求活动的主要工作1)识别问题。2)可行性研究。3)分析建模。4)需求规格化及编写文档。西安交通大学203.软件规格说明书的内容1)概述。2)需求说明。3)运行环境规定及技术路线。4)限制。4.数据流图1)数据流图的符号数据流数据存储加工源点和终点2)数据流图的结构顶层中间层底层西安交通大学21【例1-1】职业培训中心管理系统。西安交通大学22西安交通大学23西安交通大学245.数据字典数据字典是数据流图中所有元素的定义(解释)的集合。数据词典中有4种类型的条目:数据流、数据存储、数据项和加工。1)数据流条目西安交通大学25西安交通大学26西安交通大学272)数据存储条目3)数据项条目西安交通大学284)加工条目包括加工的编号、名称、功能、激发条件、加工逻辑、优先级、执行频率和出错处理等6.结构化语言顺序结构,用语句的先后表示,先出现的语句先处理,后出现的语句后处理。选择结构,用类似程序设计语言的if...else结构表示。循环结构:用类似程序设计语言的for,while结构表示。【例1-2】设报名信息的结构为报名信息=姓名+性别+出生年月+身份证号+学历+单位+通信地址+

邮政编码+联系电话+报名专业+爱好特长报名信息保存在一个文件中。每行是一名学员的报名信息。写出统计报名学员的男女生比例的结构化语言的表示。西安交通大学297.判定表【例1-3】下表是简化的某快递公司的运费表,按交通的便利程度将目的地分为三类:一类是本省市,交通便利;二类是交通便利的外省市;三类是交通不太便利的外省区,计价单位为:元/kg,不足1kg按1kg计算。请用判定表表示。目的地 首重

续重本省市 8 6二类地区 10 5三类地区 15 6西安交通大学30西安交通大学318.判定树【例1-4】将例1-3中的运费用判定树表示。西安交通大学321.2.2软件设计系统设计阶段的任务则是解决软件系统“如何做”的问题。系统设计分两个阶段:概要设计和详细设计。西安交通大学331.概要设计【例1-5】画出宾馆管理系统中的旅客入住登记子系统的软件结构图。旅客抵达宾馆后,前台服务接待员可根据旅客的性质办理入住登记手续。客人性质分旅行社计划、团体和散客。客人的入住登录信息可供查询、修改、统计汇总。西安交通大学342.详细设计(1)N-S图西安交通大学35(2)PAD西安交通大学363.界面设计4.系统设计说明书(1)概述(2)系统结构(3)数据结构及数据库设计(4)接口设计(5)模块设计西安交通大学375.软件设计准则(1)模块化准则(2)模块独立性准则(3)模块规模应适中(4)软件结构准则(5)模块的作用域应该在控制域内(6)使模块接口简单(7)模块保持单入口、单出口(8)模块功能可预测5.面向对象的设计西安交通大学381.2.3软件实现编码实现和单元测试注意使系统更易于使用和系统的可重用性选择合适的开发工具编程风格1.语句构造2.输入输出3.效率西安交通大学391.2.4软件测试1什么是软件测试(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现至今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。2.软件测试准则(1)所有测试应能追溯到用户需求。(2)严格执行测试计划。(3)应从小规模的测试开始。(4)充分注意测试中的群集现象。(5)穷举测试是不可能的。(6)程序员应避免检查自己的程序。西安交通大学403.白盒测试(1)语句覆盖。选择足够的测试用例,使程序中的每一个语句都至少被执行一次。【例1-6】下列Python程序的功能是当x∈(0,1)时,y=1;x不属于(0,1)时,y=0。设计符合语句覆盖要求的测试用例。x=float(input())ifx>=1orx<=0:y=0else:y=1print(y)西安交通大学41(2)判定覆盖选择足够的测试用例,使不仅每个语句必须至少执行一次,而且每一个判断的每一种可能结果都至少被执行一次的测试方法。【例1-7】下列程序的功能是输入年、月,判断该月是多少天。设计测试用例,满足判定覆盖。days=[0,31,28,31,30,31,30,31,31,30,31,30,31];leap=False;year=int(input())month=int(input())if(year%4==0andyear%100!=0)or(year%400==0):leap=Trueifleap==True:days[2]=29;print("%d年%d月是%d天"%(year,month,days[month]))西安交通大学42(3)条件覆盖不仅使每个语句执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。【例1-8】为例1-7设计满足条件覆盖的测试用例。将程序中的条件列在表1-4中,设计测试用例,使每个条件至少出现一次True,至少出现一次False。西安交通大学43(4)判定/条件覆盖选取足够多的测试用例,使判定表达式中的每个条件取到各种可能的值,而且使每个判定表达式也取到各种可能的值。但判定/条件覆盖也并不比条件覆盖强。如例1-8的测试用例,也满足判定/条件覆盖,但也就是条件覆盖的测试用例。(5)条件组合覆盖它要求选取足够的测试用例,使得每个判定表达式中条件的各种可能组合至少出现一次。西安交通大学44(6)路径覆盖执行足够的测试用例,使程序中所有可能的路径都至少经历一次。西安交通大学454.黑盒测试(1)等价类的划分1)如果规定了输入数据的取值范围,则可以确定一个有效等价类和两个无效等价类。2)如果规定了输入数据的个数,可以按数量划分出一个有效等价类和两个无效等价类。3)如果规定了输入数据的一组值,而且软件要对每个输入值分别进行处理,则可以为每一个值确定一个有效等价类,根据这组值确定一个无效等价类(任何不允许的输入值)。4)如果规定了输入数据必须遵守的规则或者限制条件,则可以确定一个有效等价类(即符合规则)和若干个无效等价类(即各种违反规则的数据类别)。5)如果规定输入数据为整型,则可以划分出正整数、零、负整数和小数作为等价类。也可以使用(-∞,32769),[-32768,32767],(32768,∞)作为等价类。西安交通大学46(2)边值分析经验表明,程序最容易在数据的边界情况发生错误。因此,设计边界值处的测试用例,更容易发现程序的错误。(3)错误推测根据经验,列出程序中所有可能发生错误和容易发生错误的情况,选取测试用例,检验程序是否有错。西安交通大学475.测试步骤单元测试集成测试确认测试系统测试6.调试调试是在测试发现错误之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论