软件安全-软件工程基础知识.ppt_第1页
软件安全-软件工程基础知识.ppt_第2页
软件安全-软件工程基础知识.ppt_第3页
软件安全-软件工程基础知识.ppt_第4页
软件安全-软件工程基础知识.ppt_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、第一章 软件工程基础知识,1.1 软件的定义 1.2 软件工程 1.3 软件生命周期,FAQ(关于软件工程),什么是软件? 好的软件有那些特点? 什么是软件工程? 什么是软件过程? 什么是软件过程模型? 什么是软件工程方法? 什么是CASE(Computer Aided Software Engineering)? 软件工程和系统工程有什么区别? 软件工程面临的关键挑战是什么?,1. 1 软件的定义,什么是软件 软件的特点 软件发展史 软件危机,什么是软件? (1/2),书本上的定义 Software is a set of items or objects that forms a “con

2、figuration” that includes programs, documents, data, IEEE的定义 Software is computer programs, procedures, and possibly associated documentation and data pertaining to the operation of a computer system.,可执行部分,不可执行部分,什么是软件? (2/2),与计算机系统操作有关的程序和数据以及任何与之相关的文档的集合。,程序,什么是程序(1/2),程序: 由程序设计语言所描述的、能为计算机所识别、理解

3、和处理的语句序列 程序例子 Main( ) int i, j; / 变量定义 char Str10; i = i + j ; / 语句说明 ,什么是程序(2/2),程序设计语言具有良好、严格语法和语义 目前程序设计语言主要有以下几种类型 面向机器: 如汇编语言、机器语言等 面向过程: 如Fortran, Pascal, C等等 面向对象: 如Java等等 面向问题: 如结构化查询语言SQL等等,什么是文档,文档: 记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料 需求分析文档 软件设计文挡等 编写文档目的 促进对软件的开发,管理和维护; 便于各种人员(用户,开发人员)的交流,软件特点,

4、不会老化 逻辑产品 (智力, 无形) 维护困难和复杂(完善, 纠错,.) 生产只需复制 软件开发性质如成本、进度等难以估计 软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理,好的软件有哪些特点?,软件发展史,软件危机,软件需求的增长得不到满足; 软件开发的成本和进度无法控制; 软件质量难以保证; 软件不可维护或维护成度非常低; 软件成本不断提高; 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。,为了消除软件危机,形成了软件工程的概念,开辟了工程学的新兴领域软件工程学。软件工程就是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。,1.2 软

5、件工程,1.2.1 软件开发活动 1.2.2 软件工程 1.2.3 软件工程的知识域,1.2.1 软件开发活动,软件开发活动的主要内容,1 需求分析,需求规格说明(specification) 初步用户手册 项目开发计划 可行性(风险)分析,需求分析,用户的需要 (needs),对软件的需求 (requirements),使用计算机术语, 比较严格的语言,全面理解,准确表达,软件需求说明书的内容,2 软件设计,软件模块划分 算法设计 数据结构设计 用户界面设计,软件设计,需求规格说明 (specification),概要设计说明书 详细设计说明书,从实现角度出发 自顶向下逐步细化 (stepw

6、ise refinement),软件详细设计说明书的内容,3 软件构造,软件构造 (程序设计),可执行的软件模块, 集成后的软件成品,算法 数据结构 用户界面,程序设计语言(如C,C+, JAVA, VB等) 软件运行平台(使用何种操作系统,向应用程序提供哪些服务。一般通过API(应用程序接口)提供,如Windows系统的API:Win32 SDK 和 MFC类库等) 编程和开发工具(集成开发环境;Delphi 、C+ Builder、 Visual Studio; Visual Studio.NET),设计说明书,关于程序设计语言和编程训练,必须学好:C/C+ 、Java、 等程序设计语言

7、一定要大量编写程序和开发软件,这是因为: 1 使用语言才能掌握语言 2 编程是计算机科学的“实验”手段 3 通过编程才能把计算机系统方方面面的概念联系在一起,理解计算机的行为和特性。编程是理解抽象概念的有效途径 4 编程和软件开发仍然是大部分计算机专业及相关专业毕业生就业岗位的主要工作; 5 在开发系统软件和数据处理类大型应用软件方面,计算机专业及相关专业毕业生应该也必须具有明显的优势。,4 软件测试,软件测试,经过测试和修改的软件产品,测试说明书 测试工具 测试用例和测试数据,可执行的软件模块 集成后的软件成品,测试过程,测试(Testing)是找出程序和设计中的错误,其要求是: 有效数据结

8、果正确 无效数据有预防措施,排错(Debugging)也叫调试,用于消除程序中缺陷(bug): 找出出错的位置(定位) 分析出错原因并改正,测试方法:白盒测试技术,白盒测试也叫路径测试: 程序中所有语句必须执行一次以上,程序中每条路径都要走到,白盒测试 的内容,测试方法:黑盒测试技术,黑盒测试(Black Box Testing) 也称功能测试:只关心程序运行结果是否符合要求,不考虑程序内部的执行过程,例:求方程式ax2+bx+c=0的根 测试用例:,测试用例的覆盖面要大,但又要少而精,防治遗漏!,软件产品测试的重要性,微软产品开发组的人员构成:,嫦娥一号 卫星:100万行软件,测试软件达16

9、0万行!,5 软件维护,软件维护内容: 改正性维护 运行中发现了软件中的错误需要修正 适应性维护 为适应变化了的软硬件环境,需对软件做适当变更 完善(改进)性维护 为了满足用户新的业务需求、增强软件功能而需要修改、扩充软件 预防性维护 为增强系统可靠性和安全性所采取的预防性措施,软件维护,经过修改的 软件产品,使用中发现的问题 修改后的需求规格说明书,交付的 软件产品,软件维护的重要性,在整个软件开发活动中,软件维护的工作量最大,其费用大约是软件开发总成本的2/3左右 在整个软件维护阶段的全部工作量中,预防性维护只占很小的比例,而完善性维护占了几乎一半的工作量,小结:软件开发活动的特点,需要多

10、人参与的分阶段进行的工作量很大的智力活动 不仅是编程序,比编程更重要的是需求分析和软件设计 编程不但要熟悉程序语言,还需要熟悉运行平台,掌握编程和开发工具 编程需要熟悉应用领域的业务知识 测试和编程同样重要 投入运行后仍需要提供大量的支持和服务 整个开发活动需要精心组织与管理,1.2.2 软件工程,Quiz:,1 开发一个典型的软件项目大约需要多少个月? 2-3月 4-6月 8-12月 12-24月 2 包含多少行可执行语句的软件被认为是大型软件? 1000行 5000行 10000行 50000行 3 每年上千亿美元销售额的软件市场中,Office、IE之类的PC常用软件占多少份额? 10%

11、 25% 50% 75% 4 中等规模软件的开发期中每人每天平均开发多少行可执行语句? 100行 5 开发过程中,平均每1000行可执行代码中大约会发现多少个错误? 5-10 10-20 50-60 100-150 6 由用户发现的软件错误大部分是什么原因引起的? 编程错误 需求理解有误 软件集成 设计错误,软件规模、工作量与成本,软件规模,软件危机,软件产业滞后于应用的需求和硬件的发展 软件开发效率低、成本高,进度和成本难以控制 软件质量得不到保证,硬件成本与软件开发、维护费用比例的变化,60%左右的软件项目不能按期完成 50%左右软件项目的费用超过预算 45%左右软件项目最终无法投入使用

12、29%左右软件项目没有交付软件 19%左右的软件项目必须返工才能使用,软件项目失败率统计,2000,1998,1995,1994,28%,23%,49%,26%,28%,46%,27%,40%,33%,16%,31%,53%,This chart depicts the outcome of the 30,000 application projects in large, medium,and small cross-industry U.S. companies tested by The Standish Group since 1994. (Source: The Standish G

13、roup International, Extreme Chaos, The Standish Group International, Inc., 2000),成功,有问题,失败,软件项目失败的原因,“When projects fail, its rarely technical.” Jim Johnson, The Standish Group,软件的目标与功能分离(separation) 需求不够明确,软件的商务(business)与技术分离,缺乏共同的语言和过程 开发过程没有统一的、公认的方法和规范做指导,参与人员自行其是,联系少,不像一个团队 开发过程不能灵活改变,测试不充分,So

14、lution? 软件工程,什么是软件工程?,1968年提出(NATO会议) 根据美国IEEE的定义,软件工程是“以系统的、规范的、可以度量的方法应用于软件的开发、运行和维护,以及对这些方法和技术的研究” 通俗地说,软件工程是指导软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法,把经过时间检验而证明是正确的管理技术和当前能够得到的最好的技术、方法结合起来,用于开发和维护软件 经过几十年的研究与实践, “软件危机”有所缓解,软件开发方法、技术和管理已经有了很大的进步,软件工程已经成为一门比较成熟的学科,软件工程的目标,实现软件的工业化生产,提高软件的质量与生产效率,达到: 付出较低

15、的开发成本; 达到要求的软件功能; 取得较好的软件性能; 开发的软件易于移植; 需要较低的维护费用; 按时完成开发任务,及时交付使用,软件工程的七条基本原理,按分阶段的生命周期计划严格进行管理 坚持进行阶段评审 实行严格的产品控制 采纳现代程序设计技术 开发成果应能清楚地审查 开发小组的人员要少而精 承认不断改进软件工程实践的必要性,软件工程的主要内容,软件开发过程的模型 软件开发方法 软件开发工具 软件工程管理与支持,Maintainability 可维护性 Correctness 正确性 Reusability 可重用性 Reliability 可靠性 Portability 便携性(可移

16、植性) Efficiency 有效性,软件开发过程的模型,瀑布模型 快速原型模型 螺旋模型 ,软件开发方法和工具,软件开发方法: 结构化方法 面向数据结构的方法 面向对象的方法 ,软件开发工具: (1) 需求分析和概要设计工具 (2) 详细设计和编码工具 (3) 测试工具 (4) 维护和理解工具 (5) 项目管理工具 (6) 配置管理工具 ,1.2.3 软件工程的知识领域,软件工程与程序设计,软件工程存在于软件开发活动的各个阶段。而程序设计通常指程序的设计与编码,是软件开发过程中的一个阶段。 软件工程力图对软件项目的各个方面作出指导,从软件的可行性分析直到软件完成以后的维护工作 软件工程认为软

17、件开发与各种市场活动密切相关。比如软件的销售,用户培训,与之相关的软件和硬件安装等。 软件工程的方法学认为一个程序员不应当脱离团队而进行开发,同时,程序的编写不能够脱离软件的需求、设计以及客户的利益。,软件工程与计算机科学,软件工程与系统工程,软件工程关注如何开发和发布有用(有质量)的软件,如飞行控制软件。 系统工程关注基于计算机进行系统开发的所有方面,包括硬件、软件及相关过程,如飞机 。 软件工程是系统工程的一部分。,软件工程的知识领域(1),软件工程的知识领域(2),小 结,程序设计 软件开发 开发工具和环境 软件工程,1.3 软件生命周期,1.3.1 软件生命周期(软件生存周期) 1.3

18、.2 软件开发过程模型 1.3.3 CASE工具和环境,1.3.1 软件生命周期(Software Life Cycle),什么是软件生命周期,生命周期 人的生命周期:婴儿、幼儿、儿童、少年、 软件生命周期 软件从提出开发开始到最终灭亡所经历的时期 软件产品或软件系统从设计、投入使用到被淘汰的全过程。,软件生命周期示意图(根据GB8566-88计算机软件开发规范),可行性研究,需求分析,概要设计,详细设计,实 现,集成测试,确认测试,使用与维护,退役,软件定义,软件开发,维护,可行性研究(1/2),任务 了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性 技术途径

19、 调查和了解用户要求 和 现实环境 攒写调查报告 可行性论证 和 分析(技术、经济等) 如可行,制定初步项目开发计划(人员,进度),可行性研究(2/2),阶段性产品 可行性论证报告 初步的项目开发计划,需求分析(1/2),任务 确定用户对待开发软件系统的需求包括: 功能 性能 运行环境约束 重要性 软件开发依据,软件验收的标准 困难性 难以说清, 动态变化, 歧义,复杂,需求分析(2/2),技术途径和工具 需求分析人员需与用户不断、反复地交流和商讨,使用户需求逐步准确化、一致化、完全化 抽象、问题分解、快速原型、多视点等技术 阶段性产品 软件需求规格说明书SRS(功能,性能和运行环境约束),概

20、要设计,任务 根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划等等。 技术途径和工具 根据软件需求规格说明书, 自顶向下, 逐步求精, 抽象, 模块化, 局部化,信息隐藏 . 阶段性产品 概要设计规格说明书 数据库或数据结构设计说明书 集成测试计划。,详细设计,任务 细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划 技术途径 根据SRS和概要设计结果进行,单入口单出口,PDL 阶段新产品 详细设计规格说明书 单元测试计划,实现,任务 根据详细设计规格说明书编写源程序,并对程序进行

21、调试和单元测试,验证程序与详细设计文档 一致性 技术途径和工具 以详细设计规格说明书为依据、基于某种程序设计语言进行编码 阶段新产品 源程序代码,集成测试,任务 根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试 技术途径和工具 以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试 IDE, 专有工具等 阶段性产品 生成满足概要设计要求、可运行的系统源程序和系统集成测试报告,确认测试,任务 根据软件需求规格说明书,测试软件系统是否满足用户的需求 途径 由用户参与,以软件需求规格说明书为依据进行确认测试 专有工具 阶段性产品 可供用户使用的软件产品(文档,源程序),软件维

22、护,任务 对使用后的软件进行维护例如: 修正使用过程中发现的错误纠错性维护 增加新的功能完善性维护 从一个环境搬迁到另一个环境适应性维护 途径 以文档和源程序为基础按用户要求进行 阶段性产品 版本更新的软件产品,软件生命周期(根据GB8566-2007信息技术 软件生存周期过程),生存周期基本过程 生存周期支撑过程 生存周期组织过程,1.3.2 软件开发过程模型,软件开发过程,软件开发过程模型,瀑布模型 快速原型模型 增量模型 螺旋模型 敏捷开发,软件开发过程模型(1),特点:不带反馈环,分析,增量模型,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,分析,设计,编码,测试,

23、增量1,增量2,增量3,增量n,增量1 交付客户,增量2 交付客户,增量3 交付客户,增量n 交付客户,时间,.,软件开发过程模型(2),软件开发过程模型(3),螺旋模型,确定软件目标,选定实施方案,弄清项目开发的限制,评价开发工作,提出修正建议,分析所选方案,考虑如何识别和消除风险,实施软件开发,微软公司的软件开发过程模型,微软解决方案框架MSF综合了瀑布模型和螺旋模型的优点: 每个回环包含5个子过程,以一次发布为终结,下一次发布再循环一次。 每个子过程以里程碑(milestone)为分隔,每个里程碑需对阶段成果进行评审,通过后才能继续,计划批准,开发完成,发布准备完成,部署完成,项目批准,

24、MSF,创意过程:确定需求和总目标,计划过程:确定做什么和怎么做,开发过程:完成程序代码和文档,稳定过程:消除所有发现的问题,部署过程:完成软件运行的部署,案例,北京市交通设施设计与漫游系统 用户的要求 (1)完成交通设施的二维图纸设计 (2)在二维设计的基础上模拟显示设计的效果 现实情况 (1)二维设计部分已有工作基础,新功能开发量不大 (2)设计仿真与漫游显示部分需求不确定 (3)用户要求开发方提出可行的方案,采用哪种软件过程模型更合适呢?,1.3.3 CASE工具和环境,什么是CASE工具和环境,计算机辅助软件工程 (Computer Aided Software Engineering,CASE) 在软件工程活动中,软件开发人员

温馨提示

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

评论

0/150

提交评论