免费智能真题库 > 历年试卷 > 程序员 > 2011年上半年 程序员 上午试卷 综合知识
  第46题      
  知识点:   面向对象分析与设计基本概念   开发过程   面向对象分析   面向对象软件开发
  关键词:   分析阶段   面向对象分析   软件开发过程   对象   开发   开发过程   面向对象   软件开发        章/节:   系统分析和设计基础知识       

 
面向对象软件开发过程中,面向对象分析阶段包含一系列活动,而(46)活动不属于面向对象分析阶段。
 
 
  A.  识别分析类
 
  B.  构建分析模型
 
  C.  评估分析模型
 
  D.  确定接口规格
 
 
 

 
  第46题    2009年下半年  
   59%
以下关于面向对象分析与结构化分析的叙述中,错误的是(46)。
  第48题    2010年下半年  
   56%
面向对象分析与设计中,设计的主要任务不包括(48)。
  第48题    2019年上半年  
   29%
行为型设计模式描述类或对象怎样交互和怎样分配职责,涉及算法和对象职责的分配。其中,( )模式将一个语言的文法表示为一个类层..
   知识点讲解    
   · 面向对象分析与设计基本概念    · 开发过程    · 面向对象分析    · 面向对象软件开发
 
       面向对象分析与设计基本概念
        用面向对象方法开发的软件具有以下特点:模型与客观世界一致,因而便于理解;适应变化的需要,修改局限在模块中;具有可复用性。
               面向对象分析与设计概述
               面向对象分析(Object-Oriented Analysis, OOA)的目标是建立待开发软件系统的模型。OOA模型描述了表示某个特定应用领域中的对象、对象间的结构关系和通信关系,反映了现实世界强加给软件系统的各种规则和约束条件。OOA模型还规定了对象如何协同工作和完成系统的职责。
               面向对象设计(Object-Oriented Design, OOD)的目标是定义系统构造蓝图,并根据系统构造蓝图在特定的环境中实现系统。面向对象设计(OOD)分为两个阶段:高层设计(建立应用的体系结构)、低层设计(类的详细设计)。
               面向对象的程序设计,是利用面向对象的程序语言将面向对象的产品定义模型转换成可以在计算机上处理的表达形式,以便最终在计算机上实现系统的设计。常用的面向对象编程语言有Smalltalk、Eiffel、C++、Java等。
               统一建模语言(UML)概述
               UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用于整个语言的一些公共机制。
               UML的词汇表包含3种构造块:事物、关系和图。事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。UML提供了9种图:类图、对象图、用例图、序列图、协作图、状态图、活动图、构件图、部署图。
 
       开发过程
        嵌入式系统软件的开发过程可以分为项目计划、可行性分析、需求分析、概要设计、详细设计、程序建立、下载、调试、固化、测试及运行等几个阶段。
        项目计划、可行性分析、需求分析、概要设计及详细设计等几个阶段,与通用软件的开发过程基本一致,都可按照软件工程方法进行,如采用原型化方法、结构化方法等。
        :由于嵌入式软件的运行和开发环境不同,开发工作是交叉进行的,所以每一步都要考虑到这一点。
        程序建立阶段的工作是根据详细设计阶段产生的文档进行的,主要是源代码编写、编译链接等子过程,这些工作都在宿主机上进行,不需要用到目标机。产生应用程序的可执行文件后,就要用到交叉开发环境进行调试,根据实际情况可以选用3.6.3节中提到的调试方法或其有效组合来进行。由于嵌入式系统对安全性和可靠性的要求比通用计算机系统要高,所以,在对嵌入式系统进行白盒测试时,要求有更高的代码覆盖率。
        最后,要将经调试后正确无误的可执行程序固化到目标机上。根据嵌入式系统硬件配置的不同,可以固化在EPROM(Erasable Programmable ROM,可擦除可编程ROM)和Flash等存储器中,也可固化在DOC(DiskOnChip)等电子盘中,通常还要借助一些专用编程器进行。
 
       面向对象分析
        同其他分析方法一样,面向对象分析(Object-Oriented Analysis,OOA)的目的是获得对应用问题的理解。理解的目的是确定系统的功能、性能要求。面向对象分析法与功能/数据分析法之间的差别是前期的表述含义不同。功能/数据分析法分开考虑系统的功能要求和数据及其结构,面向对象分析方法是将数据和功能结合在一起作为一个综合对象来考虑。面向对象分析技术可以将系统的行为和信息间的关系表示为迭代构造特征。
        面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息。
               认定对象
               在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题、定义域实体的良好开始。通过实体间的关系寻找对象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象,实质性对象是系统稳定性的基础。例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
               组织对象
               分析对象间的关系,将相关对象抽象成类,其目的是简化关联对象,利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑,如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
               对象间的相互作用
               描述出各对象在应用系统中的关系。如一个对象是另一个对象的一部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。
               基于对象的操作
               当考虑对象的界面时,自然要考虑对象的操作。其操作有从对象直接标识的简单操作,如创建、增加、删除等;也有更复杂的操作,如将几个对象的信息连接起来。一般而言,避免对象太复杂比较好,当连接的对象太复杂时,可将其标识为新对象。当确定了对象的操作后,再定义对象的内部,对象内部定义包括其内部数据信息、信息存储方法,继承关系以及可能生成的实例数等属性。
               分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。经验表明,从应用定义域概念标识对象是非常合理的,完成上述工作后写出规范文档,文档确定每个对象的范围。
               早期面向对象的目标之一是简化模型与问题域之间的语义差距。事实上,面向对象分析的基础是软件系统结构,这依赖于人类看待现实世界的方法。当人们理解求解问题的环境时,常采用对象、分类法和层次性这类术语。面向对象分析与功能/数据分析方法相比,面向对象的结果比较容易理解和管理。面向对象分析方法的另一个优点是便于修改,早期阶段的修改容易提高软件的可靠性。
 
       面向对象软件开发
        面向对象的方法从问题模型开始,然后进行识别对象、不断细化的过程。它从本质上就是迭代和渐增的。开发过程是一次次的迭代反复过程,随着迭代的进行,系统功能不断完善。典型的面向对象开发方法有RUP(Rational Unified Process)和XP(eXtreme Programming),两者各有侧重,适用于不同的场景。
        1.RUP
        RUP是Rational公司开发和维护的过程产品。RUP以适合于大范围项目和机构的方式捕捉了许多现代软件开发过程的最佳实践。RUP的三个关键特征为迭代(Iterative)、以架构为中心(Architecture-Centric)和用例驱动(Use-Case Driven)。
        RUP的6个基本最佳实践如下:
        .迭代式开发。RUP支持专注于处理生命周期中每个阶段中最高风险的迭代开发方法,极大地减少了项目的风险性。
        .需求管理。RUP描述了如何提取、组织和文档化需要的功能和限制。
        .使用基于构件的体系结构。RUP提供了使用新的及现有构件定义体系结构的系统化方法。
        .可视化软件建模。RUP开发过程显示了对软件如何可视化建模,捕获体系结构及构件的构架和行为。
        .验证软件质量。RUP帮助计划、设计、实现、执行和评估软件质量,并且不是事后型的。
        .控制软件变更。RUP开发过程描述了如何控制、跟踪和监控修改以确保成功的迭代开发。
        RUP的二维开发模型
        RUP可以用二维坐标来描述。横轴表示时间组织,是过程展开的生命周期特征,体现开发过程的动态结构,用来描述它的术语主要包括周期(Cycle)、阶段(Phase)、迭代(Iteration)和里程碑(Milestone);纵轴按内容组织为自然的逻辑活动,体现开发过程的静态结构,用来描述它的术语主要包括活动(Activity)、产物(Artifact)、工作者(Worker)和工作流(Workflow),如下图所示。
        RUP开发过程的各个阶段和里程碑
        RUP中的软件生命周期在时间上被分解为4个顺序的阶段,分别是初始阶段(Inception)、细化阶段(Elaboration)、构造阶段(Construction)和交付阶段(Transition)。每个阶段结束于一个主要的里程碑(Major Milestones);每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。
        
        RUP的二维开发模型
        (1)初始阶段。
        初始阶段有时也称为先启阶段,该阶段的主要目标是为系统建立商业模型并确定项目的边界。任务包括识别和规避项目的主要风险,建立用例模型框架,并制订里程碑日期的阶段计划。
        初始阶段结束时是第一个重要的里程碑:生命周期目标(Lifecycle Objective)里程碑。该里程碑评估项目的基本可行性。
        (2)细化阶段。
        细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。为了达到该目标,必须在理解整个系统的基础上,对体系结构做出决策,包括其范围、主要功能和诸如性能等非功能需求。同时为项目建立支持环境,包括创建开发案例,创建模板、准则并准备工具。
        细化阶段结束时是第二个重要的里程碑:生命周期结构(Lifecycle Architecture)里程碑。该里程碑为系统的架构建立了管理基准,并使项目小组能够在构建阶段中进行衡量。
        (3)构造阶段。
        在构造阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。从某种意义上说,构造阶段是一个制造过程,其重点放在管理资源及控制运作以优化成本、进度和质量。
        构造阶段结束时是第三个重要的里程碑:初始操作(Initial Operational)里程碑。该里程碑确定产品是否已经可以部署到Beta测试环境。
        (4)交付阶段。
        交付阶段的重点是确保软件对最终用户是可用的。交付阶段可以跨越几次迭代,包括为发布做准备的产品测试,基于用户反馈的少量调整。在生命周期的这一点上,用户反馈应主要集中在产品调整、设置、安装和可用性问题上,所有主要的结构问题应该已经在项目生命周期的早期阶段解决了。
        在交付阶段的终点是第四个里程碑:产品发布(Product Release)里程碑。此时,要确定目标是否实现,是否应该开始另一个开发周期。在一些情况下,这个里程碑可能与下一个周期的初始阶段的结束重合。
        RUP的核心工作流
        RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这些工作流在整个生命周期中一次又一次被使用。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。
        (1)商业建模(Business Modeling)。
        商业建模工作流描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。
        (2)需求(Requirements)。
        需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化,最重要的是理解系统所解决问题的定义和范围。
        (3)分析和设计(Analysis&Design)。
        分析和设计工作流将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计模型是源代码的抽象,由设计类和一些描述组成。设计类被组织成具有良好接口的设计包(Package)和设计子系统(Subsystem),而描述则体现了类的对象如何协同工作实现用例的功能。
        (4)实现(Implementation)。
        实现工作流的目的包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件)实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组)所产生的结果,使其成为可执行的系统。
        (5)测试(Test)。
        测试工作流要验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确地实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可能早地发现缺陷,从根本上降低了修改缺陷的成本。测试类似于三维模型,分别从可靠性、功能性和系统性能来进行。
        (6)部署(Deployment)。
        部署工作流的目的是成功地生成版本并将软件分发给最终用户。部署工作流描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。在有些情况下,还可能包括计划和进行beta测试版、移植现有的软件和数据以及正式验收。
        (7)配置和变更管理(Configuration&Change Management)。
        配置和变更管理工作流描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。工作流描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。
        (8)项目管理(Project Management)。
        软件项目管理平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。
        (9)环境(Environment)。
        环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册,并介绍了如何在组织中实现过程。
        2.XP
        极限编程(eXtreme Propgramming,XP)由Kent Beck在1996年开创,是一种演进式的原型化方法,以最大化发挥人的能量为核心目标,具有沟通高效、设计简单、反馈迅速等特点,是一种轻量级、敏捷的过程方法。
        XP是一种高度动态的过程,它通过非常短的迭代周期来应对需求的变化。XP一般适用于需求不确定、变化快、项目历时不超过半年、人数不超过10个、在同一地点工作的中小型团队。
        XP的生命周期包括4个基本活动:编码(coding)、测试(testing)、聆听(listening)、设计(designing)。
        XP的4个价值目标:
        .沟通:让开发人员集体负责所有代码并结队工作,鼓励与客户及团队内部保持沟通。
        .简化:鼓励只开发当前的功能,避免过多的文档,专注于最小化解决方案,做好为新特性改变设计,在系统隐喻和代码规范下不断重构的准备。
        .反馈:通过单元测试和功能测试获得快速反馈。
        .勇气:提倡积极面对现实和处理问题的勇气,拥抱变化。
        XP的12个最佳实践:
        .有计划的开发。通过结合使用标有优先级的“故事”卡和技术估算,确定下一版本的功能。
        .小型发布。以小的增量版本经常向客户发布软件。
        .系统隐喻。隐喻是一个高层次的系统构想,需要不断地细化架构来指导全部开发。
        .简单设计。通过保持代码简单从而保证设计简单。不断地在代码中寻找复杂点并且立刻进行移除。
        .测试驱动。“先测试,后编码”。用户编写测试内容以对“故事”进行测试。程序员编写测试内容来发现代码中的任何问题。在编写代码前先编写测试内容。
        .重构。这是一项简化技术,用来移除代码中的重复内容和复杂之处。
        .结对编程。团队中的两个成员使用同一台计算机开发所有的代码。一个人编写代码或者驱动,另一个人同时审查代码的正确性和可理解性。
        .集体代码所有权。任何人都拥有所有的代码。提高代码透明度,增强团队合作精神。
        .持续集成。每天按任务多次创建和集成系统,随着需求变化,进行不断的回归测试。
        .每周40小时工作制。程序员在疲劳时无法保证最高效率。连续两周加班是绝对不允许的,否则会影响工作效率。
        .现场客户。至少有一名真实的客户全天候工作于开发环境中,帮助定义系统、编写测试内容并回答问题。
        .编码规范。程序员采用统一的编码规范。
   题号导航      2011年上半年 程序员 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第46题    在手机中做本题