购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3.1 考点精讲

1.软件需求分析与定义

据统计,在失败的信息系统项目中,有超过一半是源于需求问题。

需求就是系统必须完成的事及必需的品质。软件需求是一个为解决特定问题而必须由被开发或被修改的软件展示的特性。这个问题可能是使用软件的某人的任务中的一个自动化部分,或是支持委托开发软件的组织的业务流程,或修正当前软件的缺点,或是控制一个设备等。用户、业务流程和设备的功能通常很复杂,因此,特定软件的需求在外延上通常是来自一个组织不同层次的不同人员的需求和来自软件将要在其中运行的环境的需求的复杂组合。

需求是软件产品的根源,就像一条河流,如果源头被污染了,那么整条河流也就被污染了。

人们把所有与需求直接相关的活动统称为需求工程,需求工程分为两大部分:需求开发与需求管理。

需求开发的目的是通过调查与分析,获取用户需求并定义产品需求。需求开发又分为需求获取、需求分析、需求定义和需求验证四个步骤,需求开发得到的主要成果是需求规格说明书(SRS)。需求开发侧重于技术,是需求工程的主线。

需求管理的目的是在客户和开发方之间建立对需求的共同理解,维护需求与其他工作成果的一致性,并控制需求的变更。需求开发又分为制订需求管理计划、求得对需求的理解、求得对需求的承诺、管理需求变更、维护对需求的双向跟踪性和识别项目工作与需求之间的不一致性六个步骤,需求管理侧重于管理,是需求工程的辅线(即对需求开发起支持作用)。

2.软件设计

软件设计是“定义一个系统或构件的架构、构件、接口和其他特征的过程”,并得到“这个过程的结果”。作为过程看待时,软件设计是一种软件生命周期活动,在这个活动中,要分析软件需求,以产生一个软件内部结构的描述,并将其作为软件构造的基础。更精确地说,软件设计必须描述软件架构和这些构件之间的接口,也必须在详细的层次上描述构件,以便能构造这些构件。

软件设计在软件开发中起着重要作用,通过它形成要实现的各种不同模型。分析和评价这些模型,以确定它们能否实现各种不同的需求,在各种不同的候选方案中进行权衡,确定最终方案。最后,将其作为构造和测试的输入和起始点,并用来规划后续的开发活动。

软件设计由两个处于软件需求和软件构造之间的活动组成。

(1)软件架构设计(有时叫做高层设计):描述软件的结构和组织,标识各种不同的构件。

(2)软件详细设计:详细地描述各个构件或模块,使之能被构造。

软件架构是“一个描述软件系统的子系统和构件,以及它们之间相互关系的学科”。架构试图定义软件的内部结构。通过视图可以从不同角度描述软件结构,主要包括逻辑视图(满足功能需求)、过程视图(并发问题)、构件视图(实现问题)、部署视图(分布问题)和场景视图(让其他四种视图的元素协同工作),又叫“4+1视图”。

3.软件测试与维护

测试是为评价和改进产品质量、识别产品的缺陷和问题而进行的活动。

软件测试是针对一个程序的行为,在有限测试用例集合上,动态验证是否达到预期的行为,需要选取适当的测试用例。

测试不再只是一种仅在编码阶段完成后才开始的活动。现在的软件测试被认为是一种应该包括在整个开发和维护过程中的活动,它本身是实际产品构造的一个重要部分。

测试不仅是检查预防措施是否有效的主要手段,而且是识别由于某种原因导致预防措施无效、而产生错误的主要手段。需要注意的是,在广泛的测试活动成功完成后,软件可能仍包含错误,交付后出现的软件失效的补救措施是由软件维护达成的。

软件测试随着开发和维护过程,通常在不同的级别上进行,可以在概念上区分三个大的测试阶段:单元测试、集成测试和系统测试。

软件测试需要坚持以下几大原则:

(1)尽早、不断地进行测试;

(2)程序员避免测试自己设计的程序;

(3)既要选择有效、合理的数据,也要选择无效、不合理的数据;

(4)修改后应进行回归测试;

(5)尚未发现的错误数量与该程序已发现错误数成正比。

软件测试可分为静态测试与动态测试两大类,静态测试是在不运行程序的前提下测试,其又分为桌前检查、代码走查和代码审查。而动态测试是在运行程序的前提下测试,其主要分为黑盒测试、白盒测试与灰盒测试三大类,考试重点是前两类。

黑盒测试:又被称为功能测试、数据驱动测试或基于规格说明的测试,是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据,然后看输出的结果,从而了解软件是怎样工作的。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确地输出。典型的黑盒测试方法有等价类划分、边界值分析、错误推测、因果图等。

白盒测试:是把程序看作一个透明的盒子,对程序的源代码进行测试。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等中的缺点或者错误,进而加以修正。典型的白盒测试方法有语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖等。

软件维护是生命周期的一个完整部分。软件开发工作的结果是交付满足用户需求的软件产品。相应地,软件产品必然存在变更和演化。一旦投入运行,就可能发现缺陷,运行环境可能会变化,用户会提出新的需求。这些都需要对软件进行维护。

可以将软件维护定义为需要提供软件支持的全部活动。这些活动包括在交付前完成的活动,以及交付后完成的活动。交付前完成的活动包括交付后运行的计划和维护计划等。交付后的活动包括软件修改、培训、帮助资料等。

软件维护包括如下类型。

(1)更正性维护:软件产品交付后进行的修改,以更正发现的问题。

(2)适应性维护:软件产品交付后进行的修改,以保持软件产品能在变化后或变化中的环境中可以继续使用。

(3)完善性维护:软件产品交付后进行的修改,以改进性能和可维护性。

(4)预防性维护:软件产品交付后进行的修改,以便在软件产品中的潜在错误成为实际错误前,检测和更正它们。

4.软件复用

软件复用是指利用已有软件的各种有关知识构造新的软件,以缩减软件开发和维护的费用。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决策、架构、需求、设计、代码和文档等一切有关方面。

软件复用是一种计算机软件工程方法和理论。20世纪60年代的“软件危机”使程序设计人员明白难于维护的软件的成本是极其高昂的,当软件的规模不断扩大时,这种软件的综合成本可以说是没有人能负担的,并且即使投入了高昂的资金也难以得到可靠的产品,而软件重用是解决这一问题的有效方法。

软件复用的主要思想是,将软件看成是由不同功能的“构件”所组成的有机体,每一个构件在设计编写时可以被设计成完成同类工作的通用工具。这样,如果完成各种工作的构件被建立起来以后,编写某一特定软件的工作就变成了将各种不同构件组织连接起来的简单问题,这对于软件产品的最终质量和维护工作都有本质性的改变。

软件制品的复用,按抽象程度的高低,可以划分为如下复用级别:代码的复用、设计的复用、分析的复用、测试信息的复用等。

支持软件复用是人们对面向对象方法寄托的主要希望之一,也是这种方法受到广泛重视的主要原因之一。面向对象方法之所以特别有利于软件复用,是由于它的主要概念及原则与软件复用的要求十分吻合。

面向对象的软件开发和软件复用之间的关系是相辅相成的。一方面,面向对象的方法的基本概念、原则与技术提供了实现软件复用的有利条件;另一方面,软件复用技术也对面向对象的软件开发提供了有力的支持。

而模式也与复用有关,因为模式是“给定上下文中普遍问题的普遍解决方案”,模式主要有设计模式(微观架构模式)和架构模式(宏观架构)两种。

5.软件质量保证及质量评价

国际标准IS014598给出的“软件质量”的定义是:软件特性的总合,软件满足规定或潜在用户需求的能力。也就是说,质量就是遵从用户需求,达到用户满意。

国际标准IS09126定义的软件质量包括“内部质量”、“外部质量”和“使用质量”三部分。也就是说,“软件满足规定或潜在用户需求的能力”要从软件在内部、外部和使用中的表现来衡量。

软件需求定义了软件质量特性,并影响评价这些特性的度量方法和接收准则。

应在软件过程、产品和资源的各个方面进行软件质量管理,软件质量管理过程由许多活动组成,一些活动可直接发现缺陷,其他活动则指出深入的检查是否有价值,前者也称为直接缺陷发现活动,许多活动都可以达到这两个目的。

软件质量管理过程包括:质量保证过程、验证过程、确认过程、评审过程、审计过程等。

(1)软件质量保证

软件质量保证过程通过计划制订、实施和完成一组活动提供保证,这些活动保证项目生命周期中的软件产品和过程符合其规定的需求。

软件质量保证计划定义了用于保证为特定产品开发的软件满足用户需求,并在项目的约束内具有最高的质量的手段。

(2)验证与确认

验证与确认过程使用能够定位缺陷并便于以后改正的测试技术,直接处理软件产品质量问题。

验证与确认过程确定某一开发和维护括动的产品是否符合活动的需求,最终的软件产品是否达到其意图并满足用户需求。验证过程试图确保活动的输出产品已经被正确制造,即某项活动的输出产品是否满足前一项活动施加的规范说明;确认过程则试图确保建造了正确的产品,即最终的产品是否满足需求规格说明书的要求。因此也可以把确认理解为最后一次的验证。

(3)评审与审计

评审与审计过程包括:管理评审、技术评审、检查、走查、审计等。

管理评审的目的是监控进展,决定计划和进度的状态,确认需求及其系统分配,或鉴定用于达到目标适应性的管理方法的有效性。它们支持有关软件项目期间需求的变更和其他变更活动。

技术评审的目的是评价软件产品。以确定其对使用意图的适合性,目标是识别规范说明和标准的差异,并向管理提供证据,以表明产品是否满足规范说明并遵从标准,而且可以控制变更。

检查的目的是检测和识别软件产品异常。一次检查通常针对产品的一个相对小的部分。发现的任何异常都要记录到文档中,并提交。

走查的目的是评价软件产品,走查也可以用于培训软件产品的听众,主要目标是:发现异常、改进软件产品、授理其他实现、评价是否遵从标准和规范说明。走查类似于检查,但通常不那么正式。走查通常主要由同事评审其工作,以作为一种保障技术。

软件审计的目的是提供软件产品和过程对于可应用的规则、标准、指南、计划和流程的遵从性的独立评价。审计是正式组织的活动,识别违例情况,并产生一个报告,采取更正性行动。

6.软件配置管理

软件配置管理是有益于项目管理、开发和维护的活动。软件配置管理与软件质量保证活动密切相关,软件配置管理活动可以帮助达成软件质量保证目标。

软件配置管理活动有:软件配置管理过程的管理和计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付。

7.软件开发环境

软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常可以设计并实现工具来支持特定的软件工程方法,减少手工方式管理的负担。与软件工程方法一样,它们试图让软件工程更加系统化,工具的种类包括支持单个任务的工具及囊括整个生命周期的工具。具体包括如下。

(1)软件需求工具

软件需求工具包括需求建模工具和需求追踪工具。

(2)软件设计工具

软件设计工具用于创建和检查软件设计,因为软件设计方法的多样性,这类工具的种类很多。

(3)软件构造工具

软件构造工具包括程序编辑器、编译器和代码生成器、解释器、调试器等。

(4)软件测试工具

软件测试工具包括测试生成器、测试执行框架、测试评价工具、测试管理工具、性能分析工具。

(5)软件维护工具

软件维护工具包括理解工具(如可视化工具)和再造工具(如重构工具)。

(6)软件配置管理工具

软件配置管理工具包括追踪工具、版本管理工具和发布工具。

(7)软件工程管理工具

软件工程管理工具包括项目计划与追踪工具、风险管理工具和度量工具。

(8)软件工程过程工具

软件工程过程工具包括建模工具、管理工具、软件开发环境。

(9)软件质量工具

软件质量工具包括检查工具和分析工具。

8.软件过程管理

软件工程管理集成了过程管理和项目管理,主要包括以下6个方面。

(1)启动和范围定义

(2)软件项目计划

(3)软件项目实施

(4)评审和评价

(5)关闭

(6)软件工程度量 qnIkxfIyhwEv4G237by/Yihnqo8UimZcCJY0QlCDt/tTrWRVQSLstAPujic0p/Wq

点击中间区域
呼出菜单
上一章
目录
下一章
×