《【教学课件】第1章软件开发方法(二)软件工程.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第1章软件开发方法(二)软件工程.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1 1章章 软件开发方法软件开发方法(二)软件工程(二)软件工程计算机教学实验中心计算机教学实验中心 1下一页上一页停止放映主要内容软件工程软件工程软件工程的目标软件工程的目标软件工程的原理软件工程的原理软件开发活动软件开发活动软件工程方法学软件工程方法学2下一页上一页停止放映“软件工程是一种描述规范。软件工程是一种描述规范。”Michael Jackson软件工程概述软件工程概述下一页上一页停止放映 软件工程专家软件工程专家BoehmBoehm定义定义运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必
2、需的相关文件资料。些程序所必需的相关文件资料。IEEEIEEE19831983年年给出的定义给出的定义以优质、高效、低成本为目标,研究开发、运行和维护软件以及以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法。使之退役的系统方法。其中,其中,“软件软件”的定义为:计算机程序、方法、规则、相关的文档资料以的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。及在计算机上运行时所必需的数据。本教科书给出的定义本教科书给出的定义运用系统的、规范的和可定量的方法来开发、运行和维护软件。运用系统的、规范的和可定量的方法来开发、运行和维护软件。4下一页上
3、一页停止放映软件工程学软件工程是一门交叉学科,涉及到计算机软件工程是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是建立软件工程的理论、方法、技术都是建立在计算机科学的基础上;在计算机科学的基础上;用管理学的原理、方法进行软件生产管用管理学的原理、方法进行软件生产管理;理;用工程学的观点进行费用估算、制定进用工程学的观点进行费用估算、制定进度和实施方案;度和实施方案;用数学方法建立软件可靠性模型以及分用数学方法建立软件可靠性模型以及分析各种算法。析各种算法。5下一页上一页停止放映 了解并掌握软件的开发步骤、方了解并掌握软件的开
4、发步骤、方法、准则。为了:法、准则。为了:克服、解决克服、解决“软件危机软件危机”改进改进“软件生产软件生产”方法、工方法、工具具提高软件的生产率提高软件的生产率为什么学习软件工程?为什么学习软件工程?下一页上一页停止放映软件工程的目标软件工程的目标开发生产尽可能多的软件产品;开发生产尽可能多的软件产品;提高软件的生产效率;提高软件的生产效率;满足应用的功能需要和具有较好的软件性能;满足应用的功能需要和具有较好的软件性能;能按时、按质完成软件开发任务;能按时、按质完成软件开发任务;降低软件开发成本。降低软件开发成本。7下一页上一页停止放映软件工程原理软件工程原理自自19681968年提出年提出
5、“软件工程软件工程”的概念以来,的概念以来,专家学者又陆续提出了专家学者又陆续提出了100100多条关于软件工多条关于软件工程的准则。程的准则。著名软件工程专家于著名软件工程专家于19831983年发表的一篇论年发表的一篇论文中提出了软件工程的七条基本原理。他文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开认为这七条原理是确保软件产品质量和开发效率的最小准则集合。发效率的最小准则集合。8下一页上一页停止放映软件工程七条基本原理软件工程七条基本原理用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理坚持进行阶段评审坚持进行阶段评审实行严格的产品控制实行严格的产品控
6、制采用现代程序设计技术采用现代程序设计技术结果应能清楚地审查结果应能清楚地审查开发小组人员少而精开发小组人员少而精承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性9下一页上一页停止放映软件开发活动软件开发活动软件工程过程是由一系列软件工程的阶段任软件工程过程是由一系列软件工程的阶段任务和活动组成。务和活动组成。19951995年年ISOISO将软件生存周期的活动和任务划分将软件生存周期的活动和任务划分为为3 3个过程:个过程:主要过程主要过程(需求、设计、构造、测试和维护)(需求、设计、构造、测试和维护)支持过程支持过程(软件配置、软件工程管理、软件过程和(软件配置、软件工程管
7、理、软件过程和软件质量)软件质量)组织过程组织过程(基础设施建设、工具和方法、改进和培(基础设施建设、工具和方法、改进和培训)训)10下一页上一页停止放映一一.主要过程主要过程主要过程包括的软件开发活主要过程包括的软件开发活动和任务是:动和任务是:软件需求软件需求软件设计软件设计软件构造软件构造软件测试软件测试软件维护软件维护11下一页上一页停止放映1 1、软件需求、软件需求任务任务:收集、分析、理解、确定用户的要求;然:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。后把用户的要求精确、完整地描述表达出来。目的目的:要回答:要回答“要解决什么问题?要解决什么问题?
8、”,既系统既系统“做什么?做什么?”。分两步骤:分两步骤:可行性研究、制定软件开发计划可行性研究、制定软件开发计划结果结果:可行性报告、软件计划、需求说明书可行性报告、软件计划、需求说明书需求说明书是让用户理解需求说明书是让用户理解:“什么是他们真正需要的什么是他们真正需要的”。12下一页上一页停止放映了解用户需求有关的问题了解用户需求有关的问题什么是需求?什么是需求?希望,功能,限制,必需品,任何必要的东西;希望,功能,限制,必需品,任何必要的东西;什么时候什么时候?从确定方案开始;从确定方案开始;为什么为什么?用户的需求是开发需要的依据;用户的需求是开发需要的依据;来自哪里来自哪里?来自用
9、户,工业标准,和实践经验;来自用户,工业标准,和实践经验;如何实现?如何实现?使所有相关的人参与需求分析活动,通过有效的交流使所有相关的人参与需求分析活动,通过有效的交流实现;实现;谁来做谁来做?用户,工程管理人员,开发人员,维护人员。用户,工程管理人员,开发人员,维护人员。13下一页上一页停止放映需求分析的难点需求分析的难点 问题的复杂性。问题的复杂性。涉及因素多而;如运行环境和系统功能等。涉及因素多而;如运行环境和系统功能等。交流障碍。交流障碍。涉及不同类型人员较多,知识背景、角度、角色的不同;涉及不同类型人员较多,知识背景、角度、角色的不同;不完备性和不一致性。不完备性和不一致性。用户对
10、问题的陈述有矛盾、片面性等造成。用户对问题的陈述有矛盾、片面性等造成。需求易变性。需求易变性。需求是变化的。需求是变化的。14下一页上一页停止放映需求活动需求活动 识别问题识别问题 通过调研和收集资料,了解用户的确切需求,并将用通过调研和收集资料,了解用户的确切需求,并将用户提出的功能行为和特殊要求等用双方都能理解的表达户提出的功能行为和特殊要求等用双方都能理解的表达方式逐条列出。在整个分析期间要和用户充分协商。方式逐条列出。在整个分析期间要和用户充分协商。可行性研究可行性研究 对于大型复杂问题,要对用户的要求及实现环境从技对于大型复杂问题,要对用户的要求及实现环境从技术、经济和社会因素三个方
11、面进行可行性研究,以确定术、经济和社会因素三个方面进行可行性研究,以确定问题是否可解。问题是否可解。分析建模分析建模 建立软件求解模型;信息、行为和表示。建立软件求解模型;信息、行为和表示。需求规格化及编写文档需求规格化及编写文档 需求规格说明书、初步用户使用手册等。需求规格说明书、初步用户使用手册等。15下一页上一页停止放映2 2、软件设计、软件设计任务任务:给出实现系统的实施蓝图。:给出实现系统的实施蓝图。目的目的:要回答:要回答“如何解决该问题?如何解决该问题?”,既系统既系统“怎样做?怎样做?”。步骤步骤:概要设计:解决系统的模块划分、模块的层次概要设计:解决系统的模块划分、模块的层次
12、结构及数据库设计。结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。详细设计:解决每个摸块内部算法和数据结构。结果结果:系统设计说明书和模块功能说明书系统设计说明书和模块功能说明书 16下一页上一页停止放映软件设计工作软件设计工作软件设计要做的工作总的可以归结为软件设计要做的工作总的可以归结为:软件软件系统结构系统结构(软件结构软件结构)设计、数据设计、界设计、数据设计、界面设计和过程设计。面设计和过程设计。设计办法是功能分解,包括:设计办法是功能分解,包括:采用某种设计方法,将一个复杂的系统采用某种设计方法,将一个复杂的系统按功能划分成模块;按功能划分成模块;确定每个模块的功能;确
13、定每个模块的功能;确定模块之间的接口,即模块之间传递确定模块之间的接口,即模块之间传递的信息;的信息;评价模块结构的质量。评价模块结构的质量。17下一页上一页停止放映软件设计准则软件设计准则(1 1)软件结构准则;分层结构、便于控制;软件)软件结构准则;分层结构、便于控制;软件结构的深度和宽度要适中;具有合理的扇出和扇结构的深度和宽度要适中;具有合理的扇出和扇入数。入数。(2 2)模块化准则;分解复杂问题;)模块化准则;分解复杂问题;(3 3)模块独立性准则;应使模块之间和与外部环)模块独立性准则;应使模块之间和与外部环境之间接口的复杂性尽量地减小;模块应具有低境之间接口的复杂性尽量地减小;模
14、块应具有低耦合、高内聚;耦合、高内聚;(4 4)数据和过程描述清晰、可区分(表达式);)数据和过程描述清晰、可区分(表达式);(5 5)成果可重复。)成果可重复。18下一页上一页停止放映软件设计方法软件设计方法 面向数据流的设计方法;又进一步细分为面向数据流的设计方法;又进一步细分为变换流和事务流方法;变换流和事务流方法;结构化设计方法;结构化设计方法;面向数据结构的设计方法;面向数据结构的设计方法;JacksonJackson方法;方法;Warnier Warnier方法方法 面向对象方法面向对象方法19下一页上一页停止放映3 3、软件构造、软件构造任务任务:根据设计说明书中每个模块的控制:
15、根据设计说明书中每个模块的控制流程编写出相应的源程序。流程编写出相应的源程序。目的目的:写出高质量的代码和相应的文档。:写出高质量的代码和相应的文档。构造要注意使系统更易于使用和系统的可构造要注意使系统更易于使用和系统的可重用性。重用性。选择合适的开发工具及系统软件、数据库选择合适的开发工具及系统软件、数据库软件、中间件等。制定编程规范。软件、中间件等。制定编程规范。结果结果:源程序和文档源程序和文档20下一页上一页停止放映4 4、软件测试、软件测试任务任务:检查、发现程序中的错误,提高系:检查、发现程序中的错误,提高系统可靠性。统可靠性。目的目的:保证系统的正确性、可靠性和可用:保证系统的正
16、确性、可靠性和可用性。性。回答回答:“该系统是否能实现规定的操作?该系统是否能实现规定的操作?”。方式方式:模块测试、组装测试:模块测试、组装测试 、确认测试和、确认测试和系统测试系统测试结果结果:测试报告和软件修改报告等。测试报告和软件修改报告等。21下一页上一页停止放映测试包括测试包括 单元测试。单元测试。对一个模块的测试,一般以白盒法对一个模块的测试,一般以白盒法测试为主,多个模块可以并行进行。测试为主,多个模块可以并行进行。集成测试。最终将本项目所有模块集成在一起集成测试。最终将本项目所有模块集成在一起测试,交出完整程序产品。测试,交出完整程序产品。确认测试。以用户为主的测试。证实系统
17、能否确认测试。以用户为主的测试。证实系统能否正确地实现其功能。正确地实现其功能。系统测试。软件只是整个应用系统的一部分。系统测试。软件只是整个应用系统的一部分。最后要集成为一个整体,包括硬件、软件以及相最后要集成为一个整体,包括硬件、软件以及相关的其它设备。此时的测试称系统测试。关的其它设备。此时的测试称系统测试。22下一页上一页停止放映测试与测试与测试测试阿尔法测试:阿尔法测试:对于商品软件在研制方有客户对于商品软件在研制方有客户(订货方订货方)参与参与的确认测试叫阿尔法测试。的确认测试叫阿尔法测试。贝塔测试:贝塔测试:指在若干客户场地由客户组织,最终用户参指在若干客户场地由客户组织,最终用
18、户参与的测试,此时所有文档均予冻结,作为本与的测试,此时所有文档均予冻结,作为本软件版本的基线。对于新软件,改版则为里软件版本的基线。对于新软件,改版则为里程碑。程碑。23下一页上一页停止放映设计测试用例应考虑的问题设计测试用例应考虑的问题 界面:内界面主要检查参数个数及类型匹配。界面:内界面主要检查参数个数及类型匹配。外界面主要检查外界面主要检查I/OI/O文件、数据格式、类型匹配。文件、数据格式、类型匹配。模块的数据结构:类型是否不正确或不一致?模块的数据结构:类型是否不正确或不一致?初始化、缺省值使用情况;变量名拼错;上、下初始化、缺省值使用情况;变量名拼错;上、下界溢出等数据异常,测试
19、能否正确处理等。界溢出等数据异常,测试能否正确处理等。边界条件:保证在边界值的情况下模块依然可边界条件:保证在边界值的情况下模块依然可以正确操作,值出界时要有正确反应。以正确操作,值出界时要有正确反应。独立路径:保证至少所有语句都要执行一次,独立路径:保证至少所有语句都要执行一次,每个条件或子条件都执行一次更好。每个条件或子条件都执行一次更好。错误处理路径:不管程序有无异常处理都要察错误处理路径:不管程序有无异常处理都要察看出错处理路径。特别要考察是否死机。看出错处理路径。特别要考察是否死机。24下一页上一页停止放映程序调试程序调试调试是在测试发现错误之后排除错误的过调试是在测试发现错误之后排
20、除错误的过程。调试过程会发生两种结果:程。调试过程会发生两种结果:找到原因并把问题排除;找到原因并把问题排除;没找到问题的原因。没找到问题的原因。调试是软件开发过程中最艰苦的脑力劳动。调试是软件开发过程中最艰苦的脑力劳动。在调试过程中遇到的错误有所不同,错误在调试过程中遇到的错误有所不同,错误的后果越严重,查找错误原因的压力也越的后果越严重,查找错误原因的压力也越大。通常,压力会导致软件开发人员在改大。通常,压力会导致软件开发人员在改正一个错误的同时可能引入更多的错误。正一个错误的同时可能引入更多的错误。25下一页上一页停止放映调试策略调试策略 试探法。大概分析、估计错误的位置。试探法。大概分
21、析、估计错误的位置。回溯法。确定最先出现回溯法。确定最先出现“症状症状”的地方,的地方,然后沿程序的控制流程往回追踪源程序,直然后沿程序的控制流程往回追踪源程序,直到找出错误源为止。到找出错误源为止。对分查找法。若已知程序中若干个关键点对分查找法。若已知程序中若干个关键点的正确值,然后用调试工具在关键点附近处的正确值,然后用调试工具在关键点附近处输入正确值;若输出正确,则故障在前半部输入正确值;若输出正确,则故障在前半部分;否则,再查后半部分。分;否则,再查后半部分。归纳法。从线索出发,通过分析线索之间归纳法。从线索出发,通过分析线索之间的关系而找出故障。主要步骤为:收集有关的关系而找出故障。
22、主要步骤为:收集有关数据,组织数据,导出假设,证明假设。数据,组织数据,导出假设,证明假设。26下一页上一页停止放映调试的启发性原则调试的启发性原则这部分内容大多是心理学的问题:这部分内容大多是心理学的问题:要思考,不要盲目地修改程序,至使错要思考,不要盲目地修改程序,至使错误越改越多;误越改越多;如陷入困境,放到第天去解决;如陷入困境,放到第天去解决;陷入绝境后,要与别人交谈你的问题,陷入绝境后,要与别人交谈你的问题,或许对你有所启发;或许对你有所启发;避免用试验法。不要在问题没有搞清楚避免用试验法。不要在问题没有搞清楚之前,就改动程序,这样对找出错误不之前,就改动程序,这样对找出错误不利,
23、程序越改越乱,以致于面目全非。利,程序越改越乱,以致于面目全非。27下一页上一页停止放映5 5、软件维护、软件维护任务任务:改正软件系统在使用过程中发现的:改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中新的功能要隐含错误,扩充在使用过程中新的功能要求。求。目的目的:维护软件系统的正常运行。:维护软件系统的正常运行。回答回答:系统是否满足用户的应用要求。:系统是否满足用户的应用要求。阶段结果阶段结果:软件系统的问题报告和软件修改报告。软件系统的问题报告和软件修改报告。28下一页上一页停止放映软件维护的原因软件维护的原因 软件的原有功能和性能可能不再适应用户软件的原有功能和性能可能不再适
24、应用户的要求;的要求;软件的工作环境改变了(例如,增加了新软件的工作环境改变了(例如,增加了新的外部设备),软件也要做相应的变更;的外部设备),软件也要做相应的变更;软件运行中发现错误,需要修改。软件运行中发现错误,需要修改。29下一页上一页停止放映维护活动分类维护活动分类 校正性维护校正性维护:指为了识别和纠正错误,修改软件性能:指为了识别和纠正错误,修改软件性能上的缺陷,进行确定和修改错误的过程。占整个维护工上的缺陷,进行确定和修改错误的过程。占整个维护工作的作的15%15%。适应性维护适应性维护:为了使本软件适应硬件和软件的变化而:为了使本软件适应硬件和软件的变化而修改软件的过程称为适应
25、性维护。占整个维护活动的修改软件的过程称为适应性维护。占整个维护活动的25%25%。完善性维护完善性维护:增加软件功能、增强软件性能、提高运:增加软件功能、增强软件性能、提高运行效率而进行的维护活动称为完善性维护。占整个维护行效率而进行的维护活动称为完善性维护。占整个维护工作的工作的55%55%。预防性维护预防性维护:为了提高软件的可维护性和可靠性而对:为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。只占整个维护活动的软件进行的修改称为预防性维护。只占整个维护活动的5%5%。30下一页上一页停止放映维护活动流程维护活动流程建立维护机构,组织维护活动:建立维护机构,组织维护活动:
26、制定维护申请报告;制定维护申请报告;审查维护申请报告并批准;审查维护申请报告并批准;进行维护并做详细记录;进行维护并做详细记录;复审。复审。31下一页上一页停止放映二二.支持过程支持过程支持过程包括的软件开发活支持过程包括的软件开发活动和任务是:动和任务是:软件配置管理软件配置管理软件工程管理软件工程管理软件过程软件过程软件质量软件质量32下一页上一页停止放映软件配置管理软件配置管理软件修改后会发生什么呢?软件修改后会发生什么呢?同步更新同步更新当两个或两个以上的角色各自当两个或两个以上的角色各自工作在同一产物上时,最后一个修改者会破工作在同一产物上时,最后一个修改者会破坏前者的工作。坏前者的
27、工作。通知不达通知不达当被若干开发者共享的产品中当被若干开发者共享的产品中的问题被解决时,修改未被通知到一些开发的问题被解决时,修改未被通知到一些开发者。者。多个版本多个版本软件修改与文档不一致。软件修改与文档不一致。新版本公布的管理和监控新版本公布的管理和监控。配置和变更管理提供了准则管理演化系统中的多配置和变更管理提供了准则管理演化系统中的多个变体,跟踪给定软件创建过程中的版本。个变体,跟踪给定软件创建过程中的版本。33下一页上一页停止放映软件工程管理软件工程管理软件工程管理是一门艺术。其主要活动有:管理软件工程管理是一门艺术。其主要活动有:管理项目的框架、计划配备执行监控项目的实践准则、
28、项目的框架、计划配备执行监控项目的实践准则、管理风险的框架。管理风险的框架。项目管理是过程管理的主要体现:项目管理是过程管理的主要体现:(1)(1)建立与客户的通信;建立与客户的通信;(2)(2)作计划,定义资源、时限、落实到开发组;作计划,定义资源、时限、落实到开发组;(3)(3)风险分析,评估所采用的技术和管理带来的风风险分析,评估所采用的技术和管理带来的风险;险;(4)(4)工程,即软件分析与设计;工程,即软件分析与设计;(5)(5)构造和发布,即编码、测试、交付、安装、文构造和发布,即编码、测试、交付、安装、文档、培训;档、培训;(6)(6)客户评审,获得客户的反馈。客户评审,获得客户
29、的反馈。34下一页上一页停止放映软件过程软件过程软件过程是生产软件的一系列可预测、可控制活动的步骤,软件过程是生产软件的一系列可预测、可控制活动的步骤,即把用户要求转化为软件产品的一系列有序开发活动的集即把用户要求转化为软件产品的一系列有序开发活动的集合。合。软件过程给出了软件开发所要遵循的基本路线,它的重要软件过程给出了软件开发所要遵循的基本路线,它的重要性在于它使一组开发活动具有了一致性和结构,从而使在性在于它使一组开发活动具有了一致性和结构,从而使在软件开发过程中人们能够使用自己熟悉的技术和工具设计软件开发过程中人们能够使用自己熟悉的技术和工具设计和开发软件,并能保持软件产品和服务在一定
30、程度上的一和开发软件,并能保持软件产品和服务在一定程度上的一致性和质量。过程的重要性还在于它能够获取经验并将这致性和质量。过程的重要性还在于它能够获取经验并将这些经验传授给别人。些经验传授给别人。但是,但是,WassermanWasserman在在19961996年提出:年提出:“应用类型和组织文化应用类型和组织文化之间的巨大差别使得过程本身规范化是不可能的之间的巨大差别使得过程本身规范化是不可能的”。相反,。相反,他建议不同类型的软件,使用不同的过程。他建议不同类型的软件,使用不同的过程。35下一页上一页停止放映软件质量软件质量软件质量保证软件质量保证SQASQA活动,贯穿于软件过程始终。活
31、动,贯穿于软件过程始终。开发单位成立开发单位成立SQASQA小组负责全面质量管理。在开小组负责全面质量管理。在开发项目计划时就要做出发项目计划时就要做出SQASQA计划。其工作:计划。其工作:各种测试各种测试 测试软件是否满足规格说明要求。测试软件是否满足规格说明要求。各种评审各种评审 为多种人员参与的讨论会,以规格说为多种人员参与的讨论会,以规格说明或各种标准,规范为准评价各项软件工作。明或各种标准,规范为准评价各项软件工作。各种审计各种审计 以职能人员为主审,审查软件过程产以职能人员为主审,审查软件过程产物是否符合标准或规格说明书。物是否符合标准或规格说明书。报告和记录报告和记录 所有测试
32、、评审、审计都要详细记所有测试、评审、审计都要详细记录并写出报告,报告和记录均要整理、归档。录并写出报告,报告和记录均要整理、归档。以上活动均应在软件质量保证计划中列出。以上活动均应在软件质量保证计划中列出。36下一页上一页停止放映三三.组织过程组织过程组织过程包括的软件开发活组织过程包括的软件开发活动和任务是:动和任务是:基础设施建设基础设施建设软件工程工具和方法软件工程工具和方法改进改进培训培训37下一页上一页停止放映基础设施建设基础设施建设建立、维护和管理用于软件开发过程中其他活建立、维护和管理用于软件开发过程中其他活动的硬件和软件的基础设施;动的硬件和软件的基础设施;建立、维护和管理用
33、于软件开发过程中其他活建立、维护和管理用于软件开发过程中其他活动的软件开发工具和方法;动的软件开发工具和方法;建立、维护和管理用于软件开发过程中其他活建立、维护和管理用于软件开发过程中其他活动的开发技术动的开发技术 、技术规范和标准;、技术规范和标准;建立、维护和管理用于软件开发过程中其他活建立、维护和管理用于软件开发过程中其他活动的其他基础设施。动的其他基础设施。38下一页上一页停止放映软件工程工具和方法软件工程工具和方法程序的开发、运行都是在支持软件的基础上作出程序的开发、运行都是在支持软件的基础上作出的。支持软件的总和称之为软件开发环境的。支持软件的总和称之为软件开发环境 。早期的环境只
34、有最必要的软件工具;例如语言的早期的环境只有最必要的软件工具;例如语言的编译器、连接器、加载和运行工具、排错、信息编译器、连接器、加载和运行工具、排错、信息显示及编辑工具。称为最小环境工具集。显示及编辑工具。称为最小环境工具集。7070年代中期年代中期,软件工程师迫于软件危机的压力软件工程师迫于软件危机的压力,提出了计算机辅助软件工程提出了计算机辅助软件工程(CASE)(CASE)的设想的设想,开发开发出一系列工具尽量使软件过程的各项活动自动化、出一系列工具尽量使软件过程的各项活动自动化、半自动化。半自动化。相应问题:工具日益增多相应问题:工具日益增多,给使用者带来不便给使用者带来不便,例例如
35、,各工具的使用方法、格式、参数等差异的问如,各工具的使用方法、格式、参数等差异的问题。这就在客观上产生了对于集成的题。这就在客观上产生了对于集成的CASECASE工具的工具的需求。需求。39下一页上一页停止放映计算机辅助软件工程计算机辅助软件工程CASECASE人们期望,借助人们期望,借助CASECASE工具,有朝一日软件开发工具,有朝一日软件开发人员可以像在自动流水线上生产计算机那样生人员可以像在自动流水线上生产计算机那样生产软件。产软件。CASE CASE 工具具有如下特征:工具具有如下特征:支持专用的个人计算环境;支持专用的个人计算环境;使用图形功能对软件系统进行说明并建立文档;使用图形
36、功能对软件系统进行说明并建立文档;将生命周期各阶段的工作连接在一起;将生命周期各阶段的工作连接在一起;收集和连接软件系统从最初的软件需求到软件收集和连接软件系统从最初的软件需求到软件维护各个环节的所有信息;维护各个环节的所有信息;用人工智能实现软件开发和维护工作的自动化。用人工智能实现软件开发和维护工作的自动化。40下一页上一页停止放映软件工程工具软件工程工具信息工程工具信息工程工具过程模型和管理工具过程模型和管理工具项目计划工具项目计划工具风险分析工具风险分析工具项目管理工具项目管理工具需求追踪工具需求追踪工具度量和管理工具度量和管理工具文档工具文档工具系统软件工具系统软件工具质量保证工具质
37、量保证工具数据库管理工具数据库管理工具41下一页上一页停止放映改进改进软件开发技术会随着软件开发工程实践活动软件开发技术会随着软件开发工程实践活动的不断开展而发展。改进活动就负有总结经的不断开展而发展。改进活动就负有总结经验、不断改进开发技术和开发方法的职能。验、不断改进开发技术和开发方法的职能。改进活动的基本内容有:改进活动的基本内容有:对整个软件生存过程进行评估;对整个软件生存过程进行评估;对现行过程进行度量;对现行过程进行度量;对现行过程进行改进。对现行过程进行改进。42下一页上一页停止放映培训培训为了使用户能够尽快掌握使用软件系为了使用户能够尽快掌握使用软件系统,要对用户进行培训。统,
38、要对用户进行培训。活动包括:活动包括:制定培训计划。制定培训计划。编写培训教材。编写培训教材。实施培训计划。实施培训计划。43下一页上一页停止放映软件工程方法学软件工程方法学通常把在软件生命周期全过程中使用的一整套技通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。术方法的集合称为方法学,也称为范型。软件工程方法学包括软件工程方法学包括3 3个要素:方法、工具和过个要素:方法、工具和过程。程。这三者之间是相互联系的。方法是完成软件开发这三者之间是相互联系的。方法是完成软件开发过程中各项任务的技术方法,回答过程中各项任务的技术方法,回答“怎样做怎样做”的的问题;工具是
39、为运用方法而提供的自动或半自动问题;工具是为运用方法而提供的自动或半自动的软件支撑环境;过程是为了获得高质量的软件的软件支撑环境;过程是为了获得高质量的软件所需完成的一系列任务的框架,它规定了完成各所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。项任务的工作步骤。44下一页上一页停止放映传统方法学传统方法学传统方法学是建立在软件生存周期方法学传统方法学是建立在软件生存周期方法学和结构化方法学的基础上。因此,具有明和结构化方法学的基础上。因此,具有明显的那个时代的特点。显的那个时代的特点。7070年代,计算机技年代,计算机技术水平不高,开发工具少而且性能差。术水平不高,开发工具少而且
40、性能差。对于大型复杂问题的求解,人们不得不采对于大型复杂问题的求解,人们不得不采用用“将大化小将大化小“、“将难化简将难化简”,最后,最后“分而治之分而治之”的开发策略。的开发策略。45下一页上一页停止放映 结构化方法是由结构化分析方法结构化方法是由结构化分析方法SASA、结构化设计方法、结构化设计方法SDSD和结构化和结构化程序设计方法程序设计方法SPSP组成的,该方法组成的,该方法的核心是基于功能分解的模块化的核心是基于功能分解的模块化层次结构方法。层次结构方法。46下一页上一页停止放映结构化分析结构化分析SASA自顶向下 逐步求精模块化设计结构化分析的要点是:将大问题化为小问结构化分析的
41、要点是:将大问题化为小问题,找出关键点、难点,定量描述;核心题,找出关键点、难点,定量描述;核心是:分解;手段是:模块化。是:分解;手段是:模块化。47下一页上一页停止放映结构化设计结构化设计SDSD模块化结构模块独立性结构化设计方法的要点是:将系统设计成结构化设计方法的要点是:将系统设计成由相对独立、单一功能的模块组成的软件由相对独立、单一功能的模块组成的软件结构。模块独立性用模块内的内聚性和模结构。模块独立性用模块内的内聚性和模块间的耦合性来衡量。块间的耦合性来衡量。48下一页上一页停止放映结构化程序设计结构化程序设计SPSP自顶向下逐步加细;自顶向下逐步加细;模块只有一个入口,一个出口;
42、模块只有一个入口,一个出口;三种基本结构;三种基本结构;开发支持库;开发支持库;主程序员组主程序员组结构化程序设计方法结构化程序设计方法SPSP的要点是用三种基的要点是用三种基本结构的语句编写只有一个入口和一个出本结构的语句编写只有一个入口和一个出口的模块程序,尽可能地采用重用程序,口的模块程序,尽可能地采用重用程序,开发组织形式为主程序员组。开发组织形式为主程序员组。49下一页上一页停止放映传统方法学的缺点传统方法学的缺点过分强调了分阶段实施,使得开发过程各个过分强调了分阶段实施,使得开发过程各个阶段之间存在严重的顺序性和依赖性;阶段之间存在严重的顺序性和依赖性;很难将一个复杂的问题化简、分
43、解;很难将一个复杂的问题化简、分解;设计方法存在很大的主观随意性;设计方法存在很大的主观随意性;基于功能分解的系统结构难于修改和扩充;基于功能分解的系统结构难于修改和扩充;思维成果的可重用性很差;思维成果的可重用性很差;数据和对数据的处理是分离的;数据和对数据的处理是分离的;忽视了人在软件开发过程中的地位和作用。忽视了人在软件开发过程中的地位和作用。50下一页上一页停止放映现代方法学现代方法学现代方法学是在传统方法学的基础上,为了强调人在软现代方法学是在传统方法学的基础上,为了强调人在软件开发中的作用,同时为了适应软件新技术的发展趋势件开发中的作用,同时为了适应软件新技术的发展趋势而提出的。其
44、基本要点是:而提出的。其基本要点是:软件开发过程是以人为主,充分利用软件开发方法及软件开发过程是以人为主,充分利用软件开发方法及软件开发工具;软件开发工具;开发人员的组织管理对软件开发成功与否至关重要;开发人员的组织管理对软件开发成功与否至关重要;基于软件组件的软件开发技术。基于软件组件的软件开发技术。由于软件组件是标准化设计、成品化生产的,极易构由于软件组件是标准化设计、成品化生产的,极易构造使用,从而大大简化了设计、编程、测试各个环节的造使用,从而大大简化了设计、编程、测试各个环节的工作量,提高了生产效率和产品质量。工作量,提高了生产效率和产品质量。51下一页上一页停止放映现代方法学中生命
45、周期现代方法学中生命周期在现代方法学中软件生命周在现代方法学中软件生命周期的阶段划分:期的阶段划分:系统分析系统分析系统构造系统构造系统测试系统测试软件组件软件组件52下一页上一页停止放映面向对象方法学面向对象方法学由于传统方法学无法从根本上克服由于传统方法学无法从根本上克服“软件危机软件危机”带来的灾难性影响,业界人士不得不研究、探索带来的灾难性影响,业界人士不得不研究、探索新的方法。而当面向对象(新的方法。而当面向对象(OOOO)思想和方法一经)思想和方法一经出现,就引起计算机业界的极大关注,使得对这出现,就引起计算机业界的极大关注,使得对这种新方法的研究和应用得到迅速发展。种新方法的研究
46、和应用得到迅速发展。OOOO方法是人类借助计算机认识和模拟客观世界的方法是人类借助计算机认识和模拟客观世界的一种方法。它将客观世界看成是由许多不同种类一种方法。它将客观世界看成是由许多不同种类的对象构成。通过分析、研究客观世界中的实体、的对象构成。通过分析、研究客观世界中的实体、实体的属性及其相互关系,从中抽象出求解问题实体的属性及其相互关系,从中抽象出求解问题的对象,最后求解这些对象,得到问题的解。这的对象,最后求解这些对象,得到问题的解。这一过程更接近人类认识问题、解决问题的思维方一过程更接近人类认识问题、解决问题的思维方式,使得计算机求解的对象与客观事物具有一一式,使得计算机求解的对象与
47、客观事物具有一一对应的关系。对应的关系。53下一页上一页停止放映面向对象分析(面向对象分析(OOAOOA)OOAOOA强调根据问题域中客观存在的实体创建强调根据问题域中客观存在的实体创建OOAOOA模型中的对模型中的对象。具体表现在:象。具体表现在:用对象的属性和服务分别描述事物的静态特征和行为;用对象的属性和服务分别描述事物的静态特征和行为;问题域中有哪些值得考虑的事物,就在问题域中有哪些值得考虑的事物,就在OOAOOA模型中创建哪模型中创建哪些对象;些对象;对象及其服务的命名尽量与客观实体一致。对象及其服务的命名尽量与客观实体一致。OOAOOA模型应尽量保留问题域中实体之间关系的原貌。包括
48、:模型应尽量保留问题域中实体之间关系的原貌。包括:把具有相同属性和相同服务的对象归结为类;把具有相同属性和相同服务的对象归结为类;用一般用一般-特殊结构(分类结构)描述一般类与特殊类之间特殊结构(分类结构)描述一般类与特殊类之间的关系(继承关系);的关系(继承关系);用整体用整体-部分结构(组装结构)描述实体间的组成关系;部分结构(组装结构)描述实体间的组成关系;用实例连接和消息连接表示实体之间的静态联系和动态联用实例连接和消息连接表示实体之间的静态联系和动态联系。系。54下一页上一页停止放映面向对象设计(面向对象设计(OODOOD)OODOOD包括两方面的工作:包括两方面的工作:把把OOAO
49、OA模型直接搬到模型直接搬到OODOOD中来,作为中来,作为OODOOD的一个部分;的一个部分;针对具体实现中的人机界面、数据存储、任务管理等因针对具体实现中的人机界面、数据存储、任务管理等因素补充一些与实现有关的内容,这些内容与素补充一些与实现有关的内容,这些内容与OOAOOA采用相同采用相同的表示法和模型结构。的表示法和模型结构。在分析和设计阶段采用一致的表示法是在分析和设计阶段采用一致的表示法是OOOO方法与传统方方法与传统方法重要的区别之一。这使得从法重要的区别之一。这使得从OOAOOA到到OODOOD不存在转换,只不存在转换,只需进行局部的修改或调整,并增加几个与实现有关的独需进行局
50、部的修改或调整,并增加几个与实现有关的独立部分即可。因此立部分即可。因此OOAOOA与与OODOOD之间不存在传统方法中分析之间不存在传统方法中分析与设计之间的鸿沟,可以自然地实现无缝衔接,从而大与设计之间的鸿沟,可以自然地实现无缝衔接,从而大大降低了从大降低了从OOAOOA过渡到过渡到OODOOD的难度、工作量和出错率。的难度、工作量和出错率。55下一页上一页停止放映面向对象编程(面向对象编程(OOPOOP)OOPOOP也称为面向对象的实现。在也称为面向对象的实现。在OOAOOA和和OODOOD理论理论出现之前,程序员要写一个好的出现之前,程序员要写一个好的OOOO程序,首程序,首先要学会运