软件工程由方法、工具和过程三个部分组成:
①软件工程方法是完成软件工程项目的技术手段,它支持整个软件生命周期;
②软件工程使用的工具是人们在开发软件的活动中智力和体力的扩展与延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成:

③软件工程中的过程贯穿于软件开发的各个环节,管理人员在软件工程过程中,要对软件开发的质量、进度和成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证和配置管理等。
5.1.1架构设计软件架构设计的一个核心问题是能否达到架构级的软件复用。
通用软件架构:数据流风格、调用/返回风格、独立构件风格、虚拟机风格和仓库风格。
在架构评估过程中,评估人员所关注的是系统的质量属性。
敏感点是一个或多个构件(和/或构件之间的关系)的特性,权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。
基于场景的方式主要包括:架构权衡分析法(ATAM)、软件架构分析法(SAAM)和成本效益分析法(CBAM)中。在架构评估中,一般采用刺激、环境和响应三方面来对场景进行描述。刺激是场景中解释或描述项目干系人怎样引发与系统的交互部分,环境描述的是刺激发生时的情况,响应是指系统是如何通过架构对刺激作出反应的。
基于场景的方式分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的 满足程度。
5.1.2需求分析需求层次包括业务需求、用户需求和系统需求。
质量功能部署(QFD)是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD将软件需求分为三类,分别是常规需求、期望需求和意外需求。
需求过程主要包括需求获取、需求分析、需求规格说明书编制、需求验证与确认等。
使用SA方法进行需求分析,其建立的模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)
UML的结构包括构造块、规则和公共机制三个部分。
UML中的事物也称为建模元素,包括结构事物、行为事物(也称动作事物)、分组事物和注释事物(也称注解事物)。
UML中的关系
(1)依赖:是两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。
(2)关联:描述一组对象之间连接的结构关系。分为组合和聚合,都是部分和整体的关系,其中组合事物之间关:系更强,部分和整体之间有共同的生命周期。
(3)泛化:一般/特殊的关系,子类和父类之间的关系。继承关系是泛化关系的反关系,也就是说,子类继承了父类,而父类则是子类的泛化。
(4)实现:是类之间的语义关系,一个类元指定了另一个类元保证执行的契约。
UML 14种图
UML 5个系统视图
面向对象分析阶段的核心工作是建立系统的用例模型与分析模型。
在OOA方法中,构建用例模型一般需要经历四个阶段,分别是识别参与者、合并需求获得用例、细化用例描述和调整用例模型,其中前三个阶段是必须的。
用例之间关系
(1)包含关系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
(2)扩展关系:是如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
(3)泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例其他的用例作为泛化关系中的子用例。父子关系,一般和特殊关系。
类之间关系有关联、依赖、泛化、聚合、组合和实现。
5.1.3软件设计结构化设计SD是一种面向数据流的方法,它以SRS和SA阶段所产生的DFD和数据字典等文档为基础,是一个自顶向下、逐步求精和模块化的过程。SD方法的基本思想是将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段;
在SD中,需要遵循一个基本的原则:高内聚,低耦合。
内聚表示模块内部各成分之间的联系程度;耦合表示模块之间联系的程度。面向对象设计(OOD)是OOA方法的延续,其基本思想包括抽象、封装和可扩展性。
设计模式是前人经验的总结,它使人们可以方便地复用成功的软件设计。设计模式包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素。
根据处理范围不同,设计模式可分为类模式和对象模式;
类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,属于静态关系;
对象模式处理对象之间的关系,这些关系在运行时刻变化,更具动态性。
根据目的和用途不同,设计模式分为创建型模式、结构型模式、行为型模式。
5.1.4软件实现
软件配置管理活动包括软件配置管理计划、软件配置标识、软件配置控制、软件配置状态记录、软件配置审计、软件发布管理与交付等活动。【口诀:计时制,状态审计不符】
软件编码就是把软件设计的结果翻译成计算机可以“理解和识别”的形式一用某种程序设计语言书写的程序。
软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。通过测试发现软件缺陷,为软件产品的质量测量和评价提供依据。
5.1.5部署交付软件开发完成后,必须部署在最终用户的正式运行环境,交付给最终用户使用,才能为用户创造价值。这些活动包括软件打包、安装、配置、测试、集成和更新等。是一个持续不断的过程。
持续部署
部署与交付的新趋势:持续集成、持续交付和持续部署的出现及流行反映了新的软件开发模式与发展趋势,主要表现为:
(1)工作职责和人员分工的转变:软件开发人员运用自动化开发工具进行持续集成,进一步将交付和部署扩展,而原来的手工运维工作也逐渐被分派到了开发人员的手里。运维人员的工作也从重复枯燥的手工作业转化为开发自动化的部署脚本,并逐步并入开发人员的行列之中。 (2)大数据和云计算基础设施的普及进一步给部署带来新的飞跃:云计算的出现使得计算机本身也可以进行自动化创建和回收,这种环境管理的范畴将得到进一步扩充。部署和运维工作也会脱离具体的机器和机房,可以在远端进行,部署能力和灵活性出现了质的飞跃。 (3)研发运维的融合:减轻运维的压力,把运维和研发融合在一起。
5.1.6过程管理软件过程能力是组织基于软件过程、技术、资源和人员能力达成业务目标的综合能力。包括治理能力、开发与交付能力、管理与支持能力、组织管理能力等方面。
成熟度模型CSMM模型由4个能力域、20个能力子域、161个能力要求组成。
成熟度等级的总体特征
5.2数据工程数据工程是信息系统的基础工程。
数据工程的主要研究内容包括数据建模、数据标准化、数据运维、数据开发利用和数据安全等理论和技术。
5.2.1数据建模根据模型应用目的不同,可以将数据模型划分为三类:概念模型、逻辑模型和物理模型。
数据建模过程包括数据需求分析、概念模型设计、逻辑模型设计和物理模型设计等过程。
5.2.2数据标准化
数据标准化是实现数据共享的基础。使得数据简单化、结构化和标准化。
数据标准化的主要内容包括元数据标准化、数据元标准化、数据模式标准化、数据分类与编码标准化和数据标准化管理。
5.2.3数据运维
5.2.4数据开放利用数据开发利用包括数据集成、数据挖掘和数据服务(目录服务、查询服务、浏览和下载服务、数据分发服务)、数据可视化、信息检索等。
5.2.5数据库安全
数据库安全对策
数据库安全机制包括用户的身份认证、存取控制、数据库加密、数据审计、推理控制等内容。
5.3系统集成系统集成概念专指计算机系统的集成,包括计算机硬件平台、网络系统、系统软件、工具软件、应用软件的集成,围绕这些系统的相应咨询、服务和技术支持。它是以计算机有关技术储备为基础,以可靠的产品为工具,用以实现某一特定的计算机系统功能组合的工程行为。
5.3.1集成基础系统集成通过硬件平台、网络通信平台、数据库平台、工具平台、应用软件平台将各类资源有机、高效地集成到一起,形成一个完整的工作台面。因此,在技术上需要遵循的基本原则包括:开放性、结构化、先进性和主流化。
5.3.2网络集成5.3.3数据集成
数据集成是将参与数据库的有关信息在逻辑上集成为一个属于异构分布式数据库的全局概念模式,以达到信息共享的目的。数据集成可以分为基本数据集成、多级视图集成、模式集成和多粒度数据集成四个层次。
异构数据集成
5.3.4软件集成
软件构件标准:公共对象请求代理结构(CORBA)、COM、DCOM与COM+、.NET、J2EE应用架构等标准。
5.3.5应用集成
应用集成或组织应用集成(EAI)是指将独立的软件应用连接起来,实现协同工作。借助应用集成,组织可以提高运营效率,实现工作流自动化,并增强不同部门和团队之间的协作。对应用集成的技术要求大致有:
(1)具有应用间的互操作性:应用的互操作性提供不同系统间信息的有意义交换,即信息的语用交换,而不仅限于语法交换和语义交换。此外,它还提供系统间功能服务的使用功能,特别是资源的动态发现和动态类型检查。
(2)具有分布式环境中应用的可移植性:提供应用程序在系统中迁移的潜力并且不破坏应用所提供的或正在使用的服务。这种迁移包括静态的系统重构或重新安装以及动态的系统重构。
(3)具有系统中应用分布的透明性:分布的透明性屏蔽了由系统的分布所带来的复杂性。它使应用编程者不必关心系统是分布的还是集中的,从而可以集中精力设计具体的应用系统,这就大大减少了应用集成编程的复杂性。
可以帮助协调连接各种应用的组件有:
(1)应用编程接口(API):API是定义不同软件交互方式的程序和规则,可以支持应用之间相互通信。API利用特定的数据结构,帮助开发人员快速访问其他应用的功能。
(2)事件驱动型操作:当触发器(即事件)启动一个程序或一组操作时,系统就会执行事件驱动型操作。例如:在订单提交后,进行计费并向客户开具发票;管理从ERP系统到CRM系统的“业务机会到订单”工作流。
(3)数据映射:将数据从一个系统映射到另一个系统,可以定义数据的交换方式,从而简化后续的数据导出、分组或分析工作。例如,用户在一个应用中填写联系信息表,那么这些信息将被映射到相邻应用的相应字段。
5.4安全工程5.4.1工程概述信息安全系统工程就是要建造一个信息安全系统,它是整个信息系统工程的一部分,而且最好是与业务应用信息系统工程同步进行,主要围绕“信息安全”内容。
5.4.2安全系统信息安全系统三维空间包括安全机制、网络参考模型和安全服务。
(1)X轴是“安全机制”。安全机制可以理解为提供某些安全服务,利用各种安全技术和技巧,所形成的一个较为完善的结构体系。
(2)Y轴是“OS网络参考模型”。
(3)Z轴是“安全服务”。
由X、Y、Z三个轴形成的信息安全系统三维空间就是信息系统的“安全空间”。随着网络的逐层扩展,这个空间不仅范围逐步加大,安全的内涵也就更丰富,达到具有认证、权限、完整、加密和不可否认五大要素,也叫作“安全空间”的五大属性。
安全机制包含基础设施实体安全、平台安全、数据安全、通信安全、应用安全、运行安全、管理安全、授权和审计安全、安全防范体系等。
安全服务包括对等实体认证服务、数据保密服务、数据完整性服务、数据源点认证服务、禁止否认服务和犯罪证据提供服务等。
(1)对等实体认证服务:用于两个开放系统同等层中的实体建立链接或数据传输时,对对方实体的合法性、真实性进行确认,以防假冒。
(2)数据保密服务:包括多种保密服务,为了防止网络中各系统之间的数据被截获或被非法存取而泄密,提供密码加密保护。数据保密服务可提供链接方式和无链接方式两种数据保密,同时也可对用户可选字段的数据进行保护。
(3)数据完整性服务:用以防止非法实体对交换数据的修改、插入、删除以及在数据交换过程中的数据丢失。数据完整性服务可分为:
(4)数据源点认证服务:用于确保数据发自真正的源点,防止假冒。
(5)禁止否认服务:用以防止发送方在发送数据后否认自己发送过此数据,接收方在收到数据后否认自己收到过此数据或伪造接收数据,由两种服务组成:不得否认发送和不得否认接收。
(6)犯罪证据提供服务:指为违反国内外法律法规的行为或活动,提供各类数字证据、信息线索等。
安全技术主要涉及加密、数字签名技术、防控控制、数据完整性、认证、数据挖掘等。
5.4.3工程基础信息安全系统的建设主要包括:硬件工程、软件工程、通信及网络工程、数据存储与灾备工程、系统工程、测试工程、密码工程和组织信息化工程等。
信息安全系统建设是遵从组织所制定的安全策略进行的。而安全策略由组织和组织的客户和服务对象、集成商、安全产品开发者、密码研制单位、独立评估者和其他相关组织共同协商建立。因此信息安全系统工程活动必须要与其他外部实体进行协调。
信息安全系统工程应该吸纳安全管理的成熟规范部分,这些安全管理包括物理安全、计算机安全、网络安全、通信安全、输入/输出产品的安全、操作系统安全、数据库系统安全、数据安全、信息审计安全、人员安全、管理安全和辐射安全等。
5.4.4工程体系架构信息安全系统工程能力成熟度模型(ISSE-CMM)是一种衡量信息安全系统工程实施能力的方法,是使用面向工程过程的一种方法。
ISSE-CMM主要适用于工程组织、获取组织和评估组织。
ISSE将信息安全系统工程实施过程分解为:工程过程、风险过程和保证过程。
信息安全系统工程能力成熟度模型