持续更新。。。。。。。。。。。。。。。
【第三版】第五章 软件工程
- 5.1软件工程定义
- 练习
- 5.2软件需求
- 5.2.1雾求的层次
- 1.业务需求-P203
- 2.用户需求-P203
- 3.系统需求-P203
- 5.2.2质量功能部署 P203
- 5.2.3需求获取 P204
- 5.2.4需求分析
- 1.结构化分析-P204
- 2.面向对象分析-P207
- 5.2.5号求规格说明书 P208
- 5.2.6需求变更 P210
- 5.2.7需求跟踪
- 练习
- 5.3软件设计
- 5.3.1结构化设计 P213
- 5.3.2面向对象设计 P216
- 5.3.3统一建模语言 P 217
- 5.3.4设计模式 P 220
- 练习
- 5.4软件实现
- 5.4.1软件配置管理
- 5.4.2软件编码
- 5.4.3软件测试
- 练习
- 5.5部署交付 P225
- 5.5.1软件部置
- 5.5.2软件交付 P226
- 5.5.3持续交付
- 5.5.4持续部署 P227
- 5.5.5 部署和交付的新趋势 (非重点) P228
- 练习
- 5.6软件质量管理
- 5.7软件过程能力成熟度 P230
- 5.7.1成熟度模型
- 5.7.2成熟度等级
- 本章练习
引言:希望这篇文章能够成为参加软考考生的灯塔
根据考纲要求,本章选择题、案例分析题都有可能会涉及。
5.1软件工程定义
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。电气与电子工程师协会(lnstitute ofElectricaland ElectronicsEngineers,IEEE)对软件工程的定义是:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。计算机科学家Fritz Bauer给出的软件工程的定义是:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的
一系列方法。软件工程由方法、工具和过程3个部分组成。
软件工程使用的方法是完成软件项目的技术手段,它支持整个软件生命周期;软件工程使用的工具是人们在开发软件的活动中智力和体力的扩展与延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成;软件工程中的过程贯穿于软件开发的各个环节,是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动。管理人员在软件工程过程中,要对软件开发的质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证和配置管理等。
练习
5.2软件需求
5.2.1雾求的层次
简单地说,软件需求就是系统必须完成的事和必须具备的品质。需求是多层次的,包括业务需求、用户需求和系统需求,个不同层次的需求从目标到具体,从整体到局部,从概念到细节。
1.业务需求-P203
业务需求是指反映组织机构或用户对系统、产品高层次的目标要求,从总体上描述了为什么要达到某种效应,组织希望达到什么目标。通常来自项目投资人、购买产品的客户、客户单位的管理人员、市场营销部门或产品策划部门等。通过业务需求可以确定项目视图和范围,项目视图和范围文档把业务需求集中在一个简单、紧凑的文档中,该文档为以后的设计开发工作奠定了基础。
2.用户需求-P203
用户需求描述的是用户的具体目标,或用户要求系统必须能完成的任务和想要达到的结果,这构成了用户原始需求文档的内容。也就是说,用户需求必须能够体现某种系统产品将给用户带来的业务价值,描述了用户能使用系统来做什么。通常采取用户访谈和问卷调查等方式,对用户使用的场景进行整理,从而建立用户需求。
3.系统需求-P203
系统需求是从系统的角度来说明软件的需求,包括功能需求、非功能需求和约束等。
- 功能需求也称为行为需求,它规定了开发人员必须在系统中实现的软件功能,用户利用这些功能来完成任务,满足业务需要。功能需求通常是通过系统特性的描述表现出来的。所谓特性,是指一组逻辑上相关的功能需求,表示系统为用户提供某项功能(服务),使用户的业务目标得以满足。
- 非功能需求描述了系统展现给用户的行为和执行的操作等,它包括产品必须遵从的标准、规范和合约,是指系统必须具备的属性或品质,又可细分为软件质量属性(例如易用性、可维护性、效率等)和其他非功能需求。
- 约東是指对开发人员在软件产品设计和构造上的限制,常见的有设计约束和过程约束。例如,必须采用安全可靠的自主知识产权的数据库系统,必须运行在开源操作系统之下等。
5.2.2质量功能部署 P203
质量功能部署(Quality Function Deployment, QFD),即通过多种角度对产品的特点进行描述,从而反映产品功能,是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为3类,分别是常规需求、期望需求和意外需求。
- 常规需求。用户认为系统应该做到的功能或性能,实现得越多,用户会越满意。
- 期望需求。用户想当然认为系统应具备的功能或性能,但并不能正确描述自己想要得到的这些功能或性能需求。如果期望需求没有得到实现,会让用户感到不满意。
- 意外需求。意外需求也称为兴奋需求,是用户要求范围外的功能或性能(但通常是软件开发人员很乐意赋予系统的技术特性),实现这些需求用户会更高兴,但不实现也不影响其购买的决策。意外需求是控制在开发人员手中的,开发人员可以选择实现更多的意外需求,以便得到高满意、高忠诚度的用户,也可以(出于成本或项目周期的考虑)选择不实现任何意外需求。
5.2.3需求获取 P204
需求获取是开发者、用户之间为了定义新系统而进行的交流,需求获取是获得系统必要的特征,或者是获得用户能接受的、系统必须满足的约束。如果双方所理解的领域内容在系统分析、设计过程出现问题,通常在开发过程的后期才会被发现,将会使整个系统交付延迟,或者上线的系统无法或难以使用,最终导致项目失败。例如,遗漏的需求或理解错误的需求。
5.2.4需求分析
在需求获取阶段获得的需求是杂乱的,是用户对新系统的期望和要求,这些要求有重复的地方,也有矛盾的地方,这样的要求是不能作为软件设计的基础的。一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性。因此,需要分析人员把杂乱无章的用户要求和期望转化为用户需求,这就是需求分析的工作。
需求分析将提炼、分析和审查已经获取到的需求,以确保所有的项目干系人都明白其含义,并找出其中的错误、遗漏或其他不足的地方。需求分析的关键在于对问题域的研究与理解。为了便于理解问题域,现代软件工程方法所推荐的做法是对问题域进行抽象,将其分解为若干个基本元素,然后对元素之间的关系进行建。
数据模型:实体关系图(E-R图)主要描述实体、属性,以及实体之间的关系;E-R图(Entity-Relationship Diagram)又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念数据模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念数据模型就是用来描述这种需求。
功能模型:数据流图DFD从数据传递和加工的角度,利用图形符号通过逐层细分描述系统内各个部件的功能和数据在它们之
间传递的情况,来说明系统所完成的功能。
行为模型:状态转换图STD通过描述系统的状态和引起系统状态转换的事件,指出作为特定事件的结果将执行哪些动作(例如,处理数据等)。
1.结构化分析-P204
结构化分析通常包含以下几个步骤:
- 分析业务情况,做出反映当前物理模型的DFD;
- 推导出等价的逻辑模型的DFD;
- 设计新的逻辑系统,生成数据字典和基元描述;
- 建立人机接口,提出可供选择的目标系统物理模型的DFD;确定各种方案的成本和风险等级,据此对各种方案进行分析;选择一种方案;
- 建立完整的需求规约。
数据字典主要包括数据项、数据结构、数据流、数据存储、处理过程等几个部分。
- 数据项:数据流图中数据块的数据结构中的数据项说明。数据项是不可再分的数据单位。对数据项的描述通常包括数据项名、数“与其他数据项据项含义说明、别名、数据类型、长度、取值范围、取值含义及与其他数据项的逻辑关系等。其中,“取值范围”的逻辑关系”定义了数据的完整性约束条件,是设计数据检验功能的依据。若干个数据项可以组成一个数据结构。
- 数据结构:数据流图中数据块的数据结构说明。数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述通常包括数据结构名、含义说明和组成(数据项或数据结构)等。
- 数据流:数据流图中流线的说明。数据流是数据结构在系统内传输的路径。对数据流的描述通常包括数据流名、说明、数据流来源、数据流去向、组成(数据结构)、平均流量、高峰期流量等。其中,“数据流来源”说明该数据流来自哪个过程,即数据的来源;“数据流去向”说明该数据流将到哪个过程去,即数据的去向;“平均流量”是指在单位时间(每天、每周、每月等)里的传输次数;“高峰期流量”则是指在高峰时期的数据流量。
- 数据存储:数据流图中数据块的存储特性说明。数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括数据存储名、说明、编号、流入的数据流、流出的数据流、组成(数据结构)、数据量、存取方式等。其中,数据量”是指每次存取多少数据,每天(或每小时、每周等)存取几次等信息;“存取方式”指出是批处理还是联机处理,是检索还是更新,是顺序检索还是随机检索等;“流入的数据流”要指出其来源:“流出的数据流"要指出其去向。
- 处理过程:数据流图中功能块的说明。数据字典中只需要描述处理过程的说明性信息,通常包括处理过程名、说明、输入(数据流)、输出(数据流)、处理(简要说明)等。其中,“简要说明”中主要说明该处理过程的功能及处理要求。功能是指该处理过程用来做什么(并不是怎样做);处理要求包括处理频度要求(如单位时间里处理多少事务、多少数据量)和响应时间要求等,这些处理要求是后续物理设计的输入及性能评价的标准
2.面向对象分析-P207
面向对象的分析(0biect-OrientedAnalvsis,OOA)方法能正确认识其中的事物及它们之间的关系,找出描述问题域和系统功能所需的类和对象,定义它们的属性和职责,以及它们之间所形成的各种联系。最终产生一个符合用户需求,并能直接反映问题域和系统功能的OOA模型及其详细说明。
面向对象分析与结构化分析有较大的区别。0OA所强调的是在系统调查资料的基础上,针对00方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。00A模型由5个层次(主题层、对象类层、结构层、属性层和服务层)和5个活动(标识对象类、标识结构、定义主题、定义属性和定义服务)组成。在这种方法中定义了两种对象类之间的结构,分别是分类结构和组装结构。分类结构就是所谓的一般与特殊的关系;组装结构则反映了对象之间的整体与部分的关系。
OOA大致遵循如下5个基本步骤:
- 确定对象和类:这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
- 确定结构:结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
- 确定主题:主题是指事物的总体概貌和总体分析模型。
- 确定属性:属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
- 确定方法:方法是在收到消息后必须进行的一些处理方法,即方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择的方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
5.2.5号求规格说明书 P208
5.2.6需求变更 P210
5.2.7需求跟踪
练习
5.3软件设计
软件设计的目标是根据软件分析的结果,完成软件构建的过程。其主要目的是绘制软件的蓝图,权衡和比较各种技术和实施方法的利弊,合理分配各种资源,构建新的详细设计方案和相关模型,指导软件实施工作的顺利开展。软件设计是需求的延伸与拓展。需求阶段解决“做什么”的问题,而软件设计阶段解决“怎么做”的问题。同时,它也是系统实施的基础,为系统实施工作做好铺垫。合理的软件设计方案既可以保证软件的质量,也可以提高开发效率,确保软件实施工作的顺利进行。从方法上来说,软件设计分为结构化设计与面向对象设计。
5.3.1结构化设计 P213
5.3.2面向对象设计 P216
在O0D中,类可以分为3种类型:实体类、控制类和边界类。
5.3.3统一建模语言 P 217
1.UML中的事物-P218
UML中的事物也称为建模元素,包括结构事物(Structural Things)、行为事物(BehavioralThings,也称动作事物)、分组事物(Grouping Things)和注释事物(Annotational Things,也称注解事物)。这些事物是UML模型中最基本的00(面向对象)构造块,如表5-4所示。
2.UML中的关系-P218
3.UML2.0中的图-P218
IMI20包括14种图,如表5-5所示
5.3.4设计模式 P 220
练习
5.4软件实现
软件设计完成后,进入软件开发实现过程,在此过程中,我们需要重点关注软件配置管理、软件编码、软件测试、部署交付以及软件过程能力成熟度建设等。
5.4.1软件配置管理
软件配置管理(Software Configuration Management,SCM)是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动的目标就是标识变更。控制变更、确保变更正确实现,并向其他有关人员报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的是使错误降为最小,并最有效地提高生产效率。软件配置管理的核心内容包括版本控制和变更控制。
5.4.2软件编码
目前,人和计算机通信仍需使用人工设计的语言,也就是程序设计语言。所谓编码,就是把软件设计的结果翻译成计算机可“理解和识别”的形式,用某种程序设计语言书写的程序。程序的质量主要取决于软件设计的质量。
但是,程序设计语言的特性和编码途径也会对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。
5.4.3软件测试
练习
5.5部署交付 P225
5.5.1软件部置
5.5.2软件交付 P226
5.5.3持续交付
5.5.4持续部署 P227
5.5.5 部署和交付的新趋势 (非重点) P228
练习
5.6软件质量管理
软件质量就是软件与明确地和隐含地定义的需求相一致的程度,更具体地说,软件质量是软件符合明确地叙述的功能和性能需求、文档中明确描述的开发标准以及所有专业开发的软件都应具有的隐含特征的程度。从管理角度出发,可以将影响软件质量的因素划分为3组,分别反映用户在使用软件产品时的3种不同倾向和观点。这3组分别是产品运行、产品修改和产品转移,三者的关系如图5-2所示。
5.7软件过程能力成熟度 P230
5.7.1成熟度模型
CSMM定义的软件过程能力成熟度模型旨在通过提升组织的软件开发能力帮助顾客提升软件的业务价值。该模型借鉴吸收了软件工程、项目管理、产品管理、组织治理、质量管理、卓越绩效管理、精益软件开发等领域的优秀实践,为组织提供改进和评估软件过程能力的一个成熟度模型。其层次结构如图5-3所示。
5.7.2成熟度等级
按照软件过程能力的成熟度水平由低到高演进发展的形势,CSMM定义了5个等级,高等级是在低等级充分实施的基础之上进
行的。
成熟度等级的总体特征如表5-7所示。
本章练习
2. 思考题
(1)开展软件测试的时候,可用的方法都有哪些?各自的优缺点是什么?
参考答案:略
(2)软件过程能力成熟度(CSMM)中,3级的结果特征和行为特征都包括哪些?
参考答案:略
内容 | 地址 链接 |
---|---|
总览 | 【第三版】系统集成项目管理工程 |
十五至尊图 | 第三版 |
第一章 | 信息化发展 |
第二章 | 信息技术发展 |
第三章 | 信息技术服务 |
第四章 | 信息系统架构 |
版本记录:
- 2024年7月3第一版