【系统分析师之路】第五章 软件工程(复盘系列)

【系统分析师之路】第五章 软件工程(复盘系列)

第一部分 综合知识历年真题

2007下综合知识历年真题

【2007下系分真题第13题:绿色】
13.在软件过程模型中,不属于演化过程模型的是(19)模型。
(19)
A.增量
B.螺旋
C.线性顺序
D.并发开发

解答:答案选择C。送分题。

  1. 本质上线性顺序模型被设计成支持直线开发。
  2. 瀑布方法是假设当线性序列完成之后就能够交付一个完善的系统,并没有考虑软件的演化特征。
  3. 演化模型是迭代的,其特征是使软件工程师渐进地开发逐步完善的软件版本。
  4. 增量模型融合了线性顺序模型的基本成分(重复地应用)和原型实现的迭代特征,增量模型采用随着日程时间的进展而交错的线性序列
  5. 螺旋模型是一个演化软件过程模型,将原型实现的迭代与线性顺序模型中控制的和系统化的方面结合起来,使得软件的增量版本的快速开发成为可能
  6. 并发开发模型不是将软件工程活动限定为一个顺序的事件序列,而是定义了一个活动网络,网络上的每个活动均可并行发生,在一个给定的活动中或活动网络中其他活动中产生的事件将触发一个活动中状态的变迁。

【2007下系分真题第19题:红色】
19.关于SQA活动的描述,不正确的是(26)。
(26)
A.评审各项软件工程活动,以验证其是否符合定义的软件过程
B.负责开发项目的软件过程描述
C.审核指定的软件工作产品,以验证是否符合定义的软件过程中的相应部分
D.记录所有不符合规范的部分,并报告给高层管理者

解答:答案选择B。B和C二选一选错。

  1. 软件质量保证(SQA)是一种应用于整个软件过程的活动,SQA小组的职责是辅助软件工程小组得到高质量的最终产品。
  2. SQA包含:
    (1)一种质量管理方法。
    (2)有效的软件工程技术(方法和工具)。
    (3)在整个软件过程中采用的正式技术评审。
    (4)一种多层次的测试策略。
    (5)对软件文档及其修改的控制。
    (6)保证软件遵从软件开发标准。
    (7)度量和报告机制。
  3. 软件质量不是SQA完全负责,软件开发中有许多参与者负有保证软件质量的责任,包括软件工程师、项目管理者、客户、销售人员和SQA的成员。SQA小组充当客户在公司内部的代表,必须以客户的观点来看待软件。SQA小组的职责是辅助软件工程小组得到高质量的最终产品,为此制定了一组有关质量保证中的计划、监督、记录、分析及报告的SQA活动,这些活动由一个独立的SQA小组执行(或推动)。
    软件工程师通过采用可靠的技术方法和措施、进行正式的技术评审、执行计划周密的软件测试来考虑质量问题,这不是SQA的工作。
2008上综合知识历年真题

【2008年上系分真题第20题:绿色】
20.某个系统在开发时,用户已经定义了软件的一组一般性目标,但不能标识出详细的输入、处理及输出需求;开发者也可能暂时不能确定算法的有效性、操作系统的适应性或人机交互的形式。在这种情况下,采用(23)开发最恰当。
(23)
A.瀑布模型
B.迭代模型
C.原型模型
D.螺旋模型

解答:答案选择C。送分题。

  1. 根据题干描述的软件开发现状与各种软件过程模型的特点,采用原型模型是最恰当的。

【2008年上系分真题第21题:绿色】
22.正式技术复审(FTR)是一种由软件工程师进行的软件质量保证活动,下面活动不属于FTR范畴的是(25)。
(25)
A.在软件的任何一种表示形式中发现功能、逻辑或实现的错误
B.明确声明软件的功能和性能需求,明确文档化的开发标准
C.证实经过复审的软件确实满足需求
D.保证软件的表示符合预定义的标准

解答:答案选择B。送分题。

  1. 选项B其实是软件质量定义中的一部分,并不是属于FTR的职责范畴。
2008下综合知识历年真题

【2008年下系分真题第14题:绿色】
14.软件开发团队欲开发一套管理信息系统,在项目初期,用户提出了软件的一些基本功能,但是没有详细定义输入、处理和输出需求。在这种情况下,该团队在开发过程应采用(19)。
(19)
A.瀑布模型
B.增量模型
C.原型开发模型
D.快速应用程序开发(RAD)

解答:答案选择C。送分题。

  1. 在软件开发过程中,如果用户仅仅提出软件的一些基本功能,但是没有详细定义输入、处理和输出需求。
  2. 在这种情况下,该软件开发团队应该采取原型开发方法最为合适。

【2008年下系分真题第15题:绿色】
15.统一软件开发过程是一种基于面向对象技术的软件开发过程,其特点是“用例驱动,以架构为核心,迭代并增量”。统一软件开发过程定义了四种通用的开发阶段,它们按照过程顺序分别是:起始阶段、(20)、构建阶段和(21),其中在构建阶段主要产生的文档有(22)。
(20)
A.分析阶段 B.细化阶段 C.设计阶段 D.交付阶段
(21)
A.分析阶段 B.细化阶段 C.设计阶段 D.交付阶段
(22)
A.初始用户手册 B.用例模型 C.项目计划 D.设计模型

解答:答案选择B|D|D。二周目黄色变绿色。

  1. 统一软件开发过程〔UP)是一种基于面向对象技术的软件开发过程。
  2. 其特点是“用例驱动,以架构为核心,迭代并增量”。
  3. 统一软件过程定义了5种通用的框架活动,它们按照过程顺序分别是:起始阶段、细化阶段、构建阶段、交付阶段和生产阶段。其中在构建阶段主要产生的文档包括设计模型。

【2008年下系分真题第17题:绿色】
17.敏捷软件过程强调:让客户满意和软件尽早增量发布;小而高度自主的项目团队;非正式的方法;最小化软件工程工作产品以及整体精简开发。(24)不是采用这种软件开发过程的原因。
(24)
A.难以提前预测哪些需求是稳定的和哪些需求会变化
B.对于软件项目开发来说,设计和实现可以做到基本分离
C.从制定计划的角度来看,分析、设计、实现和测试并不容易预测
D.可执行原型和部分实现的可运行系统是了解用户需求和反馈的有效媒介

解答:答案选择B。送分题。

  1. 敏捷软件过程强调让客户满意和软件尽早增量发布
  2. 小而高度自主的项目团队;非正式的方法;
  3. 最小化软件工程工作产品以及整体精简开发。
  4. 产生这种情况的原因是:在绝大多数软件开发过程中,提前预测哪些需求是稳定的和哪些需求会变化非常困难;
  5. 对于软件项目构建来说,设计和构建是交错的;从指定计划的角度来看,分析、设计、构建和测试并不容易预测;
  6. 可执行原型和部分实现的可运行系统是了解用户需求和反馈的有效媒介。

【2008年下系分真题第18题:红色】
18.软件的逆向工程是一个恢复设计的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。逆向工程的完备性可以用在某一个抽象层次上提供信息的详细程度来描述,在大多数情况下,抽象层次越高,完备性就越低。下列可以通过逆向工程恢复的制品中,完备性最低的是(25)。
(25)
A.过程的设计模型
B.程序和数据结构
C.对象模型、数据和控制流
D.UML状态图和部署图

解答:答案选择D。二周目仍然是红色。C和D之间抽象层次不是很明确。

  1. 软件的逆向工程是一个设计恢复的过程,从现有的程序中抽取数据、体系结构和过程的设计信息。
  2. 逆向工程的完备性是指在某一个抽象层次上提供信息的详细程度,在大多数情况下,抽象层次越高,完备性就越低。
  3. 逆向过程和实现该过程的工具的抽象层次是指可从源代码中抽取出来的设计信息的精密程度。
  4. 理想情况下,抽象程度应该尽可能高。
  5. 逆向工程过程应该能够导出过程的设计模型(一种底层的抽象);
  6. 程序和数据结构信息(稍高层次的抽象);对象模型、数据和控制流模型(相对高层的抽象);UML图,状态及部署图(高层抽象)。
  7. 随着抽象层次增高,完备性就会降低。因此本题应该选择D。

【2008年下系分真题第28题:红色】
28.模型是现实世界的抽象或近似,主要包括叙述型、物理型、图解型和数学型等。无论开发何种模型,(36)都是最关键的因素。
(36)
A.经济性
B.简单性
C.灵活性
D.准确性

解答:答案选择D。二周目绿色变红色。

  1. 客观的世界是复杂的,当评估现实世界的对象之间的关系和影响时,通常使用系统模型,用简化的模型来代替真实的系统。
  2. 不论开发什么模型,准确性都是关键因素。
  3. 一个不准确的模型通常会导致对问题的不准确解决方案。
  4. 另外,大多数模型包括许多假设,应尽可能让这些假设同现实情况相符
2009上综合知识历年真题

【2009年系分真题第19题:绿色】
19.某软件公司欲开发一个图像处理系统,在项目初期,开发人员对算法的效率、操作系统的兼容性和人机交互的形式等情况并不确定。在这种情况下,采用(23)方法比较合适。
(23)
A.瀑布式
B.形式化
C.协同开发
D.快速原型

解答:答案选择D。送分题。

【2009年系分真题第20题:黄色】
20.螺旋模型是一种演进式的软件过程模型,结合了原型开发方法的系统性和瀑布模型可控性特点。它有两个显著特点,一是采用(24)的方式逐步加深系统定义和实现的深度,降低风险;二是确定一系列(25),确保项目开发过程中的相关利益者都支持可行的和令人满意的系统解决方案。
(24)
A.逐步交付
B.顺序
C.循环
D.增量
(25)
A.实现方案
B.设计方案
C.关键点
D.里程碑

解答:答案选择C|D。二周目依然黄色。此题需要好好看看。

  1. 螺旋模型是一种演进式的软件过程模型,结合了原型开发方法的瀑布模型的系统性和可控性特点。
  2. 它有两个显著特点:
    2.1 一是采用循环的方式逐步加深系统定义和实现的深度,同时降低风险
    2.2 二是确定一系列里程碑,确保项目开发过程中的相关利益者都支持可行的和令人满意的解决方案

【2009年系分真题第21题:绿色】
21.极限编程是一种重要的敏捷开发方法,包含策划、设计、编码和测试四个框架活动的规则和实践。下面关于极限编程的叙述,错误的是(26)。
(26)
A.极限编程中使用的重要技术是重构,既包括设计技术的重构,也包括构建技术的重构
B.极限编程提倡在基本设计完成后,立即进行编码实现,并进行测试
C.极限编程活动中的关键概念之一是“结对编程”,推荐两个人面对同一台计算机共同开发代码
D.极限编程过程中建立的单元测试应当使用一个可以自动实施的框架,支持代码修改后即时的回归测试策略

解答:答案选择B。

  1. 极限编程是一种重要的敏捷开发方法,包含策划、设计、编码和测试4个框架活动的规则和实践。
  2. 极限编程中使用的重要技术是重构,既包括设计技术的重构,也包括构建技术的重构。
  3. 极限编程提倡在基本设计完成后,团队不应该直接开始编码,而是开发—系列用于检测本次发布的包括所有故事(story)的单元测试;
  4. 极限编程活动中的关键概念之一是“结对编程”,推荐两个人面对同一台计算机共同开发代码。
  5. 极限编程过程中建立的单元测试应当使用一个可以自动实施的框架,支持代码修改后即时的回归测试策略。
2010上综合知识历年真题

【2010系分真题第三题:红色】
03.在面向对象方法中,信息流是通过向参与者或内部对象发送消息形成的。(3)用于描述进出系统的信息流。
A.协作图
B.顺序图
C.数据流图
D.流程图

解答:答案选择B。本题考查面向对象分析与设计的基础知识。二周目依然红色。

  1. 状态图描述了一个对象在其生命周期中可能的状态组合;
  2. 顺序图用来描述对象按照时间顺序的消息流来建模用例;
  3. 数据流图是一种描述数据通过的流程以及系统实施的工作或处理过程的过程模型;
  4. 流程图以图形化的方式展示应用程序从数据输入开始到获得输出为止的逻辑过程

【2010系分真题第17题:绿色】
17.软件开发模型大体上可以分为三种类型。第一种是以软件需求完全确定为前提的(21);第二种是在软件开发初始阶段只能提供基本需求时采用的(22);第三种是以形式化为基础的变换模型。
(21)(22).
A.协同模型
B.瀑布模型
C.变换模型
D.迭代式模型

解答:答案选择B|D。送分题。

  1. 软件开发模型大体上可以分为三种类型。
  2. 第一种是以软件需求完全确定为前提的瀑布模型
  3. 第二种是在软件开发初始阶段只能提供基本需求时采用的迭代式或渐进式模型
  4. 喷泉模型、螺旋模型、统一开发过程和敏捷方法等都属于迭代式或渐进式模型
  5. 第三种是以形式化为基础的变换模型

【2010系分真题第18题:绿色】
18.某小型软件公司欲开发一个基于Web的考勤管理系统,客户对系统的基本功能,表现形式等要求并不明确,在这种情况下,采用(23)开发方法比较合适。
(23)
A.瀑布式
B.形式化
C.结构化
D.极限编程

解答:答案选择D。送分题。

  1. 中小型软件开发公司在面对客户需求模糊或者多变的情况下,采用极限编程的方法能够在更短的周期内,更早地提供具体、持续的反信息,实现轻量、高效、低风险的软件开发。

【2010系分真题第19题:绿色】
19.净室软件工程是软件开发的一种(24)方法,可以开发较高质量的软件。它使用盒结构规约进行分析和建模,并将(25)作为发现和排除错误的主要机制,采用统计测试来获取验证软件可靠性所需要的信息。
(24)
A.形式化
B.迭代式
C.瀑布式
D.交互式
(25)
A.测试
B.仿真
C.实验
D.正确性验证

解答:答案选择A|D。送分题。

  1. 净室软件工程是软件开发的一种形式化方法,可以开发较高质量的软件。
  2. 它使用盒结构规约进行分析和建模,并将正确性验证作为发现和排除错误的主要机制,采用统计测试来获取验证软件可靠性所需要的信息。
  3. 净室软件工程强调在规约和设计上的严格性,以及使用基于数学的正确性来证明对设计模型的每个元素进行形式化验证。
2011上综合知识历年真题

【2011年系分真题第18题:绿色】
18.以下关于敏捷开发原则的叙述中,错误的是(22)
(22)
A.强调通过尽早地、持续地交付有价值的软件来使客户满意
B.经常交付可以工作的软件,但是每次都必须交付具有完整功能的系统
C.在团队内部,最具有效果并富有效率的信息传递方法是面对面的交谈
D.强调应对需求的持续变更,即使在项目后期也可灵活应对需求变更

解答:答案选择B。送分题。

【2011年系分真题第19题:黄色】
19.以下敏捷软件开发方法中,(23)方法强调以业务为核心,快速而有效地进行系统开发。
(23)
A.极限编程
B.自适应软件开发
C.特性驱动开发
D.动态系统开发

解答:答案选择D。二周目红色变黄色。

  1. 动态系统开发方法是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。
  2. 实践证明DSDM是成功的敏捷开发方法之一。
  3. 在英国,由于其在各种规模的软件组织中的成功,它已成为应用最为广泛的快速应用开发方法。
  4. DSDM不但遵循了敏捷方法的原禅,且也适合那些成熟的传统开发方法有坚实基础的软件组织。
  5. FDD (特性驱动开发)由 PeterCoad、Jeffde Luca 和 Eric Lefebvre 共同开发,是一套针对中小型软件开发项目的开发模式。
  6. FDD是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。
  7. ASD (自适应软件开发)由Jim Highsmith在1999年正式提出。ASD强调开发方法的适应性,这一思想来源于复杂系统的混纯理论。
  8. ASD不像其他方法那样有很多具体的实践做法,它更侧重为ASD的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。

【2011年系分真题第20题:黄色】
20.螺旋模型将瀑布模型和(24)结合起来,强调项目的风险分析,特别适合大型复杂系统的开发过程。螺旋模型沿着螺线进行若干次迭代,依次经历了计划制定、风险分析、工程实施和(25)四个主要活动。
(24)
A.喷泉模型
B.增量模型
C.V模型
D.快速原型模型
(25)
A.客户评估
B.客户使用
C.工程交付
D.软件测试

解答:答案选择D|A。二周目第一空还是错了。

【2011年系分真题第21题:红色】
21.某软件公司欲开发一个人力资源管理系统,客户在开发初期对系统的功能并不清楚,但明确表示随着人力资源管理制度的逐步完善,需要对软件功能进行不断调整,针对这种情况,采用(26)开发模型比较合适。
(26)
A.瀑布式
B.喷泉
C.增量
D.螺旋

解答:答案选择C。二周目依旧C和D之间选择错误。

  1. 根据题干描述,可以看出在开发之初,用户对系统的功能并不了解,并且系统的功能会不断变更,针对这种情况,应该采用增量的开发模型。
  2. 这是因为在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
  3. 增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。
  4. 整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。
2013上综合知识历年真题

【2013年系分真题第27题:绿色】
27.RUP中的软件过程在时间上被分解为4个顺序的阶段:初始阶段、细化阶段、构建阶段和移交阶段。架构的确定与建立是在(35)完成的。
(35)
A.初始阶段
B.细化阶段
C.构建阶段
D.移交阶段

解答:答案选择B。三周目红色变绿色。重点关注。

  1. 初始阶段的任务是为系统建立业务模型并确定项目的边界。初始阶段的实现过程为:
    1. 明确项目规模,建立项目的软件规模和边界条件,包括验收标准
    2. 了解环境及重要的需求和约束,识别系统的关键用例
    3. 评估项目风险,在基于RUP的迭代式软件过程中,很多决策要受风险决定,要达到这个目的,开发人员需要详细了解项目所面临的风险, 并对如何降低或处理风险有明确的策略
    4. 制定项目计划,估计整个项目的总体成本、进度和人员配备,综合考虑备选架构,评估设计和自制/外购/复用方面的方案,从而估算出成本、进度和资源
    5. 阶段技术评审,初始阶段结束时要进行一次技术评审,检查初始阶段的目标是否完成,并决定继续进行项目还是取消项目
  2. 细化阶段的任务是分析问题领域,建立完善的架构,淘汰项目中最高风险的元素。 在细化阶段,必须在理解整个系统的基础上,对架构做出决策,包括其范围、主要功能和诸如性能等非功能需求,同时为项目建立支持环境。细化阶段的实现过程为:
    1. 确定架构,建立一个已确定基线的架构,并验证其将在适当时间、以合理的成本支持系统需求; 制定构建阶段计划,为构建阶段制定详细的过程计划并为其建立基线;
    2. 建立支持环境; 选择构建;阶段技术评审。
    3. 资源和避免不必要的报废和返工,使开发成本降到最低;完成所有所需功能的分析。
  3. 在构建阶段,要开发所有剩余的构件和应用程序功能,把这些构件集成为产品,并进行详细测试。
    1. 构建阶段的主要任务是通过优化、开发和测试,快速完成可用的版本
    2. 确定软件、场地和用户是否已经为部署软件做好准备。
  4. 移交阶段的重点是确保软件对最终用户是可用的。
    1. 移交阶段的主要任务是进行P测试,制作产品发布版本,对最终用户支持文档定稿,按用户的需求确定新系统,培训用户和维护人员,获得用户对当前版本的反馈,基于反馈调整产品等。
    2. 移交阶段结束时也要进行技术评审,评审目标是否实现,是否应该开始演化过程,用户对交付的产品是否满意

【2013年系分真题第29题:绿色】
29.下列关于敏捷方法的叙述,(38)是错误的。
(38)
A.敏捷方法强调可工作的软件胜过大量的文档
B.敏捷方法强调软件过程与工具胜过个体和交互
C.敏捷方法强调尽早提交有价值的软件
D.敏捷方法强调小版本发布

解答:答案选择B。送分题。

2014上综合知识历年真题

【2014年系分真题第23题:绿色】
23.某公司要开发一个软件产品,产品的某些需求是明确的,而某些需求则需要进一步细化。由于市场竞争的压力,产品需要尽快上市。则开发该软件产品最不适合采用(27)模型。
(27)
A.增量
B.原型
C.瀑布
D.螺旋

解答:答案选择C。送分题。本题考查软件过程模型的基本概念。

【2014年系分真题第24题:红色】
24.(28)是系统分析阶段结束后得到的工作产品,(29)是系统测试阶段完成后的工作产品。
(28)
A.系统设计规格说明
B.系统方案建议书
C.程序规格说明
D.单元测试数据
(29)
A.验收测试计划
B.测试标准
C.系统测试计划
D.操作手册

解答:答案选择B|D。二周目红色两题都错了。

  1. 随着软件开发工作的开展,会得到许多工作产品或阶段产品,还会用到许多工具软件。所有这些独立的信息项都要得到妥善的管理,决不能出现混乱,以便于在提出某些特定的要求时,将它们进行约定的组合来满足使用的目的。
  2. 这些信息项目是配針管理的对象,称为软件配置项。软件配置项目可以分为以下几类:
    1. 环境类,指软件开发环境或软件维护环境,例如编译器、操作系统、编辑器、数据库管理系统、开发工具、项目管理工具、文档编制工具等;
    2. 定义类,是需求分析与定义阶段结束后得到的工作产品,例如需求规格说明、项目开发计划、设计标准或设计准则、验收测试计划等:
    3. 设计类,设计阶段结束后得到的工作产品,例如系统设计规格说明、程序规格说明、数据库设计、编码标准、用户界面标准、测试标准、系统测试计划、用户手册等;
    4. 测试类,系统测试完成后的工作产品,例如系统测试数据、系统测试结果、操作手册、安装手册等:
    5. 维护类,进入维护阶段以后产生的工作产品。
2015上综合知识历年真题

【2015年系分真题第17题:绿色】
17.某软件公司欲开发一个基于Web的考勤管理系统。在项目初期,客户对系统的基本功能、表现形式等要求并不明确,在这种情况下,采用(21)开发方法比较合适。
(21)
A.瀑布式
B.形式化
C.结构化
D.极限编程

解答:答案选择D。本题考查软件开发方法的基础知识与应用。

  1. 根据题干描述,待开发的Web考勤管理系统在项目初期的需求并不明确,需要不断同用户进行交流与沟通,逐步获得系统的功能要求。2. 在这种情况下,采用敏捷开发方法最为适合,因此应该选择极限编程这种开发方法
2016上综合知识历年真题

【2016年系分真题第22题:绿色】
22.以下关于信息系统开发方法的叙述中,正确的是(33)。
(33)
A.原型化方法是自顶向下的,它提出了一组提高系统结构合理性的准则
B.结构化方法与原型化方法的共同点是在系统开发初期必须明确系统的功能要求,确定系统边界
C.面向服务方法以粗粒度、松散耦合和标准的服务为基础,加强了系统的可复用性和可演化性
D.面向服务的方法适用于那些需求不明确,但技术难度不大的系统开发

解答:答案选择C。送分题。

  1. 自顶向下、提高结构合理的准则应是结构化方法的特点
  2. 对需求不明确的应用场景是原型化方法的优势。

【2016年系分真题第23题:绿色】
23.进程视图是以可执行线程和进程作为活动类的建模,它描述了并发与同步结构。UML中的(34)可以用于表达进程视图。
(34)
A.部署图
B.组件图
C.活动图
D.状态图

解答:答案选择C。送分题。

2019上综合知识历年真题

【2019年系分真题第19题:绿色】
19、结构化设计(StructuredDesign,SD)是一种面向( )的方法,该方法中( )是实现功能的基本单位。
A、数据流
B、对象
C、模块
D、构件

A、模块
B、对象
C、接口
D、子系统

解答:答案选择A|A。考察需求工程中的面向结构化设计。

  1. 结构化设计(StructuredDesign,SD)是一种面向数据流的方法,它以 SRS 和 SA 阶段所产生的数据流图和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。
  2. SD 方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段
  3. 概要设计的主要任务是确定软件系统的结构,对系统进行模块划分,确定每个模块的功能、接口和模块之间的调用关系
  4. 详细设计的主要任务是为每个模块设计实现的细节。

【2019年系分真题第23题:黄色】
23、( )的开发过程一般是先把系统功能视作一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。( )使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型,其功能模型主要用( )实现。
A、面向对象方法
B、OMT方法
C、结构化方法
D、Booch方法

A、面向对象方法
B、OMT方法
C、结构化方法
D、Booch方法

A、状态图
B、DFD
C、类图
D、流程图

解答:答案选择.C|B|B。考察开发方法。二周目依然错了。错了第二空。是

  1. 结构化方法假定待开发的系统是一个结构化的系统,其基本思想是将系统的生命周期划分为系统规划、系统分析、系统设计、系统实施、系统维护等阶段。
  2. 结构化方法遵循系统工程原理, 按照事先设计好的程序和步骤,使用一定的开发工具,完成规定的文档,在结构化和模块化的基 础上进行信息系统的开发工作。结构化方法的开发过程一般是先把系统功能视为一个大的模块,再根据系统分析与设计的要求对其进行进一步的模块分解或组合。
  3. OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。
  4. 对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象 图来实现
  5. 动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定 事件先后关系的状态等,主要用状态图来实现动态模型;
  6. 功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用DFD来实现功能模型。简单地说,功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。

【2019年系分真题第24题:绿色】
24、下列开发方法中,( )不属于敏捷开发方法。
A、极限编程
B、螺旋模型
C、自适应软件开发
D、水晶方法

解答:答案选择B。考察开发方法开发模型。送分题。

第二部分 案例分析历年真题

2008上案例分析历年真题

试题二
阅读以下关于软件开发方面的叙述,在答题纸上回答问题 1至问题4。
当前企业中的业务都是在全球化、快速变化的环境中运营的,传统的软件开发过程无法适应由此产生的快速软件开发需求。20 世纪 90 年代后期,一些软件开发人员在“Agile Allicance 2001”中系统地阐述了敏捷开发的原则,试图强调灵活性在快速且有效地生产软件中所发挥的作用。目前,众多的软件生产企业已经在实际的软件开发过程中接纳并实践了敏捷开发方法中的基本原则。
【问题1】(8分)
敏捷开发有许多典型方法,包括极限编程(eXtreme Programming)、Scrum、Crystal、DSDM等。请问这些方法共同的基本原则是什么?
【问题2】(8分)
敏捷开发的支持者往往夸大该方法的优点,但是在实践中,敏捷方法的基本原则有时确实很难实施。请用200字以内的文字说明敏捷方法中哪些原则在实践中难以实施。
【问题3】(2分)
敏捷开发方法中最有名的是极限编程。请说明极限编程中的结对编程(Pair Programming)的概念。
【问题4】(7分)
敏捷开发方法在具体实践过程中,往往需要开发环境或工具的支持,一般称为快速应用开发技术和可视化开发技术。请用150字以内的文字说明快速应用开发技术所包含的工具有哪些,并简要说明可视化开发技术的基本概念和技术原理

  • 【问题1标准答案】
    1)客户参与
    2)增量式提交
    3)开发团队的技术应该得到承认和发扬,团队成员应该保持它们自己的工作风格,不落俗套。
    4)接受变更
    5)保持简单性
  • 【问题2标准答案】
    1)客户参与往往依赖于客户自身的意愿和客户自身的代表性
    2)天地成员的性格可能不适合激烈的投入,可能无法做到和其他成员之间的良好的沟通
    3)对系统中的变更做出优先级排序可能是极其困难的
    4)维护系统的简洁性往往需要额外的工作,但迫于移交时间表的压力,可能没有时间执行系统简化过程。
  • 【问题3标准答案】
    开发人员成对工作,检查彼此的工作并提供支持,圆满完成任务。
  • 【问题4标准答案】
    快速应用开发中所包括的工具有数据库编程语言,界面生成器,与办公应用的连接,报告生成器。
    可视化开发是一种通过集成细粒度可复用软件组件来构造软件的快速应用方法,其主要思想是用图形工具和可重用部件来交互地编制程序。可视化开发一般是基于事件驱动的原理。
2008下案例分析历年真题

试题一
阅读以下关于某软件系统开发项目的叙述,在答题纸上回答问题1至问题4。
某公司的主要业务是利用网络进行音像制品的管理和销售,以提高其物流配送的效率。随着业务范围的扩展和业务过程的改进,公司CIO 发现现有信息系统业务过程过于僵化、维护困难,不能真正地为企业贡献价值,已经不能满足公司长久发展的战略。在该公司CIO的建议下,某公司在三月初委托某软件企业为其开发出一套新的音像制品在线管理及销售系统AVMSS,要求新系统能够对其现有系统业务过程进行重新设计,以提高公司业务的执行效率并降低维护成本。
该软件企业成立了项目组来开发AVMSS,在对开发任务进行了初步的了解之后,项目组认为某公司原有系统的数据架构稳定,没有必要对原有关系数据模式进行重新设计;新系统应着眼于对系统控制流的改造,通过系统业务流程再造以应对公司的发展需要。但在选择系统开发方法时出现了分歧,张工认为应该采用流行的面向对象开发方法,而李工则认为应该采用成熟的结构化开发方法,项目组经过讨论最终确定在AVMSS系统分析与设计过程中采用李工的建议。
【问题1】(8分)
请对张工和李工所提出的两种系统开发方法进行比较,结合AVMSS系统说明为什么项目组最终采用了李工的建议。
【问题2】(4 分)
结构化分析主要包含初始研究、问题分析、需求分析、逻辑建模和方案分析五个阶段,请用300字以内的文字说明需求分析和逻辑建模两个阶段的目标及主要任务。
【问题3】(8 分)
四月底,项目组完成初始研究阶段的任务进入了问题分析阶段,以确立系统改进目标。刚参加工作的小赵仔细分析了初始研究阶段的相关文档和资料,在讨论会上提出了以下系统改进目标:
a)提高联机订单处理的用户满意程度。
b)新的系统必须使用Oracle数据库管理系统存储数据。
c)数据输入屏幕必须重新设计以使其更加友好。
d)影音销售子系统中订单处理所需的时间减少50%。
这些是好的系统改进目标吗?请分别说明理由。
【问题4】(5 分)
六月初,项目需求分析阶段遇到了大量的困难,并且比计划进度落后了两个星期,项目经理希望通过跳过或者省略逻辑建模阶段的一些任务来赶上进度。项目经理认为,现在大家对需求有了清晰的认识,而且项目组的设计入员和构造人员经验都很丰富,直接可以进行技术设计而并不真正需要逻辑建模。为了赶上进度,这是合理的方法吗?请用200字以内的文字说明理由。

  • 【问题1标准答案】
  1. 结构化开发方法强调系统业务过程的数据流和控制流。
  2. 将系统看作一个过程的结合体。系统数据架构和控制流可以分开设计,强调系统的业务处理过程,适合于业务流程再造和对处理过程要求较高的系统;
  3. 面向对象方法则把系统看作一个相互影响的对象集,对象能够将数据及其行为统一起来,
  4. 对象之间通过消息交换的方式引发对象的行为。
  5. 造成信息系统业务过程低效且维护成本高的一个重要因素是企业的业务过程本身过于僵化,
  6. 不能真正的为企业贡献价值,信息系统只是将这些低效率的过程自动化。
  7. 真正解决的方法是业务流程再造。在AVMSS系统的开发中,强调控制流的改进,因此比较适合于采用传统的结构化开发方法,因此采用李工的建议比较合理。
  • 【问题2标准答案】
  • 结构化分析主要包括了五个阶段:初始研究,问题分析,需求分析,逻辑建模,方案分析。
    1)系统分析阶段
    定义系统的业务需求。具体任务包括定义需求,排列需求的优先次序,修改项目计划,交流需求陈述。
    2)逻辑建模阶段
    使用系统模型进一步记录业务需求并对需求进行验证。具体任务包括结构化功能需求,建立功能需求模型,验证功能需求,定义验收测试用例。
  • 【问题3标准答案】
  1. a)提高联机订单处理的用户满意程度。
    不是,评价方式没有量化的指标。
  2. b)新的系统必须使用Oracle数据库管理系统存储数据。
    不是,是系统约束,不是系统目标。
  3. c)数据输入屏幕必须重新设计以使其更加友好。
    不是,是系统约束,不是系统目标。
  4. d)影音销售子系统中订单处理所需的时间减少50%。
    是。对系统性能量化明确,具体的陈述。
  • 【问题4标准答案】
  1. 不合理的做法。项目执行具有天然的风险。
  2. 系统分析不同阶段的每个任务都为后续任务打好坚实的基础。其每个阶段都不能被跳过或者省略,
  3. 系统逻辑设计阶段产生的图表和文档,是系统所有者和系统用户最后一次验证系统的功能需求,并对发现的错误进行修正和说明的关键。
  4. 本题主要考查考生对于结构化开发方法和面向对象开发方法的掌握情况。
2019上案例分析历年真题

2019年系统分析师下午案例分析第二题(分析+需求工程)
2、阅读以下关于基于MDA(Model Driven Archtecture)的软件开发过程的叙述,在答题抵上回答问题1至问题3。
【说明】
某公司拟开发一套手机通讯录管理软件,实现对手机中联系人的组织与管理。公司系统分析师王工首先进行了需求分析,得到的系统需求列举如下:
用户可通过查询接口查找联系人,软件以列表的方式将查找到的联系人显示在屏幕上。显示信息包括姓名、照片和电话号码。用户点击手机的“后退”按钮则退出此软件。
点击联系人列表进入联系人详细信息界面,包括姓名、照片、电话号码、电子邮箱、地址和公司等信息。为每个电话号码提供发送短信和拨打电话两个按键实现对应的操作。用户点击手机的“后退”按钮则回到联系人列表界面。
在联系人详细信息界面点击电话号码对应的发送短信按键则进入发送短信界面。界面包括发送对象信息显示、短信内容输入和发送按键三个功能。用户点击发送按键则发送短信并返回联系人详细信息界面;点击“后退”按钮则回到联系人详细信息界面。
在联系人详细信息界面内点击电话号码对应的拨打电话按键则进入手机的拨打电话界面。在通话结束或挂断电话后返回联系人详细信息界面。
在系统分析与设计阶段,公司经过内部讨论,一致认为该系统的需求定义明确,建议基于公司现有的软件开发框架,采用新的基于模型驱动架构的软件开发方法,将开发人员从大量的重复工作和技术细节中解放出来,使之将主要精力集中在具体的功能或者可用性的设计上。公司任命王工为项目技术负责人,负责项目的开发工作。
【问题1】
请用300字以内的文字,从可移植性、平台互操作性、文档和代码的一致性等三个方面说明基于MDA的软件开发方法的优势。
【问题2】(8分)
王工经过分析,设计出了一个基于MDA的软件开发流程,如图2-1所示。请填写图2-1中(1)~(4)处的空白,完成开发流程。
在这里插入图片描述
【问题3】(10分)
王工经过需求分析,首先建立了该手机通信录管理软件的状态机模型,如图2-2所示。请对题干需求进行仔细分析,填写图2-2中的(1)~(5)处空白。
在这里插入图片描述

  • 【问题1标准答案】
  1. 可移植性
    在MDA中,先会建立平台无关模型(PIM),然后转换成平台相关模型(PSM),1个PIM可以转换成多个PSM,所以要把软件移植到另一个平台时,只需要将平台无关模型转换成另一个平台的相关模型即可。所以移植性比较强。
  2. 平台互操作性
    在MDA中,整个开发过程都是模型驱动的,所以标准化程度很高,这样为平台的互操作带来了非常大的帮助。
  3. 文档和代码的一致性
    在MDA中,代码是由模型生成的,所以具有天然一致性。这一点其他方法无法比拟。
  • 【问题2标准答案】
    1)平台无关模型
    2)UML建模
    3)模型变换(映射)
    4)模型生成源代码
  • 【问题3标准答案】
    1)点击后退按钮
    2)联系人详细信息界面
    3)点击后退按钮或点击发送按钮
    4)点击拨打电话按钮
    5)拨打电话界面

第三部分 论文写作历年真题

2008下论文写作历年真题

试题二 论敏捷开发方法的应用
敏捷软件开发简称敏捷开发,是从 90 年代开始逐渐引起广泛关注的一些新型软件开发方法,以应对快速变化的需求。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重人的作用。
敏捷开发的发展过程中,出现了多个不同的流派,例如极限编程、自适应软件开发、水晶方法、特性驱动开发等。但其中的基本原则是一致的。从开发者的角度,主要的关注点有短平快会议(Stand Up)、小版本发布(Frequent Release)、较少的文档(Minimal Documentation)、 合作为重 (Collaborative Focus)、 客户直接参与 (Customer Engagement)、自动化测试 (Automated Testing)、 适应性计划调整 (Adaptive Planning)和结对编程 (Pair Programming) ;从管理者的角度,主要的关注点有测试驱动开发(Test-Driven Development)、持续集成(Continuous Integration)和重构(Refactoring)。
请围绕 “敏捷开发方法的应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的软件项目以及你在其中担任的主要工作,包括角色、工作内容等。
2.对开发者关注点中至少三项内容进行解释;结合自己所参与项目,对使用情况予以评价。
3.联系你所参与项目的实际情况,分析并讨论测试驱动开发的使用效果,并评价其优缺点

  • 对于敏捷开发,从开发者的角度,主要关注的内容有:
  1. 短平快的会议
    1. 项目组每天召开的简短会议,每个人回答如下的问题:你昨天做了什么,你今天做什么,你遇到了什么困难,
    2. 站立式会议促进了团队交流,彼此相互熟悉工作内容。
  2. 小版本发布
    1. 尽量多的产品发布,一般以周,月为单位,这样客户每隔一段时间就会拿到发布的产品进行试用,而项目组可以从客户
  3. 较少的文档
    1. 与传统开发方法相比,它不要求撰写大量文档,而是强调测试文档的重要性。
    2. 敏捷开发中存在大量的测试文档,敏捷开发认为,测试文档最大程度上保持了与代码的一致性。
  4. 合作为重
    1. 表现为代码的共享,在敏捷开发中,代码是归团队所有,而不是属于某些人。
    2. 每个人都有权利获得系统任何一部分的代码然后修改他,这样每个人都能熟悉系统的代码,即使团队人员的变动,也没有风险。
  5. 客户直接参与
    1. 敏捷开发中,客户是与开发团队一起工作的,团队到客户现场进行开发或者邀请客户到团队公司来开发。
  6. 自动化测试
    1. 为了减少人力或者重复劳动,所有的测试包括单元测试集成测试都是自动化的,这就对QA人员提出了更高的要求。
  7. 适应性的计划调整
    1.敏捷开发中的计划是可以调整的,可以多次迭代,小版本发布,根据客户反馈随时响应的调整与变化。
  8. 结对编程
    1. 在程序实现和编写测试代码时,采取两个人共同使用一台计算机的方式进行,两个人频繁讨论并相互监督。
  9. 测试驱动开发
    1. 是敏捷开发中的一项重要的内容,要求需求分析之后,首先编写测试代码。
    2. 而功能开发的依据只能是测试代码,目的是在测试代码真实反映用户需求的前提下,功能开发完全满足测试要求即可。
    3. 测试驱动开发在软件业内争论激烈,反对者提出测试驱动开发过于片面,很容易忽略需求中潜在的内容。
2010上论文写作历年真题

试题三 论快速应用开发在系统建模中的应用
快速应用开发(RAD)是一个增量型的软件开发过程模型,强调极短的开发周期。该模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件的建造方法加速信息系统的开发过程。如果能够及时与用户进行交流和沟通,正确地理解需求并约束项目的范围,利用这种模型可以很快创建出功能完善的信息系统。RAD依赖于广泛的用户参与、联合应用设计会议、原型化方法、集成的CASE工具和代码生成器。
请围绕“快速应用开发在系统建模中的应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与分析和开发的信息系统项目以及你所担任的主要工作。
2.简要分析快速应用开发方法的生命周期,并给出各个阶段的主要任务。
3.分析快速应用开发方法的目标,并结合实际项目的实施结果讨论快速应用开发与传统的结构化开发方法相比有哪些优点和缺点。

  1. 快速应用开发概念
    快速应用开发是一个完整的方法,生命周期包含了需求、设计、构建和验收四个阶段,和传统的软件开发生命周期各阶段相对应。
  2. 四个阶段的主要任务
    1. 需求阶段
      结合了软件开发生命周期的系统规划和系统分析阶段。用户,经理和技术人员通过讨论对业务需求,项目范围,约束条件和系统需求达成一致意见,当团队成员对关键问题达成一致意见,并获得管理部门进行的授权时,需求计划阶段结束。
    2. 设计阶段
      用户与系统分析师互相交流,并创建模型和原型来描述所有的系统过程,输入输出。
      RAD组或者子组通过结合使用JAD技术和CASE工具,从而将用户需求转变成工作模型。用户设计是一个连续的,相互影响的过程,帮助用户理解,修改并最终通过满足他们的需求的系统工作模型。
    3. 构建阶段
      构建阶段强调程序和应用开发任务,类似于软件开发生命周期。所不同的是,在RAD中,用户一直参与其中,并且在实际界面或报表开发出来以后仍然可以提出修改建议。
    4. 验收阶段
      类似于传统的软件开发生命周期的实施阶段的最终任务,包括数据转换、测试、转变为新系统,以及用户培训。和传统的方法相比,整个过程是被压缩的。这样,新系统就更快地被创建、交付和投入使用。
    5. 目标
      所有RAD方法的主要目标是通过用户参与系统开发的每一个阶段来缩减开发时间和费用。由于RAD是一个连续的过程,因此随着设计的进行,RAD允许开发小组迅速地做出必要的修改。当公司预算紧张时,对于发生在一个已制定好的长时期的进度表中的变化所带来的花费进行限制尤为重要。
    6. 优点
      和传统的结构化分析方法相比,主要优点是强调用户参与,可以尽快明确需求,降低系统开发风险,缩短系统开发周期
    7. 缺点
      缺点一是RAD强调系统本身的结构,系统可能在短时间内工作得很好,但是系统的整体和长期的目标可能得不到满足。
      缺点二是加速开发周期可能会导致没有更多的时间提高项目质量、连贯性和设计的标准化。
      缺点三是并非所有应用软件都适合于使用RAD,如果一个系统难以模块化,那么建造RAD所需构件就会有问题;
      缺点四RAD不适合技术风险很高的情况,当一个新应用要采用很多新技术或新软件要求与已有计算机程序有较高的可互操作性时,项目也可能会失败。
      缺点五如果需要高性能的指标,且该指标必须通过调整接口使其适应系统构件才能获得,使用RAD方法就有可能失败
2011上论文写作历年真题

试题一 论模型驱动的软件开发方法及其应用
模型驱动架构(MDA)是对象管理组织(OMG)提出的一种新的软件开发方法,它强调由软件系统的建模行为驱动整个系统的开发过程,来完成系统的需求分析、架构设计、构建、测试、部署和运行维护等工作。与传统的UML模型相比,MDA能够创建出机器可读和高度抽象的模型,这种模型通过转换(Transformation)技术可自动转换为代码、测试脚本、数据库定义以及各种平台的部署描述。通过使用MDA技术,可以有效解决传统软件开发过程中的生产效率问题、系统移植问题、互操作问题以及文档和系统后期维护问题。
请围绕“模型驱动的软件开发方法及其应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与实施的模型驱动的软件开发项目以及你所担任的主要工作。
2.阐述模型驱动的软件开发过程中的主要活动,并论述模型驱动的软件开发过程与传统的软件开发过程的区别。
3.阐述在进行模型驱动的软件开发时遇到了哪些问题,如何解决

  • 主要活动
  1. 需求分析人员根据领域需求得到描述软件系统外部特征的计算无关模型(CIM);
  2. 在对CIM进行分析的基础上得到平台无关模型(PIM),并根据业务逻辑进一步精化PIM;
  3. 进行PIM到平台特定模型(PSM)的模型转换;
  4. 将每个PSM转换为实现特定模型(ISM),生成应用程序代码,并进行测试
  • 与传统开发的区别:
  1. 自动实现模型的变换
    传统开发过程中,模型到模型的变换,或者模型到代码的变换都是手工完成的;而模型驱动的开发过程中,模型变换都是由相关工具自动完成的,PIM到PSM,PSM到ISM。

  2. 都可以自动转换实现
    模型是开发产品,也是程序生成的基础设施。
    模型驱动开发过程中,模型是软件开发生命周期中的核心产品,通过一系列转换最终可以自动生成执行代码,是产生执行代码的基础设施。
    在传统开发过程中,模型只是分析人员,设计人员进行分析与交流的文档与图标,不能生成可用的应用程序代码。

  3. 模型变换过程与代码生成过程同步,可维护性强
    模型驱动开发过程中,执行代码是由模型通过转换直接生成的,保证了模型与代码的同步。开发人员维护系统的重心不再是传统开发方法中的程序代码,而是与业务逻辑相关、与技术平台无关的平台无关模型PIM。

  4. 业务逻辑模型与实现技术控制平台分离
    需求分析阶段生成的PIM模型与开发技术,开发平台以及实现技术无关,并且PIM模型可以根据不同的基术平台,自动生成以模型为基础的,适用于不同基术平台的软件系统。

  5. 提高了开发效率和软件质量
    模型驱动开发的模型架构代表了对系统不同层次的抽象,使得开发人员更加清晰地了解系统的整个架构,而不会被具体的实现技术所困扰。开发人员专注于根据系统业务逻辑构建PIM,通过代码生成技术自动生成实现代码,减少了由于人为因素导致的系统实现错误。

2012上论文写作历年真题

试题二 论敏捷开发在企业软件开发中的应用
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。尽管目前敏捷开发的具体名称、理念、过程、术语尚不尽相同,但业界普遍认为:相对于“非敏捷”,敏捷开发更强调程序员团队与业务专家之间的紧密协作、面对面的沟通、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
请围绕“敏捷开发在企业软件开发中的应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与实施的应用敏捷开发的软件项目以及你所担任的主要工作。
2.叙述你在软件项目实践过程中采用了怎样的敏捷开发基本原则并说明理由。
3.具体阐述该项目采用的敏捷开发方法,以及实施过程中存在问题和解决方法。

  • 2001年2月的《敏捷宣言》(Agile Manifesto)是由多位当时称之为“轻量级方法学家”所编写签署的,他们的价值观是:个人与交互重于开发过程与工具;可用的软件重于复杂的文档;寻求客户的合作重于对合同的谈判;对变化的响应重于始终优于遵循固定的计划。
  1. 个人与交互重于开发过程与工具
    一个由优秀的人员组成但使用普通的工具,要比使用优秀的工具但由普通人组成、紊乱的小组做得更好。
    多年来人们花了很多时间试图建立一种过程,以便把人当作机器上的一个可以替代的齿轮,但结果却并不成功。
    敏捷过程是承认每个人都有特定的能力(以及缺点)对之加以利用,而不是把所有的人当成一样来看待。更重要的是,在这样的理念下,几个项目做下来,每个人的能力都从中得以提高。这种人的能力的提高,对公司是无价之宝。而不至于把人当成齿轮,随着时间的推移,人的能力慢慢被消耗掉,最后变成留之无用、弃之可惜的尴尬人物。

  2. 可用的软件重于复杂的文档
    可用的软件可以帮助开发人员在每次迭代结束的时候,获得一个稳定的、逐渐增强的版本。从而允许项目尽早开始,并且更为频繁地收集对产品和开发过程的反馈。随着每次迭代完成软件的增长,以保证开发小组始终是处理最有价值的功能,而且这些功能可以满足用户的期待。

  3. 寻求客户的合作重于对合同的谈判
    敏捷开发小组希望与项目有关的所有团体都在朝共同方向努力,合同谈判有时会在一开始就使小组和客户处于争执中。敏捷开发追求的是要么大家一起赢,要么大家一起输。换句话说,就是希望开发小组和客户在面对项目的时候,以一种合作的态度共同向目标前进。当然,合同是必需的,但是如何起草条款,往往影响到不同的团体是进行合作式的还是对抗式的努力。

  4. 对变化的响应重于始终遵循固定的计划
    敏捷开发认为对变化进行响应的价值重于始终遵循固定的计划。他们最终的焦点是向用户交付尽可能多的价值。除了最简单的项目以外,用户不可能知道他们所需要的所有功能的每个细节。不可避免地在过程中会产生新的想法,也许今天看起来是必需的功能,明天就会觉得不那么重要了。随着小组获得更多的知识和经验,他们的进展速度会比开始的时候期望值慢或者快。对敏捷开发来说,一个计划是从某个角度对未来的看法,而具有多个不同的角度看问题是有可能的。

  • 常见的敏捷开发方法有极限编程,Scrum,水晶方法等。
  1. 极限编程
    主要目标在于降低因需求变更而带来的成本,极限编程透过引入基本价值、原则、方法等概念来达到降低变更成本的目的。
  2. Scrum
    是一种迭代式增量软件开发过程,通常用于敏捷软件开发。包括了一系列实践和预定义角色的过程骨架。Scrum中的主要角色包括Scrum主管,产品负责人和开发团队。它使用迭代的方法,把每个30天一次的迭代称为一个“冲刺”(Sprint),按照需求优先级别来实现产品。多个自组织和自治小组并行递增地实现产品。通过简短的日常情况会议(称为“Scrum”)进行。
  3. 水晶敏捷方法
    发展和提倡了一种机动性的软件开发方法,定义了一系列方法,包含核心元素,角色、过程模式、工作产品和实践。水晶敏捷方法实际是一组经过证明对不同类型项目都非常有效的敏捷过程,其目的是使得敏捷团队可以根据其项目和环境选择最合适的水晶系列成员。
2013上论文写作历年真题

试题一 论面向对象建模方法的应用
随着软件技术的发展,面向对象方法日益成为信息系统软件开发的主流技术,而面向对象建模技术是其中的关键。模型是软件开发的根本,大型、复杂的软件系统的开发是一项工程,而建模是系统化认识所开发软件的一个初步途径。
面向对象建模技术流派众多,包括OMT方法、OOSE方法、OOA/OOD方法等。统一建模语言的出现极大地促进了面向对象建模方法的普及与应用,已经成为当前面向对象建模方法的标准。
请围绕“论面向对象建模方法的应用”论题,依次从以下三个方面进行论述。
1.概要叙述你参与管理和开发的信息系统项目以及你在其中所承担的主要工作。
2.论述常见的面向对象建模方法的主要内容,包括每种模型的核心思想。
3.具体阐述你参与管理和开发的项目中使用的是哪种面向对象建模方法以及选择该方法的原因,给出具体的实施过程和实施效果。

2013面向对象建模

1、Coad/Yourdon方法
Coad/Yourdon方法特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。该方法的特点是表示简炼、易学,对于对象、结构、服务的认定较系统、完整,可操作性强。
在Coad/Yourdon方法中,OOA的任务主要是建立问题域的分析模型。分析过程和构造OOA概念模型的顺序由五个层次组成,分别是类与对象层、属性层、操作层、结构层和主题层,它们分别表示分析的不同侧面。OOA需要经过五个步骤来完成整个分析工作,即标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、定义属性和定义操作。
OOD中将继续贯穿OOA中的五个层次和五个活动,它由四个部分组成,分别是人机交互组件、问题域组件、任务管理组件和数据管理组件,其主要的活动就是这四个组件的设计工作

2、Booch方法
Booch最先描述了OO方法的基础问题,指出OO方法是一种根本不同于传统的功能分解的设计方法。OO的系统分解更接近人对客观事物的理解,而功能分解只通过问题空间的转换来获得。
Booch认为系统开发是一个螺旋上升的过程,每个周期包括四个步骤,分别是标识类和对象,确定类和对象的含义,标识关系,说明每个类的接口和实现。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图,对象图)和物理模型(模块图,进程图),用来描述系统的构成和结构。动态模型包括状态图和顺序图,用来描述对象的状态变化和交互过程。

3、OMT方法
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型,包括对象模型、动态模型和功能模型。对象对象模型描述系统中对象的静态结构、对象之间的关系、属性和操作,主要用对象图来实现;动态模型描述与时间和操作顺序有关的系统特征,例如,激发事件、事件序列、确定事件先后关系的状态等,主要用状态图来实现动态模型;功能模型描述一个计算如何从输入值得到输出值,它不考虑计算的次序,主要用DFD来实现功能模型。简单地说,功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。

4.OOSE
OOSE在OMT的基础上,对功能模型进行了补充,提出了用例(use case)的概念,最终取代了DFD来进行需求分析和建立功能模型。OOSE方法采用五类模型来建立目标系统,分别是需求模型、分析模型、设计模型、实现模型和测试模型。

5、UML
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,它融入了软件工程领域的新思想、新方法和新技术,它的作用域不限于支持OOA和OOD,还支持从需求分析开始的软件开发的全过程。
从总体上来看,UML的结构包括构造块、规则和公共机制三个部分。
(1)基本构造块
UML有三种基本的构造块,分别是事物(thing),关系(relationship)和图(diagram)。
事物是UML的重要组成部分,通过关系把事物紧密联系在一起,图是多个相互关联的事物的集合。
事物又可以分为结构事物,行为事物,分组事物和注释事物四种;UML的联系有依赖,关联,汎化和实现,其中关联关系有聚合和组合两种类型;UML2.0一共有14种图,大致可以分为了动态图和静态图两大类。
(2)公共机制
公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明),修饰,公共分类(通用划分)和扩展机制四种。
1.规则说明是事物语义的细节描述,它是模型真正的核心;UML为每个事物设置了一个简单的记号,还可以通过修饰来表达更多的信息;
2.UML包括两组公共分类,分别是类与对象(类表示概念,而对象表示具体的实体)接口与实现(接口用来定义契约,而实现就是具体的内容);
3.扩展机制包括约束(扩展了UML构造块的语义,允许增加新的规则或修改现有的规则),构造型(扩展UML词汇,用于定义新的构造块)和标记值(扩展了UML构造块的特征,允许创建新的特殊信息来扩展事物的规格说明)。
(3)规则
规则是基本构造块如何放在一起的规定,包括为构造块命名;
给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;
事物如何正确、一致地相互联系,即完整性;
运行或模拟动态模型的含义是什么,即执行

试题二 论软件企业的软件过程改进
软件过程是人们用来开发和维护软件以及相关产品的一组活动、方法和实践,是软件企业中最复杂、最重要的业务流程。软件过程改进(Software Process Improvement,SPI)帮助软件企业规划、实施软件过程的改进,为企业的业务服务,必须受企业发展战略的指导。软件过程改进通过在软件开发实践中发现软件过程中的问题,并在实践中找到解决问题的方法,不断推动软件过程的持续改进,提高产品或服务的质量,提高软件开发的效率。软件企业想要高效率、高质量和低成本地开发软件,必须以软件过程改进为中心,全面开展软件工程和质量管理。
请围绕“论软件企业的软件过程改进”论题,依次从以下三个方面进行论述。
1.概要叙述你参与的软件过程改进项目以及你所担任的主要工作。
2.详细论述软件企业实施软件过程改进的主要步骤及每个步骤的工作内容。
3.结合你参与的软件过程改进项目,具体阐述软件企业主要是对软件过程的哪些环节实施软件过程改进,并详细说明实施效果

  • 软件过程改进主要步骤及每个步骤的工作内容如下:
  1. 找出目标差距
    在此步骤中,需要对当前的状态进行分析,并明确要达到的状态(目标状态),然后分析其中的差距。如果一个机构决定采用CMMI来作参考蓝本,就可以基于它的各个关键过程域KPA,制定出符合自己机构及产品特点的目标状态。
  2. 选定改进范围
    找出所有差距之后,需要做的就是确定改进的范围,对范围的定义不够明确,做不到可量化、可验证程度。很多时候都是一些定性的要求、而不是定量的,例如“界面友好,可操作性强,提高用户满意度”等。类似这些模糊的需求就是导致后续项目扯皮的根源。项目范围的明确定义,有经验的项目经理及系统分析员将起到至关重要的作用。可以从如下几个方面来对范围进行改进。
    1)确定计划的责任权
    2)陈述主要目标和问题
    3)将问题分组关联到相应的目标
    4)确定目标和问题足够明确和引人注目
    5)设定目标优先权
    6)导出针对目标的度量标准
  3. 制定改进计划
    为一个过程改进活动选定范围和制定计划是一件很难的工作,会遇到很多障碍。如果想要全盘采用过程改进框架,任务会变得令人畏缩;
    制定计划很重要,计划制定的是否合理、工作量、难度是否适中,都直接会影响我们过程改进的成败。
    可以从比较关键的如下几个方面进行改进计划的制定:
    1)成立过程改进小组,派专人负责整个过程改进
    2)根据背景及业务分析,项目分析,内部因素,产品特点进行现有软件过程评估
    3)根据评估给出详细的软件过程改进建议
    4)根据软件过程改进建议转化为行动,整个行动由改进小组SPEG负责监控与跟踪。
    5)实施软件过程改进,并同时密切监控改进过程。有问题立刻解决
    6)对实施的过程改进进行评估
    7)对成功实施的软件过程进行制度化
  4. 实施改进计划
    计划制订好了以后,就需要将其付诸实践了。要实施计划,在感觉上会有些不堪重负。包括建立和部署解决方案,坚定想法并且克服阻力。实施改进的过程中可以考虑从如下几个方面进行:
    1)优先处理期望的和必需的工作
    2)持续强调目标和问题
    3)协调管理人员和实践者的行为
  5. 检查改进进展
    在实施了改进计划之后,需要做的就是检查改进计划的进展,跟踪进展使你能够了解到改进活动的进行状况,提供对改进活动的可见度从而及早检测出问题,并且给出数据使得未来计划更有效。矫正行动包括一系列中途的变更,其根据来自于“目标规划和实施”阶段的结果教训。
    矫正行动包括:修订行动计划从而达到未实现的目标,修订曾在规划阶段使用的规划方法,改换在实施阶段培养和部署新技能的办法,根据新的优先级重新排列改进活动的内容,或修订用来监测进展状况的度量标准。从以下几个方面可以对进度进展进行检查:
    ① 是否针对目标取得进展;
    ② 是否针对改进计划取得进展;
    ③ 是否针对改进框架取得进展;
    ④ 迄今得到那些经验教训。
    检查进展是一项很重要的活动,在过程改进活动执行进程中为机构提供反馈。基于业务目标制定的度量标准是有助于获得考察进展和指导改进活动的基本信息。
  6. 总结本轮改进的经验
    当一轮改进完成之后,再进行下一轮的改进,是一个持续改进的过程
2014上论文写作历年真题

试题一 论信息系统开发方法及应用
信息系统是一个复杂的人机交互系统。他不仅包含计算机技术,还包含软件技术和通信技术,网络技术以及其他工程技术,它还是一个复杂的管理系统,需要管理理论和管理方法的支持。因此,与其他工程项目相比,信息系统项目的开发和管理就显得比其他系统来得复杂,所面临的风险也就更大。如何选择一个合适的开发方法,以保持在多变的市场环境下,在既定的预算和时间要求范围内,开发出让用户满意的信息系统,是信息系统建设时所必须要考虑的首要问题。
请以“论信息系统开发方法及应用”为题,分别从以下三个方面进行论述。
1.简要叙述所参与管理和开发的软件项目,并明确指出在其中承担的主要任务和开展的主要工作。
2.目前比较主流的信息系统开发方法主要包括:结构化方法、面向对象方法、面向服务的方法、原型化方法、快速应用开发、敏捷开发等。
3.考生需结合自身参与项目的实际状况,指出其参与管理和开发的项目中是如何应用所选择的开发方法指导系统开发的,说明具体的实施过程、使用的方法和工具,并对实际实施效果进行分析。

  1. 结构化方法

    1. 概念
      是一种传统的信息系统开发方法,由结构化分析、结构化设计和结构化程序设计三部分有机组合而成
    2. 精髓
      精髓是自顶向下、逐步求精和模块化设计。
    3. 划分阶段
      结构化方法的基本思想是将系统的生命周期划分为五个阶段:系统规划,系统分析,系统设计,系统实施和系统维护。
    4. 主要特点:
      1)开发目标清晰化
      2)开发工作阶段化
      3)开发文档规范化
      4)设计方法结构化
    5. 适应性
      是目前最成熟,应用较为广泛的一种工程化方法,它特别适合与数据处理领域的问题,但是他不适合与规模较大,比较复杂的系统开发。
    6. 缺点局限性
      开发周期长
      难以适应需求变化
      很少考虑数据结构
    7. 其他
      这种方法遵循系统工程原理,按照事先设计好的程序和步骤,使用一定的开发工具完成规定的文档,在构件化和模块化的基础上进行信息系统的开发工作。
      结构化方法的开发过程一般是先把系统功能视为一个很大的模块。再根据系统分析与设计的要求,对其进行进一步的模块分解和组合。
  2. 面向服务的开发方法

    1. 两个阶段
      分为面向服务分析和面向服务的设计(SOAD)两个阶段。OOA/OOD,企业架构(EA)和业务流程建模BMP分别从基础设计层,应用结构层和业务组织层这三个层次上为SOAD提供理论支撑。
    2. 定义
      服务建模的过程实际上是进行流程分解,对业务目标和现有系统进行分析,发现候选服务,并对其进行分类,确定哪些服务可以被暴露,最终实现服务和架构设计的过程。
    3. 服务建模三个阶段
      按照实施的阶段,服务建模可以分为服务发现,服务规约和服务实现三个阶段。
    4. 面向服务优点
      加强了系统的灵活性,可复用性和可演化性。
    5. 面向服务的特点
      服务基础架构基于粗粒度,松散耦合和基于标准的服务这三个特点,使得信息系统的建设能够保持主动,这种方法使信息系统能够通过自身的业务和转换来应对市场挑战。
  3. 面向对象方法

    1. 概念
      面向对象方法是当前的主流开发方法。面向对象方法认为客观世界是由各种对象组成的。任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个类,是该类的一个元素。
      复杂的对象可由相对简单的各种对象以某种方法而构成,不同对象的组合以及相互作用就构成系统。
    2. 三个阶段
      面向对象方法包括面向对象分析OOA,面向对象设计OOD,面向对象程序设计OOP三个阶段。
      1)OOA的任务是了解问题域所涉及的对象,对象间的关系和操作,然后构造问题的对象模型。
      2)OOD在分析对象模型的基础上,设计各个对象,对象之间的关系和通信方式,其主要作用是对OOA的结果作进一步的规范化整理。
      3)OOP实现在OOD阶段所规定的各个对象所应完成的任务,它包括每个对象的内部功能实现,确定对象哪一些处理能力应在哪些类中进行描述,确定并实现系统的界面,输出的形式等。
  4. 原型化方法

    1. 概念
      它也叫做快速原型法。它是一种根据用户的初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
    2. 原型法包括的步骤
      1)确定用户基本需求
      2)设计系统初始原型
      3)试用和评价原型
      4)整理原型和提供文档
    3. 原型法的特点
      可以使系统开发的周期缩短,成本和风险降低,速度加快,获得较高的综合开发效益;
      提高用户参与程度,增加用户满意度,提高系统开发的成功率;由于用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的提交,有利于系统的运行和维护。
    4. 原型法的适用性
      能更有效地确认用户需求。从直观上来看,原型法适用于那些需求不甚明确的系统开发。对于分层层面难度大、技术层面难度不大的系统,适合于原型法,而对于技术层面的困难远大于分析层面的系统,则不宜采用原型法。
  5. 快速应用开发RAD

    1. 概念
      强调极短的开发周期,通过使用基于构件的开发方法获得快速开发。
      它是一个增量型的软件开发过程模型,强调极短的开发周期。该模型是瀑布模型的一个“高速”变种,通过大量使用可复用构件,采用基于构件的建造方法加速信息系统的开发过程。
    2. 适应性
      如果需求理解得很好,且约束了项目范围,利用这种方法可以很快的开发出功能完善的信息系统。
      RAD依赖于广泛的用户参与、联合应用设计会议、原型化方法、集成的CASE工具和代码生成器。
    3. 开发阶段
      业务建模,数据建模,过程建模,应用生成,测试与交付。
    4. 局限性
      RAD对模块化要求较高,开发者和客户必须在很短的时间内完成一系列的需求分析,任何一方配合不当,都会导致RAD项目失败;
      RAD只能用于管理信息系统的开发,不适合技术风险很高的情况。

6.敏捷开发方法
以人为核心,迭代循序渐进的开发方法。
在敏捷方法中,软件项目的构件被切分成多个子项目,各个子项目的成果都要经过测试,具备集成和可运行的特征。
从组织结构的角度组织结构的文化、人员、沟通性决定了敏捷方法是否使用。

  1. 适用场合:
    1)项目团队人数不能太多,适合于规模较小的项目;
    2)项目经常发生变更;
    3)高风险项目的实施;
2016上论文写作历年真题

试题三 论软件开发模型及应用
软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发过程包括需求、设计、编码和测试等阶段,有时也包括维护阶段。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要任务和活动,用来作为软件项目工作的基础。对于不同的软件项目,针对应用需求、项目复杂程度、规模等不同要求,可以采用不同的开发模型,并采用相应的人员组织策略、管理方法、工具和环境。
请围绕“软件开发模型及应用”论题,依次从以下三个方面进行论述。
1.简要叙述你参与的软件开发项目以及你所承担的主要工作。
2.列举出几种典型的软件开发模型,并概要论述每种软件开发模型的主要思想和技术特点。
3.根据你所参与的项目中使用的软件开发模型,具体阐述使用方法和实施效果

  1. 瀑布模型
    严格遵循软件生命周期各阶段的固定顺序,一个阶段完成再进入另一个阶段。

    1. 优点:
      是可以使过程比较规范化,有利于评审;
    2. 缺点:
      在于过于理想,缺乏灵活性,容易产生需求偏差。
  2. 快速原型模型
    对于许多需求不够明确的项目,比较适合采用该模型。它采用了一种动态定义需求的方法,通过快速地建立一个能够反映用户主要需求的软件原型,让用户在计算机上使用它,了解其概要,再根据反馈的结果进行修改,因此能够充分体现用户的参与和决策。

  3. 演化模型
    也是一种原型化开发,但与快速原型不同的是快速原型模型在获得真实需求时就将原型抛弃;而演化模型从初始的模型中逐步演化为最终软件产品,是一种渐进式原型法。

  4. 增量模型
    它采用的是一种递增式模型,它将软件产品划分成为一系列的增量构件,分别进行设计,编码,集成和测试

  5. 螺旋模型
    结合了瀑布模型和演化模型的优点,最主要的特点是在于计入了风险分析。它是由制定计划,风险分析,实施工程,客户评估这一循环组成,它最初从概念项目开始第一个螺旋。

  6. 喷泉模型
    主要用于描述面向对象的过程,最核心的特点是迭代。所有的开发活动没有明显的边界,允许各种开发活动交叉进行。

  7. 统一过程UP
    是一个通用过程框架,可以用于种类广泛的软件系统。,不同的应用领域,不同组织类型,不同的性能水平和不同的项目规模。UP是基于构件的,在为软件系统建模时,UP使用的是UML。与其他软件过程相比,UP具有三个显著特点:用例驱动,以架构为中心,迭代与增量。

  8. 敏捷方法
    是一种以人为核心,迭代,循序渐进的开发方法。在敏捷方法中,软件项目的构件被切分成多个子项目,各个子项目成果都经过测试,具备集成和可运行的特征。
    在敏捷方法中,从开发者角度来看主要的关注点有:短平快的会议,小版本发布,较少的文档,合作为重,客户直接参予,自动化测试,适应性计划调整和结对编程。
    从管理者的角度来看,主要的关注点有测试驱动开发、持续集成和重构。

2018上论文写作历年真题

试题一 论信息系统开发方法论
信息系统的开发一般分为系统规划、需求定义、系统设计、实施和维护等主要五个阶段,每一个阶段都应该在科学方法论的指导下开展工作。随着信息系统规模的变化和传统开发方法 论的演变,信息系统开发过程经历了“自底向上”和“自顶向下”两种方式
请围绕“信息系统开发方法论”论题,依次从以下三个方面进行论述。
1.概要叙述你参与分析和开发的信息系统以及你所担任的主要任务和开展的主要工作。
2.分别说明信息系统“自底向上”和“自顶向下”两种系统分析设计方式。详细阐述系统 遵循“自底向上”方式和“自顶向下”方式设计开发的优缺点。
3.详细说明你所参与的信息系统是如何遵循“自底向上”、“自顶向下”或综合“自底向上”和“自顶向下”两种方式进行的分析、设计和开发的。

  • 结构化方法属于自顶向下的开发方法,其基本思想是“自顶向下,逐步求精”,强调开发方法的结构合理性及所开发软件的结构合理性。
  • 它的优点有
    1)是目前最成熟,应用较广泛的一种工程化方法;
  • 它的缺点有:
    1)开发周期长,难以适应环境变化
    2)早期的结构化方法注重系统功能,兼顾数据结构的方面不多
    3)结构化程度较低的系统,在开发初期难于锁定功能要求
  • 自底向上的开发方法本质上就是不断归纳、不断抽象的过程。
  • 自底向上的开发模式是先编写出基础程序段,然后再逐步扩大规模、不断补充和升级某些功能,最终构造出软件的过程。该模式的核心本质是“不断归纳”,直到形成稳定的系统。
  • 它的优点有
    自底向上是新兴的模型们推荐的灵活的开发模式,采用这种模式的优点是比较灵活,系统应对变化的能力相对较强。
  • 它的缺点有
    由于设计是从底层开始的,所以缺点也比较明显:如果设计经验不足的话,难以保证总体设计的一致性。
  • 实际上在现代设计中,有很多的大型项目都是混合使用自顶向下法和自底向上法的,因为自顶向下可以确定系统大的架构方向,自底向上可以灵活调整系统的实现细节。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值