




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 软件工程和软件设计
1.内容提要1.1 软件1.1.1 软件的本质 1.1.2 软件神话 61.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 软件1.1.1 软件的本质计算机软件,是由专业人员开发并长期维护的软件产品。软件科学成为了今天商业、科学、工程必需的技术,促进了新科技的创新和发展但是,无论国外、国内,软件危机的达摩克利斯之剑,一直高悬在软件从业者头顶,至今挥之不去。3.软件与信息转换软件不是有形的物理产品,而是人类思维的产物,软件不是被制造出来,而是思考出来的。
4.软件的特性软件是设计开发的,而不是传统意义上生产制造的软件不会磨损!随着基于构件的构造模式发展,大多数软件需要根据实际的顾客需求定制5.硬件和软件的失效曲线软件,不会受引起硬件磨损的环境问题的影响。6.计算机软件分类系统软件应用软件嵌入式软件科学和工程计算软件产品线软件人工智能软件网络化软件计算机软件分为七个大类,软件工程师正面临着持续挑战。7.新的挑战开放计算网络资源开源软件所有这些新的挑战,毫无疑问,将对商务人员、软件工程师、最终用户产生无法预测的结果。8.软件的演变和认识过程9.程序设计语言的发展有三个层面以标准C语言簇为典型代表的面向过程的软件设计方法以JAVA语言簇为典型代表的面向对象的软件设计方法以XML语言为典型代表的面向构件的软件设计方法10.人月神话《人月神话》的内容,源于作者布鲁克斯在IBM公司SYSTEM/360家族(最长寿的计算机体系结构之一)和OS/360中的项目管理经验。11.1.2 软件工程1.2.1 软件工程美国电气与电子工程师协会(IEEE)给出的:软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。12.软件工程层次图包括软件工程在内的任何工程方法,必须构建在质量的基础之上。质量关注点(qualityfocus)过程(process)方法(method)工具(tool)软件工程是一种层次化的技术!13.软件工程与计算机科学的差别软件工程计算机科学目标在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统探索正确的计算和建模方法,从而改进计算方法本身产品软件(比如办公包和编译器)算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)进度与时间表软件专案都有特定的进度与时间表研究专案一般不具有设置的进度与时间表关注点软件工程关注如何为用户实现价值软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性变化程度随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中对于某一种特定问题的正确解决方法将永远不会改变需要的其他知识相关领域的知识数学著名的探索者和教育家BarryBoehm,DavidParnas,布鲁克斯EdsgerDijkstra,高德纳,RobertTarjan,PeterSlater,艾伦·图灵,姚期智著名的实践者JohnBackus,DanBricklin,蒂姆·伯纳斯-李林纳斯·托瓦兹,理查德·马修·斯托曼无14.1.2.2 软件过程和软件工程实践一个通用的软件工程过程框架,通常包含5个活动:沟通:在技术工作开始之前,和客户的沟通、协作极其重要目的是理解利益相关者的项目目标,并收集需求,以定义软件特性、功能。策划:软件项目好比是一个复杂的旅程,策划活动,就是创建一个使任何复杂的旅程都变得简单的地图,以指导团队的项目旅程,该地图称为软件。建模:无论是庭园设计家、桥梁建造者、航空工程师、木匠还是建筑师,每天的工作都离不开模型。他们会画一张草图,来辅助理解整个项目大的构想,包括体系结构、不同的构件如何结合,以及其它特征。构建:包括手写的、自动生成的编码和测试,以发现编码中的错误。部署:软件以全部、部分增量的形式交付给用户,用户对其进行评测,并给出反馈意见。15.7条简单的原则存在价值:软件系统因能给用户提供价值,而具有存在价值。所有的决定,都应基于该思想。保持简洁:软件设计并不是随意的过程,软件设计中需要考虑很多因素。所有的设计,都应该尽可能简洁,保持愿景:清晰的愿景,是软件项目成功的基础。没有愿景,项目将会有多种设计思想而永远不能结束。如果缺乏一致性,关注使用者:有产业实力的软件系统,不是在真空中开发、使用的。通常,软件系统必定是由开发者以外的人员使用、维护和编制文档,等等,这就必须要让别人理解你的系统。因此,在需求说明、设计和实现过程时面向未来:生命期持久的系统,具有更高的价值。在现在的计算环境中,需求规格说明随时会变计划复用:复用既省时又省力。软件系统开发过程中,高水平的复用,是一个很难实现的目标。面向对象技术会给代码和设计复用带来好处认真思考:这最后一条规则,可能最容易忽略。行动之前,清晰定位、完整思考,通常能产生更好的结果。仔细思考,可以提高做好事情的可能性16.10个重要的软件工程思想17.1.2.3 网络环境带来的影响美国南加州大学的巴里·贝姆(BarryBoehm)教授,总结了国际上软件工程的发展历程:20世纪50年代的类似硬件工程60年代的软件手工生产、70年代的形式化方法和瀑布模型80年代的软件生产率和可扩展性90年代的软件并发和顺序进程21世纪初的软件敏捷性和价值18.软件工程在40年发展历程中关注域转向需求40年来,软件工程的发展都是以系统为中心的,基于图灵计算模式,图灵计算时代,计算机软件是与计算机系统操作有关的程序、规程、规则及如何与之有关的数据结构和文档,即:软件=程序+数据结构+文档随着一个划时代的转变,人们开始推崇“软件即服务”的思想。那么,计算机软件是与满足需求的信息及与之有关的服务工具,即:软件=满足需求的信息+服务工具Google的成功,就是一个现实的例子。19.传统的与互联网时代的软件工程观比较传统软件工程观互联网时代软件工程观基础理论基于系统,以中央处理器为核心;基于图灵计算理论和冯·诺依曼结构。基于网络,节点是图灵机或智能体等主体对象,主体间相互作用;网络化软件具有小世界、无标度和高集聚的特性,研究网络动力学行为。研究方法操作系统屏蔽硬件的异构性,中间件屏蔽操作系统的异构性;用层次结构描述软件单元间的相互关系;自顶向下分解、逐步求精的开发;软件生命周期、软件评测和软件成熟度。网络成为一个虚拟资源环境;重视在不同时间段、不同软件规模上的软件间的相互关系和协同;软件按偏好依附生长,逐步演化。工程方法软件业是制造业;面向系统的结构;要求用户提供确定的需求、明确的系统边界。软件即服务,软件业是服务业;面向服务的架构;用户主导,随需即取,规模定制,敏捷开发。20.1.3 软件设计朗曼字典里,对“设计”的解释包括:描述某个事物如何被制造出来的图样或模式。形成上述图样或模式的艺术。对人造产品中组成部分的一种安排,将对产品在实践中的可用性具有影响。人的头脑中的一种规则,等等。由上述定义可见,设计是一种“图样、模式或规划”,其目标,就是要描述一个产品如何被制造出来。因此,软件设计可以被看作是“对软件将如何开发出来的一种描述”。如果把设计当作一个动词,那么软件设计就是“得到这种描述的活动或过程”。21.1.3.1 软件工程中的设计分析模型数据/类设计体系结构设计接口设计构件级设计对软件需求进行分析和建模开始后,软件设计是建模活动的最后一个软件工程活动,接着便要进入构造阶段,并生成代码和测试。22.1.3.2 设计过程和设计质量在整个设计过程中,要使用一系列正式技术评审或设计走查,来评估设计演化的质量。标准如下:设计必须实现所有分析模型中的明确需求,而且满足客户期望的所有隐性需求。对于生成代码的人、进行测试的人、维护软件的人,设计必须是可读的、可理解的指南。设计必须提供软件的全貌,并从实现的角度说明数据域、功能域、行为域。23.1.3.3 软件设计原则抽象体系结构模式模块化信息隐蔽功能独立求精重构设计类24.模块化和软件成本模块化时,位置需要保持在M附近,来避免过少、过多的模块化。至于如何知道M的附近位置?如何将软件划分成模块?则需要理解后面的设计概念。25.1.4 软件体系结构1.4.1 什么是软件体系结构牛津字典中,“体系结构”一词定义为:建筑的艺术或科学,特别是在考虑美感和实用因素的情况下,设计人类使用的大型建筑物所需的技巧和实际。建筑风格,建筑物,组织机构、结构的一种样式、规矩或风格。卡内基梅隆大学的软件工程研究所在网站上公开征集软件体系结构的定义,至今已有百余种。其中,较有影响力的定义包括:软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些软件元素之间的关系;软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等。26.狗窝、房子和高楼开发一个具有一定规模和复杂性的软件系统和编写一个简单的程序,是不一样的,借用《设计模式》的作者G.Booch的比喻,其中的区别如同建造一座大厦和搭建一个狗窝的差别。27.房子的建模建筑师准备建筑最初的草图,展示外观和内部布局,与客户讨论这些草图,直至所有相关方都达成一致意见,认为展示的就是想要的。28.建筑师的角色和沟通依据建筑师也充当建造者和客户之间的协调人!29.体系结构的需要:温切斯特神秘屋这个大厦没有制作过建筑蓝图!30.软件体系结构的发展史2001年到2012年间的重要方法、语言、论文、数据和会议31.软件生命周期中软件体系结构的研究与应用需求面向软件体系结构的需求工程,从需求到软件体系结构的转换设计软件体系结构的描述,设计方法,以及设计经验的记录和重用实践支持软件体系结构的开发过程,从设计模型到系统实现的转换;基于软件体系结构的测试部署基于软件体系结构的应用部署开发后动态软件体系结构,软件体系结构恢复和重建整个软件生命周期中,各阶段软件体系结构的研究热点32.1.4.2 软件体系结构的内容下面将当前软件体系结构分为4个研究领域:(1)通过提供一种新的体系结构描述语言(ArchitecturalDescriptionLanguage,ADL)解决体系结构描述问题。这种语言的目标,是给实践者提供设计体系结构更好的方法,以便设计人员相互交流,并可以使用支持体系结构描述语言的工具来分析案例。(2)体系结构领域知识的总结性研究。这一领域关心的,是工程师通过软件实践,总结各种体系结构原则和模式的分类和阐释。(3)针对特定领域的框架的研究。这类研究产生了针对一类特殊软件的体系结构框架,比如,航空电子控制系统、移动机器人、用户界面。这类研究一旦成功,这样的框架便可以被毫不费力实例化来生产这一领域新的产品。(4)软件体系结构形式化支持的研究。随着新的符号的产生,以及人们对体系结构设计实践的理解逐步深入,需要用一种严格的形式化方法刻画软件体系结构及其相关性质。33.创建软件体系结构典型的利益相关人及其关注点包括:投资人:想知道项目是否能够在给定的资源和进度约束下完成。架构师、开发人员、测试人员:首先考虑的是,最初的构建和以后的维护与演进。项目经理:需要组织团队,制定迭代计划。市场人员:想通过品质特点实现与竞争者的差异化。用户:包括最终用户、系统管理员,以及安装、部署、准备、配置人员。技术支持人员:关注帮助平台电话呼入的数目和复杂性。34.创建软件体系结构具体系统,会有其它关键的关注点。功能性:产品向用户提供哪些功能?可变性:软件可能需要哪些改变?哪些改变不太可能发生,不需要特别容易进行这些改变?性能:产品达到怎样的性能?容量:多少用户并发使用该系统?该系统为用户保存多少数据?生态系统:在部署的生态环境中,该系统与其他系统进行哪些交互?模块化:如何将编写软件的任务分解为工作指派(模块),特别是这些模块可以独立地开发,并能够准确、容易地满足彼此的需要?可构建性:如何将软件构建为一组组件,并能够独立实现和验证这些组件?哪些组件应该复用其它产品,哪些应该从外部供应商处获得?产品化:如果产品以几种变体的形式存在,如何开发一个产品线,并利用这些变体的共性?产品线中的产品以怎样的步骤开发?在创建一条软件产品线时,要进行哪些投资?安全性:产品是否需要用户认证,或者必须限制对数据的访问?数据的安全性如何得到保证?如何抵挡“拒绝服务”攻击或其他攻击?35.1.4.3 设计阶段的软件体系结构根据在设计过程中,对FR和NFR考虑的阶段不同,可以将软件体系结构设计方法分为3类:FR驱动的软件体系结构设计,根据FR得到初步的体系结构设计模型,然后,通过一定的手段,精化设计结果以逐步达到NFR的目标,典型的方法,包括评估与转化、自顶向下组装)等。NFR驱动的软件体系结构设计将NFR作为首要考虑因素,将NFR直接映射成为体系结构的建模元素,典型的,包括属性驱动的设计ADD等。集成FR和NFR的方法,将FR和NFR视为同等重要的设计输入,在体系结构设计过程中,同时兼顾FR和NFR,并将其转化成相应体系结构的建模元素这类方法,往往与面向Aspect的方法相结合,典型的,包括UseCase和目标驱动、形式化设计分析框架FDAF、Aspect构件等。36.体系结构的复用圣索菲亚大教堂,是拜占庭建筑之美的代表。1100年后,ChristopherWren使用了同样的设计,来建造圣保罗大教堂的穹顶,并成为伦敦的地标性建筑。37.系统的构架结构软件结构关系适用于分解是一个子模块;与之共享秘密资源分配、项目结构化和规划;信息隐藏、封装;配置控制使
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时锅炉工用工合同标准文本
- 技术培训课程安排计划
- 2025购销合同简易范本
- 转变思维方式的年度计划
- 临时变更合同标准文本
- 从化学校食堂承包合同标准文本
- 2025护理员用工合同
- 公寓合伙合同范例
- 上海学校食堂外包合同标准文本
- 2025高性能单纵模固体激光器采购合同
- 教师语言与沟通艺术知到智慧树章节测试课后答案2024年秋温州大学
- DeepSeek入门到精通-实操+进阶玩法培训
- 2025中国建材集团有限公司招聘6人笔试参考题库附带答案详解
- 2025年吉林铁道职业技术学院单招职业技能测试题库必考题
- 车辆运输安全管理制度
- 2025年北京电子科技职业学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 食堂食材配送采购投标方案(技术标)
- Kubernetes中的多租户隔离策略-深度研究
- 2025年度智能硬件产品全国区域独家代理合同3篇
- 办公室安全知识培训课件
- 厂房工程起重吊装施工方案
评论
0/150
提交评论