软件系统分析与设计
第一章 绪论
概念
软件的概念
面向过程的程序=算法+数据结构
面向对象的程序=对象+消息
软件=知识+程序+数据+文档
软件生存期
软件生命周期是指一个从用户需求开始,经过开发、交付使用,在使用中不断地增补修订,直至软件报废的全过程,亦称软件生存期(Life Cycle)。 软件生命周期分为以下七个阶段:
(1)可行性研究和项目开发计划。
该阶段必须要回答的问题是“要解决的问题是什么”。
(2)需求分析。
该阶段的任务不是具体地解决问题,而是准确地确定“软件系统必须做什么”,确定软件系统必须具备哪些功能。
(3)概要设计。
概要设计就是设计软件的体系结构,该结构由哪些模块组成,这些模块的层次结构是怎样的,这些模块的调用关系是怎样的,每个模块的功能是什么。同时还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
(4)详细设计。
即对每个模块完成的功能进行具体描述,要把功能描述变为精确的、结构化的过程描述。
(5)程序编码。
该阶段把每个模块的控制结构转换成计算机可接受的程序代码,即编写成以某特定程序设计语言表示的“源程序”。
(6)软件测试。
它是保证软件质量的重要手段,其主要方式是在设计测试用例的基础上检验软件的各个组成部分。测试分为单元测试(模块测试)、集成测试、系统测试等。
(7)软件维护。
软件维护是软件生存期中时间最长的阶段。已交付的软件投入正式使用 后,便进入软件维护阶段,它可以持续几年甚至几十年。
为了描述软件生存期的活动,提出了多种生存期模型,如瀑布模型、增量模型、螺旋模型、迭代模型、喷泉模型、智能模型等。
软件的分类
按照软件的作用和应用范围
-
系统软件
-
应用软件
-
支撑软件
-
可复用性软件
软件授权许可方式的不同
-
专属软件
-
开源软件
-
共享软件
-
免费软件
-
公共软件
软件和程序的区别
程序和软件的区别是,软件是为了完成特定的功能,解决特定的问题而用计算机语言编写的命令序列集合,可以理解为应用程序的集合。而应用程序是软件的一个组成部分,它是软件的必要元素。
软件开发技术的主要开发方式
-
生命周期开发方式
-
原型化的开发方式
-
自动形式系统的开发方式
软件开发技术的重要性
计算机软件的开发技术从根本上解决了计算机软件开发问题与计算机需求之间的矛盾,计算 机软件开发技术的不断提高使得软件的使用的过程中安全性能更高。
软件开发方法
结构化开发方法
结构是指系统内各组成要素之间的相互联系、相互作用的框架。结构化开发方法 (Structured Developing Method)是一种面向数据流的开发方法,它的基本原则是功能的分解与抽象。结构化开发方法强调系统 结构的合理性以及所开发的软件的结构的合理性,也被称为面向功能的软件开发方法或面向数据流的软件开发方法。该方法提出了一组提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息隐蔽等。它是现有的软件开发方法中最成熟、应用最广泛的方法,该方法的主要特点是快速、自然和方便。
结构化开发方法的指导思想是“自顶向下、逐步求精”。
模块化开发方法
模块化开发方法就是把一个待开发的软件系统分解成若干可单独命名和编程的较为简单的部分,这些可单独命名和编程的部分称为模块。每个模块分別独立地开发、测试,最后再组装出整个软件系统。这种方法不仅可以将软件系统开发的复杂性在分解过程中降低,便于修改、维护,而且还容易实现同一个系统不同部分的并行开发,从而提高了软件的生产效率。
一般将用一个名字就可调用的一段程序称为“模块”。在考虑模块化时,将模块定义为多大较合适,模块设计规则应如何制定成为关键。
模块化开发方法具有以下特点:
(1)模块可分解性:如果一种开发方法提供了将问题分解成子问题的系统化机制,它就 能降低整个系统的复杂性,从而实现一种有效的模块化解决方案。
(2)模块可组装性:如果一种开发方法使现存的设计模块能够被组装成新系统,它就能 提供一种不用从头开始的模块化解决方案。
(3)模块可理解性:如果一个模块可以作为一个独立的单位被理解,那么它就易于构造和修改。
(4)模块连续性:如果对系统需求的微小修改仅导致对单个模块而不是对整个系统的修改,则修改引起的副作用就会被最小化。 一般来说,对模块采用耦合和内聚两个准则进行度量。如模块内部具有高内聚和模块间低耦合,那这样的模块就具有独立性,模块设计得比较好。
原型化开发方法
原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。原型化方法的基本思想:花费少量代价建立一个可运行的系统,使用户及早获得学习的机会。原型化方法又称速成原型法(Rapid Prototyping),强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求,将维护和修改阶段的工作尽早进 行,使用户验收提前,从而使软件产品更加适用。
原型化方法分为:
1.快速建立需求规格原型(RSP 法)
RSP(Rapid Specification Prototyping)法所建立的原型反映了系统的某些特征,让用户学习,有利于获得更加精确的需求说明书;需求说明书一旦确定原型即被废弃,后续的工作仍按照瀑布模型开发, 所以也称为废弃( Throw Away)型。
2.快速建立渐进原型(RCP 法)
RCP( Rapid Cyclic Prototyping)法采用循环渐进的开发方式,对系统模型做连续精化,将系统 需要具备的性质逐步添加上去,直至所有性质全部 满足。此时的原型模型也就是最终的产品,所以也称为追加(Add On)型。
面向对象的开发方法
面向对象的开发方法( Object-Oriented Software Development,OOSD)其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便 对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。
Coad 和 Yourdon 给出一个面向对象的定义:
面向对象=对象+类+继承+消息
面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。
对象与类是讨论面向对象方法的最基本、最重要的概念。
OOSD 由 OOA(面向对象的分析)、OOD(面向对象的设计)和 OOP(面向对象的程序设计)三部分组成。
系统分析
系统分析的主要目的是使项目团队更全面正确地理解触发项目的问题和业务需求,因此, 需要进一步分析问题和业务领域,同系统用户进行有效的沟通以便清楚地定义新系统的业务需求和预期。
系统设计的主要目的是将业务需求转变成用于指导系统实施的物理设计说明,即考虑如何将技术用于新系统中,这就需要信息技术方面的专家协同工作。系统设计是详细的计算机 系统方案的规格说明,关注的是系统的技术方面。
习题
选择题
(1)下列不属于软件主要特性的是(D )。
(A)无形
(B)高成本
(C)包括程序和文档
(D)可独立构成计算机系 统
(2)下列不属于面向对象开发方法的是(C )。
(A)Booch (B)UML (C)RCP (D)OMT
(3)一般子系统的划分是在系统( C)阶段,根据对系统的功能/数据分析的结果提出的。
(A)需求分析 (B)逻辑阶段 (C)总体设计 (D)详细设计
(4)软件系统开发的结构化方法的一个指导思想是(A )。
(A)自顶向下 (B)自底向上 (C)分步实施 (D)重点突破
(5)系统开发的主要方法有结构化开发方法、模块化开发方法、原型化开发方法和 (D )。
(A)自顶向下法 (B)由底向上法 (C)模块法案 (D)面向对象开发方法
(6)软件系统建设的结构化方法中用户必须参与的原则是用户必须参与( B)。
(A)系统建设中各阶段工作
(B)系统分析工作
(C)系统设计工作
(D)系统实施工作
(7)由用户开发应用系统可以解决的主要问题是(B )。
(A)提高应用系统效率
(B)系统开发直接反映用户需求
(C)增强系统的可靠性
(D)降低开发成本
(8)软件的结构化设计(SD)方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是设计(A )。
(A)软件算法和内部实现细节 (B)软件结构 (C)软件模型 (D)软件模块
(9)在详细设计阶段,经常采用的工具有(A )。
(A)PAD (B)SA (C)SC (D)DFD
(10)下列系统设计工具中,(B )不属于详细设计工具。
(A)N—S 图 (B)数据流图 (C)程序流程图 (D)PAD
(11)系统设计阶段的主要成果是(C )。
(A)用户的决策方针 (B)用户的分析方案 (C)系统设计说明书 (D)系统总体设计方案
(12)下面哪一项不是系统设计阶段的主要活动(D )。
(A)系统总体设计 (B)系统硬件设计 (C)系统详细设计 (D)编写系统实施计划
判断题
(1)软件就是程序,编写软件就是编写程序。(× )
(2)瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(× )
(3)文档是软件产品的一部分,没有文档的软件就不称其为软件。(× )
(4)结构化方法的工作模型是使用螺旋模型进行开发。(× )
(5)结构化方法和面向对象方法都是一种面向过程的软件开发方法。(× )
(6)原型化开发方法包括生成原型和实现原型两个步骤。( ×)
(7)面向对象开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。 (√)
(8)软件工具的作用是为了延长软件产品的寿命。( × )
(9)在软件项目开发过程中,项目经理起关键作用。(√ )
(10)在需求分析过程中,起关键作用的是用户。(√ )
课外
1.研究开发所需要的成本和资源是属于可行性研究中的(B)研究的一方面。
A、技术可行性 B、经济可行性
C、社会可行性 D、法律可行性
2.在SD方法中全面指导模块划分的最重要的原则是(D)
A、程序模块化 B、模块高内聚
C、模块低耦合 D、模块独立性
3.软件生命周期中所花费用最多的阶段是(D)
A、详细设计 B、软件编码
C、软件测试 D、软件维护
4.下列属于维护阶段的文档是( C )
A、软件规格说明 B、用户操作手册
C、软件问题报告 D、软件测试分析报告
5.下列文档与维护人员有关的有(C)
A、软件需求说明书 B、项目开发计划
C、概要设计说明书 D、操作手册
6.维护中,因误删除一个标识符而引起的错误是(C)副作用。
A、文档 B、数据 C、编码 D、设计
7.产生软件维护的副作用,是指(C)
A、开发时的错误 B、隐含的错误
C、因修改软件而造成的错误 D、运行时误操作
8.(D)是以提高软件质量为目的的技术活动。
A、技术创新 B、测试 C、技术创造 D、技术评审
9.原型化方法是一种(A)型的设计过程。
A、自外向内 B、自顶向下 C、自内向外 D、自底向上
10.需求分析最终结果是产生(B)。
A、 项目开发计划 B、 需求规格说明书
C、 设计说明书 D、 可行性分析报告
11.软件详细设计的主要任务是确定每个模块的( A )。
A、 算法和使用的数据结构 B、 外部接口
C、 功能 D、 编程
12.PAD图为(B)提供了有力的工具。
A、 系统分析 B、 软件的自动化生成
C、 自动分析数据 D、 测试软件
13.为了提高模块的独立性,模块内部最好是( C )。
A、 逻辑内聚 B、 时间内聚
C、 功能内聚 D、 通信内聚
14.可行性研究要进行一次(D)需求分析。
A、 深入的 B、 详尽的
C、 彻底的 D、 简化的、压缩了的
15.软件是一种(C)。
A、 程序 B、 数据 C、 逻辑产品 D、 物理产品
16.软件总体设计是指软件总体结构设计和数据设计,该阶段的主要任务不包括(D).
A、设计软件的模块结构 B、定义接口并建立数据结构
C、生成概要设计规格说明和组装测试计划 D、模块设计
17.软件可行性研究一般不考虑(D)
A、是否有足够的人员和相关的技术来支持系统开发
B、是否有足够的工具和相关的技术来支持系统开发
C、待开发软件是否有市场、经济上是否合算
D、待开发的软件是否会有质量问题
18.对在数据流图中每一个命令的图形元素均给以定义是(B)
A、条目定义 B、数据字典 C、数据定义 D、数据说明
填空题
➢软件=(程序)+(文档)。
➢ 软件工程的基本原则包括( 分解 )、( 独立性 )、一致性和( 确定性)。
➢ 需求分析的基本任务是准确的回答(系统必须做什么)。
➢ 数据字典的内容包括六项:数据流、( 数据项 )、数据结构、(数据存储 )、( 处理逻辑)、外部实体。
➢ 模块独立的概念是(模块化)、( 抽象 )、( 信息隐蔽)和局部化概念的直接结果。
➢ 设计出软件的初步结构以后,应该进一步分解或合并模块,力求降低( 耦合 )提高( 内聚 )。
➢ 软件的维护一般经过(分析和理解程序 )、( 修改程序 )、( 重新验证程序 )三个步骤。
➢ 软件开发需要的资源包括( 软件工具 )、( 硬件工具 )和( 人 ),其中( 人 )是最基本的资源。
➢ 程序的效率是指( 程序的执行速度 )和( 程序占用的存储空间 )。
➢ 软件定义的基本任务是确定软件系统的工程(需求),也就是要搞清"做什么
➢ 成本效益分析的目的是从( 经济 )角度评价开发一个项目是否可行。
➢ 汇编语言是面向(机器 ) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。
➢ 详细设计的任务是确定每个模块的内部特性,即模块的算法、( 使用的数据 )。
➢ 基于计算机系统的软件要素中的软部件由程序,数据和(文档)组成.
➢ 数据流图就是用来刻画数据流和转换的信息系统建模技术.它用简单的图形记号分别表示数据流,转换,(数据源)以及外部实体.
➢ 流程图也称为程序框图是最常用的一种表示法,它有顺序,分支和(循环)三个基本控制构件.
➢ 机器语言和汇编语言,也称为(低级语)言
简答题
1.简述软件生存期由哪些主要的阶段组成,每一个阶段的主要任务是什么?
2.简述软件系统分析与设计在软件开发中的重要性。
软件系统分析和设计在软件开发过程中的重要性体现在其发生在软件系统的定义阶段。 其中需求分析阶段为整个软件开发项目的顺利进行和成功打下良好的基础,而设计阶段则为 软件程序的编写打下良好的基础。这两个阶段若做好,可以从根本上减少整个软件开发过程 中耗费的时间及相应的开发成本;反之,如果对系统的需求分析阶段不重视,所开发的软件 无法准确反映用户的需求甚至发生错误,所带来的损失将是不可估量的,而设计阶段的失误 通常需要开发人员付出大量时间和成本进行弥补,甚至会导致项目进入“死亡行军”,最终 不得不完全推翻重新进行
第二章需求的理解与定义
概念
软件需求的概念
软件需求也称为需求分析(Requirement Analysis)、软件需求分析、系统需求分析或需求分析工程等。是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性 能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统“必须做什么?”的过程。Boehm对软件需求的定义:研究一种无二义性的表达工具,它能为用 户和软件人员双方都接受并将“需求”严格地、形式地表达出来。
需求分析的过程
-
需求获取
需求获取也称为需求调查,主要是对新系统进行需求获得、导出和分析的过程,是由分析人员通过调研、座谈、走访、问卷、召开座谈会等形式,深入了解用户对新系统的需求。
-
综合需求与描述
从系统角度来理解软件,确定对所开发软件的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求具体包括:功能需求(做什么)、性能需求(要达到什么指标)、 可靠性需求(不发生故障的概率)、环境需求(如机型,操作系统等)、安全保密需求、用户界面需求、资源使用需求(网络传输带宽、软件运行所需的内存、CPU 等),以及软件成本消耗与 开发进度需求,预测以后系统可能达到的目标等。同时,以各种图表和方法进行详细描述。
-
需求验证
需求验证也被称为需求检验或评审,是对初步确定的需求进行验证或评审,明确正确且 可行的具体需求。实际上大部分需求事先难以验证或无须验证。由分析员、用户或专家对所 确定的需求,从软件的一致性、完整性、现实性和有效性等方面进行审核和验证,以确定正 确和可行的需求,排除不可行的。验证内容为:审查需求文档、依据需求编写测试用例、编 写用户手册、确定合格的标准。验证方法为:自查法、用户审查法、专家审查法和原型法等。
-
需求文档
在上述需求分析的基础上,需要建立软件的需求说明文档,将需求分析的结果采用规范的形式描述出来,形成软件需求说明书、初步用户使用手册,并修改完善项目开发计划,作为以后开发工作的依据。
结构化分析方法
结构化方法总的指导思想是自顶向下、逐步求精,其基本原则是抽象与分解。结构化方法是分析、设计到实现都使用结构化思想的软件开发方法,实际上由三部分组成:结构化分析、结构化设计和结构化程序设计。任何程序都由顺序结构、选择结构和循环结构三种基本 结构构成。结构化方法具有以下特点:
-
开发方法使用最早,使用时间最长。
-
应用最广泛,特别适合于自动控制及过程控制等数据处理方面。
-
相应的支持工具多,发展较为成熟,快速、自然和方便。
自顶向下逐层分解
对复杂的问题,常分解为几个相对易于解决的小问题,然后再分别解决。分解的方法可 分层进行,原理是忽略细节先考虑问题最本质的方面,形成问题的高层概念;然后再逐层添加细节。即在分层过程中采用不同程度的“抽象”级别,最高层问题最抽象,低层较具体。
对某层较复杂子系统划分,针对不同系统可不同处理。划分原则可根据业务工作的范围、 功能性质、被处理数据对象的特点。通常对上层的划分按业务类型划分,下层按功能划分。
习题
(1) 软件质量必须从需求分析开始,在(D )加以保证。
A.开发之前 B.开发之后 C.可行性研究过程中 D.整个开发过程
(2) SA 方法的基本思想是(C )。
A.自底向上逐步抽象 B.自底向上逐步分解 C.自顶向下逐步分解 D.自顶向下逐步抽象
(3) DFD 是常用的进行软件需求分析的图形工具,其基本符号是( C)。
A.输入、输出、外部实体和加工
B.变换、加工、数据流和存储
C.加工、数据流、数据存储和外部实体
D.变换、数据存储、加工和数据流
(4) 判定表和判定树是 DFD 中用以描述加工的工具,它通常描述的对象是(D )。
A.逻辑判断 B.层次分解 C.操作条目 D.组合组件
(5) 系统流程图用于可行性分析中的(C )的描述。
A.当前运行系统 B.当前逻辑模型 C.目标系统 D.新系统
(6) 系统流程图是描述(A )的工具。
A.逻辑系统 B.程序系统 C.体系结构 D.物理系统
(7) 在程序的描述和分析中,用于指明数据来源、流向和处理的辅助图形是( B)。
A.数据结构图 B.DFD C.业务结构图 D.其他图
(8) U/C 矩阵是用来进行(C )的方法。
A.系统开发 B.系统分析 C.子系统划分 D.系统规划
(9) 需求规格说明书的作用不应该包括( D)。
A.软件设计的依据
B.用户与开发人员对软件要做什么的共同理解
C.软件验收的依据
D.软件可行性研究的依据
简答
什么是需求分析?需求分析阶段的基本任务是什么?
答:需求分析是当前软件工程中的关键问题,需求分析阶段的任务是:在可行性分析的 基础上,进一步了解、确定用户需求。准确地回答 “系统必须做什么?” 的问题。获得 需求规格说 明书。还涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和 软件系统运行的环境。它还涉及到这些因素和系统的精确规格说明,以及系统进化之间的 关系。
需求分析的基本任务包括:
1. 确定总体目标及组织结构;
2. 深入领域分析,画出业务流程图;
3. 分析数据流程,画出数据流图;
4. 确定功能需求,完成功能结构图及点列表;
5. 获取性能需求,列出性能点列表;
6. 明确处理关系,列出接口列表;
7. 确定系统运行环境及界面;
8. 修正开发设计和新系统方案;
9. 编写需求文档,验证确认需求。
------
(1)抽取需求 分析现行系统存在需要解决的问题。获取足够多的问题领域的知识,需求 抽取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方 法等;还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的 知识获取等 。
(2)模拟和分析需求 需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模 型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需 求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又 分为企业模拟、功能需求模拟和非功能需求模拟等。
(3)传递需求 传递需求的主要任务是书写软件需求规格说明。
(4)认可需求 就是对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和 冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些 只能用人的因素去控制。
(5)进化需求 客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客 户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对于传统的变化 管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发展是软件 家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不 一致性, 并进行关于变化的推理。
第三章 UML与可视化建模
概念
基于UML的可视化建模过程
习题
(1)UML 的全称是 ( C)
A. Unify Modeling Language
B. Unify Modem Language
C. Unified Modeling Language
D. Unified Making Language
(2)下面描述中,哪个不是建模的基本原则?( D)
A. 认真选择模型
B. 每个模型可以有多种表达方式
C. 最好的模型总是能够切合实际
D. 对一个重要的系统用一个模型就可以充分描述
(3)什么概念被认为是第二代面向对象技术的标志(C )
A. UML 语言 B. 用例 C. 类 D. 面向对象建模语言
(4)UML 建模方法基于如下哪种建模方法?( B)
A. 面向过程建模方法
B. 面向对象建模方法
C. 面向服务建模方法
D. 面向业务建模方法
(5)以下哪一项不是面向对象程序设计的主要特性?( D)
A. 封装 B. 继承 C. 多态 D.抽象
(6)下面关于参与者的说法不正确的是( C)
A. 每个参与者可以参与一个或多个用例
B. 不同的参与者可以访问相同的用例
C. 参与者就是系统的用户
D. 参与者对于系统而言总是外部的
(7)下面关于类的说法不正确的是( )
A. 类是面向对象系统组织结构的核心
B. 类可以包含属性和操作
C. 一个类只能实现一个接口
D. 一个类可以实现一个或多个接口
简答题
简述基于UML的可视化建模过程。
(1)在需求捕获阶段,通过用例视图从外部参与者的角度获取系统所应该提供的服务, 建模为相应的用例图及用例描述。当然,若需描述这些参与者、用例之间的协作与交互,也 可进行动态建模,见第(2)步。
(2)在系统分析与设计阶段,包括两部分:结构建模和动态建模。前者包括静态视图和设计视图,后者包括状态机视图、活动视图和交互视图。在结构设计时对系统事物分析抽象出的类(属性和行为)及类之间的关系建模为静态视图中的类图,进行主题划分得到的子系统及子系统之间的关系建模为静态视图中的包图;在详细设计时,使用 UML 的动态模型描述在特定环境下这些类的实例的行为,包括状态机视图、活动视图、交互视图,对类的属 性、行为、关系进行进一步的设计精化,添加实现所需的技术类、进行必要的类的分解等。 类的分解建模为设计视图的内部结构图,对实现系统的元素的组织则建模为设计视图的组件 图。
(3)系统实现阶段。根据分析与设计阶段所得到的模型图,用面向对象编程语言实现 系统。
(4)测试阶段。需求捕获阶段和系统分析与设计阶段的模型图可为测试提供依据,如, 依据类图和类规格说明编写测试用例进行单元测试,依据组件图和协作图编写测试用例进行 集成测试,依据用例图及用例描述编写测试用例进行系统测试、验收测试。
(5)部署及维护阶段。将运行环境中系统硬件的物理拓扑结构及在此结构上执行的软 件,建模为部署图。所有这些阶段的模型图,对系统的维护升级提供支持。
简述UML提供了哪些视图,这些视图分别由哪些模型图呈现。
(1)用例视图:强调外部用户所能观察到的系统功能的模型图。其展现图为用例图。
(2)静态视图:展现系统的静态或结构组成及特征。也称结构模型视图或逻辑视图。 其展现图为类图。
(3)设计视图:建模应用本身的设计结构,支持将类映射到实现组件、扩展高层类到支持结构、提供功能的协作。其展现图包括内部结构图、协作图和组件图。其中,内部结构图展现一个类的分解;协作图描述为实现一些目的而进行交互的系统元素的语境关系;组件图展现实现系统的元素的组织。
(4)状态机视图:建模类对象的可能生命状态,其展现为状态机图。
(5)活动视图:建模执行计算或工作流所涉及的计算活动间的控制流,其展现为活动图。
(6)交互视图:描述系统元素间的消息交互序列,提供系统行为的整体视图。其展现图包括两种侧重于不同方面的图:时序图和通信图,其中,时序图按时间顺序描述系统元素 间的交互,通信图以几何排列的方式显示交互中的系统元素。
(7)部署视图:展现系统实现环境的结构和行为特征,也称为物理视图,其展现图为部署图。
(8)模型管理视图:建模模型本身的组织,通常以包图的形式展现。
(9)扩展机制 (profile):扩展机制允许在不改变底层元模型的情况下对 UML 进行有 限的变化
试述UML用例图在软件需求建模中的用途。
用例图 (Use Case Diagram) 从用户的角度描述人们希望如何使用一个系统,列出谁将是相关的用户(外部参与者),哪些系统将是相关的外部系统(外部系统),用户、外部系统希望系统提供什么服务(用例),以及用户、外部系统需要为系统提供的服务(参与者与 用例的关系),是 UML 中非常重要的图。
(1)从用户的角 度理解系统,能帮助用户尽可能完整的描述需求,减少沟通障碍;
(2)以关联人员可以理 解的方式进行说明,使得需求可以得到证实和验证。
UML活动图和状态图之间有何不同?
概念:活动图是一种描述系统行为的图,建模执行计算或工作流所涉及的计算活动间的控制流,其展现为活动图;
状态图是一种系统分析的常用工具,建模类对象的可能生命状态,其展现为状态图。
①描述对象不同
状态图:描述对象状态及状态之间的转移;
活动图:描述从活动到活动的控制流。
②使用场合不同
状态图:描述对象在其生命期中的行为状态变化;
活动图:描述过程的流程变化。
第四章 业务领域分析
概念
业务领域分析就是对需求分析中涉及到的业务实体,以及它们相互之间关联关系的分析。
是通过与用户进行交流,掌握领域知识,然后绘制成业务领域模型,去 指导我们软件开发的过程。日后我们去设计开发系统时,应当设计哪些类,类中都应当有什 么属性和行为,以及怎样去设计数据库,都是以这个领域模型为基础的,虽然有时并不完全 与领域模型完全一致
习题
选择题
1、以下哪个不是领域工程阶段的主要任务(B)。
A、领域设计 B、需求分析 C、领域分析 D、领域实现
2.领域分析的主要目的是获得(A),从而描述领域中系统之间共同的需求,即(D);领域设计的主要目标是获得(C),从而描述领域模型中表示需求的解决方案:领域实现的主要目标 是开发和组织可重用信息,并对基础软件架构进行实现。
A.领域需求 B.领域边界 C.特定领域软件架构 D.领域模型
3.特定领域软件架构(Domain Specific Software Architecture,DSSA)是一种有效实现特 定领域软件重用的手段。在其基本活动中,(A)的主要目标是依据领域模型和 DSSA 开发 并组织可重用信息。
A.领域实现 B.领域设计 C.领域分析 D.领域运维
第五章 结构化系统分析与设计
概念
结构化分析的定义
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法给出 了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐藏等。针对软件生存周期各个不同的阶段,它分为结构化分析(Structure Analysis,SA)和结构化程序设计 (Strucuture Programming,SP)等方法
习题
(1) 结构化设计步骤中决定问题类型的顺序为:A
A:①确定信息流的类型;②划定流界;③将数据流图映射为程序结构;④提取层次控制 结构;通过设计审查进一步精化该结构。
B:①确定信息流的类型;②划定流界;③提取层次控制结构;④将数据流图映射为程序 结构;通过设计审查进一步精化该结构。
C:①确定信息流的类型;②划定流界;③将数据流图映射为程序结构;④通过设计审查 进一步精化该结构;提取层次控制结构。
D:①确定信息流的类型;②将数据流图映射为程序结构;③划定流界;④提取层次控制 结构;通过设计审查进一步精化该结构。
(2) 0 级数据流图到 1 级数据流图的求精, 两层间输入输出流的一致性。A
A:需要保证; B:不需要保证; C:不知道 D:不确定
(3)判断信息流是否属于事务流的核心是: C。
A:是否有变换; B:是否有处理; C:是否有中心事务; D:是否有输出
(4) 数据 字典是用于定义和说明数据流程图上的各种 。C
A:处理 B:数据流 C:实体 D:成分
(5) 系统分析的结果是要给出系统的 。C
A:物理设计 B:总体设计 C:逻辑设计 D:系统设
第六章面向对象系统分析与设计
概念
面向对象技术主要强调在软件研发过程中面向客观现实世界或问题域中的事物,采用 人类在认识客观世界的过程中普遍习惯运用的思维方法,更加直观、自然地描述客观世界中 的有关事物,成为计算机界关注的重点和软件开发方法的主流。
面向对象的方法则将软件系统看作一系列离散的解空间对象的集合, 并使问题空间的对象与解空间对象尽量一致,这些解空间对象相互之间发送消息相互作用, 从而获得问题空间的解。
面向对象的开发方法OOSD(Object-Oriented Software Development)的基本思想是尽可能 按照人类认识世界的方法和思维方式分析和解决问题,可提供更加清晰的需求分析和设计, 是指导软件开发的系统方法。OOSD贯穿于整个软件生命期,其中面向对象的分析与设计是 面向对象开发的关键。
习题
(1)下列不属于面向对象技术的基本特征的是(B )。
A. 封装性 B. 模块性 C. 多态性 D. 继承性
(2)面向对象程序设计将描述事物的数据与 ( C) 封装在一起,作为一个相互依存、不 可分割的整体来处理。
A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象
(3)关于面向对象方法的优点,下列不正确的叙述是 (C )。
A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好
(4)下列不属于类的成员函数的是 ( C)。
A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数
(5)继承机制的作用是 (C )。
A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象
(6)( D)是从用户使用系统的角度描述系统功能的图形表达方法。
A. 类图 B. 对象图 C. 序列图 D. 用例
时序图
第八章 软件质量控制与评价
概念
软件质量控制也称为质量控制,是一系列任务,通过识别缺陷和纠正开发软件中的缺陷来确保软件质量。这是一个被动的过程,此过程的主要目的是在发布软件之前纠正所有类型的缺 陷。通过纠正工具消除问题根源(导致质量低下),从而使软件能够满足客户的要求和高质量, 从而完成该过程。
软件质量控制的概念及目的
软件质量控制对开发过程中的软件产品的质量特性进行连续的收集和反馈,通过质量管理和配置管理等机制,使软件开发过程向着既定的质量目标发展。质量控制是质量管理的的路标和动力,质量管理是质量控制的执行机制。
习题
选择题
(1)以下关于软件质量控制的叙述中,正确的是(B)
A、质量控制是监督并记录开发活动结果,以便评估绩效
B、确认项目的可交付成果及工作满足主要干系人的既定要求是软件质量控制的主要作用 之一
C、质量管理计划是质量控制的输出,项目管理计划中不包括质量管理计划
D、核实的可交付成果是质量控制的输出。同时也是确认范围过程的一项输出
(2) 需求评审标准包括(ABCD)。 A、正确性 B、无歧义性 C、完全性 D、可验证性
(3) 设计开发评审的目的是为了(BD)。
A.确定设计输出是否满足输入要求 B.识别任何问题并提出必要的改进措施
C.评价是否满足使用要求 D.评价设计和开发的结果满足要求的能力
(4) 测试的关键问题是(B )。
A.如何组织软件评审 B.如何选择测试用例 C.如何验证程序的正确性 D.如何采用综合策略
综合习题
网址
https://wenku.baidu.com/view/7c75bb24cf2f0066f5335a8102d276a201296022.html
软件工程——理论与实践
设计题
某图书管理系统工程有以下功能:
(1)借书:输入读者借书证。系统首先检查借书证是否有效,对于第一次借书的读者,在借书文件建立档案。否则 ,查阅借书文件,检查该读者所借图书是否超过10本,若已达10本,拒借,未达10本,办理借书(检查库存、修改库存目录并将读者借书情况登入借书文件).
(2)还书:从借书文件中读出与读者有关的记录,查阅所借日期,如果超期(3个月)作罚款处理。否则,修改库存目录与借书文件。
(3)查询:可通过借书文件、库存目录文件查询读者情况、图书借阅情况及库存情况,打印各种统计表。请就以上系统功能画出分层的DFD图,并建立重要条目的数据字典。