当前位置:文档之家› 第1讲 软件工程概述

第1讲 软件工程概述

第1讲 软件工程概述
第1讲 软件工程概述

第1讲软件工程概述

信息化系统的特点:海量信息资源、分布、动态、成长、无法集中控制

计算机软件:与计算机系统操作有关的程序以及任何与之相关的文档的集合

程序: 由程序设计语言所描述的、能为计算机所识别、理解和处理的语句序列。程序设计语言有良好、严格语法和语义

面向机器: 如汇编语言、机器语言等面向过程: 如Fortran, Pascal, C等等

面向对象: 如Java等等面向问题: 如结构化查询语言SQL等等

文档:记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料,需求分析文档,软件设计文挡等。

编写文档目的:促进对软件的开发,管理和维护;便于各种人员(用户,开发人员)的交流

软件特点:不会老化逻辑产品(智力, 无形) 维护困难和复杂(完善, 纠错,…...) 生产只需复制

软件开发性质如成本、进度等难以估计软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理

软件危机:软件在开发和维护过程中遇到的一系列问题,困扰学术界和工业界,用户对软件开发缺乏信心,软件开发的高投入和高风险原因:逻辑产品,不同于物理产品,复杂性高,逻辑产品,逻辑复杂性,远高于硬件复杂性,软件的复杂性随规模呈指数级上升。规模大。应用扩大,代码量,1000万行,仍在不断膨胀。影响软件生产率和质量的因素比较复杂。人员的能力和水平。团队合作。缺乏有效、系统原理、原则、方法和工具的指导和辅助。

软件危机-->根源-->解决途径:软件工程产生:1968年NATO 计算机科学会议

软件工程是运用工程的、数学的、计算机等科学概念、方法和原理来指导软件开发和管理和维护的一门学科。

三要素:过程(管理部分)方法(技术手段)工具(自动或半自动地支持软件的开发和管理)要素之间相互关联和支持

目标:正确性可靠性可维护性可重用性可追踪性可移植性可互操作性有效性

原则:抽象,模块化,信息隐藏,局部化,一致性,完全性,可验证性,实践经验的总结软件过程:是指软件生存周期所涉及的一系列相关过程。过程是活动的集合;活动是任务的集合;任务要起着把输入进行加工然后输出的作用。活动的执行可以是顺序的、重复的、并行的、嵌套。

软件生存周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期。

主要阶段:软件定义,软件开发,软件维护。是有条件地引发的。

可行性研究:任务:了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性

需求分析:任务:确定用户对待开发软件系统的需求包括:功能性能运行环境约束

重要性:软件开发依据,软件验收的标准困难性:难以说清, 动态变化, 歧义,复杂

技术途径和工具:需求分析人员需与用户不断、反复地交流和商讨,使用户需求逐步准确化、一致化、完全化。抽象、问题分解、快速原型、多视点等技术

阶段性产品:软件需求规格说明书SRS(功能,性能和运行环境约束)

概要设计:任务:根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划等等。技术途径和工具:根据软件需求规格说明书, 自顶向下, 逐步求精, 抽象, 模块化, 局部化,信息隐藏

阶段性产品:概要设计规格说明书数据库或数据结构设计说明书:集成测试计划。详细设计:任务:细化概要设计所生成的各个模块, 并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划

技术途径:根据SRS和概要设计结果进行,单入口单出口,PDL 阶段新产品:详细设

计规格说明书,单元测试计划

实现:任务:根据详细设计规格说明书编写源程序,并对程序进行调试和单元测试,验证程序与详细设计文档一致性

技术途径和工具:以详细设计规格说明书为依据、基于某种程序设计语言进行编码阶段新产品:源程序代码

集成测试:任务:根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试。技术途径和工具以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试IDE, 专有工具等

阶段性产品:生成满足概要设计要求、可运行的系统源程序和系统集成测试报告

确认测试:任务:根据软件需求规格说明书,测试软件系统是否满足用户的需求

途径:由用户参与,以软件需求规格说明书为依据进行确认测试专有工具。

阶段性产品:可供用户使用的软件产品(文档,源程序)

软件维护:任务:对使用后的软件进行维护例如:修正使用过程中发现的错误-纠错性维护增加新的功能-完善性维护从一个环境搬迁到另一个环境-适应性维护

途径:以文档和源程序为基础按用户要求进行。阶段性产品:版本更新的软件产品

软件过程模型是软件开发全部过程、活动和任务的结构框架。也称软件开发模型或软件生存周期模型。

瀑布模型:主要思想:软件开发过程与软件生命周期是一致的相邻二阶段之间存在因果关系需对阶段性产品进行评审.不足是缺乏灵活性,到最后阶段才能得到可运行的软件版本快速原型模型:优点:有助于获取用户需求,加强对需求的理解尽早发现软件中的错误支持需求的动态变化适合于需求动态变化,事先难以确定系统。不足:不能支持风险分析

螺旋模型:基本思想:是瀑布模型、原型模型的有机结合,同时增加了风险分析

优点有助于获取用户需求,加强对需求的理解尽早发现软件中的错误支持需求的动态变化支持风险分析,可降低或者消除软件开发风险适合于需求动态变化,事先难以确定并且开发风险较大的系统

第2讲可行性研究与项目开发计划

可行性研究是在明确了问题定义的基础上,对软件项目从技术、经济等各方面进行研究与分析,得出问题是否具有可行性结论的过程

任务是对新建或改建项目的主要问题,从技术经济角度进行全面的分析研究,并对其投产后的经济效果进行预测,在既定的范围内进行方案论证的选择,以便最合理地利用资源,达到预定的社会效益和经济效益

四个主要阶段:确认分析(技术可行性,经济可行性,操作可行性,法律可行性)结论报告

系统流程图是描绘物理系统的传统工具。基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。包括程序、文档、数据库和人工过程等它表达了数据在系统各部件之间的流动情况

反映信息在各部分间流动的情况≠控制、处理信息(不同于程序流程图)

项目实施计划是一个综合的计划,它作用于软件开发的全部过程中,是开展项目活动的基础,是软件项目跟踪与监控的基础,也是开发者对客户需求理解的体现。之后是计划的制定。

项目进度安排原则划分相互依赖性时间分配人员分配定义职责定义结果定义里程碑

安排方法:时间进度表(甘特图)关键路线网络计划计划评审技术

成本/效益分析先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡,目的是从经济角度评价开发一个新的软件项目是否可行。

第3讲需求分析与建模

了解用户的期望和要求->软件需求-> 需求分析过程

需求分析的重要性:软件开发的基础和前提最终目标软件系统验收的标准避免或者尽早剔除早期的错误

在需求分析阶段结束之前,系统分析员应该写出软件规格说明书,所有分析方法都应遵守下述准则:

1 必须理解并描述问题的信息域,建立数据模型

2 必须定义软件应完成的功能,建立功能模型

3 必须描述作为外部事件的软件行为,建立行为模型

4 必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节

任务:深入描述软件的功能性能确定软件设计的约束确定软件同其它系统元素接口细节定义软件的其它有效性需求

原则:分析人员要使用符合客户语言习惯的表达、要了解客户的业务及目标、必须编写软件需求报告、需求得到需求工作结果的解释说明;开发人员要尊重客户的意见、要对需求及产品实施提出建议和解决方案;准确地描述产品使用特性。尽量重用已有的软件组件,最大化满足客户功能和质量要求,准确而详细地说明需求,严格地划分需求的优先级,认真细致地评审需求文档和原型。

目标需求分析研究的对象是软件项目的用户要求。准确地表达被接受的用户要求。确定被开发软件系统的系统元素。将功能和信息结构分配到这些系统元素中

常用方法:面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)面向对象的分析方法(OOA) 等

用例分析技术(Use Case):RUP 用户故事、用户素材(User Story):XP 特征驱动(Feature):FDD

分析建模(数据、功能、行为建模)

建模是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。

模型由一组图形符号和组织这些符号的规则组成

模型与工具数据模型—实体-关系图功能模型—数据流图行为模型—状态转换图

原则:需要能够表达和理解问题的信息域和功能域,要能以层次化的方式对问题进行分解和不断细化

结构化分析指导思想:“自顶而下,逐步求精”

基本原理:“抽象”与“分解”使用工具数据流图、数据字典、E-R图、状态转换图

分析步骤建立现行系统物理模型->抽象现行系统逻辑模型->建立新系统逻辑模型->补充和优化(分解)

数据建模建立三种相互关联的信息模型数据对象、描述数据对象的属性及数据对象彼此间相互连接的关系

数据对象是需被目标系统所理解的复合信息的表示.所谓复合信息是具有若干不同特征或属性的信息

数据处理“域”:在软件系统中需要处理的数据是现实世界中存在的事物及其联系的反映与数据处理有关的的领域分为三个世界:现实世界信息世界数据世界

E-R方法在需求分析阶段进行数据库逻辑设计过程中使用E-R图,可定义一个实体模型实体模型是现实世界的纯表示,它不涉及数据世界的数据结构、存取路径、存取效率等问题。因此,它可以转换成数据库中的数据模型。数据可以按相应数据模型进行组织。E-R 图中,每个方框表示实体型或属性,方框之间的连线表示实体之间,或实体与属性之间的联系。

数据结构“规范化”:是将数据的逻辑结构归结为满足一定条件的二维表(关系)。目的是:消除数据冗余消除多义性

使关系的“概念”单一化方便操作使关系模式更灵活

数据分析的作用

数据流图行为模型-状态转换图略

验证软件需求的途径与方法

一致性:在所有需求中,任何一条需求不能和其他需求互相矛盾。(形式化描述)

完整性:软件规格说明书必须包括用户需求的每一个功能或性能。(原型)

现实性:指定的需求应是用现有的硬件技术和软件技术可以实现的。(仿真和模拟)

有效性:软件需求确实能解决用户所面对的问题。(原型)

第4讲软件设计

抽象:抽出本质,忽略细节,分

层理解

模块:是由边界元素限定的相邻

程序元素(例如,数据说明,可执

行的语句)的序列,而且有一个总

体标识符代表它。

模块化:就是把程序划分成独立

命名且可独立访问的模块,每个

模块完成一个子功能,把这些模

块集成起来构成一个整体,可以完成指定的功能满足用户的需求。

逐步求精:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。抽象与求精是一对互补的概念。

Miller法则:一个人在任何时候都只能把注意力集中在(7±2)个知识块上。我们只能接受这承认自身的局限性。

信息隐蔽原理:应该这样设计和确定模块,使得一个模块内包含的信息(过程或数据)对于不需要这些信息的模块来说,是不能访问的

局部化:是把一些关系密切的软件元素物理地放得彼此靠近。显然, 局部化有助于实现信息隐藏

模块独立性是模块化、抽象化、信息隐蔽的一个直接产物。模块的独立程度可以由两个定性标准度量,内聚和耦合。

耦合:是对一个软件结构内不同模块之间互连程度的度量。应尽量选用松散耦合的系统“耦合”的使用原则尽量使用数据耦合少用控制耦合和特征耦合限制公共环境耦合的范围完全不用内容耦合

内聚:标志着一个模块内各个元素彼此结合的紧密程度。内聚由弱到强为

偶然内聚->逻辑内聚->时间内聚->过程内聚->通信内聚->顺序内聚->功能内聚

总体设计有数据设计软件结构设计接口设计过程设计

原则 1. 提高模块独立性争取低耦合、高内聚(增加内聚> 减少耦合)

2.模块规模适中过大不易理解;太小则接口开销过大注意分解后不应降低模块的独立性

3.选择适当的深度、宽度、扇出和扇入4模块的作用域应在其控制域之内

5 降低接口的复杂程度6接口复杂可能表明模块的独立性差出单入,避免内容耦合8. 模块功能可预测

常用的几种图形工具层次图HIPO图结构图(SC图)

程序流程图,盒图,PAD图,判定表

伪码和过程设计语言(PDL)特点:(1)关键字的固定语法(2)自然语言的自由语法,它描述处理特点

(3)数据说明的手段(4)模块定义和调用的技术,提供各种接口描述模式

Jackson结构化设计方法(描述数据结构的工具)由下述五个步骤组成:

1 分析并确定输入数据和输出数据的逻辑结构,并用Jackson图描绘这些数据结构

2 找出输入数据结构和输出数据结构中有对应关系的数据单元

3 从描绘数据结构的

Jackson图导出描绘程序结

构的Jackson图

按照在数据结构图中的层

次,在程序结构图的相应层

次,为每对有对应关系的数

据单元画一个处理框

人机界面设计指南一般交

互指南信息显示指南数据

输入指南

第5讲软件实现

把编码和测试统称为实现

编码就是把软件设计结果翻译成用某种程序设计语言书写的程序

软件测试在软件生命周期中横跨两个阶段。编码和单元测试属于软件生命周期的同一个阶段,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段

选择程序设计语言的理想标准应该有理想的模块化机制,以及可读性好的控制结构和数据结构。语言特点应该使编译程序能够尽可能多地发现程序中的错误;选用的高级语言应该有良好的独立编译机制

实用标准系统用户的要求可以使用的编译程序可以得到的软件工具工程规模程序员的知识软件可移植性要求软件的应用领域

编码风格:程序内部的文档数据说明语句构造输入输出风格的规则效率

软件测试的目的为了发现程序中的错误而执行程序的过程;

原则所有测试都应该能追溯到用户需求;应该在测试开始之前就制定出测试计划;测试发现的错误中的80%很可能是由程序中20%的模块造成的。问题是怎样找出这些可疑的模块并彻底地测试它们;应该从“小规模”测试开始,并逐步进行“大规模”测试。穷举测试是不可能的

方法静态测试代码审查静态分析动态测试步骤单元测试集成测试确认测试系统测试

白盒测试技术逻辑覆盖(指设计测试用例对程序的内部分支逻辑结构进行部分或全部覆盖的技术)

基本路径(主要思想是根据软件详细设计的过程性描述或源代码中的控制流程求出程序的环形复杂性度量,然后用此度量确定程序的基本路径集合,并由此导出一组测试用例来覆盖该集合中的每一个独立的路径,从而可以保证每个语句至少执行一次)测试循环测试

黑盒测试技术等价类划分法边界值分析法因果图法错误猜测法

第6讲面向对象方法学

面向对象方法学的要点尽可能模拟人类习惯的思维方式,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。是一种以数据和信息为主线,把数据和处理相结合的方法。把对象作为由数据及可以施加在这些数据上的操作所构成的统一体

OOM的4个要素对象类继承消息

优点:1. 与人类习惯的思维方式一致 2. 稳定性好 3. 可重用性好 4. 可维护性好

OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。喷泉模型

对象既可以是具体的物理实体的抽象,也可以是人为的概念,或者是任何有明确边界和意义的东西。

特点:①以数据为中心,不设与数据无关的操作;②Object主动处理而不被动地等待被处理,外部只能通过message请求操作;③具有封装性;④具有并行性;⑤模块独立性好

模型在软件开发中模型的应用 系统分析员从不同角度抽象出目标系统的特性,使用精确的表示方法构造系统的模型,验证模型是否满足用户的需求,在设计过程把实现细节加进模型,直至用程序实现模型,

用面向对象方法开发软件:描述系统数据结构的对象模型,描述系统控制结构的动态模型,描述系统功能的功能模型。

建模语言模型通常由一组图示符号和组成这些符号的规则组成,定义和描述问题域的术语和概念。为建立模型,需要用适当的语言来表达模型。建模语言由记号(即模型中使用的符号)和使用这些记号的规则(语法、语义)组成。

类图的基本符号 可见性 操作名(参数表):返回值类型{性质串}

类与类之间通常有关联、泛化(继承)、依赖和细化等4种关系

动态模型的三要素:① 事件:引发对象状态改变的控制信息(瞬时)② 状态:即对象的属性所处的情形(可持续)③ 行为:对象要达到某种状态所做的操作(耗时) 第7讲 统一建模语言UML

目前在软件工程里主要用于系统分析与系统设计。

UML 影响:软件生存周期:RUP (Rational Unified Process )软件建模方式:可视化的语言

软件文档规范:文档由UML 建模工具自动产生 软件人员分工:岗位界线逐渐趋向模糊

第一类图是用例图。用例图从用户的角度描述系统功能,并指出各功能的操作者。

第二类图是静态图,包括类、对象图。类图描述类的定义和类之间的关系(关联、继承、聚合等),对象是类的实例。包描述系统的分层结构。

第三类图是行为图,包括状态和活动图。状态图描述对象的所有可能状态及事件发生时状态的转移条件。活动图描述了用例的活动行为以及活动时的约束关系。

第四类图是交互图,包括时序和协作图。顺序图描述了对象间的动态协作关系,强调消息的时间排列;合作图同样描述了对象间的动态协作关系,但他强调消息发送和接收的对象的结构组织(及连接关系)。

第五类图是实现图,包括构件和部署图。构件图描述了代码构件(模块)的物理结构和构件(模块)间的依赖关系;配置图定义了系统中软、硬件的体系结构。

视图 由多个图构成,是在某一个抽象层上,对系统的抽象表示。一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图。

模型元素代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的概念。分为基元素构造型元素

UML 事关系 图

结构

行为 组织 辅导 关联 依赖 泛化 实现 静态 动态 用 例 图 类 图 对象 图 组件图 配置 图 时序 图 协作 图 状态 图 活动 图 用 例 类 接口 协作 活动类 组件 节点 状态 机 交互 类 注释

约束,是各种模型元素的一种语义条件或限制。一条约束只能应用于同一类的元素。 对泛化的约束 1、完全: 说明泛化中所有子元素都已在模型中说明,不允许再增加其它子元素。

2、互斥: 父类对象不能有多于一个型的子对象。

3、不完全: 说明不是泛化中所有子元素都已说明,允许增加其它。

4、重叠: 给定父类对象可有多于一个型的子对象,表示重载。

对关联的约束: 1、隐式:该关联只是概念性的,在对模型进行精化时不再用。

2、有序:具有多重性的关联一端的对象是有序的。

3、可变:关联对象之间的链(Link)是可变的(添加、修改、删除)。

4、只增:可在任意时刻增加新的链接。

5、冻结:冻结已创建的对象,不能再添加、删除和修改它的链接。

6、xor: “或约束”,某时刻只有一个当前的关联实例。

依赖:抽象 绑定 组合 许可 使用 跟踪 访问或连接 调用 导出 友元 引入 实例 参数 实现 精化 发送

实现关系是一种模型元素(如类)与另外一种模型元素(如接口)连接起来其中接口只是行为的说明而不是结构或者实现。真正的实现由前一个模型元素来完成。

用例模型由若干个用例图构成,用例图中主要描述执行者和用例之间的关系。包括:定义系统、确定执行者和用例、描述用例、定义用例间的关系、确认模型。 注意:用例总是由执行者(角色)启动的。还应画出相应的执行者描述模板。

泛化指出类之间的“一般与特殊关系”,即继承关系。父类与子类之间构成类的分层结构。 类图分为三个层次:概念层、说明层、实现层。

动态模型主要描述系统的动态行为和控制结构。包括4类图:状态图、活动图、顺序图、合作图。

类他是一组具有相同属性、操作、关系、语义的对象模板。他就是面向对象程序设计中的类。数据库中的实体或表也是。

接口 是说明一个类或构件的一个服务的操作集。 协作 是多个元素的交互,用一个仅包含名称的虚线椭圆表示

用例 是跟系统有关的参与者的一组动作序列,参与者可以是人、设备、或其他系统。 主动类 是拥有进程或线程的类,用一个外框线加粗的类表示

构件 是物理上的可替代的软部件 节点 一般是网络中的一台服务器,就是网络中的节点。

模数转数据值班护士 报警 信号比较信

标准病症

信号库 医生 信号数据采样频提供标准 生成病查看病

更新打印病显示病打印病分解《 Extend 》 《 Extend 》 《 Extend 》 《 use 》 《 use

《 use 》 《 use 》 《 use 》 《 use 》 《 use 》 《 use 》

交互是一组对象间的交互信息,用包含操作名的一条有向线段表示

状态机是一个对象或一个交互再其生存周期内响应其事件而经历的状态序列,用一个包含名称的圆角矩形表示序号

依赖一个独立的事物发生变化而影响到另一个事物的语义

关联是对象间连接的结构关系。泛化是指从特殊到一般的关系。

实现是一个类元指定了由另一个类元保证执行的契约语义关系。如接口和实现接口的构件之间、用例和实现他的协作之间,就是实现关系。聚集表示整体与部分的关系。

1业务模型建立组织的一个抽象业务操作流程

2领域模型建立系统的语境业务操作规则

3用况模型建立系统的功能需求用户功能需求列表

4分析模型建立概念设计系统的逻辑设计

5设计模型建立问题的词汇以及它的解决方案物理设计(含字典设计)

6过程模型建立系统的并发和同步机制系统的进程设计

7部署模型建立被执行的系统的硬件拓扑网络结构系统的网络节点设计

8实现模型建立用于实施和发布物理系统的各部件系统的软硬件配置设计

9测试模型建立验证和校验系统的路径系统的测试计划设计

第1章_软件工程学概述练习题

第一章练习题 一、判断题 1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(√) 2..软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开 发实际上就是编写程序代码。(X) 3.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是 生成类的模板。(X) 4.快速原型模型可以有效地适应用户需求的动态变化。(√) 5.类是关于对象性质的描述,由方法和数据组成。(√) 6.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√) 二、名字解释: 1.软件:完成特定功能的程序+数据结构+文档。 2.软件危机:软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。 3.软件工程:指导计算机软件开发和维护的一门工程学。 4.软件生命周期:一个软件从定义、开发、使用和维护直至最终被废弃,要经历的漫长时 期。 5.软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任 务的工作步骤。 6.瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可 行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试盒维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。 7.快速原型模型:是快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往 是最终产品能完成的功能的一个子集。 8.增量模型:是在项目的开发工程中以一系列的增量方式开发系统。增量方式包括增量开 发和增量提交。增量开发是指在项目开发过程中以一定的时间间隔开发部分工作软件; 增量提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。 9.螺旋模型:是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模 型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 对象。

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

软件工程学概述单元测试

3.总体设计单元测试 一、填空题 1.软件模块独立性的两个定性度量标准是()和()。 2.为使用流程图描述结构和程序,限制流程图有五种基本的控制结构()、()、()、until循环、多情况型选择。 3. 软件的结构化设计(SD)方法中,一般分为总体设计和详细设计两阶段,其中总体设计主要是要建立()。 4.层次结构的上一层是下一层的(),下一层是上一层的()。 5.一个模块直接调用的模块数目称为模块的(),一个模块被多少上级模块直接调用称为模块的()。 6.软件设计方法中的Jackson方法是一种()的设计方法。 7.模块的耦合性按耦合强弱程度,由弱到强依次是:非直接耦合、()、标记耦合、控制偶合、外部耦合、公共耦合、()。 8.()内聚是指模块内各成分之间并不存在有意义的联系。 二、判断题 1. 模块越多,开发成本越小。 2. 耦合是指一个模块内各个元素彼此结合的紧密程度。 3. 内聚是指一个软件结构内各个模块之间互连程度的度量。 4. 在软件设计中应该尽量设计紧密耦合的系统。 5. 内容耦合又称为病态耦合,在很多高级程序设计语言中不允许出现任何形式的内容耦合。 6. 如果一个模块内的处理元素是彼此相关的,并且以一个特定的次序执行,则这种内聚为时间内聚。 7. 概要设计阶段完成的主要文档是概要设计说明书。 8.模块的控制域应该在作用域之内。 9.用盒图和PAD图设计出来的算法必定是结构化的。 10.一个模块执行时,必须引用另一个模块的某些数据,则这个模块的独立性不强。 三、选择题 1.用()图描述的程序结构容易实现自动生成程序 A.程序流程图 B.NS盒图 C.PAD图 D.数据流图 2.()可以作为模块。 A.过程 B.子程序 C.函数 D.宏 3.下列关于模块的描述,正确的是()。(多选)

(完整版)软件工程第一二三章习题参考答案

第一章软件工程概述 软件是计算机程序及其有关的数据和文档的结合。 软件危机是指在计算机软件开发和维护时所遇到的一系列问题。 软件危机主要包含两方面的问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。 软件工程是软件开发、运行、维护和引退的系统方法。 软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。 软件工程学的主要内容是软件开发技术和软件工程管理。 软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。 习题参考答案: 1.什么是软件危机?为什么会出现软件危机? 答:软件危机是指在计算机的开发和维护过程中所遇到的一系列严重问题。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。 出现软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中逻辑件而不是物理部件。管理和控制软件开发过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。总结如下: 1)取得正确的用户需求和正确地描述需求很困难 2)开发人员对需求的正确理解也有困难 3)常常在没有正确理解之前就仓促开始编程 4)软件项目缺乏有效的组织、管理和内部交流 5)缺乏软件开发方法、模型和工具的支持 6)软件维护的困难性 2.假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件已经完成时再引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特性?怎样用软件工程消除(至少是缓解)软件危机? 答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

软件工程概述

软件工程概述 王立福 概念:应需而生 软件工程是一类工程。工程是将理论和知识应用于实践的科学。就软件工程而言,它借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量和成本的管理。 软件工程这一概念,主要是针对20世纪60年代“软件危机”而提出的。它首次出现在1968年NATO (北大西洋公约组织)会议上。自这一概念提出以来,围绕软件项目,开展了有关开发模型、方法以及支持工具的研究。其主要成果有:提出了瀑布模型,开发了一些结构化程序设计语言(例如PASCAL语言,Ada语言)、结构化方法等。并且围绕项目管理提出了费用估算、文档复审等方法和工具。综观60年代末至80年代初,其主要特征是,前期着重研究系统实现技术,后期开始强调开发管理和软件质量。 70年代初,自“软件工厂”这一概念提出以来,主要围绕软件过程以及软件复用,开展了有关软件生产技术和软件生产管理的研究与实践。其主要成果有:提出了应用广泛的面向对象语言以及相关的面向对象方法,大力开展了计算机辅助软件工程的研究与实践。尤其是近几年来,针对软件复用及软件生产,软件构件技术以及软件质量控制技术、质量保证技术得到了广泛的应用。目前各个软件企业都十分重视资质认证,并想通过这些工作进行企业管理和技术的提升。软件工程所涉及的要素可概括如下: 根据这一框架,可以看出:软件工程涉及了软件工程的目标、软件工程原则和软件工程活动。 目标:我的眼里只有“产品” 软件工程的主要目标是:生产具有正确性、可用性以及开销合宜的产品。正确性意指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜性是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多问题有待解决,它们形成了对过程、过程模型及工程方法选取的约束。 软件工程活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”。主要包括需求、设计、实现、确认以及支持等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。支持活动包括修改和完善。伴随以上活动,还有管理过程、支持过程、培训过程等。 框架:四项基本原则是基石 软件工程围绕工程设计、工程支持以及工程管理,提出了以下四项基本原则: 第一,选取适宜开发范型。该原则与系统设计有关。在系统设计中,软件需求、硬件需求以及其他因素之间是相互制约、相互影响的,经常需要权衡。因此,必须认识需求定义的易变性,采用适宜的开发范型予以控制,以保证软件产品满足用户的要求。 第二,采用合适的设计方法。在软件设计中,通常要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。合适的设计方法有助于这些特征的实现,以达到软件工程的目标。 第三,提供高质量的工程支持。“工欲善其事,必先利其器”。在软件工程中,软件工具与环境对软件过程的支持颇为重要。软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。

《软件工程》第一章软件工程学概述

第一章软件工程学概述 1.1 软件危机 1.1.1 软件的定义 ——定义:软件=“完成特定功能的程序+数据结构+文档” ——特征:(3个)软件是开发的,而不是制造的;软件不磨损,但退化;自定义。 ——发展问题 1.1.2 软件危机的表现 ——定义:在计算机软件的开发和维护过程中所遇到的一系列严重的问题。 ——表现:(6个) (1)对软件开发成本和进度的估计常常很不准确。 (2)软件产品质量较差,可靠性低。 (3)用户对开发出来的软件产品不满意。 (4)软件常常是不可维护的。 (5)软件产品缺少应有的文档资料。 (6)软件产品的供不应求。 1.1.3 软件危机的原因 ——客观原因 ——主观原因 1.2 软件工程 1.2.1 软件工程的概念 ——定义:指导软件开发与维护的工程科学。采用工程的概念、原理、技术和方法来开发和维护软件,综合运用正确的管理技术和最好的技术方法,以经济 地开发出高质量的软件并有效维护它。 IEEE的定义:①软件工程是把系统的、规范的、可度量的途径应用于软件 开发、运行和维护过程,也就是把工程应用于软件;②对这些途径加以研究。 1.2.2 软件工程的基本原理(7个) ——(1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果可以清楚地审查 (6)开发小组成员少而精 (7)承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学:3个要素(方法、工具和过程) ——传统方法学:结构化技术,软件生命周期 ——面向对象方法学:类+对象+继承+消息,软件开发过程更接近人类认知模式 1.3 软件生命周期 1.3.1 软件生命周期的概念 ——定义:一个软件从定义、开发、使用和维护,直至最终被废弃,要经历的漫长的时期称为软件生命周期。

第01章软件工程概述

第一章软件工程概述 我们知道,计算机软件是整个计算机系统中具体实现各种功能和操作的核心部分。软件工程即采用工程的概念、原理、技术和方法来开发和维护软件,将工程管理技术成功的经验和思想与具体软件的开发过程、研究技术相结合,形成一整套适合于计算机软件开发的方法、规范和技术。因此,软件工程这门课程,对于从事软件开发研究的专业人员,特别是高层次的管理、分析、开发人员,显得比以往更加重要。 1.1 软件工程的基本概念、特点、分类 1.1.1软件的概念、特点 计算机软件是程序、数据及相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列,数据是使程序能正常操纵信息的数据结构,文档是与程序开发、维护和使用有关的图文材料。 要深入进行计算机软件的开发和研究,首先要了解计算机软件的特点和计算机软件开发的规律。计算机软件可归结具有如下几个共同特点: 1、软件是一种逻辑实体,而不是具体的物理实体。因此,它具有抽象性。 2、软件的生产与硬件不同,软件是由开发或工程化而形成的,它没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。软件成为产品之后,其制造只是简单的拷贝而已。 3、任何机械、电子设备在运行和使用过程中,其失效率大致遵循如图1-1所示的U型曲线(即浴盆曲线)。软件的情况与此不同,它不存在磨损和老化问题。然而,它存在退化问题,设计人员必须多次修改(维护)软件,图1-2(a)给出了软件故障率的理想曲线,图1-2(b) 给出了实际的软件故障率曲线。

4、软件的开发和运行往往受到计算机系统的限制,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。 5、迄今为止,软件的开发尚未完全摆脱手工艺的方式。 6、软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。 7、软件的成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它投入的成本是比较高的。 8、相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构设置、体制运作及管理方式等问题,甚至涉及到人们的观念和心理,这些因素直接影响到项目的成败。 9、从市场上买到的软件,它本身就是一个完整的软件,而不能作为构件再组装成新的程序。但目前已有大量的支持“软件复用”的软件和中间件作为相对独立的构件。

第一章软件工程概述习题及答案

第一章软件工程概述习题 及答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第一章软件工程概述 一. 填空题 1. 软件的发展过程 , , , . 2. 基于软件的工作方式,软件可以划分为 , , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境 . 4. 在计算机系统中,软件是 , 而硬件是 . 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,, . 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤 , , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型 , , , , , . 14. 软件工程面临的问题有 , , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和 . 16.基于软件的功能划分可以把软件划分为 , ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。 18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原 则: , ,和 , 。

第一讲软件工程概述.doc

第一讲:软件工程概述 软件的定义 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料 软件危机 软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件? 软件工程的定义 B o e h m:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料 I E E E:软件工程是开发、运行、维护和修复软件的系统方法 F r i t z B a u e r:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法 软件工程要素 三要素:方法、工具和过程(缺乏一个过程,洗厕所的都有方法和工具,但没有一个好的过程)软件工程方法为软件开发提供了“如何做”的技术 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境 软件生命周期(Life Cycle) 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期 软件生存期的六个步骤,即制定计划、需求分析、设计、实现、测试及运行维护 软件生命周期:制订计划 确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源(硬件,软件,人力等)、成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查 软件生命周期:需求分析 对用户提出的要求进行分析并给出详细的定义,得到系统逻辑模型,可用数据流程图、数据字典和简要算法加以表示。 编写软件需求说明书或系统功能说明书及初步的系统用户手册 提交管理机构评审 软件生命周期:软件设计 概要设计—把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。 详细设计—对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。通常用的H I P O (层次图加输入/处理/输出图)或P D L(过程设计语言)描述。 编写设计说明书,提交评审。 软件生命周期:实现编码

习题-1-软件工程概述

第一章习题 一、选择题 1、1968年北大西洋公约组织的计算机科学家召开国际会议,讨论问题,这次会议上正式使用了软件工程这个名词。 (A)系统设计(B)软件危机(C)设计模式(D) 软件开发 2、下面哪些不属于软件工程学的内容是: A、软件开发方法 B、软件环境 C、成本估算 D、人员配置 3、下面哪个途径属于摆脱软件危机的方法:() A、多安排软件人员进行编程 B、招聘编程水平高的人员 C、采用必要的组织管理措施 D、提高计算机硬件的配置 4 下面哪个是开发原型系统的目的: (A)检验设计方案是否正确(B)画出系统的逻辑模型 (C)给出系统的最终用户界面(D)系统是否可行 5、在下列工具与环境中()属于较早期的CASE。 A.基于信息工程的CASE B.人工智能CASE C.集成CASE环境 D.交互编程环境 6、软件复杂性主要体现在() A.数据的复杂性 B.程序的复杂性 C.控制的复杂性 D.问题的复杂性 7、用于设计阶段,考核实现方案是否可行的是()原型。 A.探索型 B.演化型 C.实验型 D.增量型 8、具有风险分析的软件生存周期模型是() A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 9、软件工程管理的具体内容不包括对_________管理。 A.开发人员B.组织机构 C.过程D.设备 10、在RUP开发过程模型的主要特征是_________。 A.迭代和原型 B.增量和原型 C.迭代和增量 D.瀑布和原型 二、问答题 1.在你平时开发软件时,遇到过类似于“软件危机”的现象吗?你通常是怎么解决的?2.通过对本章内容的学习,你认为软件工程主要研究哪些问题。谈谈你对这些问题的理解。3.假如你的客户需求很模糊,或者他不是很了解软件开发的一些概念,这时,你拟采取什么过程模型?为什么? 4. 假设你开发一个软件,它的功能是把73624.9385这个数开平方,所得到的结果应该精确到小数点后4位,一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种生命周期模型,请说明理由。

软件工程概论复习题(答案)[1]汇编

软件工程概论复习题答案 一、单选题 1.软件工程的纵向分解是把软件开发分为几个(B) A.模块B.阶段C.子系统D.过程 2.McCall软件质量度量模型中属于面向软件产品操作的是(D) A.适应性B.可重用性C.可测试性D.可用性 3.快速原型模型中,用于及早向用户提交一个原型系统的是(D) A.实验型原型B.探索型原型C.提交型原型D.演化型模型4.软件维护中,因重新初始化控制标志或指针而引起的错误是以下哪一项的副作用(B)A.文档B.数据C.编码D.设计 5.软件维护费用高的主要原因是(B) A.生产率高B.生产率低C.人员多D.人员少 6.根据对软件开发机构调查的结果可知,各类维护活动所占的比重是(A)A.完善性占50%,适应性占25%,校正性占21%,其他维护占4% B.完善性占25%,适应性占50%,校正性占21%,其他维护占4% C.完善性占21%,适应性占25%,校正性占50%,其他维护占4% D.完善性占21%,适应性占50%,校正性占25%,其他维护占4% 7.下列属于用白盒技术设计测试用例的是(B) A.错误推测B.逻辑覆盖C.等价类划分D.因果图 8.有助于培养良好的编程风格并且第一个体现了结构化编程思想的程序设计语言的是(A) A.PASCALB.FORTRAN C.DL/1D.C 9.在软件详细设计过程中不采用的工具为(C) A.判定表B.PDL C.数据流图D.IPO图 10.根据输入输出的数据结构产生程序结构的设计方法是(B) A.PARNAS方法B.JACKSON方法C.WIRTH方法D.DIJKSTRA方法11.在软件设计中,为解决一个大而复杂的问题把软件系统划分为一个个完成某一特定的子功能的方法称为(C) A.细化B.结构化C.模块化D.抽象化 12.结构化方法在建立软件系统的结构模块时按照以下哪种方法进行?(B) A.由底向上B.自顶向下C.随机D.回归 13.两个模块之间传递的是同一个数据结构的地址,这种耦合方式称为(C ) A.控制耦合B.公告耦合C.标记耦合D.数据耦合 14.结构化设计是以哪个阶段产生的DFD图为基础,按一定的步骤映射成软件结构?(B)A.可行性分析B.需求分析C.概要设计D.详细设计 15.结构化方法的基本原则是功能的分解和( C ) A.模块化B.信息隐藏C.抽象D.细化 16.数据字典和数据流图共同构成了系统的(B) A.物理模型B.逻辑模型C.原型D.目标模型

相关主题
文本预览
相关文档 最新文档