探索软件工程的奥秘

发表时间: 2022-12-10 14:38

软件工程知识

1.软件工程定义

  软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程,其目的是提高软件生产率、提高软件质量、降低软件成本。IEEE 对软件工程的定义是:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
  软件工程由方法、工具和过程三个部分组成。
  人们开始用工程的方法进行软件的开发、管理和维护,即“软件工程”。

2.软件需求分析

  软件需求就是系统必须完成的事以及必须具备的品质。
  需求分析的过程顺序:需求获取、需求分析、需求定义(编写需求规格说明书)、需求验证。
  需求的层次:


  
质量功能部署(Quality Function Deployment, QFD):是一种将用户要求转化成软件需求的技术,其目的是最大限度地提升软件工程过程中用户的满意度。为了达到这个目标,QFD 将软件需求分为三类,分别是常规需求、期望需求和意外需求。
需求获取:需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。常用的工具方法有访谈、问卷调查、采样、情节串联板、联合需求计划。这个地方可以与范围管理中的需求收集部分对照理解。
  需求分析将提炼、分析和审查已经获取到的需求,以确保所有的项目干系人都明白其含义并找出其中的错误、遗漏或其他不足的地方。
  需求分析的方法:SA(系统分析)、OOA(面向对象分析)
  定义:针对待解决问题的特征的描述,所定义的需求必须可以被验证。
  作用:检测和解决需求之间的冲突。发现系统的边界。详细描述系统的需求。
  使用SA 方法进行需求分析,其建立的模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型(也称为状态模型)。在实际工作中,一般使用实体联系图(E-R 图)表示数据模型,用数据流图(DataFlow Diagram,DFD)表示功能模型,用状态转换图(State Transform Diagram,STD)表示行为模型。
软件架构风格
  (1)数据流风格:数据流风格包括批处理序列和管道/过滤器两种风格。
  (2)调用/返回风格:调用/返回风格包括主程序/子程序、数据抽象和面向对象,以及层次结构。
  (3)独立构件风格:独立构件风格包括进程通信和事件驱动的系统。
  (4)虚拟机风格:虚拟机风格包括解释器和基于规则的系统。
  (5)仓库风格:仓库风格包括数据库系统、黑板系统和超文本系统。
软件设计
  设计模式包含模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式等基本要素。
  根据处理范围不同,设计模式可分为类模式和对象模式。类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,属于静态关系;对象模式处理对象之间的关系,这些关系在运行时刻变化,更具动态性。
  根据目的和用途不同,设计模式可分为创建型(Creational)模式、结构型(Structural)模式和行为型(Behavioral)模式三种。
软件测试
  软件测试的目的是验证软件是否满足软件开发合同或项目开发计划、系统/子系统设计文档、SRS、软件设计说明和软件产品说明等规定的软件质量要求。通过测试,发现软件缺陷,为软件产品的质量测量和评价提供依据。
  软件测试的方法分为静态测试与动态测试。静态测试是指被测试程序不在机器上运行,而采用人工检测和计算机辅助静态分析的手段对程序进行检测。静态测试包括对文档的静态测试和对代码的静态测试。
  对文档的静态测试主要以检查单的形式进行,而对代码的静态测试一般采用桌前检查(Desk Checking)、代码走查和代码审查。
  动态测试是指在计算机上实际运行程序进行软件测试,一般采用白盒测试和黑盒测试方法。
  白盒测试也称为结构测试,主要用于软件单元测试中。白盒测试方法中,最常用的技术是逻辑覆盖,即使用测试数据运行被测程序,考察对程序逻辑的覆盖程度。主要的覆盖标准有语句覆盖、判定覆盖、条件覆盖、条件/判定覆盖、条件组合覆盖、修正的条件/判定覆盖和路径覆盖等。
  黑盒测试也称为功能测试,主要用于集成测试、确认测试和系统测试中。黑盒测试根据SRS 所规定的功能来设计测试用例,一般包括等价类划分、边界值分析、判定表、因果图、状态图、随机测试、猜错法和正交试验法等。
软件集成技术
  企业应用集成(Enterprise Application Integration,EAI),从单个企业的角度来说,EAI 可以包括表示集成、数据集成、控制集成和业务流程集成等多个层次和方面。当然,也可以在多个企业之间进行应用集成。
  1)表示集成:也称为界面集成,这是比较原始和最浅层次的集成,但又是常用的集成。这种方法将用户界面作为公共的集成点,把原有零散的系统界面集中在一个新的界面中。
  2)数据集成:为了完成控制集成和业务流程集成,必须首先解决数据和数据库的集成问题。在集成之前,必须首先对数据进行标识并编成目录,另外还要确定元数据模型,保证数据在数据库系统中分布和共享。因此,数据集成是白盒集成。相对而言,数据集成比表示集成要更加灵活。但是,当业务逻辑经常发生变化时,数据集成就会面临困难
  3) 控制集成:控制集成也称为功能集成或应用集成,是在业务逻辑层上对应用系统进行集成的。实现控制集成时,可以借助于远程过程调用或远程方法调用、面向消息的中间件、分布式对象技术和事务处理监控器来实现。控制集成与表示集成、数据集成相比,灵活性更高。表示集成和数据集成适用的环境下,都适用于控制集成。
  4)业务流程集成:业务流程集成也称为过程集成,这种集成超越了数据和系统,它由一系列基于标准的、统一数据格式的工作流组成。