计算机科学导论 课件 第6章 软件工程_第1页
计算机科学导论 课件 第6章 软件工程_第2页
计算机科学导论 课件 第6章 软件工程_第3页
计算机科学导论 课件 第6章 软件工程_第4页
计算机科学导论 课件 第6章 软件工程_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

第六章

软件工程目录6.2软件开发过程6.3软件测试与维护6.4软件成本估算6.1软件工程概念及软件生命周期6.5软件开发规范与职业道德修养

第六章

软件工程

本章目标(1)了解为什么要学习软件工程;(2)了解软件的发展史;(3)了解软件开发模型;(4)掌握软件开发方法和开发过程;(5)了解软件测试和软件维护;(6)掌握软件成本估算的方法和过程;(7)理解软件开发规范与职业道道修养。

第六章

软件工程6.1软件工程概念及软件生命周期

软件工程的定义软件工程就是采用工程化的概念、原理、技术和方法来开发和维护软件,将工程管理技术的成功经验和思想与软件的开发过程、研究技术相结合,形成一套适合于软件开发的方法、规范和技术。

第六章

软件工程6.1软件工程概念及软件生命周期

软件工程的主要目标软件工程旨在开发满足用户需求、能及时交付、成本不超过预算和无故障的软件,其主要目标如下。(1)合理预算开发成本,减少开发费用。(2)实现预期的软件功能,达到较好的软件性能,满足用户的需求。(3)提高所开发软件的可维护性,降低维护费用。(4)提高软件开发生产率,及时交付使用。软件工程软件开发技术软件管理技术软件工程管理学软件工程经济学

第六章

软件工程6.1软件工程概念及软件生命周期

软件工程的基本原理Boehm于1983年提出软件工程的7条基本原理,一般认为这是确保软件产品质量和开发效率的最小集合。严格按照软件生命周期各阶段计划进行管理坚持进行阶段评审实施严格的产品控制采纳现代先进的程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性成功软件工程的基本要求=

1分技术

+6分管理

第六章

软件工程6.1软件工程概念及软件生命周期

程序设计阶段—50至60年代初

程序系统阶段—60至70年代初软件工程阶段—70年至90年代

第四代技术阶段—90年代之后早期面向批处理有限的分布自定义软件第二阶段多用户数据库实时软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机软件工程的发展阶段

第六章

软件工程6.1软件工程概念及软件生命周期

软件危机由于缺乏软件开发经验和相关数据的积累,使开发计划很难制定,在进度、费用上估计不准确,引起用户不满;软件需求很难确定或不确定,这一点非常关键;开发过程缺乏统一、公认的方法论和规范指导,缺乏文档规范,使软件很难维护;测试工作不充分,导致错误多,可靠性降低。例1:1963年美国的火箭控制系统程序。把FORTRAN语句DO5I=1,3

写成了DO5I=1.3,使发往火星的火箭爆炸,造成1000多万美元的损失。例2:IBM公司1966年开发的IBM360机的操作系统。花费5000人年的工作量,写出近100万行源程序,却得到一个很不成功的软件。每更新一次版本,都能找到1000多个错误,成为用之不灵、弃之可惜的系统。

第六章

软件工程6.1软件工程概念及软件生命周期

软件生命周期(SoftwareLifeCycle)指软件产品或软件系统孕育、诞生、成长、成熟、衰亡的生存过程,是软件从设计、投入使用到被淘汰的全过程。蛹

第六章

软件工程6.1软件工程概念及软件生命周期

软件生存周期可划分成四个活动时期:软件分析、软件设计、编码与测试及软件运行与维护。问题定义可行性研究需求分析概要设计详细设计持久地满足用户的需要实现设计编码实现修复错误

第六章

软件工程6.2软件开发过程

软件生命周期模型是软件工程思想的具体化,包含三个主要阶段:软件定义、软件开发及软件运行维护。可行性研究需求分析总体设计详细设计编码实现测试维护淘汰

第六章

软件工程6.2软件开发过程

1.可行性分析可行性分析主要从经济、技术、操作和法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。经济可行性技术可行性分析法律可行性分析

第六章

软件工程6.2软件开发过程

2.需求分析

在实际工作中,通常把软件需求细化为三个层次:功能需求;性能需求;领域需求

第六章

软件工程6.2软件开发过程

3.总体设计的内容

第六章

软件工程6.2软件开发过程

4.详细设计程序流程图:流程图的优点是直观清晰、易于使用,

是开发者普遍采用的工具,但是它有如下缺点:(1)可以随心所欲地画控制流程线的流向,容易造成非结构化的程序结构。(2)流程图不能反映逐步求精的过程,

往往反映的是最后的结果。(3)不易表示数据结构。

第六章

软件工程6.2软件开发过程

4.详细设计盒图(N-S):在N-S图中,每个处理步骤是用一个盒子表示,处理步骤可以是语句或语句序列。如果有需要,盒子中还可以嵌套另一个盒子。N-S图限制了随意的控制转移,保证了程序的良好结构。

第六章

软件工程6.2软件开发过程

4.详细设计问题分析图(PAD):在支持顺序、选择(分支)和循环三种基本控制结构,并能通过嵌套来表现复杂的逻辑。PAD图是一种更科学、更结构化、更易于转换为代码的流程图,尤其适合在严谨的软件开发过程中进行详细设计。

第六章

软件工程6.2软件开发过程

5.编码实现

第六章

软件工程6.2软件开发过程

常用的软件开发过程模型有:瀑布模型原型模型增量模型螺旋模型喷泉模型软件开发过程模型

第六章

软件工程6.2软件开发过程

软件开发过程模型软件策划需求分析软件设计编码实现软件测试运行、维护优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。缺点:是一种理想的线性开发模式,缺乏灵活性,无法解决软件需求不明确或不准确的问题。瀑布模型

第六章

软件工程6.2软件开发过程

软件开发过程模型需求的采集与细化客户评价原型快速设计建造原型加工原型产生样品停止开始优点:(1)可以得到比较良好的需求定义,容易适应需求的变化;(2)用户在开发过程中学习了解软件;(3)开发费用低、开发周期短且对用户更友好。缺点:(1)客户与开发者对原型理解不同;(2)准确的原型设计比较困难;(3)不利于开发人员的创新。原型模型

第六章

软件工程6.2软件开发过程

软件开发过程模型螺旋模型需求计划操作概念原型1软件需求风险分析原型2需求验证开发计划风险分析原型3软件产品设计设计验证和确认测试计划集成和风险分析可操作原型详细设计实现验收测试组装测试单元测试编码提交部分费用累加评估方案标识风险解决风险风险分析开发、验证阶段性产品实施工程制定下一阶段计划客户评估确定目标、方案和限制定制计划

第六章

软件工程6.2软件开发过程

软件开发过程模型优点:(1)灵活性好,可以在项目各个阶段进行变更;(2)以分段来构建大型系统,使成本计算变得简单容易;(3)客户始终参与开发,保证项目不偏离正确方向;(4)客户掌握项目最新信息,能够和管理层有效地交互。缺点:(1)需要具有相当丰富的风险评估经验和专门知识;(2)如果未能够及时标识风险,会造成重大损失;(3)过多的迭代次数会增加开发成本,延迟提交时间。螺旋模型

第六章

软件工程6.3软件测试与维护

单元测试集成测试系统测试验收测试集成测试:将结构单元集成起来,进行测试。验收测试:按需求规格说明书,用户进行测试。

第六章

软件工程6.3软件测试与维护

软件测试的方法一般可分为动态测试和静态测试。动态测试根据测试用例的设计方法不同又可分为黑盒测试和白盒测试两类。(1)静态测试与动态测试(2)黑盒测试和白盒测试

第六章

软件工程6.3软件测试与维护

(1)静/动态测试静/动态测试是软件测试的两大基本分类。它们的核心区别在于是否需要运行被测试的程序。静态测试不运行程序本身,而是通过审查(如人工阅读代码、评审文档)或静态分析工具(自动检查代码结构、规范)来发现程序中的错误、可疑结构或不符合标准的问题。它是一种预防性的测试,旨在开发早期发现缺陷,提升代码质量。动态测试则必须实际运行程序,通过输入数据检查输出结果是否正确来发现错误。我们通常所说的“测试”大多指动态测试。它是一种验证性的测试,用于检验程序的行为和功能是否与预期一致。

第六章

软件工程6.3软件测试与维护

(2)黑/白盒测试黑/白盒测试是动态测试中两种最核心和常用的方法。黑盒测试将程序视为一个不透明的黑盒子,测试者不需要了解程序内部的代码结构和实现细节,只依据需求规格说明书,在软件接口处进行测试。它的目的是检查程序功能是否正常、输入输出是否正确、性能是否达标等,完全从用户角度出发。白盒测试则将程序视为一个透明的白盒子,测试者必须了解程序的内部逻辑结构和处理过程。它需要针对代码的内部结构设计测试用例,检查程序中的每条路径、每个分支是否都按预期执行,从而验证代码本身的正确性。注意:无论是哪种测试,都无法进行完全的穷举

第六章

软件工程6.3软件测试与维护

软件维护是指在软件交付使用后,为改正错误或满足新需求而修改软件的过程。它是软件生命周期中时间最长、花费精力和费用最多的阶段。主要分为四类:改正性维护适应性维护完善性维护预防性维护

第六章

软件工程6.4软件成本估算

(1)估算规模(2)估算工作量(3)估算工期(4)估算成本

第六章

软件工程6.4软件成本估算

估算规模:旨在确定项目的工作范围,它需要明确的项目需求和系统边界。估算工作量:基于规模估算或项目属性,来预测需要投入的人时。主要方法有:经验法:依靠专家的主观经验进行整体估算或基于WBS进行估算,简单但误差较大。类推法:选择一个高度相似的历史项目进行对比估算,需根据差异进行调整。类比法:利用大量历史项目样本数据进行比对,适用于部分属性相似的情况。方程法:基于基准数据建立数学模型,通过输入各项参数得出估算值。估算工期:即估算项目需要的时间。所采用的方法(经验法、类推法、类比法、方程法)与估算工作量的方法基本相同。估算成本:在获得工作量和工期后,进行成本估算。需要分别估算直接人力成本、间接人力成本、直接非人力成本和间接非人力成本。类比法和类推法也适用于需求不明确时的成本估算,最终成本结果同样是一个范围。

第六章

软件工程6.4软件成本估算

例:假设一家公司准备在2030年计划用JAVA语言开发一个应用程序,估计这个程序的长度为10,0000条指令。如果平均每人每天可以开发出100条指令,请问:(1)开发这个程序将用多少人日?(2)假设程序员月平均工资为5000元,每月按20个工作日计算,这个软件的成本是多少元?10,0000/100=1000(人日)每月工作20天,故开发这个软件用:1000/20=50(人月)每人工资5000元,故软件成本约为:5000*50=250,000(元)

第六章

软件工程6.5软件开发规范与职业道德修养软件开发规范(1)软件需求设计规范(2)软件实现规范(3)软件维护过程规范职业道德规范职业道德是每个软件开发人员在软件开发过程中应该遵循的符合自身职业特点的职业行为规范,是软件开发人员通过学习与实践养成的优良职业品质,涉及软件开发工程师与服务对象、职业与职工、职业与职业之间的关系。

第六章

软件工程6.5软件开发规范与职业道德修养案例:伊顿公司逻辑炸弹案(2019年):DavisLu因对公司重组后职责被削减不满,在离职前在其雇主的系统中植入逻辑炸弹(killswitch)和恶意代码。2019年9月,当他被解雇账户停用时,恶意程序激活,导致公司ActiveDirectory用户配置文件被删、服务器崩溃,数千名员工被锁系统外,造成数十万美元的经济损失,Lu最终被判处4年有期

温馨提示

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

评论

0/150

提交评论