1、软件工程与软件工程与 软件过程软件过程华东师范大学软件学院 董 军2003.7第1页,共46页。讨论主题回顾和现状软件工程 软件过程动向策略2022-7-302第2页,共46页。回顾和现状n软件危机n美国n印度n中国n小结2022-7-303第3页,共46页。软件危机软件开发产生了越来越多的问题:n质量低下;n进度拖延;n预算超支;n错误频出;n维护费用不断上升;n可靠性得不到保障,等。2022-7-304第4页,共46页。美国n1962年6月,美国飞向金星的第一个空间探测器水手号,其飞舱中的计算机程序之一的一个语句的语义出错;nIBM公司在1963年至1966年开发的IBM360操作系统,投
2、入数千人年;n20世纪70年代中期,失败的软件项目中,70%是由于管理不善引起的。90年代中期,有2500亿美元用于17.5万个软件项目,其中31%的项目在完成前被取消,费用为810亿美元;53%的项目的费用是原估计费用的190%;只有10%的项目在预定的费用和进度下交付。后来,每年有2750亿美元用于20万个软件项目上,有16%的项目能按时并按预算完成。2022-7-305第5页,共46页。印度财富500强中有185家公司在印度采购软件产品,印度有1250家公司出口软件1。2022-7-306第6页,共46页。我国软件产业状况2(1)产业规模与结构产业规模与结构n1992年我国软件产业总额仅
3、43亿元;n2002年软件产业总额达到1100亿元。n1999年,软件占计算机市场比例为25.6,占GDP的比例0.54;n2001年软件占计算机市场比例达31.8,占GDP比例为0.83。2022-7-307第7页,共46页。我国软件产业状况(2)软件企业数量软件企业数量 目前,我国从事软件与服务业的企业超过1万家,其中具有自主研发能力的约6000家,从事软件销售、维护和服务的约5000家。2022-7-308第8页,共46页。我国软件产业状况(3)软件企业规模软件企业规模 在6000多家软件企业中。按人员数量,50人以下的占60,100500人的占相当比例,1000人以上的50多家。到20
4、01年底,我国销售额超过亿元的软件企业已超过90家,超过10亿元的软件企业达13家。2022-7-309第9页,共46页。我国软件产业状况(4)基本市场情况基本市场情况 以2001年为例,2001年中国软件产品销售额为330亿元,比2000年增长38.7,其中系统软件销售额为50亿元,同比增长50.6;支撑软件销售额为81.9亿元,同比增长65.1;应用软件销售额为198.1亿元,同比增长27.7。上述销售总额中,嵌入式软件销售额为48亿元,占总额的14.5。2022-7-3010第10页,共46页。我国软件产业状况(5)软件人员现状与发展软件人员现状与发展 我国软件从业人员有50万人,此外还
5、有近30万人在社会各领域从事与计算机软件相关的工作。到2001年底,我国普通高等院校中设立计算机及软件专业的有1023所,其中475所本科院校,计算机及软件专业在校生总数58.6万人。2001年我国高校培养的计算机与软件专业人员为6.2万人,其中硕士、博士占5。2022-7-3011第11页,共46页。我国软件产业状况(6)国家软件产业基地国家软件产业基地 2001年6月,国家正式认定北京、上海、大连、成都、西安、济南、杭州、广州、长沙、南京、珠海等11个,2022-7-3012第12页,共46页。开发成本n美国:1000015000美元n印度:800010000美元n中国:30005000美
6、元2022-7-3013第13页,共46页。小结中国在软件工程方法和实践间脱节严重,近年开始出台相关政策、措施。n鼓励软件产业和集成电路发展若干政策,200018号文件;n振兴软件产业行动纲领,200247号文件。2022-7-3014第14页,共46页。软件工程3n软件的作用 特征 问题 应用n软件工程定义 问题 阶段 模型2022-7-3015第15页,共46页。软件的作用 软件的双重作用:n作为产品:生产、管理、获取、修改、显示或传播信息;n作为分发产品的载体:操作系统、网络工具与环境。2022-7-3016第16页,共46页。软件的特征n软件是被开发的,而不是象传统意义下那样被制造的;
7、n软件无“磨损”;n尽管工业是朝着基于组件装配方向发展的,但大多数软件还是客户定制的。2022-7-3017第17页,共46页。软件的问题n为何要如此长的时间来完成软件?n为何开发费用这么高?n为何在把软件交给用户前不能发现所有错误?n为何随着软件的开发在测量进展时不断遇到困难?2022-7-3018第18页,共46页。软件的应用n系统软件n实时软件n商业软件n工程和科学软件n嵌入式软件n个人计算机软件n基于Web的软件n人工智能软件,等等2022-7-3019第19页,共46页。软件工程定义1968年由北大西洋公约组织在德国格密斯举行的学术会议“软件工程”被提出 IEEE的定义:(1)应用系
8、统化、纪律化和定量化的方法进行软件开发、操作和维护。(2)对(1)中方法的研究。2022-7-3020第20页,共46页。软件工程面临的问题n什么是要解决的问题?n用于解决问题的实体(软件)的特征是什么?n实体和解决方案如何实现?n如何构造实体?n用什么方法揭示实体设计和构造中的错误?n在需要更正、适应和改善时,实体如何被长期支持?2022-7-3021第21页,共46页。软件工程阶段n定义阶段:系统和信息工程,软件项目规划,需求分析。n开发阶段:软件设计、代码生成和软件测试。n支撑阶段:涉及四种类型的改变:更正、适应、改善以及预防。本质上,预防性维护对计算机程序作改变,使之更容易被更正、适应
9、和改善。2022-7-3022第22页,共46页。软件工程模型n线性模型,原形模型,快速应用开发模型n进化软件过程模型:增量模型,螺旋模型,并行开发模型n基于组件的模型:合并了很多螺旋模型的特征,UMLn形式化方法模型:用严格的数学方法说明、设计和验证基于计算机的系统,不明确、不完整、不一致能被容易地发现和更正,但不是通过特别的评审,而是通过数学化分析的应用。2022-7-3023第23页,共46页。计算机辅助软件工程 经过结构程序设计的讨论,20世纪70年代开始,人们认识到单纯寄希望于高级语言及其编译系统是不够的,还与方法论有关,从而有了“软件自动化”及“计算机辅助软件工程”思想。这里,集成
10、化4是核心的:n松散的集成化:信息集成;n紧偶合的集成:反映工具间的内在联系2022-7-3024第24页,共46页。两条道路之北美北美工业界,强调软件技术。n70年代到80年代中期,希望通过提高自动化水平提高生产率。由于大型软件结构复杂,难以找到统一的风格和步骤;n80年代中后期,强调重用。但对语义理论过分忽略。2022-7-3025第25页,共46页。两条道路之西欧n西欧学术界,一贯认为提高软件生产率的关键是提高软件的可靠性与可维护性。前者强调语义精确的规范语言,后者强调软件开发的逐步求精过程的语义一致性。n这里,很重要的是选取适当的软件体系结构,以与模块相对应的组件为基础。n技术上强调模
11、块可重用性和理论上强调语义可靠性这两种软件工程方向的合理结合。2022-7-3026第26页,共46页。小结 软件工程是集成了适合于计算机软件开发的过程、方法和工具的学科。三十年余年来,软件工程逐步与计算机科学、计算机工程和信息系统一起成为并列的方向,形成相对独立的知识体系。2022-7-3027第27页,共46页。软件过程n软件过程工程nCMM/CMMInSPICE nAgile2022-7-3028第28页,共46页。软件工程的一种划分软件工程的一种划分为5n传统软件工程n20世纪80年代以来,对象工程n20世纪80年代中期,过程工程n进入20世纪90年代之后,构件工程2022-7-302
12、9第29页,共46页。软件过程1984年10月,第一届国际软件过程讨论会,正式提出“软件过程”:是在软件生命周期中所实施的一系列活动的集合,每个活动可由一些任务组成。2022-7-3030第30页,共46页。软件过程工程 是为建立软件过程所必须实施的一系列工程化的活动。它涉及与此有关的方法、工具和环境的研究。2022-7-3031第31页,共46页。现代软件工程 软件过程工程是以软件过程为中心的工程活动。软件工程所进行的是以软件开发为中心的工程活动,称为软件项目工程。它们共同构成了现代软件工程的概念框架。2022-7-3032第32页,共46页。动向n由面向产品走向面向服务nAgent技术n对
13、象和组件 n形式化方法模型n净室软件工程,等等2022-7-3033第33页,共46页。由面向产品走向面向服务 国际产业界一般不提“软件产业”,代之以“软件服务业”:n 成套大众产品供应商(如微软);n 解决方案供应商(如IBM);n 软件专业服务供应商(如普华永道)。2022-7-3034第34页,共46页。Agent技术 软件的运行已逐渐转变到开放和动态的网络环境,而Agent的自主性和交互性能适应这样的改变,并可带来软件在开发方法和使用方法等方面的一系列变化。2022-7-3035第35页,共46页。对象和组件 根本的目的是复用 被复用的对象可以是有形的物体,也可以是无形的成果。如集成电
14、路的设计和使用。2022-7-3036第36页,共46页。程序设计范式的演化6(1)最早出现也是最常用的程序设计范式是:决定想要的过程,使用能找到的最好算法。其核心是过程的设计,当然这些过程必须具有参数传递功能。2022-7-3037第37页,共46页。程序设计范式的演化(2)随后,程序设计重点转到了数据组织上,程序设计范式是:决定想要的模块,将程序划分为不同的模块,而数据则隐藏在各模块中。这就是数据隐藏原则,它使得对数据的操作尽量局限在模块内部。2022-7-3038第38页,共46页。程序设计范式的演化(3)接着,出现了抽象数据类型的概念,程序设计范型变为:决定想要的类型,为各类型提供一个
15、完整的操作集合。其核心是用户定义类型,隐藏性和灵活性更好了。2022-7-3039第39页,共46页。程序设计范式的演化(4)数据抽象由下列两方面支持:为某一类型定义一操作集合;对该类型的对象的存取限于该操作集合。由此便导出了类的概念。类概念本身是在程序设计领域中由类型概念抽象得出的,体现了人们的一种抽象思维过程。2022-7-3040第40页,共46页。形式化方法 由于目前它比较化时间并很昂贵,有足够背景的开发人员还很少,用户也不习惯,形式化方法尚未成为主流方法,但它为无缺陷软件的产生提供了希望。2022-7-3041第41页,共46页。净室软件工程nIBM的净室软件工程设计方法提出了以合理
16、的成本开发零缺陷或接近零缺陷软件的基于理论、面向工程的方法;n动机是提高软件可靠性和效费比;n它结合了基于工程的技术,以及基于对象的系统论证、正确性验证和统计质量论证等技术;n目标使软件开发在性能方面有本质改进,在可靠性和生产率两方面形成竞争优势;2022-7-3042第42页,共46页。仅有行业技术规范还不够 中国软件业的发展还需要市场规范7:n政府在主导过程中没有能够有效地进行市场资源的配置,在信息技术投资过程中,软件企业的选择不够充分市场化;n资源未能向优势企业集中;n未能最大限度体现公平、公开、公正的原则。2022-7-3043第43页,共46页。教育与现实需求的差距n 企业化的开发流
17、程未在学校体现;n 教师缺乏实际的规范的项目开发经验;n 教科书的内容与实践脱节。2022-7-3044第44页,共46页。振兴软件产业行动纲要8国务院信息化工作办公室公布,未来三年达到n软件销售额2500亿n产品和服务国内市场占有率60%n出口额50亿美元n培养人才80 万2022-7-3045第45页,共46页。参考文献1.联合国开发计划署.2001年人类发展报告:让新技术为人类发展服务(中文版).北京:中国财政经济出版社,2001:37.2.陈冲.我国软件产业发展现状.光明日报,2003.2.12:C1.3.Roger S.Pressman.Software Engineering,A
18、practitioners Approach(Fifth Edition).Tsinghua University Press,McGraw-Hill Companies,Inc.,2001:4-47.4.唐稚松.时序逻辑程序设计与软件工程.北京:科学出版社,1999:16-19.5.朱三元,钱乐秋,宿为民.软件工程技术概论.北京:科学出版社,2002:101-108.6.Stroustrup B.What is Object-oriented Programming?IEEE Software,1988,5(3):10-20.7.中国信息产业发展报告.第三届亚太地区城市信息化论坛,2002.6:65.8.科技日报,2002.11.29:4.2022-7-3046第46页,共46页。