



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学导论 讲稿第十讲第十章 软件工程一、软件工程的产生?软件的特点 “软件”一词是20世纪60年代才出现的,它是指:计算机程序及其说明程序的各种文档。软件与硬件一起构成完整的计算机系统,它们是相互依存,缺一不可的。软件是一种特殊的产品,它具有以下独特的特性。软件是一种逻辑产品,它与物质产品有很大的区别。软件产品是看不见摸不着的,因而具有无形性,它是脑力劳动的结晶,它以程序和文档的形式出现,保存在计算机存储器和光盘介质上,通过计算机的执行才能体现它的功能和作用。软件产品的生产主要是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量软件产品。软件产品不存在磨损、消耗问题。软件产品生产的成本主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做”的。软件费用不断增加,软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本非常高。自从第一台计算机诞生以后,就开始了软件的生产,到现在为止,经过了三个阶段。即程序设计时代,程序系统时代,软件工程时代。1.程序设计时代(1964年1956年) 这个阶段的生产方式是个体手工劳动,使用的工具是机器语言,汇编语言。2.程序系统时代(1956年1968年) 这阶段的生产方式是作坊的小集团合作生产,生产工具是高级语言,开发方法仍旧靠个人技巧,但开始提出结构化方法。3.软件工程时代(1968年至现在) 这阶段的生产方式是工程化的生产,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。软件危机软件设计往往只是为了一个特定的应用而在指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、个人使用、个人操作、自给自足的私人化的软件生产方式。软件系统的规模越来越大,复杂程度越来越高,软件可靠性问题也越来越突出。原来的个人设计、个人使用的方式不再能满足要求,迫切需要改变软件生产方式,提高软件生产率,软件危机开始爆发 。现象 早期出现的软件危机主要表现在: 软件开发费用和进度失控。 费用超支、进度拖延的情况屡屡发生。生产出来的软件难以维护。 解决途径 在软件开发过程中人们开始研制和使用软件工具,用以辅助进行软件项目管理与技术生产,人们还将软件生命周期各阶段使用的软件工具有机地集合成为一个整体,形成能够连续支持软件开发与维护全过程的集成化软件支援环境,以期从管理和技术两方面解决软件危机问题。此外,人工智能与软件工程的结合成为80年代末期活跃的研究领域。基于程序变换、自动生成和可重用软件等软件新技术研究也已取得一定的进展,把程序设计自动化的进程向前推进一步。在软件工程理论的指导下,发达国家已经建立起较为完备的软件工业化生产体系,形成了强大的软件生产能力 。软件标准化与可重用性得到了工业界的高度重视,在避免重用劳动,缓解软件危机方面起到了重要作用。软件危机的形成1.硬件生产率大幅提高如今,计算机的发展已进入一个新的历史阶段;硬件产品已系列化、标准化,即插即用。硬件产品的生产可以采用最高精尖的现代化工具和手段、自动成批生产。生产效率几百万倍的提高。生产能力过剩。2. 软件生产随规模增大复杂度增大以美国宇航局的软件系统为例:1963年 水星计划系统 200万条指令1967年 双子星座计划系统 400万条指令1973年 阿波罗计划系统 1000万条指令1979年 哥伦比亚航天飞机系统 4000万条指令假设1个人一年生产一万条有效指令,那么是否4000人生产一年,或400人生产10年就能完成任务呢?答案是否定的。一万条指令的复杂度决不仅仅是100条指令复杂度的100倍。3. 软件生产率很低伴随计算机的普及,整个社会对计算机应用的需求越来越大。但软件的生产却还沿用手工作坊的生产方式,人工编程生产。生产效率仅提高了几倍。生产能力极其低下。4. 硬、软件供需失衡社会大量需求,生产成本高,生产过程控制复杂,生产效率低等等因素构成软件生产的恶性循环。5. 矛盾引发软件危机由此产生软件危机。软件危机的具体体现1. 软件开发进度难以预测拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例:该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同的航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400 台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,机场的计划者还无法预测行李系统何时能达到可使机场开放的稳定程度。2. 软件开发成本难以控制投资一再追加,令人难于置信。往往是实际成本比预算成本高出一个数量级。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。3. 用户对产品功能难以满足开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这?闭门造车的开发方式必然导致最终的产品不符合用户的实际需要。4. 软件产品质量无法保证系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。软件产品并不是没有错误,而是盲目检测很难发现错误,而隐藏下来的错误往往是造成重大事故的隐患。5. 软件产品难以维护软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。 6. 软件缺少适当的文档资料文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。最典型失败系统的例子是:IBM公司开发OS/360系统,共有4000多个模块,约100万条指令,投入5000人年,耗资数亿美元,结果还是延期交付。在交付使用后的系统中仍发现大量(2000个以上)的错误。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。为了研究、解决软件危机,诞生了一门新兴学科-软件工程学。它把软件作为工程对象,从技术措施和组织管理两个方面来研究、解决软件危机。1.软件工程定义2.软件工程性质3.软件工程目标4.软件工程内容5.软件工程面临的问题6.软件工程过程软件生存周期 生存周期模型: 描述软件开发过程中各种活动如何执行的模型。对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。 生存周期模型作用: 确立了软件开发中各阶段的次序限制,活动准则,所要遵守的规定和限制,便于各种活动的协调,人员之间的有效通信,有利于活动重用和活动管理。生存周期模型准则: 模型能表示各种活动的实际工作方式,能随情况变化而演化能表示各种活动间同步和制约关系,能表示活动的动态特性。容易为开发人员理解,能适应不同软件项目,具有较强灵活性,能支持软件开发环境的建立。瀑布模型:将软件生存周期中各活动规定为依线性顺序连接的若干阶段。包括可行性分析,项目开发计划,需求分析,概要设计,详细设计,编码,测试和维护。它是一种理想的线性开发模式,缺乏灵活,特别是无法解决软件需求不明确的问题。适合于需求不明确,设计方案有一定风险的软件项目。增量模型:软件在模型中是逐渐开发出来的,开发一部分,展示一部分,能及早发现问题。或者先开发一原型软件,完成主要功能,然后逐步完善,最终获得满意的软件产品。 螺旋模型:将瀑布模型与增量模型结合起来,加入风险分析,弥补了这两种模型的不足。开发分四步:制定计划,风险分析,开发实施,用户评估。喷泉模型:以用户需求为动力,以对象为驱运动模型,适合于面向对象开发方法,使开发过程具有迭代性和无间隙性。迭代性:系统有些部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙:在分析,设计,实现等开发活动之间不存在明显边界。 可操作性准确性: 准确性是指软件按照需求正确执行任务的能力。 “准确性”的语义涵盖了“精确性”。 准确性无疑是第一重要的软件质量属性。 任何开发的系统都必须经过系统测试工程师和用户的测试。准确性能够通过诸如故障平均间隔时间、每千行代码错误数、以及用户请求变更数这样的测量指标来度量。效率性: 效率大体上是一个主观的术语。在某些情况下,用户将制定性能标准,例如实时响应必须在1秒之内接收到,成功率在95%,他显然是可测量的。可靠性: 可靠性是指在一定的环境下,在给定的时间内,系统不发生故障的概率。 可靠性本来是硬件领域的术语。比如某个电子设备在刚开始工作时挺好的,但由于器件在工作中其物理性质会发生变化(如发热),慢慢地系统的功能或性能就会失常。所以一个从设计到生产完全正确的硬件系统,在工作中未必就是可靠的。 软件在运行时不会发生物理性质的变化,人们常以为如果软件的某个功能是正确的,那么它一辈子都是正确的。可是我们无法对软件进行彻底地测试,无法根除软件中潜在的错误。平时软件运行得好好的,说不准哪一天就不正常了,如有千年等一回的“千年虫”问题, 时隐时现的错误一般都属于可靠性问题,纠错的代价很高。安全性: 这里安全性是指信息安全,英文是Security而不是Safety。 安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。 “道高一尺,魔高一丈” ,绝对安全的信息系统几乎不存在。 开发商和客户愿意为提高安全性而投入的资金是有限的,他们要考虑值不值得。 究竟什么样的安全性是令人满意的呢? 一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。 易用性: 易用性是指用户使用软件的容易程度。 现代人的生活节奏快,干啥事都想图个方便。所以把易用性作为重要的质量属性对待无可非议。 导致软件易用性差的根本原因 : 开发人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也就会满意。 软件的易用性要让用户来评价。当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界面友好”、“方便易用”等词来评价软件产品。 可维护性可维护性以保护系统正常运行并及时更新为参照。可变性: 系统可改变的难易程度是个主观因素可修正性: 可修正性的一种度量是恢复正常的平均时间,也就是当程序发生故障后使程序恢复运行所花费的时间。灵活性: 用户经常要求在系统中进行变动,灵活性是个定性的属性,试图度量进行这些变动的难易程度。可测试性: 测试工程师有各种因素的检测清单来评估系统的可测试性。可迁移性可迁移性是指把数据和(或)系统从一个平台一移到另一个平台并重用代码的能力。代码可重用性: 如果编写的函数可以在不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试析创业板公司激励性股票期权制度研究
- 公司流程制度管理制度
- 安徽省鼎尖联考2024-2025学年高二下学期5月月考语文试卷(含答案)
- 江苏开放大学2025年春大学英语(A)复习题2参考答案
- 贵州省毕节市2024-2025学年高三下册第二次模拟(3月)数学试卷
- 多模态命令解析技术-洞察阐释
- 沈阳精益管理发言材料
- 南昌大学招聘笔试真题2024
- 社区社区服务设施使用效率管理基础知识点归纳
- 跨行业合作在推动中国式养老金融中的作用
- 整套企业人事管理制度
- 大学学院辅导员工作考核基本指标
- 2025届中考地理全真模拟卷 【江苏专用】(含解析)
- 2025年河北省中考乾坤押题卷数学试卷A及答案
- YC/T 620-2024烟草零售客户满意度调查规范
- 人教版历史2024年第二学期期末考试七年级历史试卷(含答案)
- 16J914-1 公用建筑卫生间
- Genie 2000培训技巧教程LYNX_1111
- 云南省肿瘤医院昆明医科大学第三附属医院护士进修申请表
- 铝合金百叶窗材料报价
- 案例7-2作业成本法在SD烟草商业企业物流成本控制中的应用(下).
评论
0/150
提交评论