软件与软件开发

上传人:101****457 文档编号:98592851 上传时间:2019-09-12 格式:PPT 页数:42 大小:1.14MB
返回 下载 相关 举报
软件与软件开发_第1页
第1页 / 共42页
软件与软件开发_第2页
第2页 / 共42页
软件与软件开发_第3页
第3页 / 共42页
软件与软件开发_第4页
第4页 / 共42页
软件与软件开发_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《软件与软件开发》由会员分享,可在线阅读,更多相关《软件与软件开发(42页珍藏版)》请在金锄头文库上搜索。

1、软件与软件开发,软件的复杂性 是其自身所固有的 抽象、分治、分类等思想 将在其中发挥极为关键的作用,内 容,一、软件 二、软件开发 三、网络环境带来的影响,一、软件,1、什么是软件 2、软件的发展现状 3、软件的发展特点 4、软件的本质特性 5、软件的发展趋势,1、什么是软件,计算机软件一般指 计算机系统中的 程序 及 文档 程序 是 以计算机语言表达的软件系统 文档 是 以人类语言表达的软件系统 二者互相配合 共同构成了完整的软件系统 人类抽象的经验、知识正逐步由软件予以精确地体现,老 子: 道德经: 第十一章: 三十辐共一毂(g) ,当其无,有车之用。 埏(shn)埴(zh)以为器,当其无

2、,有器之用。 凿户牖(yu )以为室,当其无,有室之用。 故有之以为利,无之以为用。,解读的力量!,鲜花与饲料,软件 是脑力劳动的产物 是系统逻辑的体现 必须依附于一定的载体 例如:纸张、软盘、硬盘、光盘等 其它的物品呢?不需要载体?,软件到底有什么奥妙? 人类自身的感官不能直接确定它的存在: 分子、原子 等对于人们总有一定的神秘性:感官距离很“遥远” 软件: 通常 存在于纸带、磁带、光盘等之中 运行起来 靠: 集成电路 发挥作用 显示器 显示状态 竟然还可以在 不同的载体 之间十分方便地跳跃! 显示出来后离我们又这么“近”! 如此有用!,万物皆数?,我们可以对认识的任何一种东西进行编码 以产

3、生它的一个具体“实例”,数据与代码: 从歌德尔定理到图灵不停机问题 静态代码分析!,软件作为逻辑产品的特点: 劣势: 不易被理解 容易出错 找错、排错困难 优势: 易于变化,适应性强 复制成本低,适合规模经济 给我们的生活、学习等带来了巨大的变化,(1)已经存在大量正在运行的软件 金融、电信、航空航天等 (2)软件的应用范围不断扩大 商务、交通、家电等,“计算机软件?” (3)软件的规模与复杂性持续增加 越来越多的知识正在由软件进行显式表达 (4)出现了大量与软件相关的标准 (3)的需求 (5)软件危机仍然存在(软件脱节) 1968-2011 四十三年!,2、软件的发展现状,软件工程四十年:软

4、件工程、构件、中间件,3、软件的发展特点,(1)软件应用范围将继续扩大,成为信息社会的物理设施 (2)遗留软件将继续发挥作用 (3)软件的可靠性与安全性日趋重要 (4)网络化软件将是发展重点,构造性 演化性 其它特点:知识密集、逻辑产物,4、软件的本质特性,软件的构造性 软件 是 典型的知识产品 是 客观世界中 问题空间的具体描述,传统的软件开发 是 个体作坊式的 只 解决功能问题 未 考虑结构问题 造成 软件 复杂度 高 维护难度 大,软件 是 客观事物的一种反映 是 知识的提炼 知识的体现 知识的固化,软件的演化性,客观世界 不断发展 不断发生变化,软件运行平台正在 从 单机环境 发展到

5、网络环境 这 将导致软件在 反映对象 开发基础 关注内容 运行方式 提交形式 开销比重 等 方面的重要发展,5、软件的发展趋势,软件反映对象的发展,人们的合作过程是丰富多样的、不断调整的 因此,网络环境下的软件 更加 复杂、易变 构造性、演化性 更加突出,例如: 电子商务 电子政务 电子服务 虚拟企业 ,从 以 个体计算过程 为反映对象 向 以 群体合作过程 为反映对象 的发展,软件开发基础的发展,例如:业务流程重组 (BPR:Business Process Reengineering) 企业应用集成 (EAI:Enterprise Application Integration) 等 都需

6、要开发组织具有 “继往开来” 的能力 在这样的背景下 符合标准规范的软件将更加受欢迎,从 以单个软件开发为主 向 以集成式开发为主 的发展,软件关注重点的发展,从 以正面功能为核心 向 兼顾侧面约束 的发展,近期出现的 面向 侧面 的编程 (AOP: Aspect Oriented Programming) 特征交互(FI: Feature Interaction) 等 与经典的 问题分离(SOC: Separation Of Concerns ) 等相呼应 有效地处理 交叉(cross cutting)特征 例如: 安全性、可靠性、 同步性 等 这一发展 将使 软件工程师容易地开发、维护应用

7、系统,软件运行方式的发展,从 大型机 集中方式 经 PC机的 分散方式 为主 向 “云”的集中模式 + 嵌入式的“端”分散模式 为主 发展,大型机 时代 计算机是少数人员的“计算”工具 软件运行在大型机上 PC机 时代 计算机是许多人的“信息处理”工具 PC 机上的软件是主流 “云”时代 计算资源有集中有分布,互相合作 软件运行在更多类型的计算资源上 提供服务,软件提交形式的发展,从 以 产品 为中心 向 以 服务 为中心 的发展,例如:应用服务提供商 (ASP: Application Service Provider) “Web服务”(Web Services) 等 皆体现了软件向服务发展

8、的趋势 SAAS, Cloud Computing 这一发展 将使 软件在 方便使用、安全可靠 等方面 更加人性化,软件开销比重的发展,从 开发为主要开销 向 开发、演化开销并重 的发展,最近一段时间 延长软件生命 维护、演化软件 等问题 同时受到了 学术界与产业界的双重关注 诸如 ASP模式、自适应技术 等 将得到重视,二、软件开发,1、软件开发特点 2、软件开发模型 3、开发过程新进展 4、如何理解软件开发的困难,软件开发是典型的知识密集型活动 复杂度高 开发周期长 可靠性保证难 随着 软件应用范围的快速扩大 以及软件运行平台从单机向网络的转变 软件的 规模 越来越大 复杂度 越来越高 软

9、件开发的 高、 长、 难 愈益突出,1、软件开发特点,软件开发目标:好、快、省,最终用户认为“好” 怎么叫“好”?正确、健壮、快速、安全、 怎么才能好? 编程人员开发“快” “好”前提下的“快”,二者是一对对立体 怎么才能快? 复用? 开发运行成本“省” 时间成本、人力成本、硬件资源成本、能耗、,瀑布模型 (waterfall model) 螺旋模型 (spiral model) 喷泉模型 (fountain model) 演化模型 (evolutionary model),2、软件开发模型,各自特点回顾:画图说明!,RUP 敏捷开发方法(XP) 从 CMM 到 CMMI 基于构件的软件开发

10、基于侧面的软件开发 测试驱动的软件开发 用例驱动的软件开发,3、开发方法进展,3.2 计算机科学与技术 3.2.1 艾级高性能计算机技术 针对普惠、绿色、两化融合的战略需求,研究高效易用的高性能计算机(尤其是数据中心计算机)的新原理和核心技术,并研制原理样机。支持科学工程计算与互联网服务(云计算服务)两类应用负载,科学工程计算性能达到艾级(即每秒10*18次运算),系统功耗控制在10 MW之内,系统软件复杂度控制在1000万行源码,原理样机实际速度达到每秒百万亿次(1014次)运算。 3.2.2 面向网络计算的软件方法与技术 针对新型网络化基础平台、新型泛在化与网络化应用模式,以及大规模和融合

11、化的应用系统对软件方法与技术,研究软件模型、编程语言、系统软件、使用模式、开发方法、支撑工具等,实现核心模型基本属性的高可信与适应性、使用模式的服务化与自然化、基础方法的主体化与协同化、开发模型的自治性与成长式、开发方式的复用化与自动化,建立一套新型的面向网络计算的软件方法与技术体系,发展面向网络的中文信息处理和中文数据资源建设技术。 3.2.3 未来互联网与安全 研究:()可信可管可扩展的泛在未来网络原理、协议、体系结构;()试验平台、基准服务、测试数据,用于研究和检验功能、质量、安全隐私保障、能耗指标;()能够为数亿用户服务的统一的通用计算账号,独立于任何客户端设备、任何网络、任何资源、任

12、何地点、任何厂商;()支持上亿用户,平均用户实际上网速度超过100 Mbps;()发展智能网络与语义网络技术,提升网络服务的效率与易用性。,不同方法的量化评估困难,1)实验数据获取困难 “测试”到“代码分析”:获取数据相对容易 “过程”、“设计”与“需求获取”:量化难 2)涉及人的因素太多 评估的客观性(尤其是开发过程) 3)应用领域过于广泛 不同的方法适用于不同的领域(对比困难) 4)软件开发 的特殊性 软件开发 相当于 传统行业(例如 制造) 的设计?,软件开发就象,写小说? 生产PC?搭积木? 演节目? 拍电影/电视?!,4、如何理解软件开发的困难,拍电影,前期:剧本创作、投资 拍摄:场

13、地、演员、道具 后期:剪接、音效,开发软件,分析:需求、用户 设计实现:结构、编码 测试:减少缺陷,其他共性:拷贝、版本、版权;美国、印度 不同:维护、交互 工程?,三、网络环境带来的影响,共享性 开放性 并发性 可伸缩性 容错性 透明性,网络环境的特点:,(1) 共享性,一旦授权,可以访问环境中的任何资源: 硬件、软件、数据 资源管理器控制资源的访问 提供命名机制 并 控制并发访问 使得: 不同组织之间的软件可以灵活的交互 SOA,(2) 开放性,环境扩展与改进的需要 导致: 软件开发社区 社区开发方法 开放源代码 开源软件的开发,(3) 可伸缩性,利用网络环境可以: 为更多的用户服务 响应

14、更快 通常通过增加 更多/更快的处理机 更可靠、更完善的服务实现 典型例子: GOOGLE:4-5 万台 PC QQ:上万台 PC,(4) 容错性,硬件、软件、网络发生错误的不可避免性 网络环境必须维护可用性 容错的实现途径: 恢复(recovery) 冗余(redundancy) “911”的启示,(5) 海量数据,大量 页面 大量 代码 大量 业务数据 大量 视频 大量 推动了: 搜索、挖掘、收集等技术的发展,以量促质!,面临的挑战性问题:,通信问题 异构问题 定位问题 可靠性问题 安全问题 管理问题 维护问题 ,质量? 可信? 云!,硬件环境,Application,总结:硬件环境、基础软件、应用软件与用户(环境),问 题,软件作为逻辑制品的劣势与优势是什么? 从单机环境到网络环境,软件发生了什么变化? 网络环境出现后,软件开发发生了什么变化?,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号