您好,欢迎访问三七文档
软件与软件开发软件的复杂性是其自身所固有的抽象、分治、分类等思想将在其中发挥极为关键的作用内容一、软件二、软件开发三、网络环境带来的影响一、软件1、什么是软件2、软件的发展现状3、软件的发展特点4、软件的本质特性5、软件的发展趋势1、什么是软件计算机软件一般指计算机系统中的程序及文档程序是以计算机语言表达的软件系统文档是以人类语言表达的软件系统二者互相配合共同构成了完整的软件系统人类抽象的经验、知识正逐步由软件予以精确地体现老子:道德经:第十一章:三十辐共一毂(gǔ),当其无,有车之用。埏(shān)埴(zhí)以为器,当其无,有器之用。凿户牖(yǒu)以为室,当其无,有室之用。故有之以为利,无之以为用。解读的力量!鲜花与饲料软件是脑力劳动的产物是系统逻辑的体现必须依附于一定的载体例如:纸张、软盘、硬盘、光盘等其它的物品呢?不需要载体?软件到底有什么奥妙?人类自身的感官不能直接确定它的存在:分子、原子等对于人们总有一定的神秘性:感官距离很“遥远”软件:通常存在于纸带、磁带、光盘等之中运行起来靠:集成电路发挥作用显示器显示状态竟然还可以在不同的载体之间十分方便地跳跃!显示出来后离我们又这么“近”!如此有用!万物皆数?我们可以对认识的任何一种东西进行编码以产生它的一个具体“实例”数据与代码:从歌德尔定理到图灵不停机问题静态代码分析!软件作为逻辑产品的特点:劣势:不易被理解容易出错找错、排错困难优势:易于变化,适应性强复制成本低,适合规模经济给我们的生活、学习等带来了巨大的变化(1)已经存在大量正在运行的软件金融、电信、航空航天等(2)软件的应用范围不断扩大商务、交通、家电等,“计算机软件?”(3)软件的规模与复杂性持续增加越来越多的知识正在由软件进行显式表达(4)出现了大量与软件相关的标准(3)的需求(5)软件危机仍然存在(软件脱节)1968-2011四十三年!2、软件的发展现状软件工程四十年:软件工程、构件、中间件3、软件的发展特点(1)软件应用范围将继续扩大,成为信息社会的物理设施(2)遗留软件将继续发挥作用(3)软件的可靠性与安全性日趋重要(4)网络化软件将是发展重点构造性演化性其它特点:知识密集、逻辑产物4、软件的本质特性软件的构造性软件是典型的知识产品是客观世界中问题空间的具体描述软件是有结构的构造性是软件的本质特性传统的软件开发是个体作坊式的只解决功能问题未考虑结构问题造成软件复杂度高维护难度大软件是客观事物的一种反映是知识的提炼知识的体现知识的固化软件的演化性客观世界不断发展不断发生变化软件系统不可能一成不变新需求、新技术不断出现软件系统要不断升级软件运行平台正在从单机环境发展到网络环境这将导致软件在反映对象开发基础关注内容运行方式提交形式开销比重等方面的重要发展5、软件的发展趋势软件反映对象的发展人们的合作过程是丰富多样的、不断调整的因此,网络环境下的软件更加复杂、易变构造性、演化性更加突出例如:电子商务电子政务电子服务虚拟企业……从以个体计算过程为反映对象向以群体合作过程为反映对象的发展软件开发基础的发展例如:业务流程重组(BPR:BusinessProcessReengineering)企业应用集成(EAI:EnterpriseApplicationIntegration)等都需要开发组织具有“继往开来”的能力在这样的背景下符合标准规范的软件将更加受欢迎从以单个软件开发为主向以集成式开发为主的发展软件关注重点的发展从以正面功能为核心向兼顾侧面约束的发展近期出现的面向侧面的编程(AOP:AspectOrientedProgramming)特征交互(FI:FeatureInteraction)等与经典的问题分离(SOC:SeparationOfConcerns)等相呼应有效地处理交叉(crosscutting)特征例如:安全性、可靠性、同步性等这一发展将使软件工程师容易地开发、维护应用系统软件运行方式的发展从大型机集中方式经PC机的分散方式为主向“云”的集中模式+嵌入式的“端”分散模式为主发展大型机时代计算机是少数人员的“计算”工具软件运行在大型机上PC机时代计算机是许多人的“信息处理”工具PC机上的软件是主流“云”时代计算资源有集中有分布,互相合作软件运行在更多类型的计算资源上提供服务软件提交形式的发展从以产品为中心向以服务为中心的发展例如:应用服务提供商(ASP:ApplicationServiceProvider)“Web服务”(WebServices)等皆体现了软件向服务发展的趋势SAAS,CloudComputing这一发展将使软件在方便使用、安全可靠等方面更加人性化软件开销比重的发展从开发为主要开销向开发、演化开销并重的发展最近一段时间延长软件生命维护、演化软件等问题同时受到了学术界与产业界的双重关注诸如ASP模式、自适应技术等将得到重视二、软件开发1、软件开发特点2、软件开发模型3、开发过程新进展4、如何理解软件开发的困难软件开发是典型的知识密集型活动复杂度高开发周期长可靠性保证难随着软件应用范围的快速扩大以及软件运行平台从单机向网络的转变软件的规模越来越大复杂度越来越高软件开发的高、长、难愈益突出1、软件开发特点软件开发目标:好、快、省最终用户认为“好”怎么叫“好”?正确、健壮、快速、安全、……怎么才能好?编程人员开发“快”“好”前提下的“快”,二者是一对对立体怎么才能快?复用?开发运行成本“省”时间成本、人力成本、硬件资源成本、能耗、……瀑布模型(waterfallmodel)螺旋模型(spiralmodel)喷泉模型(fountainmodel)演化模型(evolutionarymodel)2、软件开发模型各自特点回顾:画图说明!RUP敏捷开发方法(XP)从CMM到CMMI基于构件的软件开发基于侧面的软件开发测试驱动的软件开发用例驱动的软件开发3、开发方法进展3.2计算机科学与技术3.2.1艾级高性能计算机技术针对普惠、绿色、两化融合的战略需求,研究高效易用的高性能计算机(尤其是数据中心计算机)的新原理和核心技术,并研制原理样机。支持科学工程计算与互联网服务(云计算服务)两类应用负载,科学工程计算性能达到艾级(即每秒10**18次运算),系统功耗控制在10MW之内,系统软件复杂度控制在1000万行源码,原理样机实际速度达到每秒百万亿次(1014次)运算。3.2.2面向网络计算的软件方法与技术针对新型网络化基础平台、新型泛在化与网络化应用模式,以及大规模和融合化的应用系统对软件方法与技术,研究软件模型、编程语言、系统软件、使用模式、开发方法、支撑工具等,实现核心模型基本属性的高可信与适应性、使用模式的服务化与自然化、基础方法的主体化与协同化、开发模型的自治性与成长式、开发方式的复用化与自动化,建立一套新型的面向网络计算的软件方法与技术体系,发展面向网络的中文信息处理和中文数据资源建设技术。3.2.3未来互联网与安全研究:(1)可信可管可扩展的泛在未来网络原理、协议、体系结构;(2)试验平台、基准服务、测试数据,用于研究和检验功能、质量、安全隐私保障、能耗指标;(3)能够为数亿用户服务的统一的通用计算账号,独立于任何客户端设备、任何网络、任何资源、任何地点、任何厂商;(4)支持上亿用户,平均用户实际上网速度超过100Mbps;(5)发展智能网络与语义网络技术,提升网络服务的效率与易用性。不同方法的量化评估困难1)实验数据获取困难“测试”到“代码分析”:获取数据相对容易“过程”、“设计”与“需求获取”:量化难2)涉及人的因素太多评估的客观性(尤其是开发过程)3)应用领域过于广泛不同的方法适用于不同的领域(对比困难)4)软件开发的特殊性软件开发相当于传统行业(例如制造)的设计?软件开发就象……写小说?生产PC?搭积木?演节目?拍电影/电视?!4、如何理解软件开发的困难拍电影前期:剧本创作、投资拍摄:场地、演员、道具后期:剪接、音效开发软件分析:需求、用户设计实现:结构、编码测试:减少缺陷其他共性:拷贝、版本、版权;美国、印度不同:维护、交互工程???三、网络环境带来的影响•共享性•开放性•并发性•可伸缩性•容错性•透明性网络环境的特点:(1)共享性一旦授权,可以访问环境中的任何资源:硬件、软件、数据资源管理器控制资源的访问提供命名机制并控制并发访问使得:不同组织之间的软件可以灵活的交互SOA(2)开放性环境扩展与改进的需要导致:软件开发社区社区开发方法开放源代码开源软件的开发(3)可伸缩性利用网络环境可以:为更多的用户服务响应更快通常通过增加更多/更快的处理机更可靠、更完善的服务实现典型例子:GOOGLE:4-5万台PCQQ:上万台PC(4)容错性硬件、软件、网络发生错误的不可避免性网络环境必须维护可用性容错的实现途径:恢复(recovery)冗余(redundancy)“911”的启示(5)海量数据大量页面大量代码大量业务数据大量视频大量……推动了:搜索、挖掘、收集等技术的发展以量促质!面临的挑战性问题:通信问题异构问题定位问题可靠性问题安全问题管理问题维护问题……质量?可信?云!!!硬件环境Application总结:硬件环境、基础软件、应用软件与用户(环境)……问题•软件作为逻辑制品的劣势与优势是什么?•从单机环境到网络环境,软件发生了什么变化?•网络环境出现后,软件开发发生了什么变化?
本文标题:软件与软件开发
链接地址:https://www.777doc.com/doc-3400031 .html