软件设计与体系结构秦航课件

上传人:6**** 文档编号:247425045 上传时间:2024-10-18 格式:PPT 页数:39 大小:4.75MB
返回 下载 相关 举报
软件设计与体系结构秦航课件_第1页
第1页 / 共39页
软件设计与体系结构秦航课件_第2页
第2页 / 共39页
软件设计与体系结构秦航课件_第3页
第3页 / 共39页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,清华大学出版社,*,第1章软件工程和软件设计,1,清华大学出版社,第1章软件工程和软件设计1清华大学出版社,内容提要,1.1软件,1.1.1软件的本质,1.1.2软件神话6,1.2软件工程,1.2.1软件工程,1.2.2软件过程和软件工程实践,1.2.3网络环境带来的影响,1.3软件设计,1.3.1软件工程中的设计,1.3.2设计过程和设计质量,1.3.3软件设计原则,1.4软件体系结构,1.4.1什么是软件体系结构,1.4.2软件体系结构的内容,1.4.3设计阶段的软件体系结构,1.5小结,2,清华大学出版社,内容提要1.1软件2清华大学出版社,1.1软件,1.1.1软件的本质,计算机软件,是由专业人员开发并长期维护的软件产品。,软件科学成为了今天商业、科学、工程必需的技术,促进了新科技的创新和发展,但是,无论国外、国内,软件危机的达摩克利斯之剑,一直高悬在软件从业者头顶,至今挥之不去。,3,清华大学出版社,1.1软件1.1.1软件的本质3清华大学出版社,软件与信息转换,软件不是有形的物理产品,而是人类,思维的产物,软件不是被制造出来,而,是思考出来的。,4,清华大学出版社,软件与信息转换 软件不是有形的物理产品,而是人类4清华大学出,软件的特性,软件是设计开发的,而不是传统意义上生产制造的,软件不会磨损!,随着基于构件的构造模式发展,大多数软件需要根据实际的顾客需求定制,5,清华大学出版社,软件的特性 软件是设计开发的,而不是传统意义上生产制造的5清,硬件和软件的失效曲线,软件,不会受引起硬件磨损,的环境问题的影响。,6,清华大学出版社,硬件和软件的失效曲线 软件,不会受引起硬件磨损6清华大学出版,计算机软件分类,系统软件,应用软件,嵌入式软件,科学和工程计算软件,产品线软件,人工智能软件,网络化软件,计算机软件分为七个大类,软件工程师正面临着持续挑战。,7,清华大学出版社,计算机软件分类 系统软件计算机软件分为七个大类,软件工程师正,新的挑战,开放计算,网络资源,开源软件,所有这些新的挑战,毫无疑问,将对商务人员、软件工程师、最终用户产生无法预测的结果。,8,清华大学出版社,新的挑战 开放计算所有这些新的挑战,毫无疑问,将对商务人员、,软件的演变和认识过程,9,清华大学出版社,软件的演变和认识过程 9清华大学出版社,程序设计语言的发展有三个层面,以标准C语言簇为典型代表的面向过程的软件设计方法,以JAVA语言簇为典型代表的面向对象的软件设计方法,以XML语言为典型代表的面向构件的软件设计方法,10,清华大学出版社,程序设计语言的发展有三个层面 以标准C语言簇为典型代表的面向,人月神话,人月神话的内容,源于,作者布鲁克斯在IBM公司,SYSTEM/360家族(最长寿,的计算机体系结构之一),和OS/360中的项目管理经验。,11,清华大学出版社,人月神话 人月神话的内容,源于11清华大学出版社,1.2软件工程,1.2.1软件工程,美国电气与电子工程师协会(IEEE)给出的:,软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。,12,清华大学出版社,1.2软件工程1.2.1软件工程12清华大学出版社,软件工程层次图,包括软件工程在内的任何工程方法,必须构建在质量的基础之上。,质量关注点(quality focus),过程(process),方法(method),工具(tool),软件工程是一种层次化的技术!,13,清华大学出版社,软件工程层次图 包括软件工程在内的任何工程方法,必须构建在质,软件工程与计算机科学的差别,软件工程,计算机科学,目标,在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统,探索正确的计算和建模方法,从而改进计算方法本身,产品,软件(比如办公包和编译器),算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题),进度与时间表,软件专案都有特定的进度与时间表,研究专案一般不具有设置的进度与时间表,关注点,软件工程关注如何为用户实现价值,软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性,变化程度,随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中,对于某一种特定问题的正确解决方法将永远不会改变,需要的其他知识,相关领域的知识,数学,著名的探索者和教育家,Barry Boehm,David Parnas,布鲁克斯,Edsger Dijkstra,高德纳,Robert Tarjan,Peter Slater,艾伦图灵,姚期智,著名的实践者,John Backus,Dan Bricklin,蒂姆伯纳斯-李 林纳斯托瓦兹,理查德马修斯托曼,无,14,清华大学出版社,软件工程与计算机科学的差别 软件工程计算机科学目标在时间、资,1.2.2软件过程和软件工程实践,一个通用的软件工程过程框架,通常包含5个活动:,沟通:,在技术工作开始之前,和客户的沟通、协作极其重要,目的是理解利益相关者的项目目标,并收集需求,以定义软件特性、功能。,策划:,软件项目好比是一个复杂的旅程,策划活动,就是创建一个使任何复杂的旅程都变得简单的地图,以指导团队的项目旅程,该地图称为软件。,建模,:无论是庭园设计家、桥梁建造者、航空工程师、木匠还是建筑师,每天的工作都离不开模型。,他们会画一张草图,来辅助理解整个项目大的构想,包括体系结构、不同的构件如何结合,以及其它特征。,构建:,包括手写的、自动生成的编码和测试,以发现编码中的错误。,部署:,软件以全部、部分增量的形式交付给用户,用户对其进行评测,并给出反馈意见。,15,清华大学出版社,1.2.2软件过程和软件工程实践一个通用的软件工程过程框架,7条简单的原则,存在价值:,软件系统因能给用户提供价值,而具有存在价值。所有的决定,都应基于该思想。,保持简洁:,软件设计并不是随意的过程,软件设计中需要考虑很多因素。所有的设计,都应该尽可能简洁,,保持愿景:,清晰的愿景,是软件项目成功的基础。没有愿景,项目将会有多种设计思想而永远不能结束。如果缺乏一致性,,关注使用者:,有产业实力的软件系统,不是在真空中开发、使用的。通常,软件系统必定是由开发者以外的人员使用、维护和编制文档,等等,这就必须要让别人理解你的系统。因此,在需求说明、设计和实现过程时,面向未来:,生命期持久的系统,具有更高的价值。在现在的计算环境中,需求规格说明随时会变,计划复用:,复用既省时又省力。软件系统开发过程中,高水平的复用,是一个很难实现的目标。面向对象技术会给代码和设计复用带来好处,认真思考:,这最后一条规则,可能最容易忽略。行动之前,清晰定位、完整思考,通常能产生更好的结果。仔细思考,可以提高做好事情的可能性,16,清华大学出版社,7条简单的原则 存在价值:软件系统因能给用户提供价值,而具有,10个重要的软件工程思想,17,清华大学出版社,10个重要的软件工程思想 17清华大学出版社,1.2.3网络环境带来的影响,美国南加州大学的巴里贝姆(Barry Boehm)教授,总结了国际上软件工程的发展历程:,20世纪50年代的类似硬件工程,60年代的软件手工生产、70年代的形式化方法和瀑布模型,80年代的软件生产率和可扩展性,90年代的软件并发和顺序进程,21世纪初的软件敏捷性和价值,18,清华大学出版社,1.2.3网络环境带来的影响 美国南加州大学的巴里贝姆(,软件工程在40年发展历程中关注域转向需求,40年来,软件工程的发展都是以系统为中心的,基于图灵计算模式,图灵计算时代,计算机软件是与计算机系统操作有关的程序、规程、规则及如何与之有关的数据结构和文档,即:,软件=程序+数据结构+文档,随着一个划时代的转变,人们开始推崇,“软件即服务”,的思想。,那么,计算机软件是与满足需求的信息及与之有关的服务工具,即:,软件=满足需求的信息+服务工具,Google的成功,就是一个现实的例子。,19,清华大学出版社,软件工程在40年发展历程中关注域转向需求 40年来,软件工程,传统的与互联网时代的软件工程观比较,传统软件工程观,互联网时代软件工程观,基础理论,基于系统,以中央处理器为核心;,基于图灵计算理论和冯诺依曼结构。,基于网络,节点是图灵机或智能体等主体对象,主体间相互作用;,网络化软件具有小世界、无标度和高集聚的特性,研究网络动力学行为。,研究方法,操作系统屏蔽硬件的异构性,中间件屏蔽操作系统的异构性;,用层次结构描述软件单元间的相互关系;,自顶向下分解、逐步求精的开发;,软件生命周期、软件评测和软件成熟度。,网络成为一个虚拟资源环境;,重视在不同时间段、不同软件规模上的软件间的相互关系和协同;,软件按偏好依附生长,逐步演化。,工程方法,软件业是制造业;,面向系统的结构;,要求用户提供确定的需求、明确的系统边界。,软件即服务,软件业是服务业;,面向服务的架构;,用户主导,随需即取,规模定制,敏捷开发。,20,清华大学出版社,传统的与互联网时代的软件工程观比较 传统软件工程观互联网时代,1.3软件设计,朗曼字典里,对“设计”的解释包括:,描述某个事物如何被制造出来的图样或模式。,形成上述图样或模式的艺术。,对人造产品中组成部分的一种安排,将对产品在实践中的可用性具有影响。,人的头脑中的一种规则,等等。,由上述定义可见,设计是一种“图样、模式或规划”,其目标,就是要描述一个产品如何被制造出来。,因此,软件设计可以被看作是“对软件将如何开发出来的一种描述”。如果把设计当作一个动词,那么软件设计就是“得到这种描述的活动或过程”。,21,清华大学出版社,1.3软件设计朗曼字典里,对“设计”的解释包括:21清华,1.3.1软件工程中的设计,分析模型,数据/类设计,体系结构设计,接口设计,构件级设计,对软件需求进行分析和建模开始后,软件设计是建模活动的最后一个软件工程活动,接着便要进入构造阶段,并生成代码和测试。,22,清华大学出版社,1.3.1软件工程中的设计分析模型对软件需求进行分析和建模,1.3.2设计过程和设计质量,在整个设计过程中,要使用一系列正式技术评审或设计走查,来评估设计演化的质量。标准如下:,设计必须实现所有分析模型中的明确需求,而且满足客户期望的所有隐性需求。,对于生成代码的人、进行测试的人、维护软件的人,设计必须是可读的、可理解的指南。,设计必须提供软件的全貌,并从实现的角度说明数据域、功能域、行为域。,23,清华大学出版社,1.3.2设计过程和设计质量在整个设计过程中,要使用一系列,1.3.3软件设计原则,抽象,体系结构,模式,模块化,信息隐蔽,功能独立,求精,重构,设计类,24,清华大学出版社,1.3.3软件设计原则抽象24清华大学出版社,模块化和软件成本,模块化时,位置需要保持在,M,附近,来避免过少、过多的模块化。,至于如何知道,M,的附近位置?如何将软件划分成模块?,则需要理解后面的设计概念。,25,清华大学出版社,模块化和软件成本 模块化时,位置需要保持在M附近,来避免过少,1.4软件体系结构,1.4.1什么是软件体系结构,牛津字典中,“体系结构”一词定义为:,建筑的艺术或科学,特别是在考虑美感和实用因素的情况下,设计人类使用的大型建筑物所需的技巧和实际。,建筑风格,建筑物,组织机构、结构的一种样式、规矩或风格。,卡内基梅隆大学的软件工程研究所在网站上公开征集软件体系结构的定义,至今已有百余种。其中,较有影响力的定义包括:,软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系;,软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等。,26,清华大学出版社,1.4软件体系结构1.4.1什么是软件体系结构26清华大,狗窝、房子和高楼,开发一个具有,一定规模
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!