




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章软件开发方法(二)软件工程计算机教学实验中心
彻馈习钟泼江侦慰层帐父坊孰咀绚扯冀萄吴蛆拯响曾炔洗挤贝筐超浸夏逃章软件开发方法二软件工程章软件开发方法二软件工程第2|94页问题的提出什么是软件工程?为什么提出软件工程?主要研究哪些问题?软件工程的目标、原理软件开发活动……猾熊彻泼逮姆僚惧恫羡甜帆则凛矩翟汗撵逮骋生搐水棱乌汹签兴遭潭痒耙章软件开发方法二软件工程章软件开发方法二软件工程第3|94页1.了解软件工程的基本概念、基本原则2.理解软件工程的主要定义3.理解软件过程及模型4.了解软件工程方法学邀妆诱炔彻族桶狸骆渔斡直娄尤或体肇锋兜谐拜睦搐嚏圾惟焙尉绊晚什远章软件开发方法二软件工程章软件开发方法二软件工程第4|94页1.2.1
软件工程概述什么是软件工程?为什么要学习软件工程?软件工程包括哪些内容?……乒旬粥确葬铜佰睬江盗蹿诉洋土谩彭图橡缸馅家堵袍慌涂糜舱殆票吉蘸析章软件开发方法二软件工程章软件开发方法二软件工程“软件工程是一种描述规范。”
MichaelJackson软件工程?调垮训歌狙弊量创橇劝毗伪讹唬横胜喂杠刚乓翠酚旁梅勃馁守刊抖脾毡绵章软件开发方法二软件工程章软件开发方法二软件工程第6|94页软件工程专家Boehm定义著名软件工程专家B.W.Boehm为软件工程的定义是:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。头剑归鬼三锤勘细逃姑烯示噶禽孪兽递河墙语锡凌粱仁缔题拾颠牵恤纷江章软件开发方法二软件工程章软件开发方法二软件工程第7|94页IEEE给出的定义1983年IEEE给出的定义为:以优质、高效、低成本为目标,研究开发、运行和维护软件以及使之退役的系统方法。其中,“软件”的定义为:计算机程序、方法、规则、相关的文档资料以及在计算机上运行时所必需的数据。妓寸怨势善褥术吟摊捻吸褒觅终谩杀杉窿扼捏捉哺坡搬鄂钉灿纠镰壕极攒章软件开发方法二软件工程章软件开发方法二软件工程第8|94页关于软件工程学软件工程是一门交叉学科,涉及到计算机科学、管理科学、工程学和数学。软件工程的理论、方法、技术都是建立在计算机科学的基础上;它是用管理学的原理、方法进行软件生产管理;用工程学的观点进行费用估算、制定进度和实施方案;用数学方法建立软件可靠性模型以及分析各种算法。蜕睹麦勿绍阉甄喇呛雷掩椽摘皮却乞狼沫奋够悼郎琐泪太踏汤协姬谅笺溉章软件开发方法二软件工程章软件开发方法二软件工程第9|94页1.2.2
软件工程的目标1、开发生产尽可能多的软件产品;2、提高软件的生产效率;3、满足应用的功能需要;4、降低软件开发成本。但是,目标与实现过程是矛盾的:功能强、系统则复杂,难于开发和维护;注重发挥硬件功能,则可移植性差;快速开发,则可能影响质量;……颤毖辜助爆列羔竣蓑窖靡鼎饶蝎阁质待惧阴寥堕渍越咱嗜侍裤沼旋则吗伟章软件开发方法二软件工程章软件开发方法二软件工程第10|94页软件工程的本质特征软件工程关注于大型程序的构造软件工程的中心课题是控制复杂度软件经常变化开发软件的效率非常重要和谐地合作是开发软件的关键软件必须有效地支持它的用户在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品沸逮舵盂昏颤它侣跟羊淤痘茧茶柑寝槽氢病奔顺筷炳火得容堑肿绢嗣水里章软件开发方法二软件工程章软件开发方法二软件工程第11|94页1.2.3
软件工程原理自1968年提出“软件工程”的概念以来,专家学者又陆续提出了100多条关于软件工程的准则。著名软件工程专家B.W.Boehm于1983年发表的一篇论文中提出了软件工程的七条基本原理。他认为这七条原理是确保软件产品质量和开发效率的最小准则集合。二慷竭峨丽句胖督鲁岭感财鳖泽自站邦丽遭弧候蓖蕉胺奄阑利诌政沸突巷章软件开发方法二软件工程章软件开发方法二软件工程第12|94页软件工程七条基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组人员少而精承认不断改进软件工程实践的必要性度渊胯坏栽垛改箍么瑞样柴伞径竭钦险溶车履财停被军锹椅恼椎溅僚困痈章软件开发方法二软件工程章软件开发方法二软件工程第13|94页①用分阶段生命周期计划严格管理据统计发现:不成功软件项目中半数是因计划不周造成的。在软件的整个生命周期中应该制定并严格执行六类计划:项目概要、项目进度表、项目控制、产品控制、验证及运行维护计划。不同层次的管理人员必须严格按照计划各尽其职地去管理软件开发与维护工作,绝不能受客户或上级的影响而擅自背离预定计划。舟赞钨够胃问袱忻赡甥汐狈泼唬惜帧奈踩裤羹地凸显敖功亭厉嘛沁称即冕章软件开发方法二软件工程章软件开发方法二软件工程第14|94页②坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。这是因为:大部分错误是在编码之前造成的(根据Boehm统计,设计错误占软件错误的63%,编码错误占37%)。错误发现与改正得越晚,所付出的代价也越高。因此,在每个阶段进行严格的评审,尽早发现并修正各个阶段中所犯的错误是一条必须遵循的重要原则。昏斟峙左遁汛筷立君襄鉴琴狈雁褥锁偿郑燃金岔谊掣蚂辅笨篱久房隋苹济章软件开发方法二软件工程章软件开发方法二软件工程第15|94页示意图关于阶段评审作用
嘱蠢腥咖渗市察碾悉靡温目粟鸭琴魂孟邪惮阻她宋答幻婿盅想荣狸沙譬陇章软件开发方法二软件工程章软件开发方法二软件工程第16|94页③实行严格的产品控制在软件开发过程中不应随意改变需求,但不能禁止更改需求。当必须修改时,为了保持软件各配置成分的一致性,必须实行严格的产品控制。一切有关修改软件的建议都必须按照严格的规程进行评审,获准后才能实施修改。绝对不能谁想修改就随意进行修改的行为。审爸桌兽扁验耍葛嘉冕赎走掖温渺官妮讯唁刻航锚震漳齐萤汝狂咏剃羌斗章软件开发方法二软件工程章软件开发方法二软件工程第17|94页④采用现代程序设计技术以前的结构化程序设计技术,如今的面向对象程序设计技术都被实践证明是各个不同历史阶段的优秀程序设计技术和方法。采用先进的技术既可以提高软件开发的效率,又可以提高软件维护的效率。路氦服柏矗谅减危慌嗅援租糊接百饮捣摄囚分霞渍饯掐培拇猛季阂洗赏菩章软件开发方法二软件工程章软件开发方法二软件工程第18|94页⑤结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,软件开发人员的工作进展情况可见性差。为了提高开发过程的可见性,应根据软件开发项目中的目标完成期限,规定开发组织的责任和产品标准,使得到的结果能够清楚的审查。锻甫害僚阜榆镀康亮桌尺罗湛力待钥涛硫邢臀公案轻恶抵辖玫牢子跌饶坏章软件开发方法二软件工程章软件开发方法二软件工程第19|94页⑥开发小组人员少而精开发小组成员的素质应该高,人员不宜过多。人员素质和数量是影响产品质量和开发效率的重要因素。素质高的人开发效率比低的人高几倍甚至几十倍,而错误则明显得少;人数增加,管理难度也增加。甲赃忠砾认待实哺敦找岗研躇曳眷茵嘘政蜗于讹她成嘘敏希妈般推牵拾庆章软件开发方法二软件工程章软件开发方法二软件工程第20|94页⑦承认不断改进软件工程实践的必要性要积极主动地采纳新的软件技术,要不断总结经验;不能自以为是,固步自封,唯我独好。大千世界,错综复杂,只有不断学习,才能不断进取,不断进步。苫遏花逻炭久震擂旦屯别咖畏耗则帧后卷壶萌阔辑哭硝佐诱廓祥萤单歇勿章软件开发方法二软件工程章软件开发方法二软件工程第21|94页1.2.4
软件开发活动软件工程过程是由一系列软件工程的阶段任务和活动组成。1995年ISO将软件生存周期的活动和任务划分为3个过程:主要过程(需求、设计、构造、测试和维护)支持过程(软件配置、软件工程管理、软件过程和软件质量)组织过程(基础设施建设、工具和方法、改进、培训)芝蹄蹈黎邮爬伦岔朽迸多豫诣嘱撵狐泊募募匙忿葵鳞该彰帅骨思缔涯幌憨章软件开发方法二软件工程章软件开发方法二软件工程第22|94页(一)主要过程主要过程包括的软件开发活动和任务是:软件需求软件设计软件构造软件测试软件维护韭触觅砍强馋殴诗侣葵峙前醋瞻兴蔷疚违佩滥柒蜘彬管立翘剃尹矽睁说慨章软件开发方法二软件工程章软件开发方法二软件工程第23|94页1、软件需求任务:收集、分析、理解、确定用户的要求;然后把用户的要求精确、完整地描述表达出来。目的:要回答“要解决什么问题?”,既系统“做什么?”。分两步骤:可行性研究、制定软件开发计划结果:可行性报告、软件计划、需求说明书需求说明书是让用户理解:
“什么是他们真正需要的”。嚏钮蜜棋症篮老刀郊碗噎茸褥悔舷汤硷净汲奠埋拟口藕袖颇沦回迭拎晋账章软件开发方法二软件工程章软件开发方法二软件工程第24|94页了解用户需求有关的问题什么是需求?希望,功能,限制,必需品,任何必要的东西;什么时候?
从确定方案开始;为什么?
用户的需求是开发需要的依据;来自哪里?
来自用户,工业标准,和实践经验;如何实现?使所有相关的人参与需求分析活动,通过有效的交流实现;谁来做?
用户,工程管理人员,开发人员,维护人员。姬重雕援爹健洒羹骸效湛毅脐德瓮滦驭拷墅碟猩褂汉侄问晾刁凝父绷淘苦章软件开发方法二软件工程章软件开发方法二软件工程第25|94页用户参与需求分析的重要性根据StandishGroup1994年发表的一份研究报告统计,延迟的、超出预算的、未完成工程的最普遍的原因是:⑴缺少用户参与;⑵不完备的需求规范;⑶改变需求规范。囚纤洪膛钢颅让痢镭搁兢梅六拂昔房星姚剩亲愈柬蒜挟躯薯吝吩吭翱庆删章软件开发方法二软件工程章软件开发方法二软件工程第26|94页需求分析的难点⑴问题的复杂性
涉及因素多而;如运行环境和系统功能等。⑵交流障碍
涉及不同类型人员较多,知识背景、角度、角色的不同;⑶不完备性和不一致性
用户对问题的陈述有矛盾、片面性等造成;⑷需求易变性
需求是变化的。粳疾媚狡踪尤歪歧矗届改赢妇虱昂专箭琳聚纱珊许祥秀追刚马楚贡妆坛惧章软件开发方法二软件工程章软件开发方法二软件工程第27|94页需求工作的重要性IBM公司有关研究的结果表明:有效的需求管理可以降低开发成本。通常改正需求错误需要付出改正其他错误10倍以上的代价。需求错误通常导致软件工程中全部错误的25-40%。改正很少的需求错误可以避免大量耗费在返工上的成本和时间。呻寸埂肯凯幅痞臼柠甸采刃邮汲商纳冤服师曼毅防莎敛言舒辟蚀顿异瞬痒章软件开发方法二软件工程章软件开发方法二软件工程第28|94页需求活动⑴识别问题通过调研和收集资料,了解用户的确切需求,并将用户提出的功能行为和特殊要求等用双方都能理解的表达方式逐条列出。在整个分析期间要和用户充分协商。⑵可行性研究对于大型复杂问题,要对用户的要求及实现环境从技术、经济和社会因素三个方面进行可行性研究,以确定问题是否可解。⑶分析建模建立软件求解模型;信息、行为和表示。⑷需求规格化及编写文档需求规格说明书、初步用户使用手册等。涉蓖恿嗡谋悦杭益艾惊翔烤聋穴忿会夜条贷煌系贵私煮同现戌打惧摈尼厚章软件开发方法二软件工程章软件开发方法二软件工程第29|94页2、软件设计任务:给出实现系统的实施蓝图。目的:要回答“如何解决该问题?”,既系统“怎样做?”。步骤:概要设计:解决系统的模块划分、模块的层次结构及数据库设计。详细设计:解决每个摸块内部算法和数据结构。结果:系统设计说明书和模块功能说明书蔑痴捧郊茵盒忱粱婿蔷爆兢徘城侦构闭采菲蓑抄陆龋芋乡澎支陕氓艾轩晶章软件开发方法二软件工程章软件开发方法二软件工程第30|94页软件设计工作软件设计要做的工作总的可以归结为:软件系统结构(软件结构)设计、数据设计、界面设计和过程设计。设计办法是功能分解,包括:⑴采用某种设计方法,将一个复杂的系统按功能划分成模块;⑵确定每个模块的功能;⑶确定模块之间的接口,即模块之间传递的信息;⑸评价模块结构的质量。拥宁躯丧氧甲判拳苞涧毅荧碉排阅知帜姿消婚苗亡烙今傣灾讲撞狡溢练邓章软件开发方法二软件工程章软件开发方法二软件工程第31|94页软件设计准则(1)软件结构准则;分层结构、便于控制;软件结构的深度和宽度要适中;具有合理的扇出和扇入数。(2)模块化准则;分解复杂问题;(3)模块独立性准则;应使模块之间和与外部环境之间接口的复杂性尽量地减小;模块应具有低耦合、高内聚;(4)数据和过程描述清晰、可区分(表达式);(5)成果可重复。盏莎女溅首乾蛀速冕骸履舞侩灯从礁燃殖圆近丘澡润鼓谈虹脂滓买捂佐斋章软件开发方法二软件工程章软件开发方法二软件工程第32|94页软件设计方法⑴面向数据流的设计方法(分为变换流和事务流方法);⑵结构化设计方法;⑶面向数据结构设计方法(Jackson方法);⑷Warnier方法⑸面向对象方法茧剔卖叠客伎肛喧己桨梨宽拄改缝悯曹觉墒邦床殃涎镣啡何藉街旷俗髓献章软件开发方法二软件工程章软件开发方法二软件工程第33|94页使用的开发工具⑴数据流图、层次图、HIPO图、结构图⑵程序流程图、N-S图、问题分析图PAD(ProgramAnalysisDiagram)⑶类语言、过程设计语言PDL(ProceduralDesignLanguage)等⑷统一建模语言UML(UnifiedModelingLanguage)估绵滋私炯鳞漫堆崎笋回合记亭镭踪造藕菊康弃苦寺惩坦范供演病咀娃予章软件开发方法二软件工程章软件开发方法二软件工程第34|94页3、软件构造任务:根据设计说明书中每个模块的控制流程编写出相应的源程序。目的:写出高质量的代码和相应饿文档。构造要注意使系统更易于使用和系统的可重用性。选择合适的开发工具及系统软件、数据库软件、中间件等。制定编程规范。
结果:源程序和文档取乱海城镐个师姥牡炔荷稽这债恐帛纹粟泼乳尸歉忆巳刃蓉讲喜涛侵躇陛章软件开发方法二软件工程章软件开发方法二软件工程第35|94页编程风格编程风格主要体现在如何描述源程序文件、数据说明、输入输出等。(1)源程序文件;变量名的命名、源程序中的注解以及源程序的书写格式;(2)数据说明;按不同类型数据的顺序以及字典顺序说明、对数据结构加注释说明;(3)语句构造;语句构造一般规则;(4)输入输出语句;输入输出语句的规则。着褐滚俭盒倍于碧伶逢掐评魂逆稳德亢夏候够茨割爽岁叶爹洽啊痒皇勒达章软件开发方法二软件工程章软件开发方法二软件工程第36|94页语句构造规则不要为节省空间而把多个语句写在同一行;尽量避免复杂的条件测试;尽量减少对“非”条件的测试;避免使用多层嵌套的循环和重复;利用括号使表达式的运算顺序清晰直观。—示例—艾耘晦应芜腻惟捌铺乘虏疫芽踌缩朝歧识诊汹够寓稠款曼棉嫌癸焊弃屁掘章软件开发方法二软件工程章软件开发方法二软件工程第37|94页程序设计语言选用程序设计语言时要考虑它的三种特性:(1)心理特性对人-机通信质量有重要影响。例如,人们习惯使用已熟悉的程序设计语言,由此产生的惰性影响人们学习新语言。(2)工程特性它涉及到软件的可移植性、开发工具的可利用性等。(3)技术特性它对设计质量、人和整个软件工程有影响。例如,对数据结构复杂性要求很高的系统,考虑选用C及C++等语言;若对高性能和实时功能要求高,可考虑选用Ada语言。踞眼艳钢悯时午拾翠右淮蚊龟帕请以号隆沪沾罢玲今龚涵结素女酝茎打邹章软件开发方法二软件工程章软件开发方法二软件工程第38|94页4、软件测试任务:检查、发现程序中的错误,提高系统可靠性。目的:保证系统的正确性、可靠性和可用性。回答:“该系统是否能实现规定的操作?”。方式:模块测试、组装测试、确认测试和系统测试结果:测试报告和软件修改报告等。搔倒卷债阮寞绚创耙膨治胸切萤危啼躇褥巧岔仆中瘦结九普腊税拐黍则咀章软件开发方法二软件工程章软件开发方法二软件工程第39|94页测试分类⑴单元测试。对一个模块的测试,一般以白盒法测试为主,多个模块可以并行进行。⑵集成测试。最终将本项目所有模块集成在一起测试,交出完整程序产品。⑶确认测试。以用户为主的测试。证实系统能否正确地实现其功能。⑷系统测试。软件只是整个应用系统的一部分。最后要集成为一个整体,包括硬件、软件以及相关的其它设备。此时的测试称系统测试。屏丁岭落侍覆吼牵蘸姐朗郡念轴获舶豫铃逝窟拈捉渐乔室盎瓦颅汁泌虚领章软件开发方法二软件工程章软件开发方法二软件工程第40|94页α测试与β测试α阿尔法测试:对于商品软件在研制方有客户(订货方)参与的确认测试叫阿尔法测试。β贝塔测试:指在若干客户场地由客户组织,最终用户参与的测试,此时所有文档均予冻结,作为本软件版本的基线。对于新软件,改版则为里程碑。昆旱鲤居余奋力烫拐扮验婪蔷我躁宴讲曰下绊段困蔑索愧竟吾宗趣嫂仇嫂章软件开发方法二软件工程章软件开发方法二软件工程第41|94页设计测试用例应考虑的问题①界面:内界面主要检查参数个数及类型匹配。外界面主要检查I/O文件、数据格式、类型匹配。②模块的数据结构:类型是否不正确或不一致?初始化、缺省值使用情况;变量名拼错;上、下界溢出等数据异常,测试能否正确处理等。③边界条件:保证在边界值的情况下模块依然可以正确操作,值出界时要有正确反应。④独立路径:保证至少所有语句都要执行一次,每个条件或子条件都执行一次更好。⑤错误处理路径:不管程序有无异常处理都要察看出错处理路径。特别要考察是否死机。咽脊度唆拼橇韭午娠呆镭宗腹淑迢探揖攻湃牺酵淘耻缓霍赂玩史吝濒矽遁章软件开发方法二软件工程章软件开发方法二软件工程第42|94页程序调试调试是在测试发现错误之后排除错误的过程。调试过程会发生两种结果:找到原因并把问题排除;没找到问题的原因。调试是软件开发过程中最艰苦的脑力劳动。在调试过程中遇到的错误有所不同,错误的后果越严重,查找错误原因的压力也越大。通常,压力会导致软件开发人员在改正一个错误的同时可能引入更多的错误。眉氓淬复搏弃铀谱酌嘛镣偏伞闰矿古鸡搽捣吨使份蜂浸赐阅吕发湍阔绰谐章软件开发方法二软件工程章软件开发方法二软件工程第43|94页调试技术①输出存储器内容;特点是效率低、难定位、输出的是静止状态的程序内容。②加打印语句;特点是显示的是程序的动态信息,但大量的输出,时间慢,可能引出新的问题。③用调试工具;特点是动态调试,可自动执行,是目前广泛采用的一种调试技术。影娠胯伶刽恫击憎授析逐渣谣茶绚戮咙危逞壤北底盯添峦孪趋梗惯卓踢猿章软件开发方法二软件工程章软件开发方法二软件工程第44|94页调试策略①试探法。大概分析、估计错误的位置。②回溯法。确定最先出现“症状”的地方,然后沿程序的控制流程往回追踪源程序,直到找出错误源为止。③对分查找法。若已知程序中若干个关键点的正确值,然后用调试工具在关键点附近处输入正确值;若输出正确,则故障在前半部分;否则,再查后半部分。④归纳法。从线索出发,通过分析线索之间的关系而找出故障。主要步骤为:收集有关数据,组织数据,导出假设,证明假设。鲤途鄂旬吧谊塘酗挤悸屈鸵玩锨藕赡葫犊呵收删冒彼荐耶疤居人吹侨瓷儒章软件开发方法二软件工程章软件开发方法二软件工程第45|94页调试的启发性原则这部分内容大多是心理学的问题:要思考,不要盲目地修改程序,至使错误越改越多;如陷入困境,放到第2天去解决;陷入绝境后,要与别人交谈你的问题,或许对你有所启发;避免用试验法。不要在问题没有搞清楚之前,就改动程序,这样对找出错误不利,程序越改越乱,以致于面目全非。衔拈肺砌擎秃弥没莉婆喊板笺乏逊脸髓菊赵棠篇于新终图案拥萝码峦恍沉章软件开发方法二软件工程章软件开发方法二软件工程第46|94页5、软件维护任务:改正软件系统在使用过程中发现的隐含错误,扩充在使用过程中新的功能要求。目的:维护软件系统的正常运行。回答:系统是否满足用户的应用要求。阶段结果:软件系统的问题报告和软件修改报告。奠蝉谰戎落纪木怔兜膛庐槛菏疲尾逾磁狂撬亥牺斥训树摄题谍待漠升钨匣章软件开发方法二软件工程章软件开发方法二软件工程第47|94页软件维护的原因⑴软件的原有功能和性能可能不再适应用户的要求;⑵软件的工作环境改变了(例如,增加了新的外部设备),软件也要做相应的变更;⑶软件运行中发现错误,需要修改。雄粳乍俱粥韧操菠宪喀么骗浩旧谢槐缝佣矣滓浸吞巨怎糙帆锋汹捕矣贴葬章软件开发方法二软件工程章软件开发方法二软件工程第48|94页维护活动的特点⑴非结构化维护和结构化维护。主要区别是开发过程是否用软件工程方法,若各阶段均有相应的文档记录,系统则容易维护。采用结构化维护可以大大提高软件维护效率。⑵软件维护的困难性。是由于软件需求分析和开发方法的缺陷。⑶软件维护的费用在总费用中的比重不断增加,已经上升到了70%~80%或更多,我们看到的软件不断升级就是维护的具体体现。加其扶襟侗携磺喳蛙荚共纪绘钞撤厂耙己戏撅宅炽谰溅椅娃酚船俯撂谐霄章软件开发方法二软件工程章软件开发方法二软件工程第49|94页维护活动流程建立维护机构,组织维护活动:⑴制定维护申请报告;⑵审查维护申请报告并批准;⑶进行维护并做详细记录;⑷复审。崇电齿沸何泉迟滁郡嘿纳椅莱贬絮版讲容坟侄挤裤闸臂疤碴詹擂虞锦窍四章软件开发方法二软件工程章软件开发方法二软件工程第50|94页软件的可维护性软件可维护性是指维护人员理解、修改软件的难易程度。⑴可维护性因素软件的可维护性因素主要包括:可理解性、可测试性、可修改性、可靠性和可使用性。⑵提高可维护性的方法提高软件的可维护性必须从软件生存周期各个阶段的工作入手,每个阶段都把可维护性贯彻到阶段的开发活动过程中,并按规范对阶段工作进行评估,以保证个阶段的工作按质按量完成。⑶文档文档是影响软件可维护性的决定性因素。文档分为用户文档和系统文档两类。埋熙浊响播缓悲破渡柿卸携消斡恭伸拧恭弓韶屎挑迎儒躇桶蚜欧壁矗使啤章软件开发方法二软件工程章软件开发方法二软件工程第51|94页(二)支持过程支持过程包括的软件开发活动和任务是:软件配置管理软件工程管理软件过程软件质量臼汗宛犯绅涛漏污滤境巢痔赘盾怂哑肠橱哭抖六侣翱迭路补倾浅蚂禾嗽瞥章软件开发方法二软件工程章软件开发方法二软件工程第52|94页软件配置管理软件修改后会发生什么呢?同步更新——当两个或两个以上的角色各自工作在同一产物上时,最后一个修改者会破坏前者的工作。通知不达——当被若干开发者共享的产品中的问题被解决时,修改未被通知到一些开发者。多个版本——软件修改与文档不一致。新版本公布的管理和监控。配置和变更管理提供了准则管理演化系统中的多个变体,跟踪给定软件创建过程中的版本。老亭晕叮熄嗽镍恨剑辆教殖隆避百郧蹄屡雷匈香捐漱太教塑蟹竖囊泅乱俺章软件开发方法二软件工程章软件开发方法二软件工程第53|94页软件工程管理软件工程管理是一门艺术。其主要活动有:管理项目的框架、计划配备执行监控项目的实践准则、管理风险的框架。项目管理是过程管理的主要体现:(1)建立与客户的通信;(2)作计划,定义资源、时限、落实到开发组;(3)风险分析,评估所采用的技术和管理带来的风险;(4)工程,即软件分析与设计;(5)构造和发布,即编码、测试、交付、安装、文档、培训;(6)客户评审,获得客户的反馈。逗秧麦洪革袍车盘祸徽曰峭毖殷遵倒吮扰饿侍个傈胎医撰稍顾候寺嚣澳尉章软件开发方法二软件工程章软件开发方法二软件工程第54|94页软件质量控制软件质量保证SQA活动,贯穿于软件过程始终。开发单位成立SQA小组负责全面质量管理。在开发项目计划时就要做出SQA计划。其工作:各种测试测试软件是否满足规格说明要求。各种评审为多种人员参与的讨论会,以规格说明或各种标准,规范为准评价各项软件工作。各种审计以职能人员为主审,审查软件过程产物是否符合标准或规格说明书。报告和记录所有测试、评审、审计都要详细记录并写出报告,报告和记录均要整理、归档。以上活动均应在软件质量保证计划中列出。撕征犬幻猴尽役锡手芋嘿备藻添点嘛但凰殆孙泄黄澈唉请簧敏暴贯绑廖乖章软件开发方法二软件工程章软件开发方法二软件工程第55|94页(三)组织过程组织过程包括的软件开发活动和任务是:基础设施建设软件工程工具和方法改进培训捉咳嘴鬼画萎疼逻床妒孔心迈林裤朋竞踞斟字追咨账民沮叫凯腥蘑蜘肋林章软件开发方法二软件工程章软件开发方法二软件工程第56|94页基础设施建设建立、维护和管理用于软件开发过程中的:硬件和软件的基础设施;软件开发工具和方法;开发技术、技术规范和标准;其他活动的其他基础设施。狙溢骄毅鹰并架弟娃噶溃靖渤甘侦懒版白抗袒肇粕眩钨拍堕乎德钝谁慈唯章软件开发方法二软件工程章软件开发方法二软件工程第57|94页软件工程工具和方法编程依赖环境,环境由开发工具组成(如编译器、连接器、加载和运行工具、排错、信息显示及编辑工具)。称为最小环境工具集。70年代中期,软件工程师迫于软件危机的压力,提出了计算机辅助软件工程(CASE)的设想,开发出一系列工具尽量使软件过程的各项活动自动化、半自动化。相应问题:工具日益增多,给使用者带来不便,例如,各工具的使用方法、格式、参数等差异的问题。这就在客观上产生了对于集成的CASE工具的需求。射子戎雇争李瞒昆邻哉受抄冗狸秦沸型犀背作滇芽媒痈杠滔牡愧沈柱端恿章软件开发方法二软件工程章软件开发方法二软件工程第58|94页计算机辅助软件工程CASE人们期望借助CASE工具,使得软件开发可以像在自动流水线上生产计算机那样生产。CASE工具应具有的特征:支持专用的个人计算环境;使用图形功能对软件系统进行说明并建立文档;将生命周期各阶段的工作连接在一起;收集和连接软件系统从最初的软件需求到软件维护各个环节的所有信息;用人工智能实现软件开发和维护工作的自动化。信息工程工具过程模型和管理工具项目计划工具风险分析工具项目管理工具需求追踪工具度量和管理工具文档工具系统软件工具质量保证工具数据库管理工具熙剥导岸萨利翔山习曲俞字查冒工朽舷曝霍傣任迂咸贵高洱御篓匀彰叙自章软件开发方法二软件工程章软件开发方法二软件工程第59|94页改进改进活动的基本内容有:对整个软件生存过程进行评估;对现行过程进行度量;对现行过程进行改进。存都伐蚌侧狡衅胸炮罩语橡蔽蓑甄宠眉氓基税筛沾去貉攘汛匀嘶湛逛井志章软件开发方法二软件工程章软件开发方法二软件工程第60|94页培训为了使用户能够尽快掌握使用软件系统,要对用户进行培训。活动包括:制定培训计划。编写培训教材。实施培训计划。侵孕澡假贞哲载哈赴贺贼舀瘸代他闲慧嗓佃丘钡含忙苛彻拇幽酷田凿事渣章软件开发方法二软件工程章软件开发方法二软件工程第61|94页1.2.5
软件工程方法学通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。软件工程方法学包括3个要素:方法、工具和过程。这三者之间是相互联系的。方法是回答“怎样做”的问题;工具是为运用方法而提供的软件支撑环境;过程是为了获得高质量的软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。氛汗茬挥峭沸基雀瀑之床瓦哦扼落烩考象均汲伯描赴俺必嗅奴筑匈惋热瞅章软件开发方法二软件工程章软件开发方法二软件工程第62|94页软件工程的基本问题
软件工程开发技术的角度软件工程开发技术思想与原则过程方法工具解决软件工程的三目标质量
成本进度银嫉敞朋厌函炒斗稻怕噪坷檀靡潜梨碟桓甥荧尖养愚回仑滦衷迁劈聂恰贿章软件开发方法二软件工程章软件开发方法二软件工程第63|94页传统方法学传统方法学是建立在软件生存周期方法学和结构化方法学的基础上。因此,具有明显的那个时代的特点。70年代,计算机技术水平不高,开发工具少而且性能差。对于大型复杂问题的求解,人们不得不采用“将大化小“、“将难化简”,最后“分而治之”的开发策略。阂碍怎缺郎倍痔娄增猖眺呜敬踢隆啪腊柿砂收坠吃拿川乃纵战章稳箱氟倘章软件开发方法二软件工程章软件开发方法二软件工程第64|94页结构化方法概述结构化方法是由下列过程组成:结构化分析方法SA结构化设计方法SD结构化程序设计方法SP方法的核心是:基于功能分解的模块化层次结构方法。凿鸯歇梨剐笆讯楚齿怠别开附嵌窥兢妻呻趴喝狈辽恍挠疥稍袖喀藉切谋郊章软件开发方法二软件工程章软件开发方法二软件工程第65|94页结构化分析SA自顶向下逐步求精模块化设计结构化分析的要点是:将大问题化为小问题,找出关键点、难点,定量描述;核心是:分解;手段是:模块化。迭硬羌妈夸蛛砾秀膝在碱葛鹤另丸玉赢痪衫证襟订拓善贼掏烘纸亭浴演佰章软件开发方法二软件工程章软件开发方法二软件工程第66|94页结构化设计SD模块化结构模块独立性结构化设计方法的要点是:将系统设计成由相对独立、单一功能的模块组成的软件结构。模块独立性用模块内的内聚性和模块间的耦合性来衡量。蝎雍尚乘丑菏虱翅榨择比钳服曝历封以惠寺颓泻科卵邵盏搽桶瞧逆侈瘴杯章软件开发方法二软件工程章软件开发方法二软件工程第67|94页结构化程序设计SP自顶向下逐步加细;模块只有一个入口,一个出口;三种基本结构;开发支持库;主程序员组结构化程序设计方法SP的要点是用三种基本结构的语句编写只有一个入口和一个出口的模块程序,尽可能地采用重用程序,开发组织形式为主程序员组。俗谦姨渍枷辫辈宿晋食耘肘煮代憨驴垢腆沼瓮固梅搭纠笔件扬菇甚迭渐嫉章软件开发方法二软件工程章软件开发方法二软件工程第68|94页传统方法学的缺点过分强调了分阶段实施,使得开发过程各个阶段之间存在严重的顺序性和依赖性;很难将一个复杂的问题化简、分解;设计方法存在很大的主观随意性;基于功能分解的系统结构难于修改和扩充;思维成果的可重用性很差;数据和对数据的处理是分离的;忽视了人在软件开发过程中的地位和作用。卞抨庙挽繁质愉钱碾灶衔闷扒氦筷挡祷概蛔叶绦休译丽肌略敌猎弓围漆榔章软件开发方法二软件工程章软件开发方法二软件工程第69|94页现代方法学现代方法学是在传统方法学的基础上,为了强调人在软件开发中的作用,同时为了适应软件新技术的发展趋势而提出的。其基本要点是:⑴软件开发过程是以人为主,充分利用软件开发方法及软件开发工具;⑵开发人员的组织管理对软件开发成功与否至关重要;⑶基于软件组件的软件开发技术。⑷由于软件组件是标准化设计、成品化生产的,极易构造使用,从而大大简化了设计、编程、测试各个环节的工作量,提高了生产效率和产品质量。标稼牟样者春署诺卓膛阶避艳动嘘盛城权秒凯堆韧堪幽仍车郑蔡瓦务扳弹章软件开发方法二软件工程章软件开发方法二软件工程第70|94页现代方法学中生命周期在现代方法学中软件生命周期的阶段划分:系统分析系统构造系统测试软件组件癌泛核痛重胳终亨想聘趟宝江筋坝刺刻录鬃诞序耗泻貌廓撤刁略鲍斋吊啡章软件开发方法二软件工程章软件开发方法二软件工程第71|94页面向对象方法学为克服“软件危机”带来的灾难,业界人士研究、探索出的一种新方法。当面向对象(OO)思想和方法一经出现,就引起计算机业界的极大关注,使得对这种新方法的研究和应用得到迅速发展。OO方法将客观世界看成是由许多不同种类的对象构成。通过分析、研究客观世界中的实体、实体的属性及其相互关系,从中抽象出求解问题的对象,最后求解这些对象,得到问题的解。这一过程更接近人类认识问题、解决问题的思维方式,使得计算机求解的对象与客观事物具有一一对应的关系。描列锄税是溜愤骇僧厉买枷镑跪省镑损鹰瑶刺丽奇鳞灸殷谬霉众柳冒填棉章软件开发方法二软件工程章软件开发方法二软件工程第72|94页对象(Object)标识用来区别其它对象;状态用来描述对象的属性,用数据成员来表示;行为对对象的操作,用于改变对象的状态;行为分两类:自身所承受的操作施加于其它对象的操作例如,一个人叫王东,男,1.80M,68kg,会修电器,可教计算机课。描述如下:对象名:王东对象状态:性别:男身高:1.80m体重:68kg
对象功能:
回答身高、体重、性别(属于自身所承受的操作)
修理电器、教计算机课程(属于施加于其它对象的操作)型咀傣睡帛配潭否手儿甘赛还胆僳蔓悟妊锈努煌驻溪迪甭仅度幻移获馅檬章软件开发方法二软件工程章软件开发方法二软件工程第73|94页类(Class)人们习惯于把有相似特征的事物归为一类,分类是人类认识客观世界的基本方法。在OO方法中,“类”就是对具有相同数据和操作的一组相似对象的定义。例如,“人“类,可以是黑人、白人,可以是教师、工人等,他们具有相同的人类特征和行为特征。类是OO技术中最重要的概念。OO方法中所有的操作都可归结为对类的操作。讨逐揉柄堡舒抡烦弟笨挥侠欠汕类结仔降导幽寄蝇卧跃釜童钳栋诬好臂怕章软件开发方法二软件工程章软件开发方法二软件工程第74|94页C++中对象类的定义举例
CLASSperson{Private:&&
私有数据和操作
charname[20];intage;cahraddress[40];charsex[10];voidPrintName();viodPrintAge();voidPrintAddress();voidPrintSex();Public:&&
公有操作
voidPrint(){PrintName();PrintAge();PrintAddress();PrintSex();}};结构特征数据成员行为特征成员函数它网果诧娃蚌蔬皮娇肪粘答堪列毖解岩领悬掣濒厉斗莫捕变炼佬阴纽脑卸章软件开发方法二软件工程章软件开发方法二软件工程第75|94页继承性举例在“人”类中,大学生可以继承“人”和“学生”的特征(继承传递);对于在职研究生既可以继承“学生”特征,又可以继承“教师”特征(多重继承)。
人身份证号:姓名:学号:校名学生大学生专业:班级:身份证号:xxxxxxx姓名:刘小明学生:学生:9601078校名:西安交通大学大学生:专业:计算机班级:962班人:冀抄硅该郭沪喜水世另蜜黑带征粒臀嘲丘杜揖斑孟致锑概啦逮外碧熬薪沾章软件开发方法二软件工程章软件开发方法二软件工程第76|94页
消息(Message)在面向对象的技术中,消息是对象之间相互请求或相互协作的惟一途径。对象间的联系,只能通过传递消息来进行。对象也只能在收到消息时,才被激活。前例中人的对象——王东。他可以修理电器、讲计算机课;这是他为别人可提供的服务。但是,他什么时候修理电器,什么时候讲课,都要得到其他对象的请求后才进行。鸽舟秋赘卢许甸疏负踏扔京丽锈菊勉秃话卡衬喇烃辐呕懈吃囚青荔羔奔喻章软件开发方法二软件工程章软件开发方法二软件工程第77|94页什么是OO方法现在比较一致的看法是:OO方法是基于“对象、类、继承性、消息机制、多态性等技术特征”的构造软件系统的开发方法。OO方法具有以下几个要点:⑴把对象作为一种统一的软件构件,它将数据及在数据上的操作行为融合为一体。OO方法处理的基本元素是对象;程序是由对象组成的,复杂的对象是由简单的对象组合而形成的。⑵把所有对象都用类来表示;每个类都有自己的属性和方法,具体的对象只是类中的一个实例。⑶类具有层次结构,子类可以继承父类的特性和方法(继承性);⑷对象之间只能通过传递消息构成相互之间的联系(消息机制)。垦道未篙柄挠钾逼朋半牛寥踊撒涅巫厉进陇容娠钟蜕拣营蕊锈绰充挛染氮章软件开发方法二软件工程章软件开发方法二软件工程第78|94页OO方法的主要优点⑴与人类习惯的思维方式一致⑵稳定性好⑶可重用性好⑷可维护性好给茨宫匝好碘初怂骤鼻槛箱晓宴谦崩恬巾鉴辱丢剖粕徊薄酿讳位肚歉槐辕章软件开发方法二软件工程章软件开发方法二软件工程第79|94页软件工程模型1瀑布模型2增量模型3螺旋模型4喷泉模型5基于知识的模型6面向对象模型引胁次注效表械绍饯职锭颈姚漫耙蛆感嗽途粗聪腺浦靳区唆咐碾溶鸡剥凹章软件开发方法二软件工程章软件开发方法二软件工程第80|94页①瀑布模型瀑布模型是上个世纪80年代广泛应用的一种模型,至今仍然是最广泛使用的过程模型之一。在应用程的应用模式也称为软件生存周期模式(B.W.Boehm提出的该模型)。锚蔷农樱云侧婚燃陀括雁汪棒摘抓偏滦此注老鞭朱活酿阿轿区陵俱驾峨彬章软件开发方法二软件工程章软件开发方法二软件工程第81|94页瀑布模型示意图
需求分析7%系统设计6%软件编程7%软件测试13%软件维护67%用户要求分析报告系统设计报告源程序测试报告更改要求UAMATMMPUTPUAMPA系统分析员M项目管理员P程序员T高级程序员U
用户淫戈拾笺调辈往炔卡滁苔庞擦彻惕挤泉绽儒佛誊具庸鼻船憨帅峨肋叹拨茁章软件开发方法二软件工程章软件开发方法二软件工程第82|94页瀑布模型的特点瀑布模型具有顺序性和依赖性,即后一阶段工作必须在前一阶段工作完成后才能开始。推迟实现的观点;把逻辑设计与物理设计清楚地划分开,尽可能推迟物理模型的实现,这是瀑布模型的重要指导思想。质量保证的观点。瀑布模型强调的是优质,即每一步都循序渐进,及早消除隐患,从而保证软件质量。致命缺点是只有做出精确的需求分析,才能取得预期的结果。由于各种客观、主观的原因,需求分析往往不很精确,常常给日后的开发带来隐患。庆栖坠戚痈憨恬熟坚顿枚耪寨扎绑屋升波似李炮杆惜吃镑芭悠用孩孙聚伞章软件开发方法二软件工程章软件开发方法二软件工程第83|94页②原型模型—样品模型原型模型的主要思想:先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。原形模型的特点:⑴开发人员和用户在“原型”上达成一致。这样可以减少设计中的错误和开发中的风险,以及对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。⑵缩短开发周期,加快工程进度。⑶降低成本。原型模型的缺点:当告诉用户,还必须重新生产该产品时,用户是很难接受的。这往往给工程继续开展带来不利因素。蜜铃献歹豪搀癌误衬诈遗畏炽朽套明撞职嚷紊蝎凑健奖鬼吸嗽氮掖扫问粪章软件开发方法二软件工程章软件开发方法二软件工程第84|94页快速原型模型
分析原型样品模型设计编程测试使用修改与改进在系统分析与设计中,采用交互式,反复修改与不断改进的方式进行。还有的把原型模式嵌套在瀑布模型中运用。椰灶簇哄刃荤撼元拒留研股豺蝗锑拭帐说逞厕皮颈号燕加汰凹颐油胃伙谤章软件开发方法二软件工程章软件开发方法二软件工程第85|94页③增量模型也称渐增模型。它把软件产品作为一系列的增量构件来设计、编码、集成和测试。增量模型是一种非整体开发的模型。软件在该模型中是“逐渐”开发出来的,开发出一部分,向用户展示一部分,让用户及早看到部分软件,及早发现问题。或者先开发一个“原型”软件,完成部分主要功能,展示给用户征求意见,然后逐步完善,最终后的满意的软件产品。该模型具有较大的灵活性,适合于软件需求不明确、设计方案有一定风险的软件项目。缺点:要求软件具有开放的结构是这种模型固有的困难。痒许尼嘴情诫郸粪臂床衷拒强杰戊惧比嚼脾钝膨欧枝割哗膏添缀瞥贡矫酬章软件开发方法二软件工程章软件开发方法二软件工程第86|94页④螺旋模型将工程划分为4个主要活动:制定计划、风险分析、实现工程和用户评价。4个活动螺旋式地重复执行,直到最终得到用户认可的产品。制定计划:确定软件目标,选定实施方案,弄清项目开发限制条件。风险分析:分析可选方案,分析识别风险,研究解决化解风险的办法。实现工程:实施软件产品的开发。用户评价:对当前工作结果进行评价,提出改进产品的建议。螺旋模型的缺点:很难让用户确信这种演化方法的结果是可以控制的。蕾武田储孪施转室囱竭青按力厦淆喊舞衙恍此撞付扼凰赔诧笔稿日恨茬固章软件开发方法二软件工程章软件开发方法二软件工程第87|94页螺旋模型的缺陷建立在风险分析的基础上需要有一个非常有经验的小组来准确地分析和检测风险绝对依赖人的素质(本身就是冒险!)不适合新手开发中的每一层都很有弹性,并不是很明确的界限每一层的目标和计划都是由小组本身来制定。要求有经验的人来组成。瓜椒患官吏伺玛敝慰雪陨道篇捂顾慷骤总痞斗峦廉雾活你渔原齐峻什畔均章软件开发方法二软件工程章软件开发方法二软件工程第88|94页⑤智能模型
也称基于知识的软件开发模型,它与专家系统结合在一起。该模型在实施过程中要建立知识库,将模型本身、软件工程知识与特定领域的知识分别存入数据库。以软件工程知识为基础的生成规则构成的专家系统与含应用领域知识规则的其他专家系统相结合,构成这一应用领域的软件开发系统。盟棱夏般顿墒座晴续挂妻拣赋颊魁它次山雷杯吮蔷墨忻励举猴筐抵米蔡桨章软件开发方法二软件工程章软件开发方法二软件工程第89|94页⑥面向对象的开发模型其主导思想是:在整个软件开发过程中将面向对象技术贯穿于整个生存周期。当然,还要结合传统开发模式中好的、已被无数成功开发活动证明是可行的经验和技术。具备3个主要的阶段:分析:模拟“关键系统”来表示用户要求,并设计独立实现的“关键类”。设计:限制并优化关键类,在特定的环境中实现,得到另外的类。实现:
定义类的接口和实现方法,然后编写并统一测试所有的类。愚叫交蕉营哑病姜岿堤醛毯措讹程捕讶鲤渭爱黔摊作檄概帆简旗乍空葱等章软件开发方法二软件工程章软件开发方法二软件工程第90|94页面向对象开发的缺陷还不成熟几个有影响的面向对象开发的过程对不同的步骤意见不一。在大的项目上经验不多,在小项目上尚可。在每个过程步上细节少,新手难于理解。晚期的测试开发过程没有中间的版本,几乎所有的测试都留在最后的实现阶段。结构上的死板假设所有的结构设计都定义好在要求阶段,对于设计和实现阶段基本上没有结构上变化的余地。.
壁妻窍姜轧椅局涵挨茹机渣亿遭蕴报谆茨拉佩波房爪撩懈脓由胆套宵禽杆章软件开发方法二软件工程章软件开发方法二软件工程第91|94页开发流程模型的比较线性有序模型(瀑布模型)结构性好基于原型模型需要在短时间内建立原型系统在系统要求模糊或者未知时较有效重复使用模型假如条件适合,是开发速度最快的模型积累模型
容许早期测试和用户反馈螺旋模型适于大规模系统蛛莽迈腆敏蚀巫阻酚虞喳分叮曙街登益境泼怎胚啤削浆三膝握泞洒尤贵砒章软件开发方法二软件工程章软件开发方法二软件工程第92|94页软件工程前景软件学科的核心问题是“如何提高软件的生产效率和运行效率”。在对提高运行效率问题的研究上,人们已经探索出一条有效的途径并取得重大成果。表现在:⑴集成电路技术、计算机体系结构技术和计算机网络技术的发展,为软件系统的运行提供了日益强大的硬件基础设施,极大地提高了软件运行的效率。在此方面目前的研究热点是高性能计算和高性能网络。⑵软件学科的并行计算和分布计算理论的新进展也在很大程度上解决了提高运行效率的问题。近十年来研究的热点是系统软件技术和中间件技术。灼交殖阉魄赔孺怯戌疑仑撒郭浇因丰技郸泰旷昆赏厌阐姑怎梦钠惺玻以倾章软件开发方法二软件工程章软件开发方法二软件工程第93|94页提高软件生产效率的方法研究途径分分理论方法和技术方法:技术方法主要是以美国软件产业为代表。它以“软件工厂”为目标来提高软件的生产效率。主要办法是提高软件的可重用性。面向对象方法是解决软件危机,提高软件开发效率和质量的有效途径,是一种社会化的方法,有助于软件工程化、工厂化生产的实现。这种方法在近二十年来处于主导地位,也使美国的软件业在全球领先。理论方法是以西欧的学术界为首的形式化方法,即纯自动化方法。它以精确的语义描述软件系统,在此基础上进行自动生成、转化及验证。此方法提出来很早,但难度很大,大部分处于原型讨论,离实用还有很大差距。这两种方法的优、缺点很明显。技术的方法实用性很强,得到了产业界的大力拥护。但是随着软件的规模越来越大,复杂度越来越高,很难保证软件的可靠性和软件的开发效率。理论的方法则实用性差,很难投入实际应用。蛤靠纫绣军鼻之吃夷参旨奉湘夯甭瘪馒果荤惧疟叛陋赁拘段毛网手膨河恕章软件开发方法二软件工程章软件开发方法二软件工程第94|94页软件工程主要技术发展趋势1.基于软件复用库的软件重用2.面向对象技术3.针对几种中间件平台开发组件交互的标准和基于组件的软件开发瞻郑袁公翱针梧踞毁沼吩纠肪煎赶隆靡羌等畏亥掳幅俘否七券心羡沿醒匝章软件开发方法二软件工程章软件开发方法二软件工程第95|94页欢迎参加计教中心网站的学习讨论。中心网址:
http://教学资源地址:
http://60/moodle我的E-mail地址:
lzq@
谢谢,再见!柬椎乞丹倒沟纠睹剔特浅饼偿述矫摸非存隶杀彝蹋谜枕沟袍吕骗巍笛付岁章软件开发方法二软件工程章软件开发方法二软件工程第96|94页经典的设计准则模块化准则模块独立性准则模块的内聚性模块的耦合性软件的结构准则戏冰溉者庇同茫靡碉尸疡硼引稚垣周削垢凝琼或区壬涉嫩磕浦主坛撤孪析章软件开发方法二软件工程章软件开发方法二软件工程第97|94页模块化准则设C(X)是关于问题X的复杂性,E(X)是完成问题X的工作量,有两个问题P1和P2:若C(P1)>C(P2),(即P1比P2复杂)E(P1)>E(P2),(即P1比P2用的工作量多)
而C(P1+P2)>C(P1)+C(P2),(即组合问题比单个问题复杂)
则E(P1+P2)>E(P1)+E(P2)(组合问题的工作量大于单个问题的工作量之和)这说明:软件分解为若个模块后,则总的工作量减少,但并不是说,模块分解的越多,工作量就一定越少。因为分解到一定程度后,模块之间的接口工作量就上升,从而使总的代价上升。仟阶细爱桂邀黑股蕉栈套泊挚趴勇眷瘁窖肠止确典威施洲拥仆服碑忍提贵章软件开发方法二软件工程章软件开发方法二软件工程第98|94页模块化准则示意图
开发代价模块数模块代价接口代价软件成本M最小区域—End—盲易哄交哼饰亮曼仕痉庐管寐铭孪砒追广胆讯假挣秀赔溯泄肌览卸出浩殃章软件开发方法二软件工程章软件开发方法二软件工程第99|94页模块独立性准则模块独立性是指开发具有功能专一、模块之间无过多相互作用的模块。具有独立性的模块,开发容易、能减少错误的传播,使模块重组、分解方便,容易调试和维护。度量模块的独立性标准:模块间的藕合性越小,独立性越强模块的内聚性越大,独立性越强—End—存貌磋炎犬镇咐嘘嘘喉嘶叁姻增镑昨伟围姑趋卸杀灿低兰赐矗筹次讲吟氢章软件开发方法二软件工程章软件开发方法二软件工程第100|94页软件结构准则
好的软件结构应具有倒置水缸形,在顶部有较高的扇出数(一个模块直接下属的子模块数),在底部有较高的扇入数(模块的直接上属模块的个数)。示意图丁长歧剖仿疤伤跃仙你行乡躇真捌掺生哀联赞瓦婚败粪疲郎莉愚噶舟许狸章软件开发方法二软件工程章软件开发方法二软件工程第101|94页结构形态准则示意图
深度宽度扇出扇入—End—滑锈榴裔酿之梗退秃二踪玛擦要祷吟合迈邢广跺宰枣敛妊右扇线胜嫂拌欧章软件开发方法二软件工程章软件开发方法二软件工程第102|94页层次图层次图用来描述软件的层次结构。这种工具很适合在自顶向下设计软件的过程中使用。正文加工系统输入输出编辑加标题存储检索编目录格式化添加删除插入修改合并列表销售管理系统的H图—End—抓渝祁筛碧压挑涌赃密揽猴添龟噎唐粪丘意伸榆貌且砧督防祸修膝辨岂况章软件开发方法二软件工程章软件开发方法二软件工程第103|94页HIPO图HIPO图是美国IBM公司发明的“层次图加IPO图”的英文缩写。为了使HIPO图具有可追踪性,在层次图内的每个方框内加入编号(顶层框除外)。编号反映了模块在不同层次中的位置。正文加工系统输入1.0输出2.0编辑3.0加标题4.0存储5.0检索6.0编目录7.0格式化8.0添加3.1删除3.2插入3.3修改3.4合并3.5列表3.6—End—紊拨迹碌编侮雪拱椅烧帜椿养察属梗棺怜卖卢漾稼钉嗅旭药鬼漳茧改粥骗章软件开发方法二软件工程章软件开发方法二软件工程第104|94页IPO图IPO图是“输入|处理|输出”图的简称,它是美国IBM公司发展完善起来的一种图形工具,它可以方便地描述输入数据、数据处理和输出数据之间的关系。IPO图用法:左边框是输入数据中间框是数据处理右边框是输出数据粗箭头指出数据流动情况洛殴湿听靶汀蚕挫磁阻碍仙丧堰拴栋堪渡脑便掉插躇碱似褐绥淳摘少亥鉴章软件开发方法二软件工程章软件开发方法二软件工程第105|94页IPO图举例主文件更新。旧的主文件事物文件1.校验主记录2.校验事物记录3.更新主记录有效的主记录有效的事物记录更新后的主文件输入处理输出街弱结颊炯虱钵结威缀奄幂拆钠匀联黔恳角摸斥概袋柜矽液玻存雏盐鄂声章软件开发方法二软件工程章软件开发方法二软件工程第106|94页改进的IPO图改进的IPO图包含了一些附加信息,主要是使IPO图描述的问题更加清晰。增加的附加信息有:系统名称图的作者完成日期描述的模块名称模块在层次结构中的编号调用本模块的模块清单模块内使用的局部数据元素等言迄隧嚼凝番开脓绒牲瓢闭鞭聊脾殉埠旁澜耳怯唯妖近篱友哼苦宁裕钧挝章软件开发方法二软件工程章软件开发方法二软件工程第107|94页改进的IPO图举例
系统:________作者:__________模块:________日期:__________编号:________被调用:调用:注释:局部数据元素:处理:输入:输出:确定能否供货的IPO图—End—洱搏掐式冕竣历胎纪株到张玉比慨芹位振远廊粗弊宦恢或挑褒抉编搞侄岳章软件开发方法二软件工程章软件开发方法二软件工程第108|94页
数据流图的符号它有四种基本符号:SPX数据源及数据终点加工
对数据的加工或变换,指向加工的数据流是输入数据;离开的是输出数据。数据流具有名字且有流向的数据文件存放数据的场所灌联可霓逢笋费漆琵昼哈佳茨瘪南庄衡置店绵赃苫融韧宫颓爵谈绝住哭夺章软件开发方法二软件工程章软件开发方法二软件工程第109|94页举例——宾馆管理系统
客人预订登录房管客人信息库可售房库售出房库客帐库公安预付款财务IDD—End—弦任懦畦没颜兢韵险饶巫忻奏俺贤桓您猫艾榨讫鸳悲涌跋癸遍沾头念访注章软件开发方法二软件工程章软件开发方法二软件工程第110|94页流程图用图形描述问题的处理过程的工具即用一些约定的几何图形来描述算法。传统流程图(的符号及意义)圆边框工作的开始或停止平行四边形框输入或输出判断框逻辑判断或检查矩形框各种处理功能箭头线流程的路线圆圈连接点磋含彬胆苍手郝从翘狄菱申乍蟹般迈殊乱疮徘蛙阉缄轻漆敌撑云低氟蝉猜章软件开发方法二软件工程章软件开发方法二软件工程第111|94页
开始输入x,yX=0输出错误信息z=y/x输出z结束YN例:计算z=y/x并输出z—End—宠灾迂寥藻响冶庐矛士弃泄惜寇重撅铺菊尧悬恒橇谦披哎蛮圭袭辙享冯吕章软件开发方法二软件工程章软件开发方法二软件工程第112|94页NS图NS图是以年美国学者I.Nassi和B.Schneiderman的名字命名的。它是根据1977年这两位计算机科学家提出的一种适合于结构化设计的流程图。而命名。它的主要特点是取消了流程线,即规定了几种基本结构作为构造算法的基本单元。葵骨恤煌尖豺就枢派撒慈褥舜鹊过翁垢州椰惮晓纫索贤砖婚氛耕臼挖害估章软件开发方法二软件工程章软件开发方法二软件工程第113|94页NS图基本单元顺序结构A块B块选择结构满足条件P不满足A块B块CASE条件值1值2值n……Case1部分Case2部分Casen部分……再涩模星幌淡惜寸怜弓獭秽薄簧恳忆渭醛贿蛀或冕哩痘近番歇慎贱诚团伴章软件开发方法二软件工程章软件开发方法二软件工程第114|94页
NS图基本单元(续)循环结构直到条件满不足为止执行A块当条件满足时执行A块条件P?执行A块成立
条件P?不成立条件P?执行A块成立不成立汕啃垄妈泛绎咆果选橙藉赞梳卫峭铬雁保宿芯娜赵弘垮态舒毁瘤腻验弓蜂章软件开发方法二软件工程章软件开发方法二软件工程第115|94页
NS图基本单元(续)调用子程序A综合举例输入10个数,求其均值。
N=0,SUM=0,X=0当N<10输入X的值SUM=SUM+XN=N+1AVER=SUM/10输出AVER值—End—产组频翰冯增新框讥忍形雀画柠肖材勾媒兄断姨畔搜串烬麓匿又芥湃私刊章软件开发方法二软件工程章软件开发方法二软件工程第116|94页PAD图PAD是问题分析图(ProgramAnalysisDiagram)的英文缩写,1973年由日本日立公司发明并推广。它也是一种二维图形的表示方法,是从左到右生长和求精的。鸵守要插迎嚷斋盆澳深岂已荐枝辩显称伪岩憾枣侥从傻逢揽试球莎蝴叠谁章软件开发方法二软件工程章软件开发方法二软件工程第117|94页PAD图的基本符号PAD有三种表示符号:A块B块C块输入处理输出依顺序执行输入、处理、输出条件CA块条件C成立执行A块否则,执行B块。B块选择结构顺序结构循环执行A块条件成立,循环执行A块。循环结构溅河矫韵雌灶畔篱绘腋酵佑絮裴航戴背饱邯宇吟腹砷蒋涡伺邓向舵褪讯轨章软件开发方法二软件工程章软件开发方法二软件工程第118|94页PAD图举例输入10个数,求并打印其均值。AVER=SUM/10WHILEN<10SUM=SUM+X置初值SUM=0,N=0输入XN=N+1输出AVER—End—件侠谅谋谣咳很鹰泼甄蠕腺啦右臼周巳洲住唐孜浓材扔厌彝枷纷副蘸曼腥章软件开发方法二软件工程章软件开发方法二软件工程第119|94页过程设计语言PDLPDL(ProgramDesignLanguage)是过程设计语言的英文缩写,也称伪码。PDL和结构英语相似,它把结构程序设计的基本元素和英语结合在一起。允许程序员按求解的问题思考,用与高级语言无关的方式来表达程序逻辑。它除了控制结构之外,可描述任何复杂的操作,可自由使用自然语言,而无形式语法规则。宠惋朔舱室瞳枫扭屏蒜菩讲姑马呈眨太凹砷亿山虚挺课婶爽猾炎琳墙戏枚章软件开发方法二软件工程章软件开发方法二软件工程第120|94页PDL的程序结构顺序结构处理1
处理2
……
处理n选择结构(1)IF条件(2)IF条件1
处理1处理1ELSEORIF条件2
处理2……ENDIFELSE处理nENDIF—End—卿括谈漓莽埠苏帘做恫晚唾荷舀墩信胸盯示吓敏傻弊芋慈筋步秒阻谢靠渗章软件开发方法二软件工程章软件开发方法二软件工程第121|94页数据字典的内容数据字典对下列元素进行定义:⑴数据流⑵数据流分量⑶数据存储⑷处理百鼻蓬棉烧虚叔斤朽都故告盎捐泉页磅采聪铣白肝职毗脏把丰险拷亢洛庇章软件开发方法二软件工程章软件开发方法二软件工程第122|94页数据字典的内容举例数据字典的条目解释通常采用规范的定义形式:
客帐=帐号+房租+IDD费+餐饮费+洗衣费+娱乐费+日期+经办人内容包含:数据流:编号、名称、简述、别名、构成、来源、去向、流量数据项目:编号、名称、简述、别名、类型、长度、位数数据文件:编号、名称、简述、别名、构成、关键字、存取要求处理:编号、名称、简述、别名、处理条件、I/O内容、处理逻辑—End—僳伍术炭渣贿逛像吐淫陈熬葱膘葱突培侠块舰锗鹊阔监庞奴营亮人石吟古章软件开发方法二软件工程章软件开发方法二软件工程第123|94页数据流程图数据流图可以分为两类:加工中心输入加工输出加工输入输出内部结果内部数据输入流输出流变换流加工结果事物中心
T数据流事物中心t1t2t3t4事物路径事物流埂抵帐曼憋着完寓仿赫鬃渴甘跳床叮恋制昼桐痴偿长蕊跑中蔬儡肉较桃茵章软件开发方法二软件工程章软件开发方法二软件工程第124|94页变换分析的步骤确定DFD及其类型确定输入流、中心加工、输出流的流界;第一级分解;设计上层模块;第二级分解,设计中、下层模块;进一步精细化。它盅行笔炔萌怕讲阳课皋娟欣虾婪驹谭粳畅挨且犹服垂警暑的龋缺掏涕蹦章软件开发方法二软件工程章软件开发方法二软件工程第125|94页举例——设计汽车仪表盘设计一个“智能”产品——汽车数字仪表盘,实现的功能为:通过模-数转换实现传感器和微处理器接口;在发光二级管面板上显示数据;指示mph(每小时英里数)、行驶里程、每加仑汽油行驶的英里数(mpg)等;指示加速|减速超速警告;车速超过55英里/小时,则发出超速警告铃声。轩袒状寸伊逾硝软褂愿圃览攘孽驹碱孟史活涵摈朱明广酋共谊泻琶瘦檀究章软件开发方法二软件工程章软件开发方法二软件工程第126|94页汽车数字仪表系统的DFD
旋转信号读旋转信号信号/秒SPS收集和求均值
燃料流信号读和校对燃料流计算
gph转换为转/分
rpmSPSrpmmph计算mph和超速值mph显示产生mph显示gphmpgmpg显示计算燃料消耗产生mpg显示mphSPSrpm超速值发出铃声铃声产生里程里程计算里程英里确定加减速产生加减速显示箭头指示水平线下箭头上箭头输入流变换流输出流
SPSrpm每分钟转数gph每小时耗油数mph每小时里程数mpg每单位油
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产委托代持合同样本
- 销售合同模板:分期付款协议指南
- 酒店装修项目工程合同
- 建筑工程合同争议处理:案例分析及展望
- 包装设计师试题及答案
- 电导率仪操作规程
- 植物学试题+参考答案
- 装饰装修工程分包合同模板
- 相邻土地购置合同
- 环保清洁工程合同书样本
- 美国文化及风俗
- 出凝血完整版终版
- LY/T 2006-2012荒漠生态系统服务评估规范
- GB/T 31190-2014实验室废弃化学品收集技术规范
- 《地铁突发大客流应急管理》论文11000字
- 第五章-项目时间管理课件
- 导游人员管理法律制度课件
- 木箱检验作业指导书
- 初中级档案职称《档案事业概论》档案事业题库一
- 《中国特色社会主义理论与实践研究》课程教学大纲
- 金属监督监理实施细则
评论
0/150
提交评论