1、1、什么是面向对象思想面向对象的方法是一种分析方法的思想,把现实世界中的所有事物看作对象来处理。对象包括属性和行为两种元素,通过属性及行为定义现实世界的事物或者是抽象出来的对象。通过把事物当成对象来看待,更加接近了我们认识事物的过程。2、什么是、,它们的关注点是什么?它们之间有什么联系?,是指面向对象的分析,它是对问题和需求的调查研究,不强调解决问题;在面向对象分析过程中强调的是在问题领域发现和描述对象。,面向对象设计,设计是指满足需求的概念上的解决方案,不强调实现;面向对象的分析强调的是定义软件对象以及他们如何协作以实现需求是的细化和扩展,通过面向对象的方法将分析和设计紧密结合在一起,从而使
2、得两者能够很好的过渡。3、软件开发过程的主要工作包括那些?软件开发过程中的主要工作包括需求分析、设计、代码实现、软件测试和部署实施等工作。需求分析主要是从业务方面出发,从中发现业务领域中需要解决的问题是什么。设计是指从软件开发的角度得到业务领域中问题的解决方案。代码实现是指对系统进行软件开发以得到最后的业务处理系统。软件测试是指对于开发完成的系统进行功能和非功能等多方面的测试,以验证系统是否能够达到业务处理的需要。部署实施是指对已经通过测试的系统进行部署,部署完成后供用户进行使用。4、的过程包括哪些活动?在分析过程中的主要制品有哪些?OOA 过程首先需要识别出系统中的用例并建立用例模型,然后对
3、用例进行分析发现用例中的概念类,并定义其中的基本属性,最后可以为其创建基本的动态模型包括交互图、状态图和活动图。主要制品包括,用例模型:用例图和用例描述、补充规格说明书、设想以及词汇表。5、的过程包括哪些主要活动?在设计过程中又包括哪些主要的制品?OOD 过程主要包括问题域部分的设计、人机交互部分的设计、控制流管理部分设计、数据管理部分设计和构件部署设计,每个部分均采用与 OOA 一致的概念、表示法及活动,但具有自己独特的策略。本课程主要强调的是问题域部分的设计,使用的结果,加以补充和修改,最终得到主要制品包括静态模型:类图和包图,动态模型:顺序图和通讯图。6、什么是迭代?在软件开发中,如何利
4、用迭代开发的思想?迭代是统一开发过程中的重要思想和关键实践,通过迭代的思想将开发过程组织成一系列固定的短期小项目,每次迭代过程中都包括各自的需求分析、设计、实现和测试;同时,每次迭代都产生经过测试、集成并可执行的局部系统。迭代强调的是增量式的完善过程,软件开发过程中通过迭代思想可以减少需求变更带来的危害,使软件开发的过程更加可控。7、什么是软件开发初始阶段,初始阶段的主要工作是什么?初始阶段是指项目开发的初期对于系统总体进行分析的过程,它的目标不是定义所有的需求,大多数的需求是在细化阶段进行分析的,一般只包括一次需求研讨会并只关注其中的的需求。初始阶段的主要工作包括预见项目的范围、设想和业务案
5、例,主要关注项目的设想和业务案例是什么、项目是否可行、主要构件是开发还是购买、粗略估计开发成本,并最终确定项目应该进行下去还是终止。8、需求分析阶段主要包括哪些制品,这些制品的作用是什么?制品 注释设想和业务用例 描述高阶目标与约束、业务案例,并提供执行摘要用例模型 描述功能需求。在初始阶段,确定大部分用例的名称,详细分析 10的用例补充性规格说明 描述其他需求,主要是非功能性需求。在初始阶段,多考虑关键的非功能需求是有帮助的,其对架构将会产生主要影响词汇表 关键领域术语和数据字典风险列表和风险管理计划描述风险(业务、技术、资源和进度)及应对和缓解的方法原型和概念验证 澄清设想,验证技术思路迭
6、代计划 描述第一个细化迭代的任务阶段计划和软件开发计划对细化阶段的持续时间和工作量进行粗略估计开发案例 就特定项目,对 UP 步骤和制品进行定制的描述9、什么是用例,用例模型主要包括哪些内容?用例就是一组相关的成功和失败场景集合,用来描述参与者如何使用系统来实现目标,场景是参与者和系统之间的一系列特定的活动和交互。用例是文本文档,而非图形;用例建模主要是编写文本的活动,而非制图。用例中主要包括了参与者和主要成功场景等元素,通过这些元素对系统的场景进行描述。它是是一种优秀的表示方法,使领域专家或需求提供者自己编写用例成为可能;强调用户的目标和观点,优越性在于能够根据需要对复杂程度和形式化程度进行
7、增减调整。11、细化阶段的主要工作包括哪些?根据你的理解写一个细化阶段的最佳实践细化阶段是核心架构、解决高风险元素、定义大部分需求,以及预计总体进度和资源的过程。主要的工作包括:对核心、有风险的软件架构进行编程和测试、发现并稳定需求的主题部分、规避主要风险,细化阶段一般包括多个阶段而且并不是系统的设计阶段。细化阶段的最佳实践:首先对架构的核心和风险部分进行适应性的设计、实现和测试将细化阶段分成一系列的迭代过程,迭代过程要求时间定量和风险驱动及早的进行编程并尽早、频繁、实际地测试及时接受用户的信息反馈,通过反馈调整系统架构和功能通过一系列讨论会,详细编写大部分用例和其他需求,每个细化迭代举行一次
8、12、什么是领域模型,创建领域模型的准则包括哪些?领域模型是对领域内的概念类或现实世界中对象的可视化表示,也称概念模型、领域对象模型和分析对象模型。它是对现实世界概念类的表示,而非软件对象的表示,该术语并不是指用来描述软件类、软件构架类领域层或有职责软件对象的一组图。在 UML 中,领域模型被描述为一组没有定义操作的类图。在软件开发的细化阶段,创建领域模型过程包括: 从用例描述中寻找出系统的概念类; 把概念类绘制为 UML 类图中的类 为类添加关联和属性13、什么是操作契约,如何来设计及发现操作契约?操作契约是针对用例中的复杂操作进行详细的说明,主要内容包括契约名称、交叉引用以及前置条件和后置
9、条件。前置条件是触发该操作的条件,后置条件是在该操作完成后系统对象状态的变化。在编写操作契约的过程中从系统顺序图中确定具体的系统操作,如果系统操作复杂并结果不明显或用例中不清楚则可为该操作编写操作契约。在编写操作契约后置条件的过程中,主要包括对象的创建与销毁、属性和关联的修改等操作。14、什么是逻辑架构,在 UML 中是描述逻辑架构的元素?逻辑架构是软件类的宏观组织结构,他将软件类组织为包(命名空间) 、子系统和层。层是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的职责,目前比较出名的就是 MVC 的分层结构,将系统分为视图层、控制层和业务罗基层,通过分层的结构设计达到了层间
10、的松耦合和层内的高内聚。15、在顺序图中,如何表示各种条件(循环、互斥、条件等) ,给出处理 makeNewSale的顺序图。在顺序图中通过框图的方式把循环、互斥的软件部分进行描述,分别在左上侧标记Loop、alt、opt 等不同的条件。该题主要可能以画图题的方式出现 ,见课件的 ooad-04 部分的 3842 页。16、什么是系统顺序图,它与顺序图有什么区别?面向对象设计中,动态建模是指创建系统中对象之间的协作和顺序等动态关系,有助于设计逻辑、代码行为和方法体。动态建模的过程就是发现系统对象间交互和协作的过程,UML 中的动态模型主要包括顺序图和通讯图两种。顺序图能够清晰表示消息的顺序和事
11、件的排序,但是在绘制过程中占用大量的空间;通讯图有很好的空间效应,但是不易查阅消息间的顺序。在面向对象设计过程中应尽量依照实际情况选择合适的建模方法。17、面向对象的设计中,什么是对象的动态模型?动态模型是如何建模的?在面向对象的设计过程中,设计的动态模型主要指交互图。交互图主要包括顺序图和通讯图,交互图对设计中的各类对象间的交互过程和职责的分配进行解释说明。通过交互图向开发人员展示了系统中对象间的联系,便于开发人员将设计转化成系统实现。交互图中的主要元素包括系统对象和对象间的交互信息,系统对象类主要从需求分析中的领域模型分析得来,对象间的交互主要从系统顺序图和操作契约中分析获得。18、什么是
12、设计模式?对于基于职责分配,你是怎么理解的?模式是对问题和解决方案的已命名描述,它可以用于新的语境,并且为在变化环境中如何运用和权衡其解决方案给出建议。软件设计中的设计模式是针对某种特定环境下问题的解决方案,通过设计模型可以优化系统中类之间的设计以达到易维护和高重用性。基于职责分配是软件设计中广义的设计模式思想的应用,把系统需要完成的职责按照一定的规则分配给相应的对象以达到设计的健壮性、高重用和易维护性。19、什么是对象的可见性,对象的可见性包括哪几种?对象的可见性是指对象“看到”或引用其他对象的能力,它与范围有关,包括属性的可见性、参数的可见性、局部可见性以及全局可见性等四种。20、什么是重
13、构,重构的目标是什么?重构是是重写和重新构建已有代码的结构化和规律性方法,但不会改变已有代码的外在行为,而是采用一系列少量转换的步骤,并且每一步都结合了重新执行的测试;重构的本质是一次实行一小步保留行为的转换。重构的目标包括:去除冗余代码、改变清晰度、使过长的方法变短并去除硬编码字面常量。21、结合学校的成绩录入需求,给出成绩录入的用例描述(以本校的教务管理系统为例) 。该答案以软件学院研究生培养为例,希望同学以本校结合本校的实际情况进行分析。用例 1:成绩录入主要参与者: 任课教师项目相关人员及其兴趣:1. 任课教师:希望能够方便、准确的录入成绩,希望显示学生可以按照姓名或者是学号进行排序,
14、成绩录入后可以导出数据到 excel 中;并且希望对成绩数据进行统计分析。2. 教务管理员:希望能够监控教师录入的进程,对录入过程进行控制;并且能够对成绩进行修改,对每门课程进行统计分析以生成各种样式的统计表格;对于成绩录入以及修改时间进行登记察看。3. 学生:希望能够从网络查询个人的课程成绩以及排名,并可以打印下载个人成绩表。前置条件:1. 教务管理员导入学生选课数据。2. 教师必须已经被识别和授权。成功后的保证:存储成绩信息,准确记录成绩。生成统计信息以及各种统计报表。主要成功场景(或基本流程)1、教师登陆后进入课程成绩录入窗口。2、教师按照个人习惯对录入数据进行排序。3、教师按照学生排序,依次录入平时成绩、考试成绩以及期末成绩。4、教师成绩录入后对成绩进行提交。5、教师把成绩导出到 excel。扩展(或替代流程)特殊需求:1. 成绩录入支持导入过程,可以采用直接的 excel 等其他文件格式的导入。2. 不同课程成绩中平时成绩和考试成绩的权重可以设置,期末成绩可以依据权重等自动生成。3. 对于教师录入和修改时间和人员进行日志记录。待解决的问题:1、成绩导入数据的格式设置2、统一的生成 excel 的组件3、统一的日志记录组件