面向对象软件工程方法学实践 |
|
作者:龚建伟 |
|
两位研究面向对象软件工程的美国学者 (Stave Halladay和Michael Wiebel) 曾这样说:“一般的面向对象编程(OOP)思路不过是一批乌合之众,把灵机一动、随机应变的技巧用于他们绞尽脑汁抽象出来的‘对象’而已。即使是最优秀的 OOP 程序员,他们所能对付的极限也莫过于中等规模的开发项目。倘若程序员经验不足,系统规模又很大,那么采用 OOP 只能把你引入漫无边际的泥沼之中。” 一方面是几乎没有一位软件工程学者认为 OOP 是完美无缺的,另一方面是 OOP 势如破竹,近乎每一种最新推出的程序开发工具或语言都采用了 OOP 思路;一方面是越来越多的“乌合之众”在毫无章法、随心所欲地处理着“对象”,另一方面是经过近 30 年的积累已经拥有了最大多数用户的结构化软件方法的日渐萎缩……面对这一现实,研究软件工程方法学的专家们纷纷指出:“当前摆在软件开发方法学面前的一个重要课题是:从理论上理解 OOP 具有强大生命力的天然合理性,并完善面向对象软件工程方法学体系。” 一年来我们通过国内外一些实用系统的开发实践,对面向对象的软件工程方法进行了较为深入的学习和探讨,特别是在北京市公路局计算机系统的一期工程实践中,借鉴国外软件设计经验,较系统地采用了面向对象软件工程方法,受益匪浅。 一、 是“设计主导”还是“程序主导”在一个系统开发过程中是只采用 OOP 还是采用了OOSE(面向对象软件工程)方法,关键看整个开发过程是“设计主导”还是“程序主导”。 近年来,大量先进程序开发工具进入我国,这对提高软件开发效率无疑具有很大的作用。然而,它们又往往使程序主导型软件开发人员在“以程序代系统”、“以算法代设计”的误区里越陷越深。 一般的软件开发人员(包括那些只见程序不见系统的程序员)主观上都认为:软件开发不应“系统设计主导”而应“程序算法主导”。但是用下面几个问题考察一下,结果往往相反。 问题1 在进行软件设计和选择软件开发工具之前,是否进行开发方法学的选择? 所谓方法学是指组织软件生产过程的一系列方法、技术和规范。方法学是软件开发者长年失败和成功经验的理论性总结,从软件重用的思路来说,方法学重用的价值远非某些程序组件重用可比。 以北京市公路局系统为例。首先,在系统调查阶段我们了解到:这个系统要分期 (递增式) 开发。由于处于机构改革时期,系统生存期内的用户需求和系统结构变因很多。这表明目标系统应该具有较强的可维护性,即每期开发成果应在后续工程中具有较高的可重用率。其次,一期工程的工作量相当大(最后成果包括 124 个模块、72 类报表、119个数据库表、439 个窗口、912 个数据窗口),而开发者对公路局业务不了解,多为经验不足的大学生,理解需求的能力较低。这表明采用的开发方法学必须能最大限度地减少重复劳动,实现开发过程中的成果共享和重用;必须能支持消除需求理解误差的调整工序,使下游成品阶段的设计变更比较容易进行。 在开发此系统之前,我们承接了一个国外软件的下游开发任务。由于它采用了面向对象的软件设计,使我们深刻认识到国内外软件开发方法学和技术上的差距,颇受启发。 参照我们承接的国外软件开发工作量计算方法,即仅下游120个模块 (含报表) 的编码和测试为41人月,那么公路局系统从上游设计开始近200个模块和报表、100多个数据库表的开发工作量至少也应在120人月以上。由于采用了面向对象的软件工程方法,尽管开发人员大多经验不足,但是第一期工程总工时最终仍控制在 80 人月以内,降低成本1/3左右。同时在系统可维护性、重用度及其他功能和性能指标上,均超过了我们以往采用结构化方法开发的系统。 对停留在程序主导级开发的软件开发人员来说,他们选择 OOP 的原因也往往是被动的。其实,在程序主导开发者的辞典中是找不到“方法学”这一词的,或者把“方法学”与“程序算法”混为一谈。至于把 OOP 看成是 OOSE 的全部就更不足为怪了。 问题2 对象抽象的出发点是现实世界的问题描述,还是可执行的实例对象? 在现实世界早期抽象阶段,面向对象方法与其他方法区别并不大,都要从现实世界的问题描述出发,即从用户接口、问题领域的知识和经验出发,构筑现实世界的问题模型,也就是确定目标系统是“做什么的”。面向对象的问题分析模型从3个侧面进行描述,即对象模型 (对象的静态结构)、动态模型(对象相互作用的顺序)和功能模型(数据变换及功能依存关系)。软件工程的抽象原则、层次原则和分割原则同样适用于面向对象方法,即对象抽象与功能抽象原则是一样的,也是从高级到低级、从逻辑到物理,逐级细分。每一级抽象都重复对象建模 (对象识别)→动态建模(事件识别)→功能建模(操作识别)的过程,直到每一个对象实例在物理(程序编码)上全部实现。 对象抽象是从逻辑级还是物理级出发,与开发前是否进行方法学选择一样,也是区分OOSE 与 OOP 的试金石。由于许多工具或语言(如PB、C++、Motif) 都支持OOP,使一些程序级系统开发人员可以很方便地不经过逻辑抽象就直接开发物理对象,在早期阶段意识不到从物理层即实例对象出发进行系统开发的祸患,孰不知正是这种随心所欲的 OOP 不仅无法发挥面向对象方法应有的优越性,而且还会给开发后期带来大量返工作业。 和以往采用结构化方法一样,我们在系统设计阶段也引入了原型化方法,以便用系统样品即原型与用户对话,求得对需求理解的勾通,避免或减少后期返工。大多OOP工具都为开发原型提供便利,问题在于原型与最终产品间的关系,即原型是逻辑对象还是物理对象的样品。若是后者,那就等同于最终产品。在木已成舟时再让用户评审,若发现问题,要么推倒重来,要么强迫用户削足适履。事实上,我们为设计评审而基于逻辑对象开发的原型,相当部分被用户否决。但由于尚未进行对象实例即物理级开发,而是使用超类对象原型统一模拟对象事件和操作,所以无论是对象模型、动态模型还是功能模型,修改起来都不困难。 问题3 设计阶段是否先设计超类,是否在实例对象设计开始之前完成超类对象的实现? 面向对象方法开发出的软件具有较强的可重用性,这种重用包括开发项目内部的重用和外部的重用。重用依存于超类设计,没有超类的对象系统好比“把洗衣机当米缸”,不能物尽其用。超类设计的好与不好,首先看其内部重用率的高低,内部重用率高,必然外部重用率也高。 由于系统开发工期紧、工作量大,而我们的开发队伍年轻,经验和人力都不足,内部重用率高的超类开发无疑是我们的救星。它可以减少重复劳动,易于统一规格,对复杂问题统一攻关、统一解决,便于统一维护。 对超类的抽象即实例对象的泛化原则,我们是从下面几个方面考虑的: (1)寻找大多数实例对象的共同行为。 (2)超类的多态性设计要保证使用超类继承关系可以满足各子类的操作要求。 (3)利于信息的隐蔽性,不会破坏数据的完整性,利于将复杂问题简单化。 (4)有利于推行开发规范,统一界面风格。 显然,超类的设计和实现必须在程序员普遍进行实例对象开发之前完成。也就是说,OOSE 的上游系统设计人员必须文武 (设计与编程) 双全,能够担负起超类对象的程序实现与测试任务,这与结构化方法的上层系统设计人员基本可以不编程有所不同。同时,超类对象在下游开发过程中必须经常吸收特化过程中的反馈(包括来自用户的反馈),进行相应的调整修改。所以OOSE担任超类对象设计与实现的设计人员很难像结构化方法那样进入编程阶段后就可以稍事轻松,他们往往始终离不开编程现场。 如果设计阶段不预先设计和开发出超类对象,在同一项目的多数开发者之间没有可以共同继承的祖先对象,甚至在各个开发人员自己的作用范围内都不使用继承关系,那么这不仅不是OOSE,就连称之为OOP都很勉强。 问题4 如何处理对象模型面向对象关系数据库模式的映射? 面向对象的数据库设计方法可以用于各种数据库,如层次型、网络型、关系型,当然也包括面向对象型。OOSE 中的数据库设计无疑必须采用面向对象的数据库设计方法。 数据库设计也称数据库模式,基本上由3个层次的模式构成:从特定DB应用角度来看待DB设计的外部模式;从组织或企业角度出发进行的DB设计即概念模式;处理对应特定 DBMS 特征与局限性的DB设计即内部模式。具体而言,内部模式是数据库的SQL定义,逻辑模式是表集合的逻辑定义,外部模式是从特定应用角度看的局部DB。外部模式与逻辑模式之间的接口是视图、存储过程或其他驻在服务器端的DB处理程序。 如果在抽象出的对象模型中,各个应用分别是一个或多个超类对象的子对象,那么,选择适当细分层次的对象模型将其映射到概念模型,是数据库库表对象设计的关键。外部模式与概念模式之间的接口越少、越简单越好,这样的程序设计简单,数据库和程序都易于维护。也就是说,局部化是个重要的设计原则。 OOP多是数据库的后端处理,是基于既存数据库的。因此无论是否进行过问题世界的对象建模,以及是否将对象模型合理地映射到数据库逻辑模式 (面向对象数据库设计),OOP 都可以工作。 问题5 编程时是否先调查有无可重用 (继承) 对象,是否参与下层对象对上层对象、超类对象的反馈? 埋头于自己分担的程序对结构化方法或许是必须的,但在面向对象方法中担任程序设计的开发人员,应该先去调查对象数据辞典中有无其他开发人员已经完成、自己稍加特化就可重用的对象。从总体上说,对象的共享、重用应该由上层设计人员统一管理,以便保证对象风格的一致性,避免冲突。但是,对象的独立性、封装性和多态性都很便于重用,这是结构化系统所不能比拟的,而重用是软件开发方法学的最重要思想之一。上层设计人员往往不可能面面俱到,懂得软件设计理论的开发人员,即使只开发下层程序也应采用最省力、最有效率的编程方法,即大量使用重用对象。 在继承超类对象和重用他人对象时,若发现有设计不合理的地方,应该及时反映给对象开发的承担者。 对上层设计人员来说,一方面应该鼓励程序实现人员重用既存对象,另一方面应通过开发人员共享对象数据辞典,使个别的对象重用能够立即反映到整体对象模型中,以保证设计变更时的一致性。 二、面向对象方法与结构化方法比较分析是问题抽象 (做什么),设计是问题求解 (怎么做),实现是问题的解 (结果)。任何方法学对客观世界的抽象和求解过程都是如此。在问题抽象阶段,结构化方法面向过程,按照数据变换的过程寻找问题的结点,对问题进行分解。因此,与面向对象方法强调的对象模型不同,描述数据变换的功能模型是结构化方法的重点。如果问题世界的功能比数据更复杂或者更重要,那么结构化方法仍然应是首选的方法学。如果数据结构复杂且变换并不多,那么如以过程主导分析和设计,一旦有系统变更就会给下游开发带来极大混乱。 由于对过程的理解不同,面向过程的功能细分所分割出的功能模块有时会因人而异。而面向对象的对象细分,从同一问题领域的对象出发,不同人得出相同结论的比率较高。 在设计上,结构化方法学产生自顶向下、结构清晰的系统结构。每个模块有可能保持较强的独立性,但它往往与数据库结构相独立,功能模块与数据库逻辑模式间没有映射关系,程序与数据结构很难封装在一起。如果数据结构复杂,模块独立性很难保证。面向对象方法抽象的系统结构往往并不比结构化方法产生的系统结构简单,但它能映射到数据库结构中,很容易实现程序与数据结构的封装。 在软件工程基本原则中有一条“形式化原则”,即对问题世界的抽象结论应该以形式化语言 (图形语言、伪码语言等) 表述出来。结构化方法可以用数据流图、系统结构图、数据辞典、状态转移图、实体关系图来进行系统逻辑模型的描述;而面向对象方法可以使用对象模型图、数据辞典、动态模型图、功能模型图。其中对象模型图近似系统结构图与实体关系图的结合,动态模型图类似状态迁移图,功能模型图类似数据流图。 公路局系统有 100 多个数据库表,但数据的加工 (变换) 很单纯,如果当初选择结构化方法学,情况会怎么样? 在问题抽象的最初阶段不会有太大差异。由于数据变换少,可以把对象和对象的操作看成一一对应,即最初问题描述的对象模型与功能模型基本一致。以其中计划管理处子系统为例,对象是计划管理员、规划管理员、概预算管理员、统计管理员,功能 (操作) 是计划、规划、概预算、统计。 问题存在于下层抽象里。 首先,许多公共超类对象设计与结构化方法相悖,因为它破坏了过程的连续性及系统结构的逻辑层次性,把一些下层模块及在过程分析中没有语义的对象,放在系统结构的上层。因此如果采用结构化方法,须将继承关系改为下层模块调用关系。但是事实上,祖先对象的一些状态 (属性值) 是从主控模块直接得到指示而确定的;从控制角度说,它的确处于系统的上层地位。如果采用结构化方法,结果将是要么把系统结构变成网络状,失去结构化特征,要么放弃这种统一完成重复性劳动的设计方案。 其次,应用对象模型向数据库概念模式的映射设计也是该系统采用面向对象方法的一个标志。如果使用结构化方法,数据库模式可能映射客观世界的数据结构。由于公路、养路单位、管理单位、路况、桥梁、隧道及道路上的绿化情况等各实体间客观存在着复杂的多重关系,其结果可能定义出一个像蜘蛛网似的关系库结构,因而大大加重了数据库前端应用编程和数据库维护的负担。 总之,该系统若使用结构化方法,系统结构和数据库结构都可能成为网状结构,且互相无关。而目前采用的面向对象方法,系统结构和数据库结构都是多重继承结构,相互存在映射关系。显然前者较后者复杂性高、可维护性差、内部重用难度大、重用率低。 其实,无论是用什么方法学开发软件,交给用户的都应该是满足用户当前需求的软件。用户在短期内不会发现开发者使用先进方法学给他们带来的益处,倒是开发者本身由于大大减轻了开发负担而最先受益。但是随着时间的推移,获得最大收益的还是用户,因为软件的长期质量(包括维护成本低和生存周期长)给用户带来的好处才是根本的。 三、方法学是思路不是定律对于方法学,我们是这样理解的: (1)方法学的目的是:使后人分享前人的成功,避开前人的失败,把注意力集中在尚未开拓领域的创造性劳动上。所以方法学与开发人员的创造性是绝不冲突的。它既不能像法律那样靠权威来界定是非边界,也不能像定律那样通过证明和推理给出普遍结论。如果一定要做比喻的话,它好比人的世界观。 (2)没有放之四海而皆准的方法学,任何方法学都有其局限性,所以软件开发人员大可不必拘泥于某种特定的方法学。 例如,面向对象方法的对象模型图,这种形式化语言远不如结构化方法的结构图和数据流图简单明了,倘若把公路局系统全部用对象模型图表述出来,至少也要几十页。由于最上层功能模型与对象模型是一致的,所以我们采用的是结构化方法的系统结构图。 (3)事实表明,由 OOP 带动的 OOSE 方法确实比结构化方法更能自然地抽象现实世界,而且一些 OOP 工具确实已相当成熟。相反,结构化方法及开放平台下的结构化程序开发工具,虽然不能说止步不前,但其近年来的进步是有限的。 (4)根据我们的体会,对实践 OOSE 有以下一些建议:
|
相关推荐
手把手教你用TUSB2E22中继器实现eUSB2与USB 2.0互转(附实测数据对比)
本文详细介绍了如何利用TUSB2E22中继器实现eUSB2与USB 2.0的高效互转,包括技术背景、硬件设计要点、信号完整性测试方法及故障排查策略。通过实测数据对比,展示了TUSB2E22在信号延迟、功耗和眼图性能上的显著优势,为工程师提供了实用的工程方案。
软件工程-第5章 面向对象方法学
文章目录软件工程第5章 面向对象方法学5.1 面向对象方法总览面对对象方法学概念与传统方法学比较面向对象方法学优点5.2 UML简介建模必要性UML构成UML视图5.3 UML静态建模-用例图建立用例模型5.4 静态建模——类图、对象图类图边界类控制类实体类接口类关联关系泛化(继承)关系依赖关系实现关系对象图包5.5 动态建模机制——状态转换图状态转换图——图形元素1.状态2.状态转换3.判定4.历史状态5.6 动态建模机制——顺序图、协作图、活动图消息顺序图(sequence diagram)协作图(Co
这可是全网网工数通方向学习路线最完整,最详细的版本,没有之一
文章篇幅较长,耐心看完你一定有所收获。
(软件工程复习核心重点)第八章面向对象方法学-第一节:面向对象方法学概述
注意:本章是面向对象的内容,而C++又是一个很经典的面向对象语言,所以本节介绍时会引入C++相关知识。如需深入了解C++,可移步 C++学习专栏 文章目录一:要点(1)基本原则(2)定义(3)要点二:优点 一:要点 (1)基本原则 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,使描述问题的问题空间(问题域)与实现解法的解空间(求解域)在结构上尽可能一致 (2)定义 面向对象方法是一种以数据或信息为主线,把数据和处理相
宏基因组分析|完整分析流程梳理
今天先从最基础的全流程框架说起,无论是刚接触的萌新,还是想查漏补缺的同行,都能找到有用的信息。
TCGA之GDC-client工具下载安装与使用
文章主要是对GDC-client工具下载TCGA数据库数据整个过程的一个记录 1.下载GDC-client工具 GDC-client工具网址:GDC Data Transfer Tool | NCI Genomic Data Commons (cancer.gov) 我这里下的是上图中红圈中的版本, 2.解压安装 从网上了解的是不能解压到带中文的路径里,解压后是一个.exe文件,为了能直接在cmd命令行下使用,将其加入系统环境: 点击新建之后,输入将文件解压到的路径,然后...
软工导论知识框架(五)面向对象方法学
该视图定义了系统的需求,因此约束了描述系统设计和构造的某些方面的所有其他视图。它由程序组件的定义,主要是类、类所包含的数据、类的行为以及类之间交互的说明组成。6.UML视图:不同的视图突出特定的参与群体所关心的系统的不同方面,通过合并所有五个视图中得到的信息就可以形成系统的完整描述。配置图包含结点和连接两个元素,配置图中的结点代表实际的物理设备以及在该设备上运行的构件和对象,结点的图符是一个立方体。A是基类,B和C是A的派生类,多态函数Test参数是A 的指针,Test函数可以引用A、B、C的对象。
瑞数jsvmp算法还原流程讲解
又是很久没写文章了,今天水一篇文章吧,鉴于之前有看到过别人的文章被警告的案例,所以这篇文章就仅写一下还原瑞数vmp的大概流程吧(仅记录下自己还原的思路)
软件工程导论复习之面向对象方法学
1. 面向对象方法学的要点和优点 要点: ①认为客现世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合面成。面向对象方法用对象分解取代了传统方法的功能分解。 ②把所有对象都划分成各种对象类,每个类都定义了一组数据和一组方法。 ③按照子类(或称为源生类)与父类(或称为基类)的关系.把若干个对象类组成一个层次结构的系统(也称为类等级)。 ④对象彼此之间仅能通过传递消息互相联系。 优点: ①与人类习惯的思维方法一致 ②稳定性好 ③可重用性好 ④较易开发大型软
从数字后端角度谈谈occ电路(一)
摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件
GPU服务器维修全流程:从检测到解锁
《GPU服务器维修维保全流程指南》摘要:本文系统介绍GPU服务器从检测到解锁的完整维修流程。检测环节包含物理检查(氧化层、散热、PCB板)和电子诊断(ECC报错率、电源波动等);核心维修技术涵盖PCB板修复(微孔镀铜、BGA返修)和芯片级维修(成功率78-92%);解锁验证阶段包括性能解锁(VBIOS重写)和72小时稳定性测试。文末提供故障速查表及维保建议,强调定期除尘可降低38%故障率,推荐环境粉尘浓度控制在≤0.3mg/m³。
[ZT] 面向对象软件工程方法学实践
两位研究面向对象软件工程的美国学者 (Stave Halladay和Michael Wiebel) 曾这样说:“一般的面向对象编程(OOP)思路不过是一批乌合之众,把灵机一动、随机应变的技巧用于他们绞尽脑汁抽象出来的‘对象’而已。即使是最优秀的 OOP 程序员,他们所能对付的极限也莫过于中等规模的开发项目。倘若程序员经验不足,系统规模又很大,那么采用 OOP 只能把你引入漫无边际的泥沼之中。”
23、资产分散化与有效前沿:投资组合优化的核心策略
本文深入探讨了现代投资组合理论的核心概念,包括分散投资的重要性、均值-方差优化框架以及有效前沿的构建与应用。通过案例分析和数学模型,阐述了如何通过科学方法降低投资组合风险并实现最优风险收益权衡。文章还介绍了实际应用中的求解方法与决策流程,为投资者提供系统的投资组合优化指导。
面向对象软件工程方法学实践 (转)
面向对象软件工程方法学实践 (转)[@more@]面向对象软件工程方法学实践 作者:北京工业大学计算机学院 赵晓华 文章来源:AKA杂志 两位研究面向对象软件工程的美国学者(Stave...
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
[软件工程导论(第六版)]第9章 面向对象方法学引论(从理论到实践:三大模型实战解析)
本文深入解析《软件工程导论(第六版)》第9章面向对象方法学的核心理论与实践应用,通过图书馆管理系统等实战案例,详细阐述UML三大模型(对象模型、动态模型、功能模型)的构建技巧与常见陷阱。文章特别探讨了面向对象编程的封装、继承、多态三大特性在实际开发中的优势,并提供了从理论到实践的完整方法论,帮助读者掌握面向对象方法学的精髓。
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
软件工程问答--(非规范回答)
1.你认为软件危机是什么? 答:落后的软件生产方式跟不上软件需求,以及难以维护现有的软件,导致软件开发和维护中遇到的严重问题。 2.软件危机具体表现在? 答:软件开发成本和进度估计不准确(导致)软件成本提高(导致)软件生产方式跟不上软件需求(因为)没有适当的文档资料(导致)质量不靠谱而且不可维护(所以)用户不满意“已经完成”软件。 3.为什么产生软件危机? 答:客观原因--软件是逻辑部件...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
软件工程复习笔记
第一章 软件工程学概述(15分) 1.1 软件危机 软件危机是指在软件开发和维护过程中所遇到的一系列严重问题 表现:成本/进度估计不准确;闭门造车,用户不满意;不可维护;软件成本的比例逐年上升;供不应求;没有适当的文档资料。 产生软件危机的原因(理解即可 by csb) 规模加大、复杂性提高;软件是逻辑产品,缺乏“可见性”;缺乏有效的、系统的技术手段和管理方法;用户和软件开发人员的理解鸿沟...
软件工程复习
软件工程概述 软件 什么是软件 用户和计算机之间的桥梁 从问题空间到求解空间的映射 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合 软件的特点 软件是一种逻辑实体,而不是一种具体的物理实体 软件在运行和使用期间与硬件不同 软件的生产与硬件不同 软件危机 什么是软件危机 在计算机软件系统的开发和维护过程中产生的一系列严重的问题 软件危机的主要表现 成本和进度估计不准确 用户不满意 质量靠不住 不可维护 没有适当的文档 软件成本逐年上升 生产率提高速度跟不上普及
首经贸电子信息复试软件工程导论
一、名词解释 DFD 数据流图Data Flow Diagram PDL 过程设计语言 Process Design Language PAD 问题分析图 Problem Analysis Diagram MTTF 平均无故障时间 Mean Time To Failure MTTR 平均维修时间 Mean Time To Repair MTBF 平均故障间隔时间 Mean Time Between Failure OOA 面向对象分析 Object Oriented Analysis OOD 面向对象设计
期末软件工程导论复习稳过不挂指南(更新中)
软件工程导论
软件工程作业2
软件工程方法论 软件工程方法论更多的是给予开发人员一个可行的、系统性的整体结构的理论框架。软件工程方法论包含3个要素:方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 ...
软件工程知识点超全总结
【概念】:是一种黑测测试技术,这种技术把程序的输入域划分成若干个数据类,一个理想的测试用例能独自发现一类错误。【定义】:是为了获得高质量软件所需要完成的一系列人物的框架,它规定了完成各项任务的工作步骤。【Alpha测试】:用户在开发者的场所下,在开发者的指导中,进行测试,开发者来记录问题。【概念】:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。【概念】:指在软件开发和维护的过程中,遇到的一系列的问题。【概念】:表示静态的、结构化的系统的“数据”性质。【概念】:用于验证软件的有效性。
软件工程导论
目录软件工程概述软件软件危机软件工程软件工程方法学 软件工程概述 软件 软件是计算机系统中独立于硬件的另一个系统 软件包括代码、数据和相应的文档 软件的特性: 复杂性(逻辑和开发过程) 昂贵(软件的成本不断升高) 高风险(成功率比较低) 维护困难(改正性维护、完善性维护、适应性维护) 软件危机 软件危机: 经常延期交付软件 面临超预算的问题 运行存在很多错误 软件危机的原因: 软件本身的特性决定 软件开发的复杂度随规模的增加呈现指数增长 软件危机的表现: 对软件的需求远远超出现有的生产能力 人们依赖于脆弱的
282



被折叠的 条评论
为什么被折叠?



