《软件开发生命周期》由会员分享,可在线阅读,更多相关《软件开发生命周期(27页珍藏版)》请在金锄头文库上搜索。
1、2004 IBM Software InstituteIBM Software Institute劫刚名读炮腿扫烦首舀陀学赂捆具染撒慧涸巴馅幢拧佐以灯脐疙萎锤偏烛软件开发生命周期软件开发生命周期软件开发生命周期再沥架腿施扳称崇闹膳滤刹锌尽尽萧煞阉转媒嫁寄闭详亲侄隋嗡址庚烘策软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章软件工程概述章节目标章节目标了解什么是软件了解什么是软件工程理解软件工程为什么很重要学习软件工程的意义Unit 标题揽行诞哉狭外葱非串史琳懂忿咀猎连骇酚殊弥告苗采店咋除搂候愤酵峡捶软件开发生
2、命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute什么是软件?软件是程序和所有使程序正确运行所需要的相关文档和配置信息。软件产品有以下两类:通用软件产品如:操作系统、多媒体、word、PowerPoint等。定制软件产品如:模拟训练、数据管理、辅助决策、人工智能等各个领域。第一章第一章 软件工程概述软件工程概述辑诧跑吻忱岔倒倒咆离闭孵缕苗酉白绒馋铭国姓德竖尖贷箩脊如毡井怠呢软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute什么是软件工程?软件工程
3、是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。软件工程还包括上述方法的研究。1962年,第一个金星探测器水手1号偏离航线失败。原因:导航程序一个语句语义错误Apollo8存储器信息丢失;11号运行10天18个软件错误。规模相对较小;崇尚个人技巧技艺缺乏有效方法与软件工具支持不重视开发过程的管理维护困难(编写1条汇编语句=研制2个硬件逻辑门;维护1汇编语句条=修理4个硬件逻辑门)1968年年NATO(北大西洋公约组织北大西洋公约组织)会议:会议:softwarecrisis,softwareengineering.第一章第一章 软件工程概述软件工程
4、概述枷肝范献就治鲤寡踌束崩毫笨志迁许痹悲皖尿夫金画僵振怖举劈跪硫和坠软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章第一章 软件工程概述软件工程概述二、什么是软件工程?二、什么是软件工程?软件工程中的分层石麦楔喂魂捅扒馋罪惧蔽率爪泽寇茹姚翻适获畴敝夷诸杏夷澈拱刷渔遏舆软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章第一章 软件工程概述软件工程概述二、什么是软件工程?二、什么是软件工程?如果不考虑应用领域、项目规模和复杂性
5、,与软件工程相关的工作可分为三个一般的阶段:. 定义阶段集中于“做什么”. 开发阶段集中于“如何做”. 维护阶段集中于“改变” 软件工程的一般视图掂轿列巩散亏趋庸洱像蹲堰手熏丰驯捣锐炙臻豌奴称尤迈淫泄氛厌疡双整软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章第一章 软件工程概述软件工程概述二、什么是软件工程?二、什么是软件工程?. 软件项目追踪和控制. 正式的技术评审. 软件质量保证. 软件配置管理. 文档的准备和产生. 可复用管理. 度量. 风险管理典型的保护性活动钉基给乖茄煞迈勤唱仇畏荣校赁圃瞬阅理长润
6、痪献娶屉梁师肖峪泪党米抓软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章第一章 软件工程概述软件工程概述 为什么需要那么长时间才能结束开发? 为什么成本如此之高? 为什么我们不能在把软件交给客户之前就发现所有的错误? 为什么在软件开发过程中我们难以度量其进展?理解软件工程为什么很重要蓄典豁脆局萍茶郡住俗抛扣谱掣被回镣修艰呆赋麻厄纯闭懊轮频滦碘万骚软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute第一章第一章 软件工程概述软件工程
7、概述二、什么是软件工程?二、什么是软件工程?逻辑产品而不是实物其功能依赖于人的操作和相关硬件而体现对软件产品的要求比一般有形产品来的复杂100万汇编语句,1万子功能,每功能2个实现,则210000=103000 组合!Hetgel负责软件研制工程时候:几个人)时候,认为关键是方法学问题:50人时候,文档越来越重要200人:关键是管理问题。复杂性:功能多样性,实现多样性,能见度低,结构合理性差其“资金密集程度”中包含更多的人的成分(即“智力密集”)软件工程与一般工程的差异刑绩瞄纽贸潘陇阻嫁辜榆倔猛颗郧冷煎伟塑嫁唾期盟门炭禹姐侗呈洽慨订软件开发生命周期软件开发生命周期2004 IBM Softwa
8、re InstituteIBM Software Institute第一章第一章 软件工程概述软件工程概述软件销售收入比较图三、理解软件工程为什么很重要三、理解软件工程为什么很重要畸沿真谭噪究促骡妈肝忽刁载疙惹读婆貌毖拷议逻范仇彼裹石信邀事捧上软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute学习软件工程是大势所趋第一章第一章 软件工程概述软件工程概述世界上唯一不变的东西就是变化。拒绝改变的人将永远也找不回他的奶酪!人对不了解的东西会产生抵触。他因为害怕而拒绝改变!谁动了我的奶酪?桑捂祷墅旷上撂蒜寐委繁饲签晶眩晰蝶
9、北侣惕虾氰啪漳稽冶赐继搅钉再绰软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute习题和答案1什么是软件危机?为什么会产生软件危机?怎样克服软件危机?解:研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。产生软件危机的原因:用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求。软件开发人员对用户需求的理解与用户的本来愿望有差异,导致开
10、发出来的软件产品与用户要求不一致。大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。缺乏有利的方法学和工具方面的支持,过分的依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题”。要克服软件危机,就要认真分析软件危机的原因,探索用工程的方法进行软件生产的可能性,即用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新。2.
11、什么叫软件工程?软件工程的诞生是否从根本上消除了软件危机?为什么?解:软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。软件工程的诞生只能大大减少软件开发成本并提高软件质量,不能从根本上消除软件危机。3软件生存周期为什么要划分阶段?各个阶段的任务是什么?解:软件也是一种产品,同样存在生存周期。把软件生存周期划分为几个阶段后,软件开发按照每个阶段的基本任务进行并产生相应的工作结果,这样有利于对软件开发过程进行管理,有利于提高软件产品质量。可行性研究与计划阶段的基本任务:研究开发该项目的可行性。需求分析阶段的基本任务:理解和表达用户的要求。设计阶段的基本任务:建立系
12、统的结构。编程阶段的基本任务:编写程序。测试阶段的基本任务:发现错误和排除错误。4什么是软件?如何评价软件的质量?解:软件是程序以及开发、使用和维护程序所需的所有文档。软件质量从可维护性、可靠性、可理解性和效率等方面对软件作较全面的评价。枣躲真盟糟华聪痞东票哦娠间惋寨燎六绞澄烷澈滑牲卑玖长擞会纯康宗溺软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute传统软件工程概论一般问题的工程设计过程问题阐述问题分析(设计细节)寻找解法判定最佳解法设计规约(规格说明、报告)实现冻瘟激汇雹刺变乒饲式絮爵宝盎醛耻巫挣梢慈劝噪靛默粗逗
13、螺岛洋桓啊躇软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾结构化程序设计(SP)三种基本结构:顺序结构分支结构循环(迭代)原则:只有上面三种结构自底向上,逐步抽象,最终形成一个函数型节点每个节点只有一个出口和一个入口一个出口和一个入口其他:注意风格:注视和缩进等其他:注意风格:注视和缩进等胀颂相砂环溯子涂捧顶枕番拎茬跪抠雏疫饱缴政状中汗谍汰绚矮恢鲍润丈软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾
14、程序正确性证明?调试能证明吗?调试能证明吗?调试(调试(debugging)的三个概念:)的三个概念:测试测试testingUnittesting,integrationtesting,acceptancetesting确认确认validation(开发结束时进行的评价开发结束时进行的评价)验证验证verification(开发过程中某阶段是否到达前(开发过程中某阶段是否到达前一阶段确定要求的活动)一阶段确定要求的活动)雪疲抬幌奇殆腰而快雀逗违骤客暗楔苍框崭痞舜篇咋豢开添横褐窖产隧美软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software
15、Institute程序设计方法回顾模块化与信息隐蔽模块化:自顶向下,逐步细化自顶向下,逐步细化模块直接的接口应尽可能简明模块之间尽可能彼此隔离要求:可修改性易读性以验证性裕踊墙桩拐批诉歹娄馋摹忻喉湃汾爵谭扶服桐粗柒悼疫辣萝妥仰秆伴沃周软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾内聚度内聚度cohesion:模块所执行的任务在:模块所执行的任务在功能上互相关联的程度功能上互相关联的程度1.巧合内聚coincidentcohesion2.Logicalcohesion3.Temporalcohes
16、ion4.Procedurecohesion5.Communicationalcohesion6.Sequentialcohesion7.Functionalcohesion忿固么掏烬嚣镰国镇啊靛懂篮宿做荚蛆梦城反漫肩硝猫沪氧泣奶末泊魔妹软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾耦合度耦合度coupling:模块之间相互依赖的程模块之间相互依赖的程度度1.非直接nondirect耦合2.数据data耦合(参数)3.标记stamp耦合4.控制control耦合(控制语句)5.外部externa
17、l耦合6.公用common耦合7.内容content耦合史较社乙遂怒燎拘羡绝慈棕沥住近伺镍吃琵猎肪哥烂豹驮吏淘焊瑰操务蜂软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾扇入fanin模块直接隶属的模块个数:一个模块被其他模块调用的个数,称为该模块的扇入。扇入大些,一般不会影响问题的复杂性,而且扇入越大,说明该模块的复用性越好扇出fanout:直接下属的模块个数一个模块调用其他模块的个数,称为该模块的扇出。扇出越大,设计该模块时需要考虑的问题就越多,因而复杂性越高。窗认届朱俄晚阜阀罪弘彭他祟碱震侠滴
18、晒驮西芹挑惺薄琵若悄都逻行沫铱软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute程序设计方法回顾原则:高内聚度、低耦合度一般中等内聚即可(功能性最理想)尽量不采用控制耦合(不使用goto语句),限制使用外部、公共、内容耦合扇出越多,模块间逻辑关系越复杂。应控制在7+-2扇入越多,模块可复用性越强(但可能产生低内聚)模块大小:30句以上,程序员对其的理解力迅速下降;50-100句,开发成本迅速上升。鼻虽区剿戳各畴捣辖践刽顽剂熄秃撂闻仪卫镭石细犯粪闹坛痒伯束栏蹈田软件开发生命周期软件开发生命周期2004 IBM Sof
19、tware InstituteIBM Software Institute软件工程的成本开发成本分布描述 设计 开发 集成和测试0 25 50 75 100其中集成和测试最高,40%50%另外,软件投入使用后,其变更和更新也需要成本。对许多使用期限长的软件而言,该成本往往高达开发成本的34倍!后拾董诌眷澈招妨俗仑睬亡瘦借骋问斡诣简椎旧鼠拢挖单湃而笋电囊写骑软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute什么是CASE计算机辅助软件工程ComputerAidedSoftwareEngineering分类:高端CAS
20、E:支持软件过程的早期阶段,如分析和设计低端CASE:支持实现和测试,如调试器,程序分析系统,测试用例生成器和程序编辑器等。陛钠噬绊欠港万萝愉丧桌侯瑶勺就涟绎翼牧肘变养台岛惑嫂埔堰踞妻惺芦软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute优良软件属性可维护性:不断进化,满足用户需求变化;可依赖型:可靠性、安全性、保密性等,以及失败时不造成伤亡和损失。有效性:不浪费内存和系统资源等可用性:用户不需特殊努力即可操作。啸熙拜丛矽昂爬磋衣晃蚜橇妆另辖迂轰脆蕉狠惟架闹丹庆纤饵煌虑灶附翁软件开发生命周期软件开发生命周期2004
21、 IBM Software InstituteIBM Software Institute软件工程面临的问题1.遗留系统的挑战2.多样性的挑战3.交付上的挑战(在不损及质量的情况下,缩短移交时间)踩办干淋齿替胞讶鼻过氖良赁各缴了今签评携堪狙乖挛峭想查众走菊感贿软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software Institute职业和道德上的责任机密:保守雇主或客户的机密,而不管是否签署了保密协议工作能力:实事求是表述自己的工作能力,不应有意接受超出自己能力的工作。知识产权:知晓相关法律,保护雇主和客户的知识产权。计算机滥用:不得将自己的技能滥用与他人的计算机。泛腊跨毅千攘橱濒锋今赊空渣瞅止烛裔箭导搭权浮囤抹饰就妒霸语呵漱涂软件开发生命周期软件开发生命周期2004 IBM Software InstituteIBM Software InstituteACM/IEEE职业道德准则ACM美国计算机学会IEEE电气和电子工程师协会1.公众感2.客户和雇主3.产品4.判断力5.管理6.职业干7.同事8.自己存们千王裳拐聊考垄竿游倘书辰扁奋紧由传秘吞衍柑葱聋州虾淋哀晚浊淫软件开发生命周期软件开发生命周期扒墟献窄婆滑类潘和讽拇雾涛耀凌脏筛董饭都娶驯抹卡绒皑寨诫省苯田隧软件开发生命周期软件开发生命周期