软件件系统开发技术 软件工程.ppt
《软件件系统开发技术 软件工程.ppt》由会员分享,可在线阅读,更多相关《软件件系统开发技术 软件工程.ppt(512页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课名:课名:软软 件件 工工 程程主主 讲:讲:谢谢 明明 志志EmailEmail:使用教材:软件系统开发技术(修订版)使用教材:软件系统开发技术(修订版)潘锦平潘锦平 施小英施小英 姚天昉姚天昉 西安电子科技大学出版社西安电子科技大学出版社12/22/20221第一章 软件工程概述12/22/202221.1 1.1 软件工程的背景和历史软件工程的背景和历史n19681968年年由由NATO(北大西洋公约组织北大西洋公约组织)在德国在德国Garmish召开的学术召开的学术会议会议上,上,Feitz BauerFeitz Bauer首先首先提出了提出了“软件工程软件工程”概念。概念。12/2
2、2/20223软件工程与编程软件工程与编程n前者是一门学科,一前者是一门学科,一种科学理论来指导软种科学理论来指导软件系统开发,标准化,件系统开发,标准化,自动化的过程自动化的过程n考虑如何分解一个系考虑如何分解一个系统,以便各人分工开统,以便各人分工开发;考虑如何说明每发;考虑如何说明每个部分的规格要求;个部分的规格要求;怎样才能易于维护怎样才能易于维护n单纯的代码编写单纯的代码编写n是软件工程发展的前是软件工程发展的前身身n是软件工程中占据很是软件工程中占据很少时间和空间的一部少时间和空间的一部分分12/22/20224计算机学科的发展计算机学科的发展计算机科学计算机科学(CS)计算机科学
3、计算机科学(CS)计算机工程计算机工程(CE)软件工程软件工程(SE)信息系统信息系统(IS)计算学科计算学科(computing discipline)12/22/2022560年代以来年代以来n工厂管理工厂管理n病人监护病人监护n工资统发工资统发n图书馆管理图书馆管理n机票预定机票预定n学籍管理学籍管理12/22/20226 早期早期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统有限的分布有限的分布 实时实时 嵌入嵌入“智能智能”面向对象技面向对象技术术自定义软件自定义软件 数据库数据库 低成本硬
4、件低成本硬件 专家系专家系统 软件产品软件产品 消费者的影响消费者的影响 人工神经网络人工神经网络 并行计算并行计算 网络计算机网络计算机195019601970198019902000Evolution of software#12/22/20227为什么发展如此之快为什么发展如此之快n不准确的时间和金钱的估算不准确的时间和金钱的估算n软件质量的低下软件质量的低下n相对硬件产品开发软件开发费用的增加相对硬件产品开发软件开发费用的增加n维护、增强软件系统的必要性维护、增强软件系统的必要性n硬件价格大幅度下降硬件价格大幅度下降12/22/20228软件技术面临的问题软件技术面临的问题 规模规模
5、复杂性复杂性 生产率生产率 12/22/20229 Windows9595有有10001000万行万行代码代码 Windows20002000有有50005000万行万行代码代码例:例:Exchange2000和和 Windows20002000开发人员结构开发人员结构Exchange2000Windows20002000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人12/22/202210人月神话人月神话焦油坑焦油坑 n史前史中,没有别的场景比巨兽在焦油坑中垂史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人
6、震撼。上帝见证着恐龙、死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。最后都沉到了坑底。12/22/202211软件危机的主要特征软件危机的主要特征n软件开发周期大大超过规定软件开发周期大大超过规定 日期日期;n 软件开发成本严重超标软件开发成本严重超标;n 软件质量软件质量难于难于保证。保证。12/22/202212软件工程的定义软件工程的定义
7、Fritz Bauer在在NATO会议会议上给出的定义:上给出的定义:“软件工程软件工程是是为了经济地获得可靠的和能为了经济地获得可靠的和能在实际机器上高效运行的软件在实际机器上高效运行的软件而确立和使用而确立和使用的的健全健全的工程的工程原理(方法)原理(方法)。”12/22/202213软件工程的定义(软件工程的定义(2)IEEEIEEE【IEE83】给出的给出的软件工软件工程程定义:定义:“软件工程是软件工程是开发、运行、开发、运行、维护和修复软件的系统方法维护和修复软件的系统方法。”12/22/202214软件工程的定义(软件工程的定义(3)IEEEIEEE【IEE93】给出了一个更加
8、给出了一个更加综合的定义:综合的定义:“将系统化的、规范的、可将系统化的、规范的、可度量的方法应用于软件的开发、度量的方法应用于软件的开发、运行和维护的过程,即将工程化运行和维护的过程,即将工程化应用于软件中应用于软件中。”12/22/202215软件工程是一门交叉学科软件工程是一门交叉学科软件工程的主要研究内容u软件开发软件开发技术技术:软件开发方法软件开发方法学学 软件开发过程软件开发过程 软件工具软件工具和软件工程和软件工程环境环境 u软件工程管理软件工程管理:软件管理软件管理学学 软件经济学软件经济学 软件软件心理学心理学 软件工程所包含的内容不是一成不变的,软件工程所包含的内容不是一
9、成不变的,随着人们对软件系统的研制开发和生产的理解。随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。应用发展的眼光看待它。12/22/202216软件工程软件工程 一种层次化技术一种层次化技术工具工具方法方法过程过程质量焦点质量焦点Software engineering layers软件工程软件工程三个要素:三个要素:方法、工具、过程方法、工具、过程12/22/202217软件软件工程与一般工程的差异工程与一般工程的差异u软件是逻辑软件是逻辑产品产品而不是而不是实物实物产品产品u软件的功能依赖于硬件和软件的运行环境以及人们软件的功能依赖于硬件和软件的运行环境以及人们对它的操作
10、对它的操作u软件设计的复杂性软件设计的复杂性u软件特征软件特征:功能的多样性功能的多样性 实现的多样性实现的多样性 能见度低能见度低 软件结构合理性差软件结构合理性差u智力密集及知识产权保护智力密集及知识产权保护12/22/202218软件工程软件工程知识结构知识结构 20012001年年5 5月月ISO/IEC JTC 1ISO/IEC JTC 1(ISOISO和和IECIEC的第一联合的第一联合技术委员会)发布了技术委员会)发布了 SWEBOK指南指南V0.95(V0.95(试用试用版版)SWEBOK把软件工程学科的主体知识分为把软件工程学科的主体知识分为10个知个知识领域。识领域。12/
11、22/202219软件工程软件工程知识结构知识结构n 软软件件需需求求n 软软件件设设计计n 软软件件构构造造n 软软件件测测试试n 软软件件维维护护n 软软件件配配置置管管理理n 软软件件工工程程管管理理n 软软件件工工程程过过程程n 软软件件工工程程工工具具和和方方法法n 软软件件质质量量12/22/202220“软件工程软件工程”课程课程 与其它软件专业课的区别与其它软件专业课的区别(1)(1)立足于系统的整体。立足于系统的整体。(2)(2)讲授系统分析、系统设计、讲授系统分析、系统设计、测试及维护的理论和方法。测试及维护的理论和方法。(3)(3)构筑一构筑一个软件个软件系统系统,实践,
12、实践 软件开发全过程软件开发全过程。12/22/202221“软件工程软件工程”课程教学课程教学的目标的目标u转变转变对软件的认识:对软件的认识:上升上升 程序程序 系统系统u 转变转变思维定式:思维定式:上升上升 程序员程序员 系统工程师系统工程师 (系统分析员系统分析员)12/22/202222软件产品的标准化软件产品的标准化软件开发过程的标准化软件开发过程的标准化12/22/202223软件的工业化生产过程应具备的特点:软件的工业化生产过程应具备的特点:F明确的工作步骤明确的工作步骤F详细具体的规范化文档详细具体的规范化文档F明确的质量评价标准明确的质量评价标准“一个好的工业,应有一套良
13、好的标准来配套”12/22/202224软件工程技术的两个特点u 强调规范化强调规范化u 强调文档化强调文档化12/22/2022251.2 1.2 软件和软件生命期模型软件和软件生命期模型(Software Life Cycle)软件产品或软件系统从设计、投入使用软件产品或软件系统从设计、投入使用到被淘汰的全过程到被淘汰的全过程。12/22/202226软件生存期的阶段划分(1)(1)可行性研究与计划可行性研究与计划(2)(2)需求分析需求分析(3)(3)总体设计总体设计 (4)(4)详细设计详细设计(5)(5)实现实现(6)(6)集成测试集成测试(7)(7)确认测试确认测试 (8)(8)使
14、用和维护使用和维护成长期(开发期)成长期(开发期)怀孕期(计划期怀孕期(计划期)成年期(运行期)成年期(运行期)12/22/202227新的国际标准定义的新的国际标准定义的软件生存软件生存过程(过程(1995 ISO/IEC 12207)软件生存期过程软件生存期过程支持过程支持过程组织过程组织过程主要过程主要过程获获取取过过程程供供应应过过程程开开发发过过程程运运行行过过程程维维护护过过程程文文档档编编制制过过程程配配置置管管理理过过程程质质量量保保证证过过程程验验证证过过程程确确认认过过程程联联合合评评审审过过程程审审核核过过程程问问题题解解决决过过程程管管理理过过程程基基础础设设施施过过程
15、程改改进进过过程程培培训训过过程程12/22/202228软件工作的范围只考虑只考虑编写程序编写程序 涉及整个涉及整个软件生存软件生存周期周期扩展到扩展到12/22/202229 软件软件开发开发模型是软件开发全部过程、活动和任务模型是软件开发全部过程、活动和任务的的结构框架结构框架。它能直观表达软件开发全过程,明确规定。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。要完成的主要活动、任务和开发策略。软件软件开发开发模型模型也常称为:也常称为:软件软件过程过程模型模型 软件生存软件生存周周期模型期模型 软件工程范型软件工程范型软件开发模型软件开发模型12/22/2022
16、30可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段瀑布模型(Waterfall Model)12/22/202231开发软件不仅仅是编程开发软件不仅仅是编程12/22/202232按照传统瀑布模型开发软件的特点按照传统瀑布模型开发软件的特点1.1.阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。2.2.推迟实现的观点。推迟实现的观点。3.3.每个阶段必须完成规定的文档每个阶段必须完成规定的文档;每个阶段结束前完成文档审查每个阶段结束前完成文档审查,及早改正错误。及早改正错误。12/22/202233原
17、型模型(快速快速原原型模型型模型)原型范型原型范型用户测试用户测试运行原型运行原型建造建造/修改修改 原型原型 听取用听取用 户意见户意见12/22/202234采用原型模型的软件生存周期分析定义分析定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期12/22/2022351.3 1.3 软件质量的评价软件质量的评价n成功的标准成功的标准:用户在用户在用用用用 用户可很容易做完要做的事用户可很容易做完要做的事n失败的根本原因:失败的根本原因:开发人员写出的东西达不到开发人员写出的东西达不
18、到 用户要求用户要求(人的问题人的问题.技术问题技术问题)12/22/202236质量与生产率质量与生产率n质量是量是软件需求方最关心的件需求方最关心的问题,用,用户即使不即使不图物美价廉,也要求个物美价廉,也要求个货真价真价实 n质量与生量与生产率之率之间有着内在的有着内在的联系,高生系,高生产率率必必须以以质量合格量合格为前提前提 n质量与生量与生产率的提高就指望程序率的提高就指望程序员与程序与程序经理理 n非得在非得在质量与生量与生产率之率之间分个主次不可,那么分个主次不可,那么应该是是质量第一,生量第一,生产率第二率第二 12/22/202237质量与生产率(质量与生产率(2)n质量直
19、接体量直接体现在在软件的每段程序中,高件的每段程序中,高质量自量自然是开然是开发人人员的技的技术追求,也是追求,也是职业道德的要道德的要求求 n高高质量量对所有的用所有的用户都有价都有价值,而高生,而高生产率只率只对开开发方有意方有意义 n如果一开始就追求高生如果一开始就追求高生产率,容易使人急功近率,容易使人急功近利,留下利,留下隐患患 12/22/202238不贪污的官就是好不贪污的官就是好官吗官吗n“运行正确运行正确”的程序就是高质量的程序吗?的程序就是高质量的程序吗?n也许运行速度很低并且浪费内存;也许代码写也许运行速度很低并且浪费内存;也许代码写得一塌糊涂得一塌糊涂 12/22/20
20、2239软件的质量因素软件的质量因素 n软件的质量因素很多,如正确性、精确性、可软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)等(还可以列出十几个)n一般说来倾向于可维护性、可靠性、可理解性一般说来倾向于可维护性、可靠性、可理解性和效率和效率12/22/202240软件质量因素分类和武学分软件质量因素分类和武学分类类 正确性与精确性易用性可理解性与简洁性性能与效率可复用性与可扩充性少林派、武当派华山派昆仑派峨嵋派崆峒派1
21、2/22/202241正确性与精确性正确性与精确性 n机器不会主动欺骗人,软件运行不正确或者不机器不会主动欺骗人,软件运行不正确或者不精确一般都是人造成的精确一般都是人造成的 n需求分析错了,那么对客户而言这个软件也存需求分析错了,那么对客户而言这个软件也存在错误在错误 n如果软件没有如果软件没有100%地按需求规格执行,那地按需求规格执行,那么这个软件也存在错误么这个软件也存在错误n程序员要为程序员要为“正确正确”、“精确精确”四个字竭尽全四个字竭尽全力力 12/22/202242性能与效率性能与效率 n用户都希望软件的运行速度高些(高性能),用户都希望软件的运行速度高些(高性能),并且占用
22、资源少些(高效率)并且占用资源少些(高效率)n旧社会地主就是这么对待长工的:干活要快点,旧社会地主就是这么对待长工的:干活要快点,吃得要少点吃得要少点 n通过优化算法、数据结构和代码组织来提高软通过优化算法、数据结构和代码组织来提高软件系统的性能与效率优化的关键件系统的性能与效率优化的关键n工作是找出限制性能与效率的工作是找出限制性能与效率的“瓶颈瓶颈”12/22/202243易用性易用性 n导致软件易用性差的根本原因是开发人员犯了导致软件易用性差的根本原因是开发人员犯了“错位错位”的毛病:他以为只要自己用起来方便,的毛病:他以为只要自己用起来方便,用户也一定会满意用户也一定会满意 n当用户真
23、的感到软件很好用时,一股温暖的感当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用觉油然而生,于是就用“友好友好”来评价易用性来评价易用性 12/22/202244可理解性与简洁性可理解性与简洁性(Note 1)n开发人员只有在自己思路清晰时才可能写出让开发人员只有在自己思路清晰时才可能写出让别人能理解的程序别人能理解的程序 n编程时还要注意不可滥用技巧,应该用自然的编程时还要注意不可滥用技巧,应该用自然的方式编程方式编程 n简洁是一种美简洁是一种美 n如果把学术文章写得很简洁,让人很容易理解,如果把学术文章写得很简洁,让人很容易理解,它往往中不了它往往中不了 12/22/20224
24、5可复用性与可扩充可复用性与可扩充性性 n一种方式是原封不动地使用现成的软件构件一种方式是原封不动地使用现成的软件构件 n一种方式是对现成的软构件进行必要的扩充后一种方式是对现成的软构件进行必要的扩充后再使用再使用 n可复用性好的程序一般也具有良好的可扩充可复用性好的程序一般也具有良好的可扩充性性 12/22/202246可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试测试已经开始返回上级,再.瀑布模型的质量保障体系12/22/202247小结小结(Note 2)n软件的高质量主要是设计出来的软件的高质量主要是设计出来的n不是不是“管管”出来的出来的n更
25、不能依赖质量检查。更不能依赖质量检查。12/22/202248第二章第二章 可行性研究与计划可行性研究与计划12/22/202249系统流程图系统流程图(Note 3)输入单据输入单据磁盘文件磁盘文件处理处理输出单据输出单据12/22/202250数据流程图数据流程图数据源点数据源点和终点和终点变换数据变换数据的加工的加工文件文件数据数据逻辑关系符号:与、或、异或逻辑关系符号:与、或、异或 12/22/202251 2.1可行性研究基本概念可行性研究基本概念n可行性研究的任务:可行性研究的主要任务是可行性研究的主要任务是“了解客户的要求及了解客户的要求及现实环境,从技术、经济和社会因素等三方面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件件系统开发技术 软件工程 软件 系统 开发 技术
限制150内