




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 软件工程(ruǎnjiànɡōnɡchénɡ)和软件设计
1清华大学出版社共四十页内容提要(nèirónɡtíyào)1.1 软件1.1.1 软件的本质 1.1.2 软件神话 61.2 软件工程(ruǎnjiànɡōnɡchénɡ)
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 软件(ruǎnjiàn)1.1.1 软件的本质计算机软件,是由专业人员开发并长期维护的软件产品。软件科学成为了今天商业(shāngyè)、科学、工程必需的技术,促进了新科技的创新和发展但是,无论国外、国内,软件危机的达摩克利斯之剑,一直高悬在软件从业者头顶,至今挥之不去。3清华大学出版社共四十页软件与信息(xìnxī)转换软件不是有形的物理产品,而是人类思维的产物,软件不是被制造(zhìzào)出来,而是思考出来的。
4清华大学出版社共四十页软件(ruǎnjiàn)的特性软件是设计开发的,而不是传统意义上生产制造(zhìzào)的软件不会磨损!随着基于构件的构造模式发展,大多数软件需要根据实际的顾客需求定制5清华大学出版社共四十页硬件和软件的失效(shīxiào)曲线软件,不会受引起硬件磨损的环境问题(wèntí)的影响。6清华大学出版社共四十页计算机软件分类(fēnlèi)
系统软件应用软件嵌入式软件科学(kēxué)和工程计算软件产品线软件人工智能软件网络化软件计算机软件分为七个大类,软件工程师正面临着持续挑战。7清华大学出版社共四十页新的挑战(tiǎozhàn)
开放计算(jìsuàn)网络资源开源软件所有这些新的挑战,毫无疑问,将对商务人员、软件工程师、最终用户产生无法预测的结果。8清华大学出版社共四十页软件的演变和认识(rènshi)过程9清华大学出版社共四十页程序设计(chénɡxùshèjì)语言的发展有三个层面以标准C语言簇为典型代表的面向(miànxiànɡ)过程的软件设计方法以JAVA语言簇为典型代表的面向对象的软件设计方法以XML语言为典型代表的面向构件的软件设计方法10清华大学出版社共四十页人月神话(shénhuà)
《人月神话(shénhuà)》的内容,源于作者布鲁克斯在IBM公司SYSTEM/360家族(最长寿的计算机体系结构之一)和OS/360中的项目管理经验。11清华大学出版社共四十页1.2 软件工程(ruǎnjiànɡōnɡchénɡ)1.2.1 软件工程美国电气与电子(diànzǐ)工程师协会(IEEE)给出的:软件工程是:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。12清华大学出版社共四十页软件工程(ruǎnjiànɡōnɡchénɡ)层次图包括软件工程在内的任何工程方法,必须构建(ɡòujiàn)在质量的基础之上。质量关注点(qualityfocus)过程(process)方法(method)工具(tool)软件工程是一种层次化的技术!13清华大学出版社共四十页软件工程(ruǎnjiànɡōnɡchénɡ)与计算机科学的差别软件工程计算机科学目标在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统探索正确的计算和建模方法,从而改进计算方法本身产品软件(比如办公包和编译器)算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)进度与时间表软件专案都有特定的进度与时间表研究专案一般不具有设置的进度与时间表关注点软件工程关注如何为用户实现价值软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性变化程度随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中对于某一种特定问题的正确解决方法将永远不会改变需要的其他知识相关领域的知识数学著名的探索者和教育家BarryBoehm,DavidParnas,布鲁克斯EdsgerDijkstra,高德纳,RobertTarjan,PeterSlater,艾伦·图灵,姚期智著名的实践者JohnBackus,DanBricklin,蒂姆·伯纳斯-李林纳斯·托瓦兹,理查德·马修·斯托曼无14清华大学出版社共四十页1.2.2 软件过程和软件工程(ruǎnjiànɡōnɡchénɡ)实践一个通用的软件工程过程框架,通常包含5个活动:沟通:在技术工作开始之前,和客户的沟通、协作极其重要目的是理解利益相关者的项目目标,并收集需求,以定义软件特性、功能。策划:软件项目好比是一个复杂的旅程,策划活动,就是创建一个使任何复杂的旅程都变得简单的地图,以指导团队的项目旅程,该地图称为软件。建模:无论是庭园设计家、桥梁建造者、航空工程师、木匠还是建筑师,每天的工作都离不开模型。他们会画一张草图,来辅助理解整个项目大的构想,包括体系结构、不同的构件如何结合,以及其它特征。构建:包括手写的、自动生成的编码和测试(cèshì),以发现编码中的错误。部署:软件以全部、部分增量的形式交付给用户,用户对其进行评测,并给出反馈意见。15清华大学出版社共四十页7条简单(jiǎndān)的原则存在价值:软件系统因能给用户提供价值,而具有存在价值。所有的决定,都应基于该思想。保持简洁:软件设计并不是随意的过程,软件设计中需要考虑很多因素。所有的设计,都应该尽可能简洁,保持愿景:清晰的愿景,是软件项目(xiàngmù)成功的基础。没有愿景,项目(xiàngmù)将会有多种设计思想而永远不能结束。如果缺乏一致性,关注使用者:有产业实力的软件系统,不是在真空中开发、使用的。通常,软件系统必定是由开发者以外的人员使用、维护和编制文档,等等,这就必须要让别人理解你的系统。因此,在需求说明、设计和实现过程时面向未来:生命期持久的系统,具有更高的价值。在现在的计算环境中,需求规格说明随时会变计划复用:复用既省时又省力。软件系统开发过程中,高水平的复用,是一个很难实现的目标。面向对象技术会给代码和设计复用带来好处认真思考:这最后一条规则,可能最容易忽略。行动之前,清晰定位、完整思考,通常能产生更好的结果。仔细思考,可以提高做好事情的可能性16清华大学出版社共四十页10个重要的软件工程(ruǎnjiànɡōnɡchénɡ)思想17清华大学出版社共四十页1.2.3 网络环境(huánjìng)带来的影响美国南加州大学的巴里·贝姆(BarryBoehm)教授,总结了国际上软件工程的发展历程:20世纪50年代的类似硬件工程(gōngchéng)60年代的软件手工生产、70年代的形式化方法和瀑布模型80年代的软件生产率和可扩展性90年代的软件并发和顺序进程21世纪初的软件敏捷性和价值18清华大学出版社共四十页软件工程在40年发展历程(lìchéng)中关注域转向需求40年来,软件工程的发展都是以系统为中心(zhōngxīn)的,基于图灵计算模式,图灵计算时代,计算机软件是与计算机系统操作有关的程序、规程、规则及如何与之有关的数据结构和文档,即:软件=程序+数据结构+文档随着一个划时代的转变,人们开始推崇“软件即服务”的思想。那么,计算机软件是与满足需求的信息及与之有关的服务工具,即:软件=满足需求的信息+服务工具Google的成功,就是一个现实的例子。19清华大学出版社共四十页传统的与互联网时代的软件工程(ruǎnjiànɡōnɡchénɡ)观比较传统软件工程观互联网时代软件工程观基础理论基于系统,以中央处理器为核心;基于图灵计算理论和冯·诺依曼结构。基于网络,节点是图灵机或智能体等主体对象,主体间相互作用;网络化软件具有小世界、无标度和高集聚的特性,研究网络动力学行为。研究方法操作系统屏蔽硬件的异构性,中间件屏蔽操作系统的异构性;用层次结构描述软件单元间的相互关系;自顶向下分解、逐步求精的开发;软件生命周期、软件评测和软件成熟度。网络成为一个虚拟资源环境;重视在不同时间段、不同软件规模上的软件间的相互关系和协同;软件按偏好依附生长,逐步演化。工程方法软件业是制造业;面向系统的结构;要求用户提供确定的需求、明确的系统边界。软件即服务,软件业是服务业;面向服务的架构;用户主导,随需即取,规模定制,敏捷开发。20清华大学出版社共四十页1.3 软件设计朗曼字典里,对“设计”的解释包括:描述某个(mǒuɡè)事物如何被制造出来的图样或模式。形成上述图样或模式的艺术。对人造产品中组成部分的一种安排,将对产品在实践中的可用性具有影响。人的头脑中的一种规则,等等。由上述定义可见,设计是一种“图样、模式或规划”,其目标,就是要描述一个产品如何被制造出来。因此,软件设计可以被看作是“对软件将如何开发出来的一种描述”。如果把设计当作一个动词,那么软件设计就是“得到这种描述的活动或过程”。21清华大学出版社共四十页1.3.1 软件工程(ruǎnjiànɡōnɡchénɡ)中的设计分析模型数据(shùjù)/类设计体系结构设计接口设计构件级设计对软件需求进行分析和建模开始后,软件设计是建模活动的最后一个软件工程活动,接着便要进入构造阶段,并生成代码和测试。
22清华大学出版社共四十页1.3.2 设计(shèjì)过程和设计(shèjì)质量在整个设计过程中,要使用一系列正式技术评审或设计走查,来评估设计演化的质量。标准如下:设计必须实现所有分析模型中的明确需求,而且满足客户期望的所有隐性需求。对于生成代码的人、进行测试的人、维护软件的人,设计必须是可读的、可理解的指南。设计必须提供软件的全貌,并从实现的角度说明(shuōmíng)数据域、功能域、行为域。23清华大学出版社共四十页1.3.3 软件设计原则(yuánzé)抽象体系结构模式(móshì)模块化信息隐蔽功能独立求精重构设计类24清华大学出版社共四十页模块化和软件(ruǎnjiàn)成本模块化时,位置需要保持在M附近,来避免过少、过多的模块化。至于如何知道M的附近位置?如何将软件划分(huàfēn)成模块?则需要理解后面的设计概念。25清华大学出版社共四十页1.4 软件体系结构1.4.1 什么是软件体系结构牛津字典中,“体系结构”一词定义为:建筑的艺术或科学,特别是在考虑美感和实用因素的情况下,设计人类使用的大型建筑物所需的技巧和实际。建筑风格,建筑物,组织机构、结构的一种样式、规矩或风格。卡内基梅隆大学的软件工程研究所在网站上公开征集软件体系结构的定义,至今已有百余种。其中,较有影响力的定义包括:软件系统的结构,包含软件元素、软件元素外部可见的属性以及这些(zhèxiē)软件元素之间的关系;软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则等。26清华大学出版社共四十页狗窝(ɡǒuwō)、房子和高楼开发一个具有一定规模和复杂性的软件系统和编写一个简单的程序(chéngxù),是不一样的,借用《设计模式》的作者G.Booch的比喻,其中的区别如同建造一座大厦和搭建一个狗窝的差别。27清华大学出版社共四十页房子(fángzi)的建模建筑师准备建筑最初的草图,展示外观和内部布局(bùjú),与客户讨论这些草图,直至所有相关方都达成一致意见,认为展示的就是想要的。28清华大学出版社共四十页建筑师的角色(juésè)和沟通依据建筑师也充当建造者和客户(kèhù)之间的协调人!29清华大学出版社共四十页体系结构的需要(xūyào):温切斯特神秘屋这个大厦没有制作过建筑(jiànzhù)蓝图!30清华大学出版社共四十页软件体系结构的发展史2001年到2012年间的重要方法、语言、论文、数据(shùjù)和会议31清华大学出版社共四十页软件生命周期中软件体系结构的研究(yánjiū)与应用需求面向软件体系结构的需求工程,从需求到软件体系结构的转换设计软件体系结构的描述,设计方法,以及设计经验的记录和重用实践支持软件体系结构的开发过程,从设计模型到系统实现的转换;基于软件体系结构的测试部署基于软件体系结构的应用部署开发后动态软件体系结构,软件体系结构恢复和重建整个(zhěnggè)软件生命周期中,各阶段软件体系结构的研究热点32清华大学出版社共四十页1.4.2 软件体系结构的内容(nèiróng)下面将当前软件体系结构分为4个研究领域:(1)通过提供一种新的体系结构描述语言(ArchitecturalDescriptionLanguage,ADL)解决体系结构描述问题。这种语言的目标,是给实践者提供设计体系结构更好的方法,以便设计人员相互交流,并可以使用支持体系结构描述语言的工具来分析案例。(2)体系结构领域知识的总结性研究。这一领域关心的,是工程师通过软件实践,总结各种体系结构原则和模式的分类和阐释。(3)针对特定领域的框架的研究。这类研究产生了针对一类特殊(tèshū)软件的体系结构框架,比如,航空电子控制系统、移动机器人、用户界面。这类研究一旦成功,这样的框架便可以被毫不费力实例化来生产这一领域新的产品。(4)软件体系结构形式化支持的研究。随着新的符号的产生,以及人们对体系结构设计实践的理解逐步深入,需要用一种严格的形式化方法刻画软件体系结构及其相关性质。33清华大学出版社共四十页创建(chuàngjiàn)软件体系结构典型的利益相关人及其关注点包括:投资人:想知道项目是否能够在给定的资源和进度约束下完成。架构师、开发人员、测试人员:首先考虑的是,最初的构建和以后(yǐhòu)的维护与演进。项目经理:需要组织团队,制定迭代计划。市场人员:想通过品质特点实现与竞争者的差异化。用户:包括最终用户、系统管理员,以及安装、部署、准备、配置人员。技术支持人员:关注帮助平台电话呼入的数目和复杂性。34清华大学出版社共四十页创建(chuàngjiàn)软件体系结构具体系统,会有其它关键的关注点。功能性:产品向用户提供哪些功能?可变性:软件可能需要哪些改变?哪些改变不太可能发生,不需要特别容易进行这些改变?性能:产品达到怎样的性能?容量:多少用户并发使用该系统?该系统为用户保存多少数据?生态系统:在部署的生态环境中,该系统与其他系统进行哪些交互?模块化:如何将编写软件的任务分解为工作指派(模块),特别是这些模块可以独立地开发,并能够准确、容易地满足彼此的需要?可构建性:如何将软件构建为一组组件,并能够独立实现和验证这些组件?哪些组件应该复用其它产品,哪些应该从外部供应商处获得(huòdé)?产品化:如果产品以几种变体的形式存在,如何开发一个产品线,并利用这些变体的共性?产品线中的产品以怎样的步骤开发?在创建一条软件产品线时,要进行哪些投资?安全性:产品是否需要用户认证,或者必须限制对数据的访问?数据的安全性如何得到保证?如何抵挡“拒绝服务”攻击或其他攻击?35清华大学出版社共四十页1.4.3 设计阶段的软件体系结构根据在设计过程中,对FR和NFR考虑的阶段不同,可以将软件体系结构设计方法分为3类:FR驱动的软件体系结构设计,根据FR得到初步的体系结构设计模型,然后,通过一定的手段,精化设计结果以逐步达到NFR的目标,典型的方法,包括评估与转化、自顶向下组装)等。NFR驱动的软件体系结构设计将NFR作为首要(shǒuyào)考虑因素,将NFR直接映射成为体系结构的建模元素,典型的,包括属性驱动的设计ADD等。集成FR和NFR的方法,将FR和NFR视为同等重要的设计输入,在体系结构设计过程中,同时兼顾FR和NFR,并将其转化成相应体系结构的建模元素这类方法,往往与面向Aspect的方法相结合,典型的,包括UseCase和目标驱动、形式化设计分析框架FDAF、Aspect构件等。36清华大学出版社共四十页体系结构的复用(fùyònɡ)
圣索菲亚大教堂,是拜占庭建筑之美的代表。1100年后,ChristopherWren使用了同样(tóngyàng)的设计,来建造圣保罗大教堂的穹顶,并成为伦敦的地标性建筑。37清华大学出版社共四十页系统(xìtǒng)的构架结构软件结构关系适用于分解是一个子模块;与之共享秘密资源分配、项目结构化和规划;信息隐藏、封装;配置控制使用要求正确出现设计子集;设计扩展分层要求正确的出现、使用服务、提供抽象增量式开发;在“虚拟机”可移植性上实现系统类是一个实例;共享访问方法在面向对象的设计系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内科呼吸题目题库及答案
- 昆明文理学院《景观设计方法Ⅱ》2023-2024学年第二学期期末试卷
- 吉利学院《移动通信技术产品及物联网应用》2023-2024学年第二学期期末试卷
- 赣南师范大学《中国民族音乐史》2023-2024学年第二学期期末试卷
- 西安医学高等专科学校《文学概论2》2023-2024学年第二学期期末试卷
- 新疆财经大学《助产技能学(Ⅰ)》2023-2024学年第二学期期末试卷
- 长春健康职业学院《舞蹈创编(二)》2023-2024学年第二学期期末试卷
- 湖北警官学院《朝鲜语会话二》2023-2024学年第二学期期末试卷
- 琼台师范学院《旅行社产品设计》2023-2024学年第二学期期末试卷
- 宿迁职业技术学院《物流管理前沿》2023-2024学年第二学期期末试卷
- 军事研学训练营行业跨境出海项目商业计划书
- 2025年苏教版数学小学四年级下册期末真题及答案(七)
- 2025年国家公务员考录《申论》真题及参考答案(行政执法卷)
- 车间物料员员试题及答案
- 百香果购销合同协议
- 蔚来:2024年环境、社会及公司治理报告(ESG)
- 2025年高考英语一模试题分类汇编:读后续写(新高考)
- 《铁路建设工程生产安全重大事故隐患判定标准》知识培训
- 2025小学教科版(2024)科学一年级下册教学设计(表格版)附目录
- GB/T 45324-2025锂离子电池正极材料粉末电阻率的测定
- 管理学基础-形考任务三-国开-参考资料
评论
0/150
提交评论