信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1925|回复: 1
打印 上一主题 下一主题

软件工程基础知识

[复制链接]

该用户从未签到

升级  30.8%

跳转到指定楼层
楼主
发表于 2006-3-3 09:03:08 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
<h3 style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><span lang="EN-US"><p></p></span></span>&nbsp;</h3><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>主要知识点<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件工程是计算机软件的一个重要分支,主要应掌握软件工程的基本原理以及软件设计与测试方法。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>1、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件生存周期各阶段的任务<span lang="EN-US"><br/></span>软件生存周期指出由软件定义、软件开发和软件维护等阶段组成的全过程。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">1</span>)软件定义阶段<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件定义阶段主要解决软件要<span lang="EN-US">"</span>做什么<span lang="EN-US">"</span>的问题,也就是要确定软件的处理对象、软件与外界的接口、软件的功能、软件的性能、软件的界面以及有关的约束和限制。软件定义阶段通常可分成系统分析、软件项目计划和需求分析等阶段。系统分阶析的任务是确定待开发软件的总体要求和适用范围,以及与之有关的硬件和支撑软件的要求,该阶段所生产的文档可合并在软件项目计划阶段的文档(项目计划书)中。软件项目计划的任务是确定待开发软件的目标,对其进行可行性分析,并对资源分配、进度安排等做出合理的计划,该阶段所产生的文档有可行性分析报告和项目计划书。需求分析的任务是确定待开发软件的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。该阶段产生的文档是需求规格说明书。<span lang="EN-US"> <p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">2</span>)软件开发阶段<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件开发阶段主要解决软件<span lang="EN-US">"</span>怎么做<span lang="EN-US">"</span>的问题,包括数据结构和软件结构的设计、算法设计、编写程序和测试,最后得到可交付使用的软件。软件开发阶段通常可分成软件设计、编码、软件测试等阶段。软件设计通常还可分成概要设计和详细设计。概要设计的任务是模块分解,确定软件结构、模块的功能和模块的接口,以全国数据结构的设计。详细设计的任务是设计每个模块的实现细节和局部数据结构。设计阶段产生的文档有设计说明书,它也可分为概要设计说明书和详细设计说明书。编码的任务是用某种程序语言为每个模块编写程序,产生的文档有程序清单。软件测试的任务是发现软件中的错误,并加以纠正,产生的文档有软件测试计划和软件测试报告。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">3</span>)软件维护<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件维护任务就是为使软件适应外界环境的变化,进一步实现软件功能的扩充和质量的改善而修改软件。该阶段产生的文档有维护计划和维护报告。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>2、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件开发模型<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">用不同的方式将软件生存周期中所有开发活动组织起来,形成不同的软件开发模型。常见的软件开发模型有瀑布模型、螺旋模型和喷泉模型等。瀑布模型给出了软件生存周期各阶段的固定顺序,上一阶段完成后才能进入到下一阶段。各阶段结束后,都要进行严格的评审。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>3</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">、结构化分析和设计方法<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">1</span>)结构化分析(<span lang="EN-US">SA</span>)方法<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">结构化分析(<span lang="EN-US">SA</span>)方法是一种面向数据流的需求分析方法,它适用于分析大型数据处理系统。结构化分析方法的基本思想是自顶向下逐层分解,把一个问题分解成若干个小问题,每个小问题再分解成若干个更小的问题,经过多次逐层分解,每个最低层的问题都是足够简单、容易解决的,这个过程就是分解的过程。<span lang="EN-US">SA</span>方法的分析结果由数据流图<span lang="EN-US">DFD</span>、数据词典和加工逻辑说明几个部分组成。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">2</span>)结构化设计(<span lang="EN-US">SD</span>)方法<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">结构化设计(<span lang="EN-US">SD</span>)方法是一各面向数据流的软件设计方法,它可以与<span lang="EN-US">SA</span>方法衔接,<span lang="EN-US">SD</span>方法采用结构图(<span lang="EN-US">SC</span>)来描述程序的结构。结构图的基本成分由模块、调用和输入<span lang="EN-US">/</span>输出数据组成。在需求分析阶段,用<span lang="EN-US">SA</span>方法产生了数据流图。面向数据流的设计能方便地将<span lang="EN-US">DFD</span>转换成程序结构图,<span lang="EN-US">DFD</span>中从系统的输入数据到系统的输出数据流的一连串连续变换将形成一条信息流。<span lang="EN-US">DFD</span>的信息流大体可分为两种类型,一种是变换流,另一种是事务流。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">SD</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">方法的设计步骤有:①复查并精化数据流图;②确定<span lang="EN-US">DFD</span>的信息流类型;③根据信息流类型分别将变换流或事务流转换成程序结构图;④根据软件设计的原则对程序结构图作为改进。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">3</span>)结构化程序设计(<span lang="EN-US">SP</span>)<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">结构化程序设计(<span lang="EN-US">SP</span>)采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。自顶向下逐步求精的设计方法符合抽象和分解的原则,人们解决复杂问题时常用的方法。<span lang="EN-US">SA</span>方法和<span lang="EN-US">SD</span>方法也采用了自顶向下逐步求精的方法,在详细设计时也同样如此。在设计一个模块的实现算法时,先考虑整体后考虑局部,先抽象后具体,通地逐步细化,最后得到详细的实现算法。单入口单出口的控制结构,使程序的静态和动态结构执行过程一致,使程序具有良好的结构。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>4、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">面向数据结构的设计方法<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">这类方法以数据结构作为设计基础,根据输入<span lang="EN-US">/</span>输出数据结构导出程序的结构。<span lang="EN-US">Jackson</span>方法是一种典型的面向数据结构的设计方法。尽管程序中实际使用中的数据结构有许多种,但这些数据结构中数据元素间的逻辑关系只有顺序、选择和重复<span lang="EN-US">3</span>类。<span lang="EN-US">Jackson</span>方法的设计步骤为:<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">1</span>)分析并确定输入和输出数据的逻辑结构,并用<span lang="EN-US">Jackson</span>图表示;<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">2</span>)找出输入数据结构与输出数据结构间有对应关系的数据单元;<span lang="EN-US"> <p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">3</span>)从描述数据结构的<span lang="EN-US">Jackson</span>图导出描述程序结构的<span lang="EN-US">Jackson</span>图。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>5、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件设计的原则<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">1</span>)抽象的原则<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件工程中从软件定义到软件开发要发经历多个阶段,在这个过程中每前进一步都可看作是对软件设计的抽象层次的一次细化。抽象的最低层次就是实现该软件的源程序代码。在进行曲模块化设计时也可以有多个抽象层次,最高抽象层次的模块用概括的方式叙述题的解法,较低抽象层次的模块是对较高抽象层次模块问题解法描述的细化。过程抽象和数据抽象是常用的两种主要抽象手段。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">2</span>)模块化的原则<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">模块化是指将一个待开发的软件分解或成若干个小的简单的部分模块,每个模块可独立地开发、测试,最后组装成完整的软件。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">3</span>)信息隐蔽的原则<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">信息隐蔽是开发整体程序结构时使用的法则,即将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一人模块时尽可能少地显露其内部的处理。信息隐蔽原则对提高软件的可修改性、可测试性和可移植性都有重要的作用。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">4</span>)模块独立的原则<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">模块独立是指每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系比较简单。衡量模块独立程度标准有两个:耦合和内聚,耦合是指模块之间联系的紧密程度,耦合度越高,则模块的独立性越差。内聚是指模块内部各元素之间联系的紧密程度,内聚度越低,模块的独立性越差。模块<br/>独立要求每个模块都是高内聚低耦合的。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>6、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">编码<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">编码阶段的任务就是根据详细的设计说明书编写程序。要编写高质量的程序,应注意选择合适的程序设计语言,明确源程序的质量要求,养成良好的程序设计格。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>7、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件测试<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件测试的工作量约占软件开发总工作量的<span lang="EN-US">40%</span>以上,其目的是尽可能多地发现软件产品(主要是指程序)中的错误和缺陷。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">测试的关键是测试用例的设计,设计方法可分成两类:白盒测试和黑盒测试。白盒测试把程序看成是装在一只透明的盒子里,测试者完全了解程序的结构和处理过程。白盒测试根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。黑盒测试把程序看成是装在一只不透明的盒子里,测试者完全不了解(或不考虑)程序的结构和处理过程。黑盒测试根据规格说明书规定的功能来设计测试用例,检查程序的功能是否符合规格说明的要求。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件测试的主要步骤有单元测试、集成测试和确认测试。单元测试也称模块测试,通常单元测试可放在编码阶段,主要用来发现编码和详细设计中产生的错误,一般采用白盒测试。集成测试也租组装测试,它是对由各模块组装而成的模块进行测试,主要检查模块间的接口和通信。集成测试主要用来发现设计阶段产生的错误,通常采用黑盒测试。确认测试的任务是检查软件的功能、性能和其他特征是否与用户的需求一致,它是以需求规格说明书作为依据的测试,通常采用黑盒测度。<span lang="EN-US"> <p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">大多数软件生产者使用一种<span lang="EN-US">Alpha </span>测试和<span lang="EN-US">Beta</span>测试的过程,来揭露仅由最终用户才能发现的错误。<span lang="EN-US"> Alpha</span>测试是在开发者的现场由客户来实施的,被测试的软件是在开发者从用户的角度进行常规设置的环境下运行的。<span lang="EN-US">Beta</span>测试是在一个或多个客户的现场由该软件的最终用户实施的。与<span lang="EN-US">Alpaha</span>测试不同的是,进行<span lang="EN-US">Beta</span>测试时开发者通常是不在场的。<span lang="EN-US"><p></p></span></span></p>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 顶 踩

该用户从未签到

升级  30.8%

沙发
 楼主| 发表于 2006-3-3 09:04:11 | 只看该作者
<p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">8、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">面向对象方法的基本概念<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">面向对象(<span lang="EN-US">OO</span>)方法成为软件开发的一种主要方法。它有几个基本概念。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">1</span>)对象<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">在计算机系统中,对象是指一组属性以及这组属性上的专用操作的封装体。属性可以是一些数据,也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装目的是使对象的使用者和生产者分离,使对象的定义和实现分开。一个对象通常可由对象名、属性和操作这<span lang="EN-US">3</span>个部分组成。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">2</span>)类<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(<span lang="EN-US">Instance </span>)。在分析和设计时,我们通常把注意力集中在类上,而不是具体的对象上。通常把一个类和这个类的所有对象称为类及对象或对象类。<span lang="EN-US"> <p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">3</span>) 继承<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">继承是在某个类的层次关联中不同的类共享属性和操作的一种机制。一个父类可以有多个子类,这些子类都是父类的特例。父类描述了这些子类的公共属性的操作,子类中还可以定义它自己的属性和操作。一个子类只有唯一的一个父类,这种继承称为单一继承。一个了类有多个父类,可以从多个父类中继承特性,这种继承称为重多继承。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">4</span>)消息<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">消息的对象间通信的手段、一个对象通过向另一对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如有必要)。消息只告诉接收对象需要完成什么操作,但并不能指示接收者息样完成操作。消息完全同接收者解释,接收者独立决定采用什么方法来完成所需的操作。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(<span lang="EN-US">5</span>)多态性和动态绑定<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">多态性是指同一个操作作用不同的对象可以有不同的解释,产生不同的执行结果。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">与多态性密切相关的一个概念就是动态绑定。传统的程序设计语言把过程调用与目标代码的连接放在程序运行前进行,称为静态绑定。而动态绑定则是把这种连接推迟支动行时才进行。在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法连接,即动态绑定。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>9、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">面向对象的分析与设计方法<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">(</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">1</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">)</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">eter Coad </span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">和</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">Edward Yourdon</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">的</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">OOA</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">和</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">OOD</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">方法</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;"><p></p></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">OOA</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(面向对象的分析)模型由<span lang="EN-US">5</span>个层次(主题层、对象类层、结构层、属性层和服务层)和<span lang="EN-US">5</span>个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">OOA</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">OOA</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">OOA </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">中的<span lang="EN-US">5</span>个层次和<span lang="EN-US">5</span>个活动继续贯穿在<span lang="EN-US">OOD</span>(画向对象的设计)过程中。<span lang="EN-US">OOD</span>模型由<span lang="EN-US">4</span>个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">(</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">2</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">)</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">Booch</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">的</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;"> OOD</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">方法</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;"><p></p></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">Booch </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">认为软件开发是一个螺旋上升的过程。在螺旋上升的每个周期中,有<span lang="EN-US">4</span>个步骤:标识类和对象、确定它们的含义、标识它们之间的关系、说明每一个类的界面和实现。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">(</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">3</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">)</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">OMT</span><span lang="ZH-TW" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;">方法</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体;"><p></p></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">对象建模技术<span lang="EN-US">OMT</span>定义了<span lang="EN-US">3</span>种模型,它们是对象模型、动态模型和功能模型,<span lang="EN-US">OMT</span>用这<span lang="EN-US">3</span>种模型来描述系统。<span lang="EN-US">OMT</span>方法有<span lang="EN-US">4</span>个步骤:分析、系统设计、对象设计和实现。<span lang="EN-US">OMT</span>方法的每一个步骤都使用这<span lang="EN-US">3</span>种模型,每一个步骤对这<span lang="EN-US">3</span>种模型不断地进行细化和扩充。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">对象模型描述系统包括对象的静态结构、对象之间的关系、对象的属性和对象的操作。<span lang="EN-US">OMT</span>的对象模型中除了对象、类和继承外,还有链、关联、泛化、聚合和模块等概念。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">动态模型用来描述与值的变换有关的系统特征<span lang="EN-US">--</span>功能、映射、约束和函数依赖。功能模型用数据流图来表示。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">OMT</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">主要步骤:<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">①分析是<span lang="EN-US">OMT</span>方法的第一步,其目的是建立可理解现实世界模型。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">②在系统设计阶段将确定整个系统的体系结构,以形成求解问题和建立解答的高层次策略。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">③对象设计。在分析的基础上,对象设计阶段将建立基于分析模型的设计模型,并考虑实现的细节。设计人员会根据系统设计期间建立的策略把实现细节加入到设计模型中。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">④实现阶段将对象设计阶段开发的对象类及基关系转换成特定的程序设计语言、数据库或硬件实现。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>10、</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件质量保证<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件质量保证是指为保证软件系统或软件产品最大限度地满足用户要求而进行的有计划、有组织的活动,其目的是生产高质量的软件。有多种软件质量模型来描述软件质量特性,著名的有<span lang="EN-US"> ISO/IEC 9126</span>软件质量模型和<span lang="EN-US"> Mc Call</span>软件质量模型。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">软件质量保证环节包括的主要工作有:应用技术方法、进行正规的技术评审、测试软件、标准的实施、控制变动、度量、记录保存和报告。<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><span lang="EN-US"><br/>11、</span>软件开发工具与环境<span lang="EN-US"><p></p></span></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">用来辅助软件开发、运行、维护、管理和支持等过程中的活动的软件称为软件工具,通常也称为<span lang="EN-US"> CASE</span>工具。软件工具大都包含了检测机制,能及时发现一些错误,对提高软件的 质量起着重要的作用。<span lang="EN-US"><p></p></span></span></p><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-font-family: &quot;Times New Roman&quot;; mso-ansi-language: EN-US; mso-bidi-language: AR-SA;">软件开发环境则把一组相关的工具集成在环境中,环境机制提供数据集成、控制集成和界面集成等机制。数据集成机制为工具提供统一的数据接日;控制集成机制实现工具间的通信和协同工作;界面集成机制使这些工具具有统一的界面风格,从而为软件开发、维护、管理等过程中的各项活动提供连续的、一致的全方位支持。</span>
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

GMT+8, 2025-7-5 21:04

Software by Discuz! X3.2

© 2001-2013 SKIN BY DSVUE

快速回复 返回顶部 返回列表