全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一讲 软件工程与软件开发模型11 软件危机与软件工程一、软件危机 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,具体说,软件危机主要有下述一些表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成”的软件系统不满意;3软件产品的质量不可靠;4软件不可维护;5软件没有完整的文档资料;6软件开发进度延误、开发费用激增等等。为了解决软件危机,必须采取必要的项目管理措施和技术措施(方法和工具)。软件工程正是从管理和技术两个方面研究如何更好地开发和维护计算机软件。二、软件工程软件工程是一门指导计算机软件开发和维护的工程学科。它借鉴传统的工业工程思想,运用系统的、规范的、和可定量的方法对软件进行开发、运行和维护。它主要讲述软件开发的道理,是软件实践者多年来成功经验和失败教训的总结。软件工程的目标,是提高软件质量和软件生产率。软件工程的主要环节:人员管理 + 项目管理学习软件工程不在于机械地照搬条条框框,关键在于应用。三、软件工程的六条基本原则1用分阶段的生命周期计划严格管理软件开发过程不成功的软件项目大部分是由于没有计划、或有计划但执行力不强造成的。所以不同层次的项目管理人员必须严格按照计划各尽其职地工作,不得受任何影响而擅自背离预定的计划。2坚持进行阶段评审实践表明,软件系统的大部分错误是在编码之前造成的,如软件需求分析或系统设计的错误等,这些错误发现与改正的越晚,后期所付的代价就越大。因此必须坚持在软件开发的几个关键阶段进行严格评审,以尽早发现并及时纠正错误。 3实行严格的产品控制 在软件开发过程中不应随意改变需求,当难免改变需求时,为了保证软件各个配置成分的一致性,必须实行基准配置管理。基准配置又称为基线配置,它们是经过阶段评审后的软件配置成分(即各个阶段产生的文档或程序代码)。基准配置管理又称为变更控制,一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审,获得批准后才能实施修改,不允许谁想修改就随意进行修改。 4采用现代的程序设计技术如:结构化程序设计方法等。5应能清楚地审查阶段性结果因软件产品不是物理产品,是看不见摸不着的逻辑产品,所以软件开发的进展情况可见性差,难以准确度量。为了较为准确地掌握控制开发进度,可根据项目的总目标及完成期限,及时进行阶段性结果的审查,如:审查软件需求说明书、软件设计书等。即牢牢建立所谓“里程碑”的思想意识,是保证软件质量的好办法。6开发小组的人员应该少而精素质高的人员的开发效率比素质低的人员的开发效率可能高很多倍,且开发出现的错误明显少;此外,当小组人员多时,通信开销将急剧增加。所以,组成少而精的开发班子是软件工程的一条基本原则。问答:如果某项软件开发落后于计划,可否增加更多的程序员来解决?12 软件开发的三种基本策略 1软件复用复用就是指“利用现成的东西”,文人称之为“拿来主义”。把复用的思想用于软件开发,就称为软件复用。软件复用的思想是:构造新的软件系统可以不必每次从零开始,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。其中的软构件是指具有一定集成度并可以重复使用的软件单元。 软件复用的内涵包括了提高软件的质量和软件生产率。因为从经验可知,在一个新系统中,大部分的内容是成熟的,小部分的内容是创新的,而成熟的东西总是比较可靠的(即具有高质量),把大量成熟的东西通过复用来快速实现(即具有高生产率)。试想,如果同样功能的程序被重写了多次,真是极大的浪费。所以,面向对象学者的口头禅是:“请不要再发明相同的车轮子了”。 软件复用的优点:合理化并简化了软件开发过程,减少了总开发工作量与维护代价,降低了软件开发成本提高了软件生产率。面向对象方法如微软公司的COM规范,就能很好地应用于实现大规模的软件复用。问答:复用是人类懒惰的表现,还是智慧的表现?为什么?2分而治之就是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。在软件开发中,如软件的体系结构设计、模块化设计都是分而治之的具体体现。软件人员在执行分而治之时,应着重考虑:将复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效的解决原始的复杂问题? 3优化 折衷软件优化是指优化软件的各个质量因素。如提高运行速度、提高内存的利用率、使用户界面更友好、使三维图形的真实感更强等等。必须认识到:优化工作不是可有可无,是必须要做的事,是软件开发人员的一种责任。但愿意做并不意味着就能把工作做好。优化工作的复杂之处是很多目标之间存在着千丝万缕的关系,当不能够使所有目标都同时得到优化时,就需要“折衷”策略。软件的折衷策略是指通过。重要原则是:不能使某一方损失关键的职能,更不可以象“舍鱼而取 掌”那样抛弃一方。如3D动画软件的瓶颈是速度,如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感。所以软件折衷的立场是:在保证其它因素不差的前提下,使某些因素变得更好。13 软件生命周期与软件开发模型生命周期方法学将软件开发过程划分为若干个相对独立的阶段,每个阶段完成一些明确的任务,交出相应的阶段性成果(文档或程序)。在完成每个阶段的任务时采用相应的方法、技术和工具,并进行严格的管理和技术审查。生命周期方法学的关键,是使软件开发过程系统地有条不紊地从抽象的逻辑概念逐步发展到具体的物理实现。软件开发模型是软件开发过程的结构性框架。它用一定的流程将软件开发过程中的各个环节连接起来,用规范的方式完成软件开发,如同工厂的流水线。它体现了软件开发的生命周期。一、软件生命周期各个阶段的基本任务:1问题定义此阶段必须回答的关键问题是:“要解决的问题是什么?”。通过对系统实际用户的访问调查,提出关于问题的性质、工程目标和规模的书面报告。还有必要与用户认真讨论这份报告,澄清含糊不清的地方,改正理解不正确的地方,得出一份双方都满意的文档。(尽管此阶段的工作很必要,但在实践中往往被忽略)2可行性分析此阶段要回答的关键问题是:“对于问题定义阶段确定的问题有可行的解决办法吗?”。这个阶段不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。系统分析员的主要任务是更具体地确定项目的规模和目标;并对项目进行仔细的成本/效益分析。可行性分析结果是决定“做还是不做”。为组织决策提供有价值的证据。如某软件公司要求市场人员拿项目必须遵循三条原则:一是项目能赚钱;二是所拿的项目公司有技术优势,项目做完后对公司的技术有新的积累;三是用户好配合、容易沟通。3用户需求分析用户需求分析的任务是:“确定目标系统做什么?”。即目标系统必须具备那些功能。在软件开发的生命周期中,需求分析是最最重要的一个环节。实践表明,在需求分析阶段犯的需求不清的错误,在开发后期可能要几十倍的代价来偿还。因此,对于任何一个软件项目,做好前期的用户需求分析至关重要。4结构化系统设计结构化系统设计的主要任务是在前期需求分析的基础上,针对给定的问题给出软件解决方案,即确定“怎么做?”。系统设计是把需求转化为软件系统的最重要的环节,其优劣在根本上决定软件系统的质量。系统设计比纯粹的编程困难得多,即使你清楚用户得需求,却未必知道应该设计什么样得软件系统 - 既能赚钱最多又能使用户满意。系统设计又分为总体设计和详细设计。总体设计实现目标系统的模块结构,以及各模块之间的调用关系,每个模块都是一个黑盒子;每个模块的详细描述则是详细设计的任务。系统设计主要有以下四个方面的内容:(1)体系结构设计(如同人的骨架);(2)模块设计(如同人的器官,具有特定功能);(3)数据结构与算法设计(如同人的血脉和神经,它让器官具有生命并发挥功能。它分布在体系结构和算法中,协调系统的各个功能);(4)用户界面设计(如同人的外表,让人一见钟情或一见恶心)。5程序编码此阶段的关键任务是编写出正确的、容易理解和容易维护的程序模块。并仔细测试编写的每一个模块。6软件测试软件测试的主要任务是通过各种测试技术或测试手段验证软件系统是否达到预定的要求。最主要的测试有单元测试(注意:要与程序开发同步进行)、集成测试和验收测试。集成测试是根据系统设计的软件结构,把经过单元测试的模块按某种策略装配起来,在装配的过程中对程序进行必要的测试。验收测试则是按照软件规格说明书的规定,由用户对目标系统进行验收。在测试中,应该用正式文档资料把测试计划、详细测试方案及实际测试结果保存下来,作为软件配置的一个组成部分。程序设计与软件测试的关系: 习惯观念: 程序设计在前, 测试在后。 实际上将测试分为同步测试与总测试更有效,如: 程序设计(同步测试或单元测试)、 总测试7软件运行与维护软件维护的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有以下四类维护:(1)改正性维护:就是诊断和改正软件使用过程中发现的软件错误;(2)适应性维护:即修改软件以适应环境的变化;(3)完善性维护:即根据用户的要求改进或扩充软件使它更完善;(4)预防性维护:即修改软件为将来的维护活动预先做准备。二、软件开发模型1、瀑布模型(线形模型)如下: 可行性与需求分析 -结构化系统设计 -程序设计 - 测试 - 维护 尽管线性模型不再适合现代复杂的软件开发,但我们应该理解“线性精神”。因为线性是人们最容易掌握并能熟练应用的思想方法。即人们总是习惯于把一个复杂的“非线性”问题,分解或转化为一系列简单的线性问题,然后逐个解决。一个软件系统的整体可能很复杂,而单个子程序是简单的,可以用线性的方式来实现。所以,线性是一种简洁,简洁就是美。软件工程的其它模型都能找到线性模型的影子,如演化模型实质上是分段的线性模型,螺旋模型则是连接的弯曲了的线性模型。所以无论哪一种软件工程模型,都少不了线性模型的各个环节。 2、快速原型模型 收集并听取用户需求 建立/修改原型 用户测试运行原型系统(不断循环此过程)其目的是帮助用户(或开发者)理解需求。关键问题是:原型被建造只是为了定义需求,之后就被抛弃(或少部分被抛弃),实际软件是在充分考虑了质量和可维护性之后才被开发。存在问题:原型只是工作版本,真正的系统必须重建立;开发者为了原型能够尽快工作,可能采用了不合适的操作系统或设计语言或效率低的算法,当选择成了习惯,那些不合适的选择就成了系统的组成部分。原型是什么?答:在软件开发的原型化方法中,原型是指软件的一个早期可运行的版本,它反映最终系统的部分重要特性。3、增量模型 结合了线性模型的基本成分和原型的迭代特征。 增量1: 分析 设计 编码 测试 第一个增量的发布增量2: 分析 设计 编码 测试 第二个增量的发布增量3: 分析 设计 编码 测试 第三个增量的发布增量4: 分析 设计 编码 测试 第四个增量的发布 它采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。 第一个增量往往是核心产品即实现了基本需求,交用户使用后,建立下一个增量开发计划。该计划包括对核心产品的修改使其更好地满足用户地需求,并发布一些新增的特点和功能。这个过程在每一个增量发布后不断重复,直到产生最终的完善软件系统。 从上可见,该模型也具有迭代特点,但与原型不一样,它强调每一个增量发布一个可操作产品。早期增量是最终产品的“可拆卸”版本,它提供了给用户服务的功能,也提供了给用户评估的平台。 优点:能够有计划地管理技术风
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年资产评估师之资产评估基础考试题库及答案
- 心律失常的紧急护理措施
- 护理服务创新实践
- 2026年河南周口项城市镇基层事业单位招聘208人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南驻马店市人民政府办公室(12345市政服务热线)招聘24人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南省漯河市第二批事业单位招聘422人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南濮阳市南乐县事业单位引进人才120人易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南安阳殷都区事业单位招聘考试笔试易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河南信阳市政务服务中心招聘20人(劳务派遣制)易考易错模拟试题(共500题)试卷后附参考答案
- 2026年河北衡水桃城区招聘事业单位人员易考易错模拟试题(共500题)试卷后附参考答案
- 艺人助理合同协议
- 陈皮厂家仓库管理制度
- GB/T 45355-2025无压埋地排污、排水用聚乙烯(PE)管道系统
- 人教五四 六年级 下册 语文 第五单元《中国有能力解决好吃饭问题 第一课时》课件
- 商务合作意向函
- 2025年民营医院工作总结及2025年工作计划
- DB64-266-2018:建筑工程资料管理规程-151-200
- 企业背景调查报告模板
- 精读《未来简史》学习通超星期末考试答案章节答案2024年
- 人教版六年级下册数学总复习导学案
- 信息技术(基础模块)(WPSOffice)中职上下两册全套教学课件
评论
0/150
提交评论