2021-01-12

考试题型
一、单项选择题,本大题共28小题,每小题1分,共28分。
例:

  1. 在基于构件的软件开发中,( A )描述系统设计蓝图,以保证系统提供适当的功能。
    A. 逻辑构件模型 B. 物理构件模型
    C. 组件接口模型 D. 系统交互模型
  2. ( )的选择是开发一个软件系统时的基本设计决策。
    A. 架构模式 B. 惯用法 C. 设计模式 D. 分析模式
  3. 某企业内部现有的主要业务功能已经封装为Web服务。为了拓展业务范围,需要将现有的业务功能进行多重组合,形成新的业务功能。针对业务灵活组合这一要求,采用( )讲风格最为适合。
    A. 管道—过滤器 B. 解释器 C. 隐式调用 D. 黑板
  4. 在面向对象方法中,对象可看成是属性(数据)以及这些属性上专用操作的封装体。封装是一种( )技术。
  5. 对象管理组织(OMG)基于CORBA基础设施定义了4中构件标准。其中( )的状态信息是由构件自身而不是由容器维护。
    A. 实体构件 B. 加工构件 C. 服务构件 D. 回话构件
  6. 某公司欲开发一个语音识别系统,需要对用户的语音指令进行音节分割、重音判断、语法分析和语义分析。最终对用户意图进行推测。针对上述功能需求,该语音识别软件应该采用( )架构风格。
    A. 解释器 B. 面向对象 C. 黑板 D. 隐式调用
  7. 编译器的主要工作过程是将文本形式输入的代码逐步转化为各种形式,最终生成可执行代码。现代编译器主要关注编译过程和程序的中间表示,围绕程序的各种形态进行转化与处理。针对这种特征,现代编译器应该采用( )架构风格最合适。
    A. 数据共享 B. 虚拟机 C. 隐式调用 D. 管道—过滤器

    二、判断题, 本大题共10小题,每小题1分,共10分。
    例:
    ( )1. 开发视图主要支持系统的功能需求,即系统提供给最终用户的服务。
    ( )2. 构件、连接件以及配置是体系结构的核心模型最基本的元素。
    ( )3. 设计模式的概念最早是由美国的一位计算机专家提出的。
    ( )4. 利用设计模式可以方便地重用成功的设计和结构。
    ( )5. HMB风格不支持系统自顶向下的层次化分解,因为它的构件比较简单。

    三、填空题, 本大题共12小题,每题1分,共12分。
    例:
    1 需求设计中,__________、理解问题、易变问题有助于理解为什么导出需求这么困难。
  8. 质量功能部署(QFD)确认三类需求:__________、期望需求、令人兴奋的需求。
  9. 黑板模型通常由三个部分组成:知识源、黑板数据结、__________。
  10. ________________(QFD)是一种将客户要求转化成软件技术需求的质量管理技术,其目的是“最大限度地让客户从软件工程过程中感到满意”。
  11. Web应用系统都能使最终用户与应用系统的功能、内容及行为之间进行“会话”。这些交互模型描述会话,这种交互模型由常用几种元素组成:① _______;② 顺序图;③ 状态图;④ 用户界面原型。

    四、简答题, 本大题共4小题,每小题5分,共20分。
    例:
  12. 简述实时软件设计的一般步骤。
  13. 软件质量属性有哪些?。
  14. 一个网上银行系统的系统核心关注点与横切关注点有哪些?

    五、设计题, 本大题共5小题,共30分。
    例:
  15. 内江第二人民医院打算使用系统维护并管理那些具有心理问题前来咨询专家的病人的详细信息,系统打算采用分层体系结构设计,请给出该系统的体系结构模型。(5分)
  16. 域分析师的角色是发现和定义可复用的分析模式、分析类和相关的信息,以便用于类似但不一定完全相同的应用。请设计域分析的输入和输出结构模型。(5分)
  17. 万达影院打算设计一个系统用于管理影院数据,该系统是基于Web的提供电影和图片库的多用户系统。在这个系统中,有管理和放映不同类型媒体的多个服务器。视频信号需要快速、同步地传输,但分辨率相对较低。它们是以压缩的形式存储的,所以视频服务器需要对于各种不同的格式处理视频压缩和解压缩。静态图片必须保持高分辨率,所以将它们单独放在一个服务器上是比较妥当的,请设计该系统的体系结构。(5分)
    ….
    知识总结

软件开发知识的半衰期 为3年
支持软件工程的根基在于质量关注点
• 软件工程过程和实践的通用原则主要是:
– ① 为最终用户提供价值,
– ② 保持简洁,
– ③ 维护可见的东西(产品和计划),
– ④ 认识(必须理解别人将消费你所生产的产品),
– ⑤ 面向未来,
– ⑥ 计划复用,以及
– ⑦ 认真思考。
关于软件工程原则
指导实践的核心原则:(1)指导过程的原则、(2)指导实践的原则
指导框架活动的原则:沟通原则、策划原则、建模原则、构造原则、部署原则
建模原则:1.敏捷模型建模原则、2. 需求建模原则、3. 设计建模原则

什么是软件体系结构
• 软件体系结构提供了待构造系统的整体视图,其设计主要是建立计算机系统所需的数据结构和程序构件,它需要考虑系统所采取的体系结构风格、系统组成构件的结构和性质,以及系统中所有体系结构构件之间的相互关系,数据设计是软件体系结构设计的一个组成部分。
软件的三个设计层次:
• (1)体系结构级:这个级别的设计问题包括系统性能与构件之间的整体联系,构成元素是模块,模块通过各种方式互连;通过操作算子将子系统组装成一个系统。
• (2)代码级:这个级别的设计问题包括算法和数据结构,构成元素是编程语言原语,比如数值、字符、指针以及控制线程。基本的操作算子是算法和程序设计语言提供的数据操作原语,组装机制包括记录、数组、过程。
• (3)执行级:这个级别的设计问题包括存储器的映射、数据格式配置、堆栈和寄存器的分配,构成元素是硬件所支持的位模式。使用机器代码来描述操作和组装。
软件体系结构的定义
(1)Dewayne Perry和A1ex Wolf这样定义:软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。这一定义注重区分构件,这一方法在其他的定义和方法中基本上得到保持。
(2)Mary Shaw和David Garlan认为软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通讯协议、同步、数据存取,给设计元素分配特定功能,设计元素的组织、规模和性能,在各设计方案间进行选择等。软件体系结构处理算法与数据结构之上关于整体系统结构设计和描述方面的一些问题,如全局组织和全局控制结构,关于通讯、同步与数据存取的协议,设计构件功能定义,物理分布与合成,设计方案的选择、评估与实现等。
(3)Kruchten指出,软件体系结构有四个角度,它们从不同方面对系统进行描述:概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织。
(4)Hayes Roth认为软件体系结构是一个抽象的系统规范,主要包括用其行为来描述的功能构件和构件之间的相互连接、接口和关系。
(5)David Garlan和Dewne Perry采用了如下定义:软件体系结构是一个程序/系统各构件的结构、它们之间的相互关系以及进行设计的原则和随时间进化的指导方针。
(6)Barry Boehm提出,一个软件体系结构包括一个软件和系统构件互联及约束的集合,一个系统需求说明的集合,一个基本原理用以说明这一构件互联和约束能够满足系统的需求。
(7)Bass、Ctements和Kazman给出如下定义:一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部的可见特性及其相互关系。其中,“软件外部的可见特性”是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。

图1-2 需求模型到设计模型的转换

在体系结构的层次上,相关的系统级别的问题包括了容量、吞吐量、一致性、构件的兼容性等。

图1-3 软件体系结构的“4+1视图”

很多领域的研究工作使得关于软件体系结构的许多问题正在被解决,这些领域包括模块接口语言、特定领域的软件体系结构、软件的重用、软件组织结构模式的规范化编纂、体系结构描述语言、体系结构设计形式化的支持和体系结构设计环境

体系结构的设计原则
– (1)抽象原则。抽象是人们认识复杂事物的基本方法,其实质是集中表现事物的主要特征和属性,隐藏和忽略细节部分,并用于概括普遍的、具有相同特征和属性的事物。
– (2)分而治之原则。将大的问题分成几个小的问题,软件设计中的分解包括:
• 横向分解:按照从底层基础到上层问题的方式,将问题分解成相互独立的层次。每层完成局部问题并对上层提供支持。
• 纵向分解:在每个层次上,将问题分解成多项,相互配合实现完整的解。
– (3)封装和信息隐藏原则。采用封装的方式,隐藏各部分处理的复杂性,只留出简单的、统一形式的访问方式。这样可以减少各部分的依赖程度,增强可维护性。
– (4)模块化原则。模块是软件被划分成独立命名的,并可被独立访问的成分。模块划分的粒度可大可小。划分的依据是对应用逻辑结构的理解。
– (5)高内聚和低耦合。内聚性是指软件成分的内部特性。成分中各处理元素的关联越紧密越好。耦合性是指软件成分间关系的特性。软件成分间的关联越松散越好。
– (6)关注点分离原则。软件成分被用于不同的场景时,会有对于不同场景的适应性问题。但是,所必须适应的内容并非全部,只是一部分,即所谓的关注点。软件设计要将关注点和非关注点分离,关注点的部分可以设定,而非关注点的部分用来复用,非关注点应选择与条件、场景独立的软件成分。
– (7)策略和实现分离原则。策略指的是软件中用于处理上下文相关的决策、信息语义和解释转换、参数选择等成分。实现指的是软件中规范且完整的执行算法。软件设计中要将策略成分和实现成分分离,至少在一个软件成分中明显分开。这样可以提高可维护性,因为实现的变动远比策略要少的多。
– (8)接口和实现分离原则。软件设计要将接口和实现分离,这样可以保障成分的信息隐蔽性,以及提高可维护性。
请解释需求工程
需求工程(Requirement Engineering,RE)是指致力于不断理解需求的大量任务和技术。从软件过程的角度来看,需求工程发生在与客户沟通活动和为一般的软件过程定义的建模活动过程中,其任务是为设计和构建活动建立一个可靠坚固的基础,它必须适应过程、项目、产品和人员工作的需要。需求工程在设计和构造之间建立起联系的桥梁。
需求工程过程通过执行七个不同的活动来实现:起始、导出、精化、协商、规格说明,确认和管理,其中起始、导出和精化属于项目的起始阶段
下面这组问题有助于理解为什么导出需求这么困难:
范围问题:理解问题:易变问题。

软件需求规格说明(SRS)是在项目商业化之前必须建立详细描述软件各个方面的文档。

需求分析中利益相关者有业务运行人员、产品管理人员、市场销售人员、内部和外部客户、最终用户、顾问、产品工程师、软件工程师、支持和维护工程师以及其他人员。
需求工程师的工作就是把所有的利益相关者提供的信息(包括不一致或是矛盾的需求)分类,分类的方法应该便于决策制定者为系统选择一个内部一致的需求集合。
收集需求的目的是识别问题,提出解决方案的要素,协商不同的方法以及在有利于完成目标的氛围中确定一套解决需求问题的初步方案。
在需求的起始阶段,基本问题和问题的答案确定了问题的范围和对解决方案的整体理解。
质量功能部署(Quality Function Deployment,QFD)是一种将客户要求转化成软件技术需求的质量管理技术,其目的是“最大限度地让客户从软件工程过程中感到满意 ”。为了达到这个目标,QFD强调理解“什么是对客户有价值的”,然后在整个工程活动中部署这些价值。

QFD 确认三类需求:
正常需求:这些需求反映了在和客户开会时确定的针对某产品或系统的目标。如果实现了这些需求,将满足客户。例如所要求的图形显示类型、特定的系统功能以及已定义的性能级别。
期望需求:这些需求隐含在产品或系统中,并且可能是非常基础的,以至于客户没有显式地说明,但是缺少这些将导致客户非常不满。例如人机交互的易用性、整体运行的正确性和可靠性以及软件安装的简易性。
令人兴奋的需求:这些需求反映了客户期望之外的特点,但是如果实现这些特点的话将会使客户非常满意。例如,新移动电话的软件来自标准特性,但关联了一些超出期望的能力(例如多重触控技术的触摸屏,可视语音邮箱), 这些能力让产品的用户很欣喜。
场景通常称为用例,它提供了将如何使用系统的描述。
撰写用例的第一步是确定故事中所包含的“参与者”。
参与者是任何与系统或产品通信的事物,且对系统本身而言参与者是外部的。当使用系统时,每个参与者都有一个或多个目标。
参与者和最终用户并非一回事。典型的用户可能在使用系统时扮演了许多不同的角色,而参与者表示了一类外部实体(经常是人员),在用例中他们仅扮演一种角色。
分析模型的目的是为基于计算机的系统提供必要的信息、功能和行为域的说明。
需求模型的特定元素取决于将要使用的分析建模方法。但是,一些普遍的元素对大多数分析模型来说都是通用的。

导出需求的UML活动图

SafeHome是某个正在研发的家庭安全管理产品,用UML类图描绘SafeHome安全功能的传感器Sensor类,

需求建模活动产生以下一种或多种模型类型:
场景模型:出自各种系统“参与者”观点的需求。
数据模型:描述问题信息域的模型。
面向类的模型:表示面向对象类(属性和操作)的模型,其方式为通过类的协作获得系统需求。
面向流程的模型:表示系统的功能元素并且描述当功能元素在系统中运行时怎样进行数据变换的模型。
行为模型:描述如何将软件行为看做是外部“事件”后续的模型。
域分析师的角色是发现和定义可复用的分析模式、分析类和相关的信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值