网络软件教学课件.ppt
第一讲网 络 软 件,网络软件的复杂性是其自身所固有的抽象、分治、分类等思想将在其中发挥极为关键的作用,内 容,一、软件二、软件开发 三、网络环境四、网络环境给应用系统带来的挑战五、来自用户需求的挑战六、对策,一、软件,什么是软件软件发展现状软件发展特点软件开发特点软件的本质特性软件的发展趋势,什么是软件,计算机软件一般指计算机系统中的程序及 文档程序是以计算机语言表达的软件系统文档是以人类语言表达的软件系统二者互相配合 共同构成了完整的软件系统软件是系统逻辑的体现 必须依附于一定的载体例如:纸张、软盘、硬盘、光盘等人类抽象的经验、知识正逐步由软件予以精确地体现,老 子:道德经:第十一章:三十辐共一毂(g),当其无,有车之用。埏(shn)埴(zh)以为器,当其无,有器之用。凿户牖(yu)以为室,当其无,有室之用。故有之以为利,无之以为用。,解读的力量!,鲜花与饲料,软件是脑力劳动的产物是系统逻辑的体现 必须依附于一定的载体例如:纸张、软盘、硬盘、光盘等其它的物品呢?不需要载体?,软件到底有什么奥妙?人类自身的感官不能直接确定它的存在:分子、原子 等对于人们总有一定的神秘性:感官距离很“遥远”软件:通常 存在于纸带、磁带、光盘等之中运行起来 靠:集成电路 发挥作用显示器 显示状态竟然还可以在 不同的载体 之间十分方便地跳跃!显示出来后离我们又这么“近”!如此有用!“万物皆数”?!我们可以对认识的任何一种东西进行编码 以产生它的一个具体“实例”,软件作为逻辑产品的特点:劣势:不易被理解容易出错找错、排错困难优势:易于变化,适应性强复制成本低,适合规模经济给我们的生活、学习等带来了巨大的变化The Second Life,软件发展现状(1)已经存在大量正在运行的软件 金融、电信、航空航天等(2)软件的应用范围不断扩大商务、交通、家电等,“无处不在的软件”(3)软件的规模与复杂性持续增加越来越多的知识正在由软件进行显式表达(4)出现了大量与软件相关的标准(3)的需求(5)软件危机仍然存在(软件脱节)1968-2003,软件发展特点,(1)软件应用范围将继续扩大,成为信息社会的物理设施(2)遗留软件将继续发挥作用(3)软件的可靠性与安全性日趋重要(4)网络化软件将是发展重点,软件的本质特性构造性演化性其它特点:知识密集逻辑产物,软件的构造性软件 是 典型的知识产品 是 客观世界中 问题空间的具体描述,传统的软件开发 是 个体作坊式的只 解决功能问题未 考虑结构问题造成 软件 复杂度高 维护难度大,软件 是 客观事物的一种反映 是 知识的提炼 知识的体现知识的固化,软件的演化性,客观世界不断发展不断发生变化,软件发展趋势 软件运行平台正在 从 单机环境 发展到 网络环境这 将导致软件在 反映对象 开发基础 关注内容运行方式 提交形式 开销比重等 方面的重要发展,软件反映对象的发展,从 以 个体计算过程 为反映对象向 以 群体合作过程 为反映对象的发展人们的合作过程是丰富多样的、不断调整的 因此,网络环境下的软件 更加 复杂、易变 构造性、演化性 更加突出,例如:电子商务 电子政务 电子服务 虚拟企业,软件开发基础的发展,例如:业务流程重组(BPR:Business Process Reengineering)企业应用集成(EAI:Enterprise Application Integration)等都需要开发组织具有“继往开来”的能力在这样的背景下符合标准规范的软件将更加受欢迎,从 以单个软件开发为主向 以集成式开发为主 的发展,软件关注重点的发展,从 以正面功能为核心向 兼顾侧面约束 的发展,近期出现的 面向 侧面 的编程(AOP:Aspect Oriented Programming)特征交互(FI:Feature Interaction)等与经典的 问题分离(SOC:Separation Of Concerns)等相呼应 有效地处理 交叉(cross cutting)特征 例如:安全性、可靠性、同步性 等 这一发展 将使 软件工程师容易地开发、维护应用系统,软件运行方式的发展,从 纯被动式的方式向 部分主动式的方式 发展,主动对象(Active Object)类真体(Agent)等具有的 独立性、自治性和自适应性 能够很好地适应从 封闭、静态、稳定的单机环境 到 开放、动态、多变的网络环境 的转变这一发展 将 有利于 减轻人的负担 促进 人机和谐环境的 建立,软件提交形式的发展,从 以 产品 为中心向 以 服务 为中心 的发展,例如:应用服务提供商(ASP:Application Service Provider)“Web服务”(Web Service)等 皆体现了软件向服务发展的趋势这一发展 将使 软件在 方便使用、安全可靠 等方面更加人性化,软件开销比重的发展,从 开发为主要开销向 开发、演化开销并重 的发展,最近一段时间延长软件生命维护、演化软件 等问题同时受到了 学术界与产业界的双重关注诸如 柔性结构技术、远程维护技术、自适应技术 等 将得到重视,二、软件开发,1、软件开发特点2、软件开发模型3、开发过程新进展4、如何理解软件开发的困难,软件开发是典型的知识密集型活动复杂度高开发周期长可靠性保证难 随着 软件应用范围的快速扩大 以及软件运行平台从单机向网络的转变软件的规模越来越大复杂度越来越高 软件开发的 高、长、难 愈益突出,1、软件开发特点,瀑布模型(waterfall model)螺旋模型(spiral model)喷泉模型(fountain model)演化模型(evolutionary model),2、软件开发模型,各自特点回顾:画图说明!,RUP敏捷开发方法从 CMM 到 CMMI基于构件的软件开发基于侧面的软件开发测试驱动的软件开发用例驱动的软件开发,3、开发过程新进展,软件开发就象,写小说?生产PC?搭积木?演节目?拍电影/电视?!,4、如何理解软件开发的困难,拍电影,前期:剧本创作、投资拍摄:场地、演员、道具后期:剪接、音效,开发软件,分析:需求、用户设计实现:结构、编码测试:减少缺陷,其他共性:拷贝、版本、版权;美国、印度,三、网络环境,什么是网络?硬件厂商的观点软件厂商的观点用户的观点Network is computer?,什么是网络环境(Network Environment)?通过网络相互连接、相互协作,共同执行任务的一组计算机系统包括:连接设备、计算机硬件、支持网络的操作系统等系统软件与单机环境相对,从不同角度划分网络:从规模上:LAN、WAN从行业上:银行网络(ATM)电信网络(IP Phone)从技术上:WWW、WAP、宽带网从边界上:Internet、Intranet从协议上:TCP/IP、DECNET目前需要特别关注以IP为核心实现的网络环境,网络环境自身的特点:,(1)分布性(2)复杂性(3)增长性(4)异构性(5)持续演化性,网络环境为应用系统提供的支持,共享性开放性并发性可伸缩性容错性透明性,(1)共享性,一旦授权,可以访问环境中的任何资源:硬件、软件、数据资源管理器控制资源的访问 提供命名机制 并 控制并发访问资源共享模型(例如客户/服务器、基于对象)描述:如何提供资源它们如何被使用用户与提供者如何交互,(2)开放性,环境扩展与改进的需要需要发布构件之间的接口细节新构件需要能够与已存在的构件进行集成,(3)并发性,网络环境中的构件可以在并发的过程中被执行构件可以访问、更新共享的资源如果不对并发的更新进行协调无法保持环境的完整性,(4)可伸缩性,利用网络环境可以:为更多的用户服务响应更快通常通过增加 更多/更快的处理机 更可靠、更完善的服务实现当环境增长时,构件不必改变所设计的构件应当便于系统的伸缩,(5)容错性,硬件、软件、网络发生错误的不可避免性网络环境必须维护可用性容错的实现途径:恢复(recovery)冗余(redundancy),(6)透明性,网络环境对于用户与应用程序而言应当是一个整体而不是一个相互协作的简单的构件集合 透明性具有多层的内容:访问透明性、位置透明性、并发透明性、副本透明性、故障透明性、迁移透明性、性能透明性、伸缩透明性,四、网络环境给应用系统带来的挑战,通信问题异构问题定位问题可靠性问题安全问题管理问题维护问题等等,网络应用系统,五、来自用户需求的挑战,功能:软件系统提供什么约束:功能应当满足什么性能分布可靠性安全性演化:功能的增加、改变约束的调整,六、对策,运行平台OMA、DNA、应用服务器开发技术软件体系结构、设计模式、面向侧面编程 等开发过程USDP、MDA 等SOAWEB 2.0开源软件,问 题,从单机环境到网络环境,软件发生了什么变化?网络环境下的应用系统具有什么样的特点?开发网络环境的软件需要面临什么样的挑战?,