第1章软件开发方法(二)软件工程课件.ppt
《第1章软件开发方法(二)软件工程课件.ppt》由会员分享,可在线阅读,更多相关《第1章软件开发方法(二)软件工程课件.ppt(157页珍藏版)》请在三一办公上搜索。
1、第1章 软件开发方法(二)软件工程,计算机教学实验中心,第2|94页,问题的提出,什么是软件工程?为什么提出软件工程?主要研究哪些问题?软件工程的目标、原理软件开发活动,第3|94页,1了解软件工程的基本概念、基本原则2理解软件工程的主要定义3理解软件过程及模型4了解软件工程方法学,第4|94页,1.2.1 软件工程概述,什么是软件工程?为什么要学习软件工程?软件工程包括哪些内容?,“软件工程是一种描述规范。”Michael Jackson,软件工程?,第6|94页,软件工程专家Boehm定义,著名软件工程专家BWBoehm为软件工程的定义是:运用现代科学技术知识来设计并构造计算机程序及为开发
2、、运行和维护这些程序所必需的相关文件资料。,第7|94页,IEEE给出的定义,1983年IEEE给出的定义为:以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法。其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。,第8|94页,关于软件工程学,软件工程是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是建立在计算机科学的基础上;它是用管理学的原理、方法进行软件生产管理;用工程学的观点进行费用估算、制定进度和实施方案;用数学方法建立软件可靠性模型以及分析各种算法。,第9|94页,1.2.2
3、软件工程的目标,1、开发生产尽可能多的软件产品;2、提高软件的生产效率;3、满足应用的功能需要;4、降低软件开发成本。但是,目标与实现过程是矛盾的:功能强、系统则复杂,难于开发和维护;注重发挥硬件功能,则可移植性差;快速开发,则可能影响质量;,第10|94页,软件工程的本质特征,软件工程关注于大型程序的构造软件工程的中心课题是控制复杂度软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品,第11|94页,1.2.3 软件工程原理,自1968年提出“软件工程”的概念以来,专家学者又陆续提出了
4、100多条关于软件工程的准则。著名软件工程专家B.W.Boehm于1983年发表的一篇论文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的最小准则集合。,第12|94页,软件工程七条基本原理,用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组人员少而精承认不断改进软件工程实践的必要性,第13|94页,用分阶段生命周期计划严格管理,据统计发现:不成功软件项目中半数是因计划不周造成的。在软件的整个生命周期中应该制定并严格执行六类计划:项目概要、项目进度表、项目控制、产品控制、验证及运行维护计划。不同层次的管理
5、人员必须严格按照计划各尽其职地去管理软件开发与维护工作,绝不能受客户或上级的影响而擅自背离预定计划。,第14|94页,坚持进行阶段评审,软件的质量保证工作不能等到编码阶段结束之后再进行。这是因为:大部分错误是在编码之前造成的(根据Boehm统计,设计错误占软件错误的63%,编码错误占37%)。错误发现与改正得越晚,所付出的代价也越高。因此,在每个阶段进行严格的评审,尽早发现并修正各个阶段中所犯的错误是一条必须遵循的重要原则。,第15|94页,示意图关于阶段评审作用,第16|94页,实行严格的产品控制,在软件开发过程中不应随意改变需求,但不能禁止更改需求。当必须修改时,为了保持软件各配置成分的一
6、致性,必须实行严格的产品控制。一切有关修改软件的建议都必须按照严格的规程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改的行为。,第17|94页,采用现代程序设计技术,以前的结构化程序设计技术,如今的面向对象程序设计技术都被实践证明是各个不同历史阶段的优秀程序设计技术和方法。采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。,第18|94页,结果应能清楚地审查,软件产品是看不见、摸不着的逻辑产品,软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件开发项目中的目标完成期限,规定开发组织的责任和产品标准,使得到的结果能够清楚的审查。,第19|94页
7、,开发小组人员少而精,开发小组成员的素质应该高,人员不宜过多。人员素质和数量是影响产品质量和开发效率的重要因素。素质高的人开发效率比低的人高几倍甚至几十倍,而错误则明显得少;人数增加,管理难度也增加。,第20|94页,承认不断改进软件工程实践的必要性,要积极主动地采纳新的软件技术,要不断总结经验;不能自以为是,固步自封,唯我独好。大千世界,错综复杂,只有不断学习,才能不断进取,不断进步。,第21|94页,1.2.4 软件开发活动,软件工程过程是由一系列软件工程的阶段任务和活动组成。1995年ISO将软件生存周期的活动和任务划分为3个过程:主要过程(需求、设计、构造、测试和维护)支持过程(软件配
8、置、软件工程管理、软件过程和软件质量)组织过程(基础设施建设、工具和方法、改进、培训),第22|94页,(一)主要过程,主要过程包括的软件开发活动和任务是:软件需求软件设计软件构造软件测试软件维护,第23|94页,1、软件需求,任务:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。目的:要回答“要解决什么问题?”,既系统“做什么?”。分两步骤:可行性研究、制定软件开发计划结果:可行性报告、软件计划、需求说明书需求说明书是让用户理解:“什么是他们真正需要的”。,第24|94页,了解用户需求有关的问题,什么是需求?希望,功能,限制,必需品,任何必要的东西;什么时候?从确
9、定方案开始;为什么?用户的需求是开发需要的依据;来自哪里?来自用户,工业标准,和实践经验;如何实现?使所有相关的人参与需求分析活动,通过有效的交流实现;谁来做?用户,工程管理人员,开发人员,维护人员。,第25|94页,用户参与需求分析的重要性,根据Standish Group 1994年发表的一份研究报告统计,延迟的、超出预算的、未完成工程的最普遍的原因是:缺少用户参与;不完备的需求规范;改变需求规范。,第26|94页,需求分析的难点,问题的复杂性 涉及因素多而;如运行环境和系统功能等。交流障碍 涉及不同类型人员较多,知识背景、角度、角色的不同;不完备性和不一致性 用户对问题的陈述有矛盾、片面
10、性等造成;需求易变性 需求是变化的。,第27|94页,需求工作的重要性,IBM公司有关研究的结果表明:有效的需求管理可以降低开发成本。通常改正需求错误需要付出改正其他错误10倍以上的代价。需求错误通常导致软件工程中全部错误的25-40%。改正很少的需求错误可以避免大量耗费在返工上的成本和时间。,第28|94页,需求活动,识别问题 通过调研和收集资料,了解用户的确切需求,并将用户提出的功能行为和特殊要求等用双方都能理解的表达方式逐条列出。在整个分析期间要和用户充分协商。可行性研究 对于大型复杂问题,要对用户的要求及实现环境从技术、经济和社会因素三个方面进行可行性研究,以确定问题是否可解。分析建模
11、 建立软件求解模型;信息、行为和表示。需求规格化及编写文档 需求规格说明书、初步用户使用手册等。,第29|94页,2、软件设计,任务:给出实现系统的实施蓝图。目的:要回答“如何解决该问题?”,既系统“怎样做?”。步骤:概要设计:解决系统的模块划分、模块的层次结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。结果:系统设计说明书和模块功能说明书,第30|94页,软件设计工作,软件设计要做的工作总的可以归结为:软件系统结构(软件结构)设计、数据设计、界面设计和过程设计。设计办法是功能分解,包括:采用某种设计方法,将一个复杂的系统按功能划分成模块;确定每个模块的功能;确定模块之间的接口,即
12、模块之间传递的信息;评价模块结构的质量。,第31|94页,软件设计准则,(1)软件结构准则;分层结构、便于控制;软件结构的深度和宽度要适中;具有合理的扇出和扇入数。(2)模块化准则;分解复杂问题;(3)模块独立性准则;应使模块之间和与外部环境之间接口的复杂性尽量地减小;模块应具有低耦合、高内聚;(4)数据和过程描述清晰、可区分(表达式);(5)成果可重复。,第32|94页,软件设计方法,面向数据流的设计方法(分为变换流和事务流方法);结构化设计方法;面向数据结构设计方法(Jackson方法);Warnier方法 面向对象方法,第33|94页,使用的开发工具,数据流图、层次图、HIPO图、结构图
13、 程序流程图、N-S图、问题分析图PAD(Program Analysis Diagram)类语言、过程设计语言PDL(Procedural Design Language)等 统一建模语言UML(Unified Modeling Language),第34|94页,3、软件构造,任务:根据设计说明书中每个模块的控制流程编写出相应的源程序。目的:写出高质量的代码和相应饿文档。构造要注意使系统更易于使用和系统的可重用性。选择合适的开发工具及系统软件、数据库软件、中间件等。制定编程规范。结果:源程序和文档,第35|94页,编程风格,编程风格主要体现在如何描述源程序文件、数据说明、输入输出等。(1)
14、源程序文件;变量名的命名、源程序中的注解以及源程序的书写格式;(2)数据说明;按不同类型数据的顺序以及字典顺序说明、对数据结构加注释说明;(3)语句构造;语句构造一般规则;(4)输入输出语句;输入输出语句的规则。,第36|94页,语句构造规则,不要为节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免使用多层嵌套的循环和重复;利用括号使表达式的运算顺序清晰直观。,示例,第37|94页,程序设计语言,选用程序设计语言时要考虑它的三种特性:(1)心理特性 对人-机通信质量有重要影响。例如,人们习惯使用已熟悉的程序设计语言,由此产生的惰性影响人们学习新语言。(2)
15、工程特性 它涉及到软件的可移植性、开发工具的可利用性等。(3)技术特性 它对设计质量、人和整个软件工程有影响。例如,对数据结构复杂性要求很高的系统,考虑选用C及C+等语言;若对高性能和实时功能要求高,可考虑选用Ada语言。,第38|94页,4、软件测试,任务:检查、发现程序中的错误,提高系统可靠性。目的:保证系统的正确性、可靠性和可用性。回答:“该系统是否能实现规定的操作?”。方式:模块测试、组装测试、确认测试和系统测试结果:测试报告和软件修改报告等。,第39|94页,测试分类,单元测试。对一个模块的测试,一般以白盒法测试为主,多个模块可以并行进行。集成测试。最终将本项目所有模块集成在一起测试
16、,交出完整程序产品。确认测试。以用户为主的测试。证实系统能否正确地实现其功能。系统测试。软件只是整个应用系统的一部分。最后要集成为一个整体,包括硬件、软件以及相关的其它设备。此时的测试称系统测试。,第40|94页,测试与测试,阿尔法测试:对于商品软件在研制方有客户(订货方)参与的确认测试叫阿尔法测试。贝塔测试:指在若干客户场地由客户组织,最终用户参与的测试,此时所有文档均予冻结,作为本软件版本的基线。对于新软件,改版则为里程碑。,第41|94页,设计测试用例应考虑的问题,界面:内界面主要检查参数个数及类型匹配。外界面主要检查I/O文件、数据格式、类型匹配。模块的数据结构:类型是否不正确或不一致
17、?初始化、缺省值使用情况;变量名拼错;上、下界溢出等数据异常,测试能否正确处理等。边界条件:保证在边界值的情况下模块依然可以正确操作,值出界时要有正确反应。独立路径:保证至少所有语句都要执行一次,每个条件或子条件都执行一次更好。错误处理路径:不管程序有无异常处理都要察看出错处理路径。特别要考察是否死机。,第42|94页,程序调试,调试是在测试发现错误之后排除错误的过程。调试过程会发生两种结果:找到原因并把问题排除;没找到问题的原因。调试是软件开发过程中最艰苦的脑力劳动。在调试过程中遇到的错误有所不同,错误的后果越严重,查找错误原因的压力也越大。通常,压力会导致软件开发人员在改正一个错误的同时可
18、能引入更多的错误。,第43|94页,调试技术,输出存储器内容;特点是效率低、难定位、输出的是静止状态的程序内容。加打印语句;特点是显示的是程序的动态信息,但大量的输出,时间慢,可能引出新的问题。用调试工具;特点是动态调试,可自动执行,是目前广泛采用的一种调试技术。,第44|94页,调试策略,试探法。大概分析、估计错误的位置。回溯法。确定最先出现“症状”的地方,然后沿程序的控制流程往回追踪源程序,直到找出错误源为止。对分查找法。若已知程序中若干个关键点的正确值,然后用调试工具在关键点附近处输入正确值;若输出正确,则故障在前半部分;否则,再查后半部分。归纳法。从线索出发,通过分析线索之间的关系而找
19、出故障。主要步骤为:收集有关数据,组织数据,导出假设,证明假设。,第45|94页,调试的启发性原则,这部分内容大多是心理学的问题:要思考,不要盲目地修改程序,至使错误越改越多;如陷入困境,放到第天去解决;陷入绝境后,要与别人交谈你的问题,或许对你有所启发;避免用试验法。不要在问题没有搞清楚之前,就改动程序,这样对找出错误不利,程序越改越乱,以致于面目全非。,第46|94页,5、软件维护,任务:改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中新的功能要求。目的:维护软件系统的正常运行。回答:系统是否满足用户的应用要求。阶段结果:软件系统的问题报告和软件修改报告。,第47|94页,软件维护
20、的原因,软件的原有功能和性能可能不再适应用户的要求;软件的工作环境改变了(例如,增加了新的外部设备),软件也要做相应的变更;软件运行中发现错误,需要修改。,第48|94页,维护活动的特点,非结构化维护和结构化维护。主要区别是开发过程是否用软件工程方法,若各阶段均有相应的文档记录,系统则容易维护。采用结构化维护可以大大提高软件维护效率。软件维护的困难性。是由于软件需求分析和开发方法的缺陷。软件维护的费用在总费用中的比重不断增加,已经上升到了70%80%或更多,我们看到的软件不断升级就是维护的具体体现。,第49|94页,维护活动流程,建立维护机构,组织维护活动:制定维护申请报告;审查维护申请报告并
21、批准;进行维护并做详细记录;复审。,第50|94页,软件的可维护性,软件可维护性是指维护人员理解、修改软件的难易程度。可维护性因素软件的可维护性因素主要包括:可理解性、可测试性、可修改性、可靠性和可使用性。提高可维护性的方法提高软件的可维护性必须从软件生存周期各个阶段的工作入手,每个阶段都把可维护性贯彻到阶段的开发活动过程中,并按规范对阶段工作进行评估,以保证个阶段的工作按质按量完成。文档文档是影响软件可维护性的决定性因素。文档分为用户文档和系统文档两类。,第51|94页,(二)支持过程,支持过程包括的软件开发活动和任务是:软件配置管理软件工程管理软件过程软件质量,第52|94页,软件配置管理
22、,软件修改后会发生什么呢?同步更新当两个或两个以上的角色各自工作在同一产物上时,最后一个修改者会破坏前者的工作。通知不达当被若干开发者共享的产品中的问题被解决时,修改未被通知到一些开发者。多个版本软件修改与文档不一致。新版本公布的管理和监控。配置和变更管理提供了准则管理演化系统中的多个变体,跟踪给定软件创建过程中的版本。,第53|94页,软件工程管理,软件工程管理是一门艺术。其主要活动有:管理项目的框架、计划配备执行监控项目的实践准则、管理风险的框架。项目管理是过程管理的主要体现:(1)建立与客户的通信;(2)作计划,定义资源、时限、落实到开发组;(3)风险分析,评估所采用的技术和管理带来的风
23、险;(4)工程,即软件分析与设计;(5)构造和发布,即编码、测试、交付、安装、文档、培训;(6)客户评审,获得客户的反馈。,第54|94页,软件质量控制,软件质量保证SQA活动,贯穿于软件过程始终。开发单位成立SQA小组负责全面质量管理。在开发项目计划时就要做出SQA计划。其工作:各种测试 测试软件是否满足规格说明要求。各种评审 为多种人员参与的讨论会,以规格说明或各种标准,规范为准评价各项软件工作。各种审计 以职能人员为主审,审查软件过程产物是否符合标准或规格说明书。报告和记录 所有测试、评审、审计都要详细记录并写出报告,报告和记录均要整理、归档。以上活动均应在软件质量保证计划中列出。,第5
24、5|94页,(三)组织过程,组织过程包括的软件开发活动和任务是:基础设施建设软件工程工具和方法改进培训,第56|94页,基础设施建设,建立、维护和管理用于软件开发过程中的:硬件和软件的基础设施;软件开发工具和方法;开发技术、技术规范和标准;其他活动的其他基础设施。,第57|94页,软件工程工具和方法,编程依赖环境,环境由开发工具组成(如编译器、连接器、加载和运行工具、排错、信息显示及编辑工具)。称为最小环境工具集。70年代中期,软件工程师迫于软件危机的压力,提出了计算机辅助软件工程(CASE)的设想,开发出一系列工具尽量使软件过程的各项活动自动化、半自动化。相应问题:工具日益增多,给使用者带来
25、不便,例如,各工具的使用方法、格式、参数等差异的问题。这就在客观上产生了对于集成的CASE工具的需求。,第58|94页,计算机辅助软件工程CASE,人们期望借助CASE工具,使得软件开发可以像在自动流水线上生产计算机那样生产。CASE 工具应具有的特征:支持专用的个人计算环境;使用图形功能对软件系统进行说明并建立文档;将生命周期各阶段的工作连接在一起;收集和连接软件系统从最初的软件需求到软件维护各个环节的所有信息;用人工智能实现软件开发和维护工作的自动化。,信息工程工具过程模型和管理工具项目计划工具风险分析工具项目管理工具需求追踪工具度量和管理工具文档工具系统软件工具质量保证工具数据库管理工具
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 方法 软件工程 课件
链接地址:https://www.31ppt.com/p-3755382.html