软件工程6小节内容分别是需求分析(做什么)、软件架构设计(框架设计)、软件设计(怎么做)、软件工程的过程管理、软件测试及其管理、软件集成技术。
【IEEE对软件工程的定义】将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
【软件工程的三大目的】提高软件生产率、提高软件质量、降低软件成本。
【软件工程的构成三组分】方法(是技术手段)、工具、过程(贯穿于软件开发的各个环节)。
1、需求分析
【软件需求的定义】是指用户对新系统在功能、行为、性能、设计约束等方面的期望。
【软件需求的三层次】包括业务需求、用户需求和系统需求,这三个不同层次从目标到具体,从整体到局部,从概念到细节。
(1)业务需求:企业或客户对系统高层次的目标要求,通常来自项目投资人、购买产品的客户、客户单位的管理人员、市场营销部门或产品策划部门等。
(2)用户需求:通常采取用户访谈和问卷调查等方式,对用户使用的场景进行整理从而建立用户需求。
(3)系统需求:系统需求是从系统的角度来说明软件的需求,包括功能需求(满足业务需要)、非功能需求(系统必须具备的属性或品质)和设计约束等。
【非功能需求】分为软件质量属性(例如,可维护性、可维护性、效率等)和其他非功能需求。
【设计约束的举例】如必须采用国有自主知识产权的数据库系统,必须运行在UNIX操作系统之下等。
质量功能部署(Quality Function Deployment,QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为三类,分别是常规需求、期望需求和意外需求。
【常见的需求获取五大方法】包括用户访谈、问卷调查、采样、情节串联板、联合需求计划等。
【需求分析工作】需要分析人员把杂乱无章的用户要求和期望转化为用户需求。一个好的需求应该具有无二义性、完整性、一致性、可测试性、确定性、可跟踪性、正确性、必要性等特性。
软件需求规格说明书(Softwaro Requirment Specification,SRS )是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。SRS是软件开发过程中最重要的文档之一,对于任何规模和性质的软件项目都不应该缺少。
在实际工作中,一般通过需求评审(技术评审)和需求测试工作来对需求进行验证。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言,其结构包括构造块、规则和公共机制三个部分。它的作用域不限于支持OOA(面向对象分析,做什么)和OOD(面向对象设计,怎么做),还支持从需求分析开始的软件开发的全过程。
2、软件架构设计
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。
软件架构虽脱胎于软件工程,但其形成同时借鉴了计算机架构和 络架构中很多宝贵的思想和方法。不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
【软件架构研究的主要内容】涉及软件架构描述、软件架构风格、软件架构评估和软件架构的形式化方法等。
【研究软件架构的根本目的】解决好软件的复用、质量和维护问题。
【软件架构风格五大分类】数据流风格、调用/返回风格、独立构件风格、虚拟机风格和仓库风格。
从目前已有的软件架构评估技术来看,可以归纳为三类主要的评估方式,分别是基于调查问卷(或检查表)的方式、基于场景的方式(最常用)和基于度量的方式。
【基于场景的方式三大方法】架构权衡分析法、软件架构分析法和成本效益分析法。
在架构评估中,一般采用刺激(stimulus)、环境( environment)和响应(response)三方面来对场景进行描述。
3、软件设计
从方法上来说,软件设计分为结构化设计(面向数据流)与面向对象设计。
(1)SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计(总体结构设计)和详细设计两个阶段。
在SD中,需要遵循一个基本的原则:高内聚,低耦合。
(2)OOD是OOA方法的延续,其主要任务是对类和对象进行设计,包括类的属性、方法,以及类与类之间的关系。
如何同时提高软件的可维护性和可复用性,是OOD需要解决的核心问题之一。
4、软件工程的过程管理
软件产品的质量取决于软件过程,具有良好软件过程的组织能够开发出高质量的软件产品。在软件过程管理方面,最著名的是能力成熟度模型集成(Capability Maturity Modle Integration,CMMI)它融合了多种模型,其主要目的是消除不同模型之间的不一致和重复,降低基于模型进行改进的成本。
CMMI继承了CMM的阶段表示法和EIA/IS731的连续式表示法。
阶段式模型基本沿袭CMM模型框架,仍保持4个成熟等级。
阶段式模型的过程域分组
连续式模型将24个过程域按照功能划分为过程管理、项目管理、工程和支持四个过程组。
连续式模型的过程域分组
5、软件测试及其管理
软件测试是在将软件交付给客户之前所必须完成的重要步骤。
根据国家标准《计算机软件测试规范(GB/T15532-2008),软件测试的目的是验证软件是否满
足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。
【软件测试方法】可分为静态测试和动态测试。
(1)静态测试:主要对文档(检查单)和对代码(桌前检查、代码走查和审查)的静态测试,使用这种方法能够有效地发现30%-70%的逻辑设计和编码错误。
(2)动态测试:一般采用白盒测试(又称结构测试)和黑盒测试(又称功能测试)。
白盒测试方法分为控制流测试、数据流测试和程序变异测试等,最常用的技术是逻辑覆盖,即使用测试数据运行被测程序,考察对程序逻辑的覆盖程度;
黑盒测试根据SRS所规定的功能来设计测试用例,一般包括等价类划分、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交试验法等。
【软件测试类型】根据国家标准GB/T15532-2008,可分为单元测试、集成测试、确认测试、系统测试、配置项测试和回归测试等类别。
【软件测试的管理】包括过程管理、配置管理和评审工作。其中过程管理包括测试活动管理和测试资源管理,测试过程中的评审包括测试就绪评审和测试评审。
6、软件集成技术
信息孤岛是企业信息化一个重要的负面因素,其主要原因既有技术因素也有管理因素,还有业务流程和标准方面的因素。如何将众多的信息孤岛联系起来,此时集成技术应运而生,集成包括软硬件以及 络的集成。
企业应用集成EAI所连接的应用包括各种电子商务系统、ERP、CRM、SCM、OA、数据库系统和数据仓库等。可以消除信息孤岛,它将多个企业信息系统连接起来,实现无缝集成,使它们就像一个整体一样。
从单个企业的角度来说,EAI可以包括表示集成、数据集成、控制集成和业务流程集成等多个层次和方面。当然,也可以在多个企业之间进行应用集成。
(1)表示集成也称界面集成,是黑盒集成,无须了解程序与数据库的内部构造。常用的集成技术主要有屏幕截取和输入模拟技术。
(2)在集成之前,必须首先对数据进行标识并编成目录,另外还要确定元数据模型,保证数据在数据库系统中分布和共享。因此,数据集成是白盒集成。
(3)控制集成也称为功能集成或应用集成,是在业务逻辑层上对应用系统进行集成的,控制集成是黑盒集成。
(4)业务流程集成也称为过程集成,这种集成超越了数据和系统,由一系列基于标准的、统一数据格式的工作流组成。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!