版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件工程概论问题1:什么是软件?问题2:什么是软件危机?问题3:什么是软件工程?问题4:软件工程的目的是什么?问题5:软件工程框架及其内容是什么?问题6:软件工程的原则是什么?问题7:软件工程研究的主要内容是什么?问题8:什么是软件开发方法学?
一、软件的发展历史软件的发展阶段问题1:什么是软件?
(1)早期阶段
在计算机发展的早期阶段,人们认为计算机的主要用途是快速计算,软件编程简单,不存在什么系统化的方法,开发没有任何管理,程序的质量完全依赖于程序员个人的技巧。(2)第二阶段
计算机软件发展的第二阶段跨越了从60年代中期到70年代末期的十余年,多用户系统引入了人机交互的新概念,实时系统能够从多个源收集、分析和转换数据,从而使得进程的控制和输出的产生以毫秒而不是分钟来进行,在线存储的发展产生了第一代数据库管理系统。
在这个时期,出现了软件产品和“软件作坊”的概念,设计人员开发程序不再像早期阶段那样只为自己的研究工作需要,而是为了用户更好地使用计算机,人们开始采用“软件工程”的方法来解决“软件危机”问题。(3)第三阶段
计算机软件发展的第三阶段始于70年代中期,分布式系统极大地提高了计算机系统的复杂性,网络的发展对软件开发提出了更高的要求,特别是微处理器的出现和广泛应用,孕育了一系列的智能产品。软件开发技术的度量问题受到重视,最著名的有软件工作量估计COCOMO模型、软件过程改进模型CMM等。(4)第四阶段
计算机软件发展的第四阶段是强大的桌面系统和计算机网络迅速发展的时期,计算机体系结构由中央主机控制方式变为客户机/服务器方式,专家系统和人工智能软件终于走出实验室进入了实际应用,虚拟现实和多媒体系统改变了与最终用户的通讯方式,出现了并行计算和网络计算的研究,面向对象技术在许多领域迅速取代了传统软件开发方法。
在软件的发展过程中,软件从个性化的程序变为工程化的产品,人们对软件的看法发生了根本性的变化,从"软件=程序"发展为"软件=程序+数据+文档"。
软件是计算机系统中与硬件相互依存的另一部分,包括程序,数据及其相关文档。程序是计算机任务的处理对象和处理规则的描述。数据是使程序能正常操纵信息的数据结构。文档是为了理解程序所需的阐述性资料。
二、概念与硬件相比,软件具有以下不同的特点:1)软件是逻辑的,而不是物理的产品。逻辑往往实际只存在于人的头脑当中,软件人员好比“皇帝的新衣”故事中的裁缝,软件的开发过程极难加以控制。2)软件是由开发或工程化而形成的,没有明显的制造过程。软件成本集中于“开”上,意味着软件项目不能象硬件制造项目那样来管理。3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。4)大多数软件是自定的,而不是通过已有构件组装而成的。迄今为止,软件的开发尚未完全摆脱手工的方式。5)软件成本相当昂贵。
IBM360操作系统的研制人员最多时可达1000多人,从1963年到1966年共花了四年时间才完成,总计耗费了5000多人年,以后又进行不断的修改和补充。该系统的整个研制费用为5亿美元,其中近一半花在软件上。6)软件本身是复杂的。实际问题的复杂性程序逻辑结构的复杂性
下面给出一些softwarecrisis的例子:美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎,......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。问题2:什么是软件危机?
(软件危机表现在那些地方?)软件危机的具体表现如下:(1)软件开发的进度难以控制,经常出现经费超预算、完成期限一再拖延的现象。
1979年,美国USGovernmentAccountingOffice对政府项目进行了调查,其中9个软件项目的结果如下:
一个复杂的软件系统需要建立庞大的逻辑体系,而这些往往只存在于人们的头脑中,正如一个大项目负责人所说:"软件人员太像皇帝新衣故事中的裁缝,当我来检查软件开发工作时,所得到的回答好像对我说:我们正忙于编织这件带有魔法的织物,只要一会儿,你就会看到这件织物是极其美丽的。但是我什么也看不到,什么也摸不到,也说不出任何一个有关的数字,没有任何办法得到一些信息说明事情确实进行得非常顺利,而且我已经知道许多人最终已经编织了一大堆昂贵的废物而去,还有不少人最终什么也没有做出来。"
(2)软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。软件需求的缺陷将给项目成功带来极大风险,如产品的成本过高、产品的功能和质量无法完全满足用户的期望等等。即使一个项目团队的人员和配备都很不错,但不重视需求过程也会付出惨痛的代价。导致需求缺陷的主要原因包括需求的沟通与理解、需求的变化与控制、需求说明的明确与完整,模棱两可的需求所带来的后果便是返工--重做一些你认为已做好的事情,返工会耗费开发总费用的40%,而70%~85%的重做是由于需求方面的错误引起的。(3)由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下,运行中出现大量问题。在1985年到1987年之间,至少有2个病人是死于Therac-25医疗线性加速器的过量辐射,其原因是控制软件中的一个故障。1965年至1970年,美国范登堡基地发射火箭多次失败,绝大部分出于控制系统的故障,一个小小的疏漏往往会造成上千万美元的损失。由此可见,软件错误的后果是十分严重的,医疗软件的错误可能造成病人的生命危险,银行系统的错误会使金融混乱,航管系统的错误会造成飞机失事等等。
由于认识到软件的设计、实现、维护和传统的工程规则有相同的基础,于是北大西洋公约组织(NATO)于1967年首次提出了"软件工程(SoftwareEngineering)"的概念。关于编制软件与其他工程任务类似的提法,得到了1968年在德国召开的NATO软件工程会议的认可。委员会的结论是,软件工程应使用已有的工程规则的理论和模式,来解决所谓的"软件危机"。
软件危机至今仍然困绕着我们,这表明软件生产过程在许多方面和传统的工程相似,但却具有独特的属性和问题。
例1.Inthelate1960s,abright-eyedyoungengineer*waschosento“write”acomputerprogramforanautomatedmanufacturingapplication.Thereasonforhisselectionwassimple.Hewastheonlypersoninhistechnicalgroupwhohadattendedacomputerprogrammingseminar.Heknewthein’sandout’sofassemblerlanguageandFortran,butnothingaboutsoftwareengineeringandevenlessaboutprojectschedulingandtracking.问题出在什么地方呢?Hisbossgavehimtheappropriatemanualsandaverbaldescriptionofwhathadtobedone.Hewasinformedthattheprojectmustbecompletedintwomonths.Hereadthemanuals,consideredhisapproach,andbeganwritingcode.Aftertwoweeks,thebosscalledhimintohisofficeandaskedhowthingsweregoing.“Reallygreat,”saidtheyoungengineerwithyouthfulenthusiasm,“ThiswasmuchsimplerthanIthought.I’m
probablycloseto75percentfinished.”Thebosssmiled.“That’sreallyterrific,”hesaid.Hethentoldtheyoungengineertokeepupthegoodworkandplantomeetagaininaweek’stime.Aweeklaterthebosscalledtheengineerintohisofficeandasked,“Wherearewe?”“Everything’sgoingwell,”saidtheyoungster,“butI’verunintoafewsmallsnags.I’llgetthemironedoutandbebackontracksoon.”“Howdoesthedeadlinelook?”thebossasked.“Noproblem,”saidtheengineer.“I’mcloseto90percentcomplete.”Ifyou’vebeenworkinginthesoftwareworldformorethanafewyears,youcanfinishthestory.It’llcomeasnosurprisethattheyoungengineerstayed90percentcompletefortheentireprojectdurationandonlyfinished(withthehelpofothers)onemonthlate.解决问题的方法是什么?
Bettermanagement
Differentteamorganizations
Betterlanguages&tools
Uniformcodingconventions问题3:什么是软件工程?“软件工程”(SoftwareEngineering)NATOConference,Garmisch,Germany,1968.软件工程-应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于用于计划、资源、质量、成本等管理。软件工程是一门交叉性学科。问题4:软件工程的目的是什么?倡导以工程的原理、原则和方法进行软件开发,以解决当时出现的软件危机。问题5:软件工程框架及其内容是什么?
软件工程框架由目标、活动和原则组成。软件工程的目标为,生产具有正确性、可用性以及开销合宜的产品。软件工程活动定义为,生产一个最终满足需求且达到工程目标的软件产品所需要的步骤,主要包括需求、设计、实现、确认以及支持等活动。特别说明一下软件工程的基本活动1)、需求定义问题,即建立系统模型主要任务包括:
1〕需求获取-需求定义系统功能的一个正确的陈述2〕需求规约―-系统需求规格说明主要成分:系统模型系统功能的一个精确、系统的描述3〕需求验证
2)、设计在需求分析的基础上,给出系统的软件解决方案。1〕总体设计系统的软件体系结构C/S结构以数据库为中心的结构管道结构面向对象的结构……2〕详细设计针对总体设计结果,给出每一构件的详细描述3)、实现选择可用的构件;或以一种选定的语言,对每一构件进行编码4)、确认贯穿软件开发的整个过程主要任务是:软件测试
5)、支持完善性维护纠错性维护问题6:软件工程的原则是什么?软件工程原则为:选取适宜的开发模型,采用合适的设计方法,提供高质量的工程支持,重视开发过程的管理。问题7:软件工程研究的主要内容是什么?软件开发模型、软件开发方法、软件过程、软件工具、软件开发环境、计算机辅助软件工程(CASE)、软件经济学等。问题8:什么是软件开发方法学?是一种已定义好的技术集和符号表示习惯,来组织软件开发的过程,一般表示为一系列步骤,包括结构化方法、面向对象方法、Jackson方法等等。全球的软件业全球的软件业按开发模式和主要地区(软件业由于产业群落影响和优惠政策吸引,极为集中)可分为:技术领导、产业支撑型——美国,软件本地化型——爱尔兰,外包服务型——印度,嵌入式开发型——日本、西欧。美国在系统软件、服务支撑软件、开发工具等核心领域占据了80%以上的市场,引领着软件业的方向。爱尔兰则把自己当作美国软件的欧化基地,为欧洲提高20多个欧化版本。日本的嵌入式开发则是应其消费类产品的数字化、娱乐化趋势和通讯设备生产而生。西欧以瑞典、芬兰、德国为代表在生产设备、高精仪器、通讯和搏彩游戏机等应用上进行嵌入式开发(那种更新了软件系统,就又当新设备卖过来的生产设备、高精仪器多从此出)
我国软件业的现状我国软件业的规模目前,我国从事软件开发、研制、销售、维护和服务的软件企业有2000家左右,加上兼营的企业,总数大约有10000多家,其中具有自主软件研发能力的软件企业约5700家,已经通过双软认定的有2300余家,从事软件销售、维护和服务的企业5000多家。在这里面,营业规模超过一亿元的软件企业达到100家以上,超过5亿元的达到18家,超过10亿元的达到12家。2001年,世界软件产品市场销售额超过1865亿美元,我国当年的销售额为285亿元人民币,只占世界市场不到2%的份额。国内软件市场有限的份额中大部分为国外软件厂商所瓜分,国内所开发的软件产品仅占小部分。2001年我国软件销售总额96.3亿美元,软件企业约5000家,从业人员29万。2001年印度软件销售总额102.3亿美元,软件企业约6000家,从业人员40万。2001年我国软件的出口额仅为7.2亿美元,2000年与1999年分别为4亿美元及2.5亿美元。印度在软件出口方面,则一直保持高速的增长。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,而2001年印度软件出口额为77.8亿美元,已经占到了印度全部出口总额的10.5%。我国软件业的现状我国软件业的规模当前,我国软件产业以中小型企业为主,2007年规模最大的前10家软件企业收入不足100亿美元,相比微软、甲骨文、SAP等跨国公司,仍存在较大的差距。软件业整体将继续保持高速增长。据统计,2000年至2007年间,中国软件产业以年均逾30%的速度增长。2007年,中国软件产业的销售收入达到5800亿元,产业规模在全球软件产业中的份额已由2000年的1.2%提升至8.7%。如果按照这样的发展速度,到2010年就会超过万亿元。我国软件业的现状我国软件业的规模我国软件业仍维持高速增长。数据显示,2008年上半年,软件业实现主营业务收入3456.7亿元,同比增长30.4%。软件出口及服务外包发展较好,完成出口额49.5亿美元,同比增长45%;完成软件服务外包4.5亿美元,同比增长68.3%;增速与1-5月基本持平。2009年1-8月,在国际金融危机继续蔓延深化的影响下,我国软件产业的收入增速持续回落,产业结构不断调整。1-8月,软件产业累计完成软件业务收入5891亿元,同比增长21%,增速比1-7月和一季度分别回落1.1和2.9个百分点。8月当月完成软件业务收入751.9亿元,同比增长13.2%,增速比7月份下降6.8个百分点,比去年同期低19.2个百分点。此外,软件技术服务增长突出,IC设计增速持续低位。1-8月,共完成软件产品收入2075.8亿元,同比增长20.9%。软件技术服务收入1245.1亿元,同比增长29.1%。出口和外包服务增长快于全行业,但增速放缓。1-8月,我国软件出口109亿美元,同比增长41%,增幅比去年同期低12.3个百分点。
我国软件业发展不理想的原因除了政策和盗版外,最大的问题是我国绝大多数软件企业对其软件开发工作过程缺乏有效的管理和控制。多数软件企业开发和生产基本上处于“技术少标准、开发缺规范、生产无检验、质量无保证”的状态。在这方面印度软件业的发展能够给我们以启发。印度软件业能够这么迅速地发展起来,除了有政府支持、英语程度、人才储备等原因外,最重要的是从标准化与产品流程入手,重视管理。印度的软件开发管理的特点是流程重于项目,流程管理人员独立于研发部门,专门检查研发部门的开发流程是不是按照既定流程走,如果流程不对,项目肯定就此停止。另外,所谓的项目经理一般都是从编码人员升上来的,至少有四年以上的经验,而公司所有的东西(包括草稿)都有文档,其详细文档要求达到只有这个文档就可以编码的程度。于是,印度软件公司开发出来的软件整个体系架构非常清晰,而且相当稳定。由于印度企业不是靠一两个软件英雄搞研发,而是靠一大批软件技术人员的分工协作,所以,他们必须注重标准化,注重开发的流程管理,以与国际接口。目前印度软件公司中有170家公司获得ISO9000质量标准
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳保防护知识培训
- 中医股骨颈骨折护理查房
- 2024-2025学年江苏省无锡市江阴文林中学九年级(上)国庆假期作业一数学试卷(含答案)
- T-XMSSAL 0109-2024 供厦食品 蚝油
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)课件 项目1 部署虚拟环境和安装Windows Server 2022操作系统
- 组装电脑基础理论知识单选题100道及答案解析
- 临床试验设计中的统计学基础
- 高三化学苏教版一轮31化学反应中热效应
- 2024-2025学年八年级上学期历史期中模拟试卷(统编版+含答案解析)
- 小学高年级安全教育教案
- 塑料袋的警告语(欧洲)
- 建筑施工现场安全警示牌标示(标志图片)
- 【图文】计算机之父――图灵
- 电加热器选型计算
- 2016雕塑工程计价定额(共10页)
- 液压油缸项目建设用地申请报告(范文参考)
- 实验室人员比对试验结果小结与分析
- 2020版《中国药典》试液配制操作规程
- 《固体物理·黄昆》第四章(3)
- 七年级上册历史时间轴
- 口风琴结题报告-复件(1)
评论
0/150
提交评论