软件工程和开发周期研究_第1页
软件工程和开发周期研究_第2页
软件工程和开发周期研究_第3页
软件工程和开发周期研究_第4页
软件工程和开发周期研究_第5页
已阅读5页,还剩68页未读, 继续免费阅读

下载本文档

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

文档简介

1、软件工程和开发周期研究12信息时代信息产业信息爆炸信息科学信息技术信息Information信息化社会软件Software3信息化社会当今人类社会的所有主题都已被软件改写4软件完成销售我国的信息产业5从国内市场看软件(1)嵌入式软件市场将进一步扩大我国强大的整机制造业对提高整机系统附加值的需求更加强烈,从而对嵌入式软件的需求日益增加,我国将有越来越多的企业加入嵌入式软件的开发与应用。消费电子产品数字化的趋势也日益显现,消费者对电子产品的软件功能要求越来越高,也将促进嵌入式软件市场的扩大。6从国内市场看软件(2)软件服务对企业竞争的作用增大软件需求差异化、多元化,使得软件增值服务已成为软件企业竞

2、争的热点所在。【软件服务模式】软件与服务外包数据加工呼叫中心软件网络化服务学生聘请“远程家教”辅导功课 2005年软件收入构成情况7从国内市场看软件(2)软件服务对企业竞争的作用增大【软件服务模式】业务流程外包(Business Process Outsourcing)指企业将自己基于IT技术之上的业务系统委托给专业服务公司,由其按照服务水平协定的要求进行管理、运营和维护;海尔售后服务中心呼叫中心一种商务外包业务,即异地“客户呼叫服务中心”,简称“呼叫中心”。纽约公厕信息查询系统数据中心(Information Technology Outsourcing的一种)为客户提供主机托管、主机租赁等

3、资源出租,以及系统监控、现场服务、安全及应用服务、数据备份等增值服务;8从国内市场看软件(3)游戏软件市场快速增长游戏产业在我国经过几年的发展,市场规模和运作方式已经初步形成,我国游戏软件市场特别是网络游戏市场正朝着更加健康的方向发展。视频游戏软件产品增长很快,一些大的视频游戏软件开发企业销售增幅达到20%以上。手机游戏软件开发市场正在受到越来越多国际企业的关注,成为游戏软件市场中新的亮点。我国网络游戏市场规模突破一百亿9从国内市场看软件(4)电子政务、电子商务快速发展随着政府软件采购法的出台,要求各级政府必须依据采购法批量采购本国软件,软件采购额不得低于信息系统采购额的1/3。办公信息化公众

4、信息服务城市交通管理社区服务远程教育远程医疗10信息化的你课程的主题软件开发的工程化包括:过程、方法和工具课程的目标软件工程师北京某公司招聘软件工程师web开发工程师 服务器维护工程师 界面设计师 软件测试工程师软件产品设计师网页设计师行政助理11第一章 软件工程概述主要内容:1.1 计算机软件概念1.2 软件的发展1.3 软件危机与软件问题1.4 软件工程与开发准则1.5 软件生命周期1.6 软件开发模型软件是什么?软件从哪里来?软件到哪里去?121.1 计算机软件概述1.1.1 计算机软件软件是指计算机程序、运行程序所需的数据、与程序有关的文档资料的总称。“软件” 强调的产品、产业或学科层

5、面“程序”更侧重技术层面的含义运行程序所需的数据计算机程序文档131.1 计算机软件概述1.1.2 软件的特点软件是一种逻辑实体,具有抽象性;软件不是传统意义上被制造;软件开发至今尚未完全摆脱手工艺的开发方式;软件不会“磨损”,软件维护困难;软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性 相当多的软件工作涉及到社会因素时间开发时期运行初期运行中直到废弃软件会“退化”;60%-80%的工作量花费在第一次将软件交给客户之后141.1 计算机软件概述1.1.4 软件分类按软件功能划分操作系统系统软件应用软件支撑软件数据库管理系统类库(.NET FRAMEWORK、JDK)文本编辑器、IDE办公

6、软件杀毒软件人口普查银行业务用户能方便的使用和管理计算机系统(硬件、软件)的软件通用应用软件定制应用软件帮助软件开发人员开发自己的软件产品为特定的应用目的而开发的服务性软件CASE(计算机辅助软件工程)151.1 计算机软件概述1.1.4 软件分类应用软件:商业数据处理软件SPSS、SAS、MS Analysis Service.工程与科学计算软件MATLAB、鲁班算量计算机辅助设计制造软件AutoCAD系统仿真软件智能产品嵌入软件SYMBIAN、ANDROIT事务管理、办公自动化软件(OA)161.1 计算机软件概述1.1.4 软件分类按软件规模划分微型小型中型大型甚大型极大型参加人员开发期

7、限14周2半年51年203年10005年500010年源程序行数0.5K2K50K100K1000K10000K171.1 计算机软件概述1.1.4 软件分类极大型程序规模:Windows Vista源程序约有5000万行人员队伍:Vista及新版Office 2007两个团队开发设计成员总共9000余人资金投入:微软为Vista投入90亿美元,包括Vista未来的配套及合作伙伴的投入,预计在180亿美元以上,如果加上新版Office的成本,投入资金在240亿270亿美元之间开发周期:Vista的开发经历6年,发布时间一拖再拖181.1 计算机软件概述1.1.4 软件分类按工作方式划分分时处理

8、实时处理批处理交互式处理191.1 计算机软件概述1.1.4 软件分类批处理将一批作业有序地排在一起形成一个工作流;计算机系统自动地、顺序地执行作业流。批处理软件用户硬盘作业1作业2作业3201.1 计算机软件概述1.1.4 软件分类分时处理多个用户通过终端、PC同时联机使用主机。“时间片轮转”轮流为多个用户服务服务请求处理结果211.1 计算机软件概述1.1.4 软件分类实时处理应用领域:工业控制、医疗器材、军事 常用系统QNX:嵌入式、可规模扩展的实时操作系统VxWorks:WindRiver公司于1983年设计开发的一种嵌入式、实时操作系统(RTOS)F-16、FA-18 、B-2 和爱

9、国者导弹“实时性”所指的通常是特定操作所消耗的时间(以及空间)的上限是可预知的。221.1 计算机软件概述1.1.4 软件分类按工作方式划分分时处理实时处理批处理交互式处理按服务对象划分产品软件项目软件231.1 计算机软件概述1.1.4 软件分类(1)项目软件(定制软件)受某个特定客户(或少数客户)的委托,由一个或多个软件开发机构在合同的约束下开发出来的软件。如、军用防空指挥系统、某高校教务系统。部分项目软件带有试验研究性质,项目完成后根据需要可能在此基础上做进一步开发。(2)产品软件(通用软件)开发出来直接提供给市场,为千百个用户服务。要参与市场竞争,其功能、使用性能以及培训和售后服务显得

10、尤为重要。241.2 软件的发展其发展历史大致可以分为四个阶段: 随着计算机硬件性能的极大提高和计算机体系结构的不断变化,计算机软件系统更加成熟和更为复杂,从而促使计算机软件的角色发生了巨大的变化。251.3 软件危机与软件问题Software Failure, Management Failure- Amazing Stories and Cautionary Tales1997 Many millions are wasted every year on building, extending and fixing information systems that either do no

11、t perform as expected, do not work at all or are abandoned before they are implemented.1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分出于控制系统的故障;在1985年到1987年之间,至少有2个病人是死于Therac-25医疗线性加速器的过量辐射,其原因是控制软件中的一个故障。Software Crisis261.3 软件危机与软件问题开发软件时遇到的问题:为什么需要那么长时间才能结束开发?为什么在软件开发过程中我们总是难以度量其进展?为什么我们不能在把软件交付客户使用之前就发现所有错误?为

12、什么软件成本如此之高?金山词霸271.3 软件危机与软件问题Edward Yourdon, Death March,1998 以浅显易懂的语言和生动的事例对死亡之旅项目的起因给出了崭新的理由,深刻分析了这种现象的本质,并系统地讨论了项目参与者所面临的所有关键问题:政治、人员、过程、项目管理,以及工具,为我们提供了行之有效的方法和指南。软件工程专家281.4 软件工程与开发准则1.4.1 软件工程概念北大西洋公约组织(NATO)于1968年首次提出了“软件工程(Software Engineering)”【思想】强调在软件开发过程中应用工程化原则;【目标】解决软件的整体质量较低、最后期限和费用没

13、有保证等问题,实现软件工业化生产。【 IEEE Institute of Electrical and Electronics Engineers】(1) 将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护;(2)在(1) 中所述方法的研究。291.4 软件工程与开发准则1.4.2 软件工程的内容软件工程是计算机软件开发的过程、方法和工具的学科;【过程】【方法】【工具】质量过程方法工具软件工程三要素301.4 软件工程与开发准则1.4.2 软件工程的内容软件工程是计算机软件开发的过程、方法和工具的学科;过程(1.6 软件开发模型)2-8章面向数据流的结构化方法数据流图9-10章面

14、向对象的方法数据字典层次图PAD图NS图UMLROSECASE(计算机辅助软件工程)311.4 软件工程与开发准则1.4.3 软件开发的基本准则(了解)1、严格阶段管理2、坚持阶段评审3、加强产品控制4、采纳新技术5、结果应能清楚地审查6、开发小组的人员应该少而精321.4 软件工程与开发准则1.4.3 软件开发的基本准则1、严格阶段管理有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。这条基本准则意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格按照计划对软件的开发与维护工作进行

15、管理。331.4 软件工程与开发准则软件生命周期(Software life cycle)p10从软件目标的提出、定义、开发、维护,直到最终被丢弃的整个过程。软件生命周期问题定义可行性研究需求分析概要设计详细设计编码测试运行与维护计划时期开发时期运行时期341.4 软件工程与开发准则1.4.3 软件开发的基本准则2、坚持阶段评审软件的质量保证工作不能等到编码阶段再进行:第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码仅占37%;第二,错误发现与改正得越晚,所需付出的代价也越高。351.4 软件工程与开发准则软件错误的积累与放大正确需求需求分析

16、设计编码测试错误需求正确设计错误设计对错误需求的设计正确编码错误编码对错误设计的编码对错误需求的编码简单、复杂可修改错误不可修改错误隐藏错误361.4 软件工程与开发准则1.4.3 软件开发的基本准则2、坚持阶段评审软件的质量保证工作不能等到编码阶段再进行:第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,编码仅占37%;第二,错误发现与改正得越晚,所需付出的代价也越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。371.4 软件工程与开发准则1.4.3 软件开发的基本准则5、结果应能清楚地审

17、查软件产品不同于一般的物理产品,它是看不见摸不着的逻辑产品。软件开发人员(或开发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产品的开发过程更难于评价和管理为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到的结果能够清楚地审查。381.4 软件工程与开发准则1.4.3 软件开发的基本准则3、加强产品控制在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价。但是,软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是一种客观需要,显然不能硬性禁止客

18、户提出改变需求的要求,而只能依靠科学的产品控制技术来顺应这种要求。当改变需求时,为了保持软件各个配置成分的一致性,必须实行严格的产品控制。391.4 软件工程与开发准则1.4.3 软件开发的基本准则4、采纳新技术60年代末提出的结构程序设计技术,以后又进一步发展出各种结构化分析(SA)与结构化设计(SD)技术, 以及软件生存周期瀑布模型。80年代以后的OO程序设计技术,OOA/ OOD/UML实践表明,采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。401.4 软件工程与开发准则1.4.3 软件开发的基本准则6、开发小组的人员应该少而精软件开发小组的组成人员的素质应该好,而人数则

19、不宜过多。开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且所开发的软件中的错误明显少。此外,随着开发小组人员数目的增加,因为交流情况讨论问题而造成的通信开销也急剧增加。411.5 软件生命周期软件生命周期(Software life cycle)p10从软件目标的提出、定义、开发、维护,直到最终被丢弃的整个过程。软件生命周期问题定义可行性研究需求分析概要设计详细设计编码测试运行与维护计划时期开发时期运行时期421.5 软件生命周期客户订购问题定义可行性研究1.问题定义确定要开发软件系统的总目标给出功能、性能、

20、可靠性以及接口等方面的要求2.可行性研究估计可利用的资源(计算机硬件,软件,人力等)、成本、效益、开发进度制定完成开发任务的解决方案和实施计划 可行性研究报告可行性研究报告431.5 软件生命周期客户订购问题定义可行性研究3.需求分析对待开发软件提出的需求进行分析并给出详细的定义编写软件需求说明书、初步的系统用户手册提交管理机构评审可行性研究报告需求分析需求分析报告441.5 软件生命周期客户订购问题定义可行性研究4.概要设计把各项需求转换成软件的体系结构结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应编写概要设计说明书可行性研究报告需求分析需求分析报告概要设计概要设计报告45

21、1.5 软件生命周期客户订购问题定义可行性研究5.详细设计具体描述每个模块要完成的工作,为编码打下基础编写详细设计说明书可行性研究报告需求分析概要设计概要设计报告详细设计详细设计报告需求分析报告461.5 软件生命周期客户订购问题定义可行性研究可行性研究报告需求分析概要设计概要设计报告详细设计详细设计报告编码测试源程序清单测试报告需求分析报告471.5 软件生命周期4.编码把软件设计转换成计算机可以接受的程序代码,即写成以某一种特定程序设计语言表示的源程序清单。程序应当是结构良好、清晰易读的,且与设计相一致的。5.测试【单元测试】查找各模块在功能和结构上存在的问题并加以纠正【组装测试】将已测试

22、过的模块按一定顺序组装起来【有效性测试】按规定的各项需求,决定已开发的软件是否合格,能否交付用户使用481.5 软件生命周期客户订购问题定义可行性研究可行性研究报告需求分析概要设计概要设计报告详细设计详细设计报告编码测试源程序清单测试报告需求分析报告客户运行491.5 软件生命周期6.运行与维护运行时期的主要工作是维护:【改正性维护】运行中发现了软件中的错误需要修正【适应性维护】为了适应变化了的软件工作环境,需做适当变更【完善性维护】为了增强软件的功能需做变更60%-80%的工作量花费在第一次将软件交给客户之后501.5 软件生命周期软件生命周期各阶段工作总结软件生命周期问题定义可行性研究需求

23、分析概要设计详细设计编码测试运行与维护关键问题问题是什么?有可行的解?系统必须做什么,要求哪些功能?需要哪些模块实现上述功能,模块间的关系?每个模块怎样具体实现?正确的程序模块符合要求的软件维护,保证持久地满足用户需要的软件511.6 软件开发模型软件开发模型对软件过程的建模任务的顺序; 为保证质量和适应变化所需要的管理主要模型:1.6.1 瀑布模型1.6.2 原型模型1.6.3 增量模型1.6.4 螺旋模型521.6.1 瀑布模型1970年Winston Royce提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。 线性顺序模型531.6.1 瀑布模型问题定义

24、可行性研究需求分析概要设计详细设计编码测试维护【特点1 】阶段间具有顺序性和依赖性关系顺序性必须待前一阶段的工作完成之后,才能进行下一阶段的工作;前一阶段的输出就是后一阶段的输入;依赖性只有前一阶段的输出正确,后一阶段的工作才有可能获得正确的结果。541.6.1 瀑布模型问题定义可行性研究需求分析概要设计详细设计编码测试维护【特点2 】推迟实现55“ 边做边改模型 ”【开发过程】开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本;提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止;客户订购编码建立第一版修改客户满意否客户运行是修改

25、直到用户满意56“ 边做边改模型 ”客户订购编码建立第一版修改客户满意否客户运行是修改直到用户满意【问题】忽略需求环节,给软件开发带来很大的风险;缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;571.6.1 瀑布模型问题定义可行性研究需求分析概要设计详细设计编码测试维护【特点2 】推迟实现把逻辑设计与物理设计清楚的划分开来尽可能地推迟程序的物理实现。逻辑设计581.6.1 瀑布模型问题定义可行性研究需求分析概要设计详细设计编码测试维护可行性研究报告概要设计报告详细设计报告源程序清单测试报告需求分析报告【特点3 】质量保证各阶段都必须完成规定的文档每一个阶段结束前都要对

26、所完成的文档进行评审,以便尽早发现问题,改正错误591.6.1 瀑布模型【缺点】瀑布模型要求用户一开始清楚地给出所有需求,以后也不能发生任何的变化。不可能实现!开始阶段自然存在一些不确定性由于开发模型是线性的,程序的运行版本一直要等到项目开发周期的晚期才能得到。 客户就必须有耐心;如果大的错误直到运行程序时才被发现,后果可能是灾难性的。601.6.2 原型模型项目开发中出现以下两个问题:用户难以清楚的给出所有的需求不能标识出详细的输入、处理及输出需求;开发者不能确定以下问题算法的有效性操作系统的适应性人机交互的形式JAVA 还是 .NETC/S 还是 B/SSQL SERVER 还是 ORAC

27、LE原型模型可能是最好的选择。611.6.2 原型模型原型模型可以分为四个步骤:收集用户需求标识出已知的需求、需要进一步澄清的区域。建立原型能够反映用户主要需求;集中于用户可见的部分,如,输入、输出方式;用户评估原型,并进一步精化软件的需求逐步调整原型使其满足客户的要求621.6.2 原型模型原型模型可以分为四个步骤:收集用户需求建立原型用户评估原型,并进一步精化软件的需求逐步调整原型使其满足客户的要求需求分析原型开发原型评价最终系统设计最终系统实现用户反馈631.6.2 原型模型相对于“瀑布模型”的【优点】:原型为开发人员和用户提供了一种标识软件需求的机制建筑图纸建筑物模型;用户不必等到项目

28、开发周期的晚期才能得到程序的可运行版本建议:当你的客户有一个合理的需求,但对细节没有任何线索时,先开发一个原型。641.6.2 原型模型如何处理“原型”?做“一些修改”使得原型成为最终的工作产品?丢弃原型,重新设计建造一个的系统?用“口香糖和打包绳”拼凑起来的可能太慢、太大、难以使用并没有考虑软件的总体质量和长期的可维护性651.6.3 增量模型增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试。如:开发字处理软件增量1:基本的文件管理、编辑和文档生成功能;增量2:发布更加完善的编辑和文档生成功能;增量3:实现拼写和文法检查功能;增量4:完成高级的页面布局功能分析设计编码测试交付用户分析设计编码测试交付用户分析设计编码测试交付用户增量1增量2增量3分析设计编码测试交付用户增量4661.6.3 增量模型增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试。如:开发字处理软件增量1:基本的文件管理、编辑和文档生成功能;增量2:发布更

温馨提示

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

评论

0/150

提交评论