软件开发与软件工程.ppt

上传人:wuy****n92 文档编号:54738488 上传时间:2022-10-29 格式:PPT 页数:68 大小:1.18MB
返回 下载 相关 举报
软件开发与软件工程.ppt_第1页
第1页 / 共68页
软件开发与软件工程.ppt_第2页
第2页 / 共68页
点击查看更多>>
资源描述

《软件开发与软件工程.ppt》由会员分享,可在线阅读,更多相关《软件开发与软件工程.ppt(68页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6讲讲 软件开发软件开发与软件工程与软件工程1 算法算法(3.3)2 程序设计程序设计(3.3)3 软件工程软件工程(补充补充)第6讲 软件开发与软件工程 2开发计算机软件的过程开发计算机软件的过程(1)确定并理解问题确定并理解问题(2)寻找解决问题的方法与步骤,并将其表示成算寻找解决问题的方法与步骤,并将其表示成算法法(algorithm)(3)程序设计:使用某种程序设计语言描述该算法程序设计:使用某种程序设计语言描述该算法及其处理的对象及其处理的对象,并编译成目标程序并编译成目标程序(4)调试调试(debug)和运行和运行(run)程序,获得问题的解程序,获得问题的解答答(5)进行评估

2、进行评估,改进算法和程序改进算法和程序第6讲 软件开发与软件工程 31.算法算法第6讲 软件开发与软件工程 4什么是算法?什么是算法?算法是解决问题的方法与步骤算法是解决问题的方法与步骤n例:有三个硬币,其中一个是例:有三个硬币,其中一个是伪造的,另两个是真的,伪币伪造的,另两个是真的,伪币与真币重量略有不同。现在提与真币重量略有不同。现在提供一座天平,供一座天平,如何如何找出伪币呢找出伪币呢?n分析:分析:n按给定条件进行操作按给定条件进行操作n明确而有序地进行明确而有序地进行n共享智能共享智能(任何人均可进行任何人均可进行)开始开始C是伪币是伪币B是伪币是伪币A是伪币是伪币AB?AC?是是

3、否否否否是是A B C第6讲 软件开发与软件工程 5解决问题解决问题必须找到算法!必须找到算法!第6讲 软件开发与软件工程 6例例1:买鸡问题:买鸡问题n公元公元5世纪末世纪末(南北朝南北朝),我国古代数学家张丘建在他所撰,我国古代数学家张丘建在他所撰写的算经中,提出了这样的一个问题:写的算经中,提出了这样的一个问题:“鸡翁一,鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?鸡,问鸡翁、母、雏各几何?”假设假设:公鸡数目为公鸡数目为x,母鸡数目为,母鸡数目为y,则小鸡数目为,则小鸡数目为(100-x-y)则:则:

4、5x+3y+(100-x-y)/3=100,即即 7x+4y=100这是这是2元一次不定方程元一次不定方程,共有有共有有3组解:组解:(4,18,78)、(8,11,81)、(12,4,84)第6讲 软件开发与软件工程 7用用“枚举法枚举法”解决买鸡问题解决买鸡问题开始开始NY5x+3y+z/3100?x+y100?x+y100?结束结束x=0,y=0 x+1x=0,y+1z=100-x-yNY输出输出x,y,zNY假设假设:公鸡数目为公鸡数目为x,母鸡数目为母鸡数目为y,则小鸡数目则小鸡数目 z=100-x-y从从x=0,y=0开始,反复检查各种可开始,反复检查各种可能的组合是否所求答案:能

5、的组合是否所求答案:x=0,y=0、x=1,y=0 x=100,y=0 x=0,y=1、x=1,y=1x=99,y=1x=0,y=99、x=1,y=99x=0,y=100直到找出全部答案为止!直到找出全部答案为止!枚举法也枚举法也叫做叫做“穷穷举法举法”或或Brute-force 第6讲 软件开发与软件工程 8例例2:货郎担问题:货郎担问题(TSP-Traveling Salesman Problem)n售货员从城市售货员从城市A出发,到出发,到B、C、D等若干城市销售货物。等若干城市销售货物。已知各城市之间的距离,要已知各城市之间的距离,要求选择一条旅行路线,使总求选择一条旅行路线,使总路程

6、最短。条件:每个城市路程最短。条件:每个城市只能经过一次,最后仍回到只能经过一次,最后仍回到出发城市出发城市A。第6讲 软件开发与软件工程 9用枚举法解决用枚举法解决TSP问题问题第6讲 软件开发与软件工程 10TSP问题与组合爆炸问题与组合爆炸n4个城市,共有个城市,共有3!=6种路径种路径n5个城市,共有个城市,共有4!=24种路径种路径n10个城市,共有个城市,共有9!=36万种万种路径路径n50个城市,有个城市,有49!=1062路径路径nnf(n)=(n1)!n2001年解决了年解决了15112个城市之个城市之间的间的TSP问题,使用问题,使用110台计台计算机,共费时月算机,共费时

7、月(组合爆炸)(组合爆炸)理论上,枚举法可以解决可计算领域的许多问题理论上,枚举法可以解决可计算领域的许多问题 实际上,枚举法仅适用于解决一些较小规模的问题实际上,枚举法仅适用于解决一些较小规模的问题33x23x2x1第6讲 软件开发与软件工程 11例例3:寻找最大数(:寻找最大数(分治法分治法)再分组:再分组:49,38 65,97 76,13 27 49 97 76 27 每一组找大数:每一组找大数:归并成归并成1组组97,76n 原始数据为:原始数据为:49,38,65,97,76,13、27分成分成2组:组:49,38,65,97 76,13,27 49,97 76,27归并成归并成2

8、组:组:97 76 每一组找大数:每一组找大数:97找出最大数:找出最大数:第6讲 软件开发与软件工程 12分治法的基本思想分治法的基本思想n例:找最大例:找最大/最小数;合并排序;最小数;合并排序;矩阵乘法;矩阵乘法;二分法搜索等二分法搜索等把问题分解为把问题分解为若干个规模较若干个规模较小的同一问题小的同一问题原始问题规模较小的子问题问题规模缩小问题规模缩小之后很容易得之后很容易得到解答到解答子问题的解从子问题的解从子问题的解可以很容易地可以很容易地推导出原始问推导出原始问题的解题的解原始问题的解第6讲 软件开发与软件工程 13例例4:迷宫问题:迷宫问题(回溯法、试探法回溯法、试探法)出口

9、入口迷迷宫宫问问题题将问题的候选将问题的候选解按某种顺序解按某种顺序逐一检验,在逐一检验,在检验过程中取检验过程中取消上一步或几消上一步或几步、再寻找下步、再寻找下一个可能候选一个可能候选解的过程叫做解的过程叫做“回溯回溯”DemoBacktracking第6讲 软件开发与软件工程 14例例5:Hanoi塔问题(递归法)塔问题(递归法)n设设A,B,C是是3个塔座,塔座个塔座,塔座A上有一叠由小到大叠在一上有一叠由小到大叠在一起的起的n个圆盘,现要求将塔座个圆盘,现要求将塔座A上的这一叠圆盘移到塔上的这一叠圆盘移到塔座座C上,并仍按同样顺序叠置。移动规则是:上,并仍按同样顺序叠置。移动规则是:

10、(1)每次只能移动每次只能移动1个圆盘个圆盘 (2)不允许大盘压在小盘上不允许大盘压在小盘上ABCCAB第6讲 软件开发与软件工程 152个圆盘的情况个圆盘的情况abc0abc1abc2abc3一共需要搬动一共需要搬动3次!次!第6讲 软件开发与软件工程 163个圆盘的情况个圆盘的情况abc0abc搬3次3abc4abc再搬3次7一共需要搬动一共需要搬动7次!次!第6讲 软件开发与软件工程 174个圆盘的情况个圆盘的情况abc8ABC0abc7搬7次15CAB再搬7次一共需要搬动一共需要搬动15次!次!第6讲 软件开发与软件工程 18Hanoi塔问题分析塔问题分析假定假定每秒移动一次每秒移动一

11、次,一年有,一年有31536000秒,则需要花费大约秒,则需要花费大约5849亿年亿年的时间的时间假定计算机以假定计算机以1000万万次次/s的速度的速度进行传送操作,则需要大约进行传送操作,则需要大约58490年年的时间的时间若若n=100,在运算速度是,在运算速度是1012/s(1万亿次万亿次/秒),该算法需要运行秒),该算法需要运行 4x1010年,几乎是宇宙年龄年,几乎是宇宙年龄n设圆盘数目为设圆盘数目为n,移动次数为移动次数为h(n),则则 h(n)=2h(n-1)+1 =2(2h(n-2)+1)+1=22h(n-2)+2+1 =23h(n-3)+22+2+1 =2nh(0)+2n-

12、1+22+2+1 =2n-1+22+2+1=2n-1当当 n=64时,需要移动盘子的次数为:时,需要移动盘子的次数为:264 即使理论上可以计算的问题,实际上并不一定能解决即使理论上可以计算的问题,实际上并不一定能解决!第6讲 软件开发与软件工程 19小结:算法设计是解决问题的关键小结:算法设计是解决问题的关键n不同问题往往需要使用不同的算法,客观世界非常复杂,问题不同问题往往需要使用不同的算法,客观世界非常复杂,问题是无限的,所以算法也层出不穷!是无限的,所以算法也层出不穷!n借鉴已有问题的求解算法是设计新算法的借鉴已有问题的求解算法是设计新算法的“捷径捷径”:n枚举法、回溯法、递归法、分治

13、法、迭代法、贪心法、动态枚举法、回溯法、递归法、分治法、迭代法、贪心法、动态规划法,等等规划法,等等n设计算法是一项富有挑战性的工作,它既有严格的技术因素,设计算法是一项富有挑战性的工作,它既有严格的技术因素,必须进行缜密的思考,又需要丰富的想象力和创新思维,是惟必须进行缜密的思考,又需要丰富的想象力和创新思维,是惟一能使人既成为工程师又成为艺术家的一种工作一能使人既成为工程师又成为艺术家的一种工作n即使有了算法,也不一定能够解决问题即使有了算法,也不一定能够解决问题第6讲 软件开发与软件工程 20同一问题同一问题往往有多种算法!往往有多种算法!第6讲 软件开发与软件工程 21例:排序问题例:

14、排序问题(sorting)n基本问题基本问题:有一组数据有一组数据(例如整数或字符例如整数或字符),把它们把它们按某种规则按某种规则(例如数值大小或编码顺序例如数值大小或编码顺序)进行排列进行排列n例例:排序前排序前排序后排序后sorting第6讲 软件开发与软件工程 221 简单排序算法简单排序算法 (demo)1.任给一组未排序的整数任给一组未排序的整数 2.重复下面的步骤重复下面的步骤35,直到未排序直到未排序的数为空的数为空:3.对未排序的数进行比较对未排序的数进行比较 4.选出未排序数中的最小数选出未排序数中的最小数5.把最小数移动至已排序数的末尾把最小数移动至已排序数的末尾 未排序

15、未排序已排序已排序初态初态 第第1次循环后次循环后 第第2次循环后次循环后第第3次循环后次循环后第第4次循环后次循环后第第7次循环后次循环后第第5、6次循环次循环第6讲 软件开发与软件工程 232 插入排序算法插入排序算法 (demo)1 任给一组未排序的整数任给一组未排序的整数 2 在第在第1个数的右面设置个数的右面设置1个标记,个标记,标记左面为已排序的数,标记右标记左面为已排序的数,标记右面为未排序的数面为未排序的数3 重复下面的步骤重复下面的步骤4至至6,直到未排直到未排序的部分为空序的部分为空:4 选择未排序部分的第选择未排序部分的第1个数个数 5 将该数与已排序的数进行比较将该数与

16、已排序的数进行比较/交交换,直到它到达正确的位置换,直到它到达正确的位置 6 将标志向右面移动将标志向右面移动1个位置个位置 初态初态标记标记1c2c3c4c5c6c第6讲 软件开发与软件工程 243 选择排序算法选择排序算法 (demo)1.任给一组未排序的整数任给一组未排序的整数2.在未排序数的左面设置在未排序数的左面设置1个标志个标志,以区分已排序部分和未排序部分以区分已排序部分和未排序部分3.重复步骤重复步骤4步骤步骤7,直到未排序部直到未排序部分只剩下分只剩下1个数为止个数为止:4.对未排序部分的数进行比较对未排序部分的数进行比较5.从中选择最小的从中选择最小的1个数个数 6.将它与

17、未排序部分的第将它与未排序部分的第1个数相个数相互交换位置互交换位置7.将标志向右移动将标志向右移动1个位置个位置 4937825初态初态293784549378251c239784529378452c234789523978453c23457896c第6讲 软件开发与软件工程 25 算法分析:算法分析:怎样选择合适的算法?怎样选择合适的算法?n正确:给定有效输入后,经过有限时间的计算,产生正确的正确:给定有效输入后,经过有限时间的计算,产生正确的输出结果输出结果n直观、易理解:算法容易理解,容易验证其正确性,程序容直观、易理解:算法容易理解,容易验证其正确性,程序容易调试易调试n快:运行该算

18、法所需要的时间比较少快:运行该算法所需要的时间比较少时间复杂性时间复杂性(Time Complexity)低低:n省:节省存储空间,额外占用的存储器少省:节省存储空间,额外占用的存储器少空间复杂性空间复杂性(Space Complexity)低:低:第6讲 软件开发与软件工程 26是不是所有问题都有算法?是不是所有问题都有算法?第6讲 软件开发与软件工程 27许多问题迄今还无有效算法!许多问题迄今还无有效算法!n哥德巴赫猜想哥德巴赫猜想n语音识别语音识别n股市预测股市预测n地震预报地震预报n长期大范围天气预报长期大范围天气预报nn人的认知过程是不是人的认知过程是不是一种算法行为?一种算法行为?

19、n人类的意识是否就是人类的意识是否就是一种复杂机械计算的一种复杂机械计算的表现?表现?n人脑是否就是一种机人脑是否就是一种机器?器?n第6讲 软件开发与软件工程 28小小 结结第6讲 软件开发与软件工程 29小结小结1:计算机算法的:计算机算法的4个特点个特点 明确性:算法中每一步操作的含义必须清楚明确,明确性:算法中每一步操作的含义必须清楚明确,无二义性无二义性 可行性:可行性:算法中有待实现的操作都是计算机可执行算法中有待实现的操作都是计算机可执行的,即必须在计算机的能力范围之内的,即必须在计算机的能力范围之内 有穷性:有穷性:算法在执行了有限步操作后必须结束算法在执行了有限步操作后必须结

20、束 算法结束后必须产生输出算法结束后必须产生输出第6讲 软件开发与软件工程 30小结小结2:算法是计算机软件的灵魂:算法是计算机软件的灵魂n计算机的通用性是因为它能运行各种各样的程序,而程序之所以能解计算机的通用性是因为它能运行各种各样的程序,而程序之所以能解决问题,是因为它所体现了正确的算法决问题,是因为它所体现了正确的算法n开发计算机应用的核心是:根据实际问题给出解题的算法,然后再将开发计算机应用的核心是:根据实际问题给出解题的算法,然后再将该算法在计算机上予以实现该算法在计算机上予以实现(即开发成为软件即开发成为软件)n计算机中处处是算法!计算机中处处是算法!n例例1:Word程序如何在

21、文档中查找用户指定的词语?程序如何在文档中查找用户指定的词语?n例例2:在:在Word文档中如何发现拼写错误?文档中如何发现拼写错误?n例例3:Word中的插图如何随意改变其大小?中的插图如何随意改变其大小?n例例4:媒体播放器如何把:媒体播放器如何把MP3文件转换成动听的音乐?文件转换成动听的音乐?n例例5:数码相机如何自动进行人脸检测?:数码相机如何自动进行人脸检测?n例例6:搜索引擎如何在:搜索引擎如何在WWW网中找到用户需要的网页或图片?网中找到用户需要的网页或图片?Demo-过河过河第6讲 软件开发与软件工程 312.程序设计程序设计n什么是程序设计语言?什么是程序设计语言?n程序设

22、计语言的分类程序设计语言的分类n程序设计语言处理系统程序设计语言处理系统 第6讲 软件开发与软件工程 32什么是程序设计语言?什么是程序设计语言?n什么是程序?什么是程序?n为了用计算机解决某个问题而采用为了用计算机解决某个问题而采用程序设计语言程序设计语言编写的一编写的一个指令序列,程序是解决该问题所采用算法的体现个指令序列,程序是解决该问题所采用算法的体现n什么是程序设计语言?什么是程序设计语言?n语言语言的目的是用于通信的目的是用于通信n程序设计语言程序设计语言用于人与计算机之间的通信用于人与计算机之间的通信n程序设计语言是由人使用但计算机可以理解的一种语言程序设计语言是由人使用但计算机

23、可以理解的一种语言n程序设计语言用于编制程序,表达需要计算机完成什么任程序设计语言用于编制程序,表达需要计算机完成什么任务和怎样完成任务,然后交给计算机去完成务和怎样完成任务,然后交给计算机去完成第6讲 软件开发与软件工程 33 程序设计语言填补了程序设计语言填补了 人与计算机交流的鸿沟人与计算机交流的鸿沟计计算算机机硬硬件件仅仅仅仅知道知道0和和1有有问问题题需需要要计计算机解决的人算机解决的人交流的鸿沟交流的鸿沟计计算算机机硬硬件件仅仅仅仅知道知道0和和1有有问问题题需需要要计计算机解决的人算机解决的人程序设计语言程序设计语言第6讲 软件开发与软件工程 34程序设计语言分类程序设计语言分类

24、n机器语言机器语言:CPU的指令系统就是机器语言,指令用二进制表示,的指令系统就是机器语言,指令用二进制表示,用机器语言编程序用机器语言编程序,也就是直接使用二进制编写程序,极其困难,也就是直接使用二进制编写程序,极其困难,工作效率很低工作效率很低n汇编语言汇编语言:用助记符号和十进制数表示机器指令中的操作符与操作:用助记符号和十进制数表示机器指令中的操作符与操作数,工作难度略有降低数,工作难度略有降低n高级程序设计语言:高级程序设计语言:n接近人们日常使用的自然语言(主要是英语),容易接近人们日常使用的自然语言(主要是英语),容易理解、记忆和使用理解、记忆和使用n对使用的符号、词汇、语法和语

25、义等各种语言成分都有严格的规定对使用的符号、词汇、语法和语义等各种语言成分都有严格的规定n在不同计算机上可以通用在不同计算机上可以通用高级程序设计语言的出现,使程序设计的难度降低,导致了计算机的发高级程序设计语言的出现,使程序设计的难度降低,导致了计算机的发展进入新的阶段!展进入新的阶段!第6讲 软件开发与软件工程 35高级程序设计语言的发展高级程序设计语言的发展n50年代:年代:Fortran,ALGOLn60年代:年代:COBOL语言语言,BASIC语言语言n70年代:年代:Pascal 语言,语言,C语言语言n80年代:年代:Ada语言,语言,PROLOG语言,语言,LISP语言语言n9

26、0年代起:面向对象语言年代起:面向对象语言BASIC、C+、JAVA、C#等等第6讲 软件开发与软件工程 36程序设计语言的翻译程序程序设计语言的翻译程序n用途:把使用程序设计语言编写的程序,翻译成为等价用途:把使用程序设计语言编写的程序,翻译成为等价的机器语言程序,前者称为源程序,后者称为目标程序的机器语言程序,前者称为源程序,后者称为目标程序翻译程序翻译程序源程序源程序目标程序目标程序最终用户安装在计算机中使用的软件,都是这些软件的目标最终用户安装在计算机中使用的软件,都是这些软件的目标程序,用户一般不会得到开发厂商的源程序(源代码)程序,用户一般不会得到开发厂商的源程序(源代码)第6讲

27、软件开发与软件工程 373.软件工程软件工程3.1 软件开发活动软件开发活动3.2 软件工程软件工程第6讲 软件开发与软件工程 383.1 软件开发活动软件开发活动第6讲 软件开发与软件工程 39软件开发活动的主要内容软件开发活动的主要内容问题问题用户需求用户需求需求分析需求分析规格说明,可行性报告,规格说明,可行性报告,初步用户手册初步用户手册 软件设计软件设计结构设计,各模块的详结构设计,各模块的详细设计说明,细设计说明,测试计划测试计划软件构造软件构造各模块代码和单元测试各模块代码和单元测试报告,测试设计报告,测试设计软件测试软件测试各种测试报告各种测试报告软件维护软件维护发布计划、培训

28、计划及发布计划、培训计划及教材、维护档案等教材、维护档案等需需求求分分析析软软件件设设计计软软件件构构造造软件维护软件维护软软件件测测试试软件开发费用的比例软件开发费用的比例第6讲 软件开发与软件工程 401 需求分析需求分析n需求规格说明需求规格说明(specification)n初步用户手册初步用户手册n项目开发计划项目开发计划n可行性可行性(风险风险)分析分析需求分析需求分析用户的需要用户的需要(needs)对软件的需求对软件的需求(requirements)使用计算机术语使用计算机术语,比较严格的语言比较严格的语言全全面面理理解解 准准确确表表达达 使用用户的语言使用用户的语言(行业内

29、的术语行业内的术语)功能要求功能要求性能要求性能要求环境要求环境要求可靠性要求可靠性要求安全性要求安全性要求用户界面需求用户界面需求资源使用需求资源使用需求软件成本消耗软件成本消耗开发进度需求等开发进度需求等 第6讲 软件开发与软件工程 412 软件设计软件设计n软件模块划分软件模块划分n算法设计算法设计n数据结构设计数据结构设计n用户界面设计用户界面设计软件设计软件设计需求规格说明需求规格说明(specification)概要设计说明书概要设计说明书详细设计说明书详细设计说明书n从实现角度出发从实现角度出发n自顶向下逐步细化自顶向下逐步细化(stepwise refinement)第6讲 软

30、件开发与软件工程 423 软件构造软件构造软件构造软件构造(程序设计程序设计)可执行的软件模块,可执行的软件模块,集成后的软件成品集成后的软件成品算法算法数据结构数据结构用户界面用户界面n程序设计语言程序设计语言(如如C,C+,JAVA,VB等等)n软件运行平台软件运行平台(使用何种操作系统,向应用程序提供哪些服使用何种操作系统,向应用程序提供哪些服务。一般通过务。一般通过API(应用程序接口)提供,如(应用程序接口)提供,如Windows系统系统的的API:Win32 SDK 和和 MFC类库等类库等)n编程和开发工具编程和开发工具(集成开发环境集成开发环境;Delphi、C+Builder

31、、Visual Studio;Visual Studio.NET)设设计计说说明明书书第6讲 软件开发与软件工程 434 软件测试软件测试软件测试软件测试经过测试和修经过测试和修改的软件产品改的软件产品n测试说明书测试说明书n测试工具测试工具n测试用例和测试数据测试用例和测试数据可执行的软件模块可执行的软件模块集成后的软件成品集成后的软件成品n软件测试是分阶段进行的,它贯穿于软件开发的全过程:软件测试是分阶段进行的,它贯穿于软件开发的全过程:n单元测试(模块测试)单元测试(模块测试)n集成测试集成测试n确认测试确认测试用户定制软件用户定制软件:验收测试和安装测试验收测试和安装测试商品软件商品软

32、件:阿尔法测试和贝塔测试阿尔法测试和贝塔测试第6讲 软件开发与软件工程 44软件产品测试的重要性软件产品测试的重要性微软产品开发组的人员构成:微软产品开发组的人员构成:项目经理项目经理测试工程师测试工程师开发开发工程师工程师Exchange 2000Windows 2000项目经理项目经理25人人约约 250人人开发人员开发人员140人人约约 1700人人测试人员测试人员350人人约约 3200人人开发人员开发人员/测试人员测试人员2:51:1.92007年嫦娥一号探月卫星:年嫦娥一号探月卫星:100万行软件,测试软件达万行软件,测试软件达160万行!万行!第6讲 软件开发与软件工程 455

33、软件维护软件维护n软件维护内容:软件维护内容:n改正性维护改正性维护 运行中发现了软件中的错误需要修正运行中发现了软件中的错误需要修正n适应性维护适应性维护 为适应变化了的软硬件环境,需对软件做适当变更为适应变化了的软硬件环境,需对软件做适当变更n完善完善(改进改进)性维护性维护 为了满足用户新的业务需求、增强软件功能而需为了满足用户新的业务需求、增强软件功能而需要修改、扩充软件要修改、扩充软件n预防性维护预防性维护 为增强系统可靠性和安全性所采取的预防性措施为增强系统可靠性和安全性所采取的预防性措施软件维护软件维护经过修改的经过修改的软件产品软件产品n使用中发现的问题使用中发现的问题n修改后

34、的需求规格说明书修改后的需求规格说明书交付的交付的软件产品软件产品第6讲 软件开发与软件工程 46软件维护的重要性软件维护的重要性n在整个软件开发活动中,软件维护的工作量最大,其费用大约是软件开在整个软件开发活动中,软件维护的工作量最大,其费用大约是软件开发总成本的发总成本的2/3左右左右n在整个软件维护阶段的全部工作量中,预防性维护只占很小的比例,而在整个软件维护阶段的全部工作量中,预防性维护只占很小的比例,而完善性维护占了几乎一半的工作量完善性维护占了几乎一半的工作量 第6讲 软件开发与软件工程 47小结:软件开发活动的特点小结:软件开发活动的特点n需要多人参与的分阶段进行的工作量很大的智

35、力活动需要多人参与的分阶段进行的工作量很大的智力活动n不仅仅是编程序,比编程更重要的是需求分析和软件设计不仅仅是编程序,比编程更重要的是需求分析和软件设计n编程不但要熟悉程序语言,还需要熟悉运行平台,掌握编程编程不但要熟悉程序语言,还需要熟悉运行平台,掌握编程和开发工具和开发工具n编程需要熟悉应用领域的业务知识编程需要熟悉应用领域的业务知识n测试和编程同样重要测试和编程同样重要n投入运行后仍需要提供大量的支持和服务投入运行后仍需要提供大量的支持和服务n整个开发活动需要精心组织与管理整个开发活动需要精心组织与管理第6讲 软件开发与软件工程 483.2 软件工程软件工程第6讲 软件开发与软件工程

36、49Quiz:1 开发一个典型的软件项目大约需要多少个月?开发一个典型的软件项目大约需要多少个月?2-3月月 4-6月月 8-12月月 12-24月月2 包含多少行可执行语句的软件被认为是大型软件?包含多少行可执行语句的软件被认为是大型软件?1000行行 5000行行 10000行行 50000行行3 每年上千亿美元销售额的软件市场中,每年上千亿美元销售额的软件市场中,Office、IE之类的之类的PC常用软件占常用软件占多少份额?多少份额?10%25%50%75%4 中等规模软件的开发期中每人每天平均开发多少行可执行语句?中等规模软件的开发期中每人每天平均开发多少行可执行语句?100行行5

37、开发过程中,平均每开发过程中,平均每1000行可执行代码中大约会发现多少个错误?行可执行代码中大约会发现多少个错误?5-10 10-20 50-60 100-1506 由用户发现的软件错误大部分是什么原因引起的?由用户发现的软件错误大部分是什么原因引起的?编程错误编程错误 需求理解有误需求理解有误 软件集成软件集成 设计错误设计错误第6讲 软件开发与软件工程 50软件规模、工作量与成本软件规模、工作量与成本类别类别参加人数参加人数研制期限研制期限产品规模产品规模(源代码行数源代码行数)微型微型微型微型小型小型小型小型中型中型中型中型大型大型大型大型甚大型甚大型甚大型甚大型极大型极大型极大型极大

38、型1 11 12-52-55-205-20100-1000100-10002000-50002000-50001-41-4周周周周1-61-6周周周周1-21-2年年年年2-32-3年年年年4-54-5年年年年5-105-10年年年年约约约约500500行行行行 约约约约20002000行行行行 5000-500005000-50000行行行行5 5万万万万-10-10万行万行万行万行100100万行万行万行万行10001000万行万行万行万行软软件件规规模模软软件件产产品品举举例例产品产品 代码行代码行 工作量(人年)工作量(人年)成本成本(百万百万)Lotus1-2-3 Version 3

39、.0 400k 263 22 Space Shuttle 25.6M 12 3.8M City Bank Teller machine 780k150 13.2 MS Word 2003 3.0M Windows NT(beta)Windows 200350 M 3000 Windows XP 50M Windows Vista 70M 9000 x 6 18000 第6讲 软件开发与软件工程 51软件危机软件危机n软件产业滞后于应用软件产业滞后于应用的需求和硬件的发展的需求和硬件的发展n软件开发效率低、成软件开发效率低、成本高,进度和成本难本高,进度和成本难以控制以控制n软件质量得不到保证软

40、件质量得不到保证1955年年 1970年年 1985年年硬件成本与软件开发、维护费用比例的变化硬件成本与软件开发、维护费用比例的变化n60%左右的软件项目不能按期完成左右的软件项目不能按期完成 n50%左右软件项目的费用超过预算左右软件项目的费用超过预算 n45%左右软件项目最终无法投入使用左右软件项目最终无法投入使用 n29%左右软件项目没有交付软件左右软件项目没有交付软件n19%左右的软件项目必须返工才能使用左右的软件项目必须返工才能使用Average cost overrun:189%Time overrun:222%Projects re-started:94%Functionalit

41、y delivered on average:61%Standish Group第6讲 软件开发与软件工程 52软件项目失败的原因软件项目失败的原因“When projects fail,its rarely technical.”Jim Johnson,The Standish Groupn软件的目标与功能分离软件的目标与功能分离(separation)n需求不够明确,软件的商务需求不够明确,软件的商务(business)与技术分离,缺乏共同的与技术分离,缺乏共同的语言和过程语言和过程n开发过程没有统一的、公认的方法和开发过程没有统一的、公认的方法和规范做指导,参与人员自行其是,联规范做指导

42、,参与人员自行其是,联系少,不像一个团队系少,不像一个团队n开发过程不能灵活改变,测试不充分开发过程不能灵活改变,测试不充分n Solution?n 软件工程软件工程第6讲 软件开发与软件工程 53什么是软件工程?什么是软件工程?n19681968年提出年提出“软件工程软件工程”的概念的概念n根据美国根据美国IEEE的定义,软件工程是的定义,软件工程是“以系统的、规范的、可以系统的、规范的、可以度量的方法应用于软件的开发、运行和维护,以及对这些方以度量的方法应用于软件的开发、运行和维护,以及对这些方法和技术的研究法和技术的研究”n通俗地说,软件工程是指导软件开发和维护的一门工程学科。通俗地说,

43、软件工程是指导软件开发和维护的一门工程学科。它采用工程的概念、原理、技术和方法,把经过实践证明是正它采用工程的概念、原理、技术和方法,把经过实践证明是正确的管理技术和当前能够得到的最好的软件技术与方法结合起确的管理技术和当前能够得到的最好的软件技术与方法结合起来,用于开发和维护软件来,用于开发和维护软件第6讲 软件开发与软件工程 54软件工程的七条基本原则软件工程的七条基本原则 1.按分阶段的生命周期计划严格进行管理按分阶段的生命周期计划严格进行管理2.坚持进行阶段评审坚持进行阶段评审3.实行严格的产品质量控制实行严格的产品质量控制 4.采纳现代程序设计技术采纳现代程序设计技术 5.开发成果应

44、能清楚地进行审查开发成果应能清楚地进行审查 6.开发小组的人员要少而精开发小组的人员要少而精 7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 第6讲 软件开发与软件工程 55软件工程的目标软件工程的目标n实现软件的工业化生产,提高软件的质量与生产效实现软件的工业化生产,提高软件的质量与生产效率,达到:率,达到:n付出较低的开发成本;付出较低的开发成本;n实现要求的软件功能;实现要求的软件功能;n取得较好的软件性能;取得较好的软件性能;n开发的软件易于移植;开发的软件易于移植;n需要较低的维护费用;需要较低的维护费用;n按时完成开发任务,及时交付使用按时完成开发任务,及时交付使用 第6讲 软件开发与软件工程 56复习题复习题1 什么是算法?算法与程序有何联系和区别?什么是算法?算法与程序有何联系和区别?2 算法有哪些特点?好的算法有什么要求?算法有哪些特点?好的算法有什么要求?3 程序设计语言的作用是什么?它有哪些类型?程序设计语言的作用是什么?它有哪些类型?4 软件开发过程包含有哪些主要的活动(内容)?软件开发过程包含有哪些主要的活动(内容)?5 软件工程的含义是什么?其目标是什么?软件工程的含义是什么?其目标是什么?

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁