您好,欢迎访问三七文档
第一章本章简要阐述了软件开发的本质,即实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。在此基础上,概括地介绍了实现这一映射的基本途径,即系统建模。所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构一系统模型。因此,模型是一个抽象。该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。在软件开发领域,系统模型分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。软件模型又可进一步分为设计模型、实现模型和部署模型等。总之,正确认识软件开发的本质,认识建模的意义,了解模型概念以及模型分类,直接关系到对软件工程开发逻辑、开发途径有关知识的理解、掌握和正确应用。正如章首语所言:“正确认识软件开发,是从事软件开发实践和软件工程项目管理的思想基础。”第二章本章首先介绍了需求的定义,即“一个需求是一个‘要予构造’的陈述,描述了待开发产品(或项)功能上的能力、性能参数或者其他性质”,并指出了需求的5个必备的基本性质:必要的(Necessary),即该需求是用户所要求的;无歧义的(Unambiguous),即该需求只能用一种方式解释;可测的(Testable),即该需求是可进行测试的;可跟踪的(Trace-able),即该需求可从一个开发阶段跟踪到另一个阶段;可测量的(Measurable),即该需求是可测量的。需求的5个基本性质可作为需求发现和评估的基础。其次,为了更好地理解需求,介绍了需求的分类。软件需求可以分为功能、性能、外部接口、设计约束和质量属性,并把性能、外部接口、设计约束和质量属性这4类需求统称为非功能需求。除此之外,还给出了功能需求和非功能需求的基本关系。然后,介绍了5种常用的需求发现技术:自悟(Introspection)、交谈(Individualin-terview)、观察(Observation)、小组会(Groupsession)和提炼(Extraction),并指出采用系统化方法,例如,结构化方法和面向对象方法,可使发现的需求基本满足以上5个性质。最后,详细地介绍了需求规约(SRS)。其中,不仅给出了需求规约的定义、需求规约的基本性质和需求规约的格式,而且还介绍了表达需求规约的3种风格:非形式化的规约、半形式化的规约和形式化的规约。需求规约的作用可概括为以下4点:(1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。(2)对于项目的其余大多数工作,需求规约是一个管理控制点。(3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。(4)需求规约是创建产品验收测试计划和用户指南的基础。第三章本章比较详细地介绍了结构化方法,包含结构化需求分析方法和结构化软件设计方法。一下面对结构化方法作一小结。1)一般来说,分析是系统化地使用信息,对一个问题的估算。软件需求分析是这一概念的特化,即系统化地使用由“数据流’,、“加工”、“数据存储”、“数据源”和“数据潭”等术语所表达的信息,对待建系统“是什么”给出一个估算—系统概念模型,而“软件设计是定义满足需求所需要的结构”。结构化方法作为一种特定的软件开发方法学,是从事系统分析和软件设计的一种思想工具。2)结构化方法的提出,是基于看待客观世界的基本观点,即一切信息系统都是由信息流构成的,每一信息流都有自己的起点一数据源,有自己的归宿一数据潭,有驱动信息流动的加工,所谓信息处理主要表现为信息的流动。3)人们解决问题的一般途径是,首先对那些非结构化和半结构化的问题,通常采用已掌握的知识,建造它们的模型定义问题;而后基于已定义的问题,给出相应的解决方案;最后采用一定的工具,实现这一解决方案,如图3-55所示。其中,使用数学作为工具,对一个特定的问题建造了一个模型:Y=x*x+5结构化方法遵循了人们解决问题的一般途径,其中需求分析就是通过建造待开发系统/产品的概念模型,定义需要解决的问题当采用一定技术验证后,表明该模型是可用的情况下,就可进行总体设i}和详细设计,给出求解软件的一种方案,进而采用一种程序设计工具实现。当表明该模型不可使用时,那么就需要修改模型,重新验证。4)所谓模型,简一单地说,就是对任意事物的一个抽象,特性以及所描述的各个方面。进一步说,其中包括系统的一些基本能模型是在特定意图下所确定的角度和抽象层,对一个物理系统的描述,给出系统内各模型元素以及它们之间的语义关系对该系统边界的描述。因此,采用结构化方法建立的系统功能模型,通常还包含力上求为目的,从系统行为的角度,在由“数据流”、“加工”、“数据存储”、“数据源”等术语所定义的需求层上,对待开发系统的描述,包括系统环境的描述。5)为了支持系统功能建模,紧紧围绕“问题分离”、“过程抽象”、“数据抽象”等基本原则,结构化分析方法提出了5个概念,它们是数据源、数据潭、数据流、加工和数据存,并给出了相应的表示。其中,“数据流”和“数据存储”支持对系统数据的抽象,“加工”支持系统功能/过程的抽象;“数据源”、“数据谭”一级相关的数据流支持对系统环境的描述。应该说,这些概念对于规约软件系统的功能是完备的,即它们可以“覆盖”客观世界的一切事物,并且这些概念的语义还相当简单,容易理解和掌握。为了支持软件求解,紧紧围绕“功能/过程抽象”、“逐步求精”和“模块化”等基本软件设计原理或原则,给出了模块、模块调用等概念以及相应的表示,给出了模块结构图、PAD图、N-S图、伪码等设计工具,给出了自顶向下、功能分解的过程指导—变换设计和事务设计,并给出了实现模块化的基本准则,以提高模块的独立性。所谓模块化,是指按照“高内聚低藕合”的设计原则,形成一个相互独立但又有较少联系的模块结构的过程,使每个模块具有相对独立的功育歇过程。所谓逐步求精,是指把要解决问题的过程分解为多个步骤或阶段,每一步是对上一步结果的精化,以接近问题的解法。逐步求精是人类解决复杂问题的基本途径之一。抽象和逐步求精是一对互补的概念,即抽象关注问题的主要方面,忽略其细节;而逐步求精关注底层细节的揭示。可见,结构化方法为了支持系统建模和软件求解,基于一些软件设计原理或原则,给出了完备的符号集,给出了相应功能模型的表达工具,给出了自顶向下、逐层分解的过程指导,如图3-56所示。(6)依据5,我们可以认识到,“软件方法学是以软件方法为研究对象的学科。主要设计指导软件设计的原理和原则,以及基于这些原理、原则的方法和技术。侠义的软件方法学也指某种特定的软件设计指导原则和方法体系”。(7)从软件方法学研究的角度,结构化方法仍然存在一些问题,其中最主要的问题是仍然没有“摆脱”冯.诺依曼体系结构的影响,捕获的“功能”和“数据”恰恰是客观失误的易变性质,由此建造的系统结构很难与客观实际系统的结构保持一致。模块构造图及相关的数据结构,如图所示3-57所示。其中,模块B,G,C,H访问数据结构1,而模块L,I,D,J访问数据结构2。显然,这样的模块结构一般不会保持客观系统的结构,并且也很难维护,这是因为数据是客观事物的易变属性,一旦数据发生变化,那么不但要修改相应的数据结构,很可能还需要修改相关的那些模块,甚至受这些模块修改的影响,还需要修改模块结构中的其他模块,从而为系统的验证和维护带来相当大的困难,甚至是“灾难性”的。在某种意义上来讲,就是这些问题促使了面向对象方法学的产生和发展。第四章(1)UML作为一种图形化语言,紧紧围绕“面向对象方法是一种以客体和客体关系来创建系统模型的系统化软件开发方法学”,给出了比较丰富的表达事物和事物关系的术语,并给出了表达模型的工具,其主要目的是支持软件开发人员从不同角度(静态、动态)、针对不同粒度(系统、子系统、类目等),从不同抽象层来创建模型,并建立相应的文档。(2)为了支持抽象分析和设计中的事物,UML给出了8个基本术语,即类、接口、协作、用况、主动类、构件、制品、结点,并给出了这些基本术语的一些变体。每个术语都体现着一定的软件设计原理,例如类体现了数据抽象、过程抽象、局部化以及信息隐藏原理;用况体现了问题分离、功能抽象等原理;接「。体现了功能抽象等。当使用这些术语创建{系统模型时,它们的语义就映射到相应的模型元素中。}本章重点讲解了其中的类·接口和用况,简单地说明了协作、主动类·构件、制品和结点,在第s章中可能会使用它们。希望读者在需要时能参阅有关文献,以便对它们有更深人地了解并使用。(3)为了表达模型元素之间的关系,UML给出了4个术语,即关联、泛化、细化和依赖,以及它们的一些变体。可以作为UMI.模型中的元素,用于表达各种事物之间的基本关系。这些术语都体现了结构抽象原理,特别是泛化概念的使用,可以有效地进行“一般/特殊”结构的抽象,支持设计的复用。为了进一步描述这些模型元素的语义,还给出一些特定的概念和表示,例如给出限定符这一概念,以便增强关联的语义。4)为了组织以上两类模型元素,UMI给出了包这一术语,在实际应用中,可以把包作为控制信息复杂性的机制。5)为了使创建的系统(或系统成分)模型清晰、易懂,UML给出了“注解”这一术语。6)为了表达概念模型和软件模型,UML提供了13种图形化工具,它们是类图、对象图、构件图、包图、部署图、组合结构图,以及USECASE图、状态图、顺序图、通信图、活动图、交互概观图,定序图。前6种图可用于概念模型和软件模型的静态结构方面;而后7种模型可用于概念模型和软件模型的动态结构方面。本章比较详细地讲解了4种表达系统(或系统成分)模型的工具。其中,类图可用于创建系统的结构模型,表达构成系统各成分之间的静态关系,给出有关系统(或系统成分)的一些说明性信息;UseCase图可用于创建有关系统(或系统成分)的功能模型,表达系统(或系统成分)的功能结构,给出有关系统(或系统成分)在功能需求方面的信息;状态图可用于创建有关系统(或系统成分)的行为生存周期模型,表达有关系统(或系统成分)的一种动态结构,给出有关系统(或系统成分)在生存期间可有哪些阶段、每一阶段可从事的活动以及对外所呈现的特征等方面的信息;顺序图可用于创建有关系统(或系统成分)的交互模型,表达系统(或系统成分)中有关对象之间的交互结构,给出系统(或系统成分)中的一些对象如何协作的信息。本章没有讲解的模型表示工具包括对象图、构件图、包图、部署图、组合结构图,以及活动图、通信图、交互概观图和定序图。希望读者在需要时能参阅有关文献,以便对它们有好了解并正确使用。另外,尽管在有的内容中提及一点UML的“公共机制”,例如衍型,但没有详细地解。作为一种软件开发方法学,为了支持软件开发活动,至少包括3方面的内容:一是给出定义不同抽象层的术语;二是应给出各抽象层的模型表达工具;三是应给出如何把各层模型映射为下一个抽象层的模型,即过程指导。UML仅包括前两方面的内容,因此,UML是一种可视化的建模语言,而不是一种特定的软件开发方法学。尽管在讲述中提到一点有关UML的应用问题,例如类的用途以及相关策略,但那是为了更好地理解,为其应用提供了一些宏观上的指导。第”章将介绍面向对象方法学中的第3部分一一过程。第五章RUP是一种软件开发过程框架,基于面向对象符号体系给出了有关软件开发过程组织及实施的指导。该框架体现了3个突出特征,即以用况驱动、体系结构为中心以及迭代、增量式开发。RUP和UML是一对“姐妹”,它们构成了一种特定的软件开发方法学。其中,UML作为一种可视化建模语言,给出了表达事物和事物之间关系的基本术语,给出了多种模型的表达工具;而RUP利用这些术语定义了需求获取层、系统分析层、设计层、实现层,并给出了实现各层模型之间映射的基本活动以及相关的指导。需求获取层的基本术语有:用况、参与者、用于表达用况参与者之间关系的关联、用于表达用况之间关系的包含和扩展、用于表达参与者之间关系的泛化。这些术语确定了系统用况模型的各种形态。系统分析层的基本术语有:分析类(包括边界类、控制类和实体类)、用
本文标题:软件工程-课后小节
链接地址:https://www.777doc.com/doc-214775 .html