SEII-1

01-软件工程基础

Outline

软件工程基础

  • 软件的概念
  • 软件工程的概念
  • 软件工程知识域

项目管理基础

  • 项目和项目管理
  • 团队组织与管理
  • 软件质量保障
  • 软件配置管理

软件的定义

  1. 软件独立于硬件

  2. 软件是一种工具

  3. 软件的核心是程序

    软件 = 程序 + 文档 + 数据

  4. 软件开发远比编程复杂

  5. 应用软件基于现实又高于现实

软件的类型

  • System software

    操作系统、数据库、数据仓库、嵌入式设备、安全

  • Programming software

    IDE、测试、持续集成、建模、度量

  • Application software

    商业、政府、休闲、医疗、教育、国防、个人、专业、科学

软件工程的定义

  1. 应用 系统的、规范的、可量化 的方法来开发、运行和维护软件,即将工程应用到软件
  2. 1) 中各种方法的研究

理解:

  • 软件工程是一种工程活动
  • 软件工程的动机是解决实际问题
  • 软件工程是科学性、实践性和工艺性并重的
  • 软件工程追求足够好,不是最好
  • 软件工程真正的产品是基于虚拟计算机的软件方案
  • 软件工程的最终目的是要促进整个社会的进步

软件开发活动和产物

软件开发活动

阶段核心目标关键问题产出物
需求分析(Requirement)明确“What”(需求定义)用户需要什么?SRS(需求文档)
软件设计(Design)规划“How”(实现方案)如何设计系统?SDD(设计文档)
构建(Construction)生成可运行产品如何编码实现?代码与可执行文件
测试(Testing)验证正确性与符合性是否满足需求?是否实现正确?测试报告
交付(Deliver)部署与用户支持如何让用户顺利使用?用户与系统文档
维护(Maintenance)持续优化与迭代如何修复和改进?新版本软件

软件开发的角色分工

  • 需求工程师,又被称为需求分析师:承担需求开发任务。软件产品的需求开发工作通常由多个需求工程师来完成,他们共同组成一个需求工程师小组,在首席需求工程师的领导下开展工作。通常一个团队只有一个需求工程师小组。
  • 软件体系结构师:承担软件体系结构设计任务。通常也是由多人组成一个小组,并在首席软件体系结构师的领导下开展工作。通常一个团队只有一个软件体系结构师小组。
  • 软件设计师:承担详细设计任务。在软件体系结构设计完成之后,可以将其部件分配给不同的开发小组。开发小组中负责所分配部件详细设计工作的人员就是软件设计师。一个团队可能有一个或多个开发小组。一个小组可能有一个或多个软件设计师。
  • 程序员:承担软件构造任务。程序员与软件设计师通常是同一批人,也是根据其所分配到的任务开展工作。
  • 人机交互设计师:承担人机交互设计任务。人机交互设计师与软件设计师可以是同一批人,也可以是不同人员。在有多个小组的软件工程团队中,可以有一个单独的人机交互设计师小组,也可以将人机交互设计师分配到各个小组。
  • **软件测试人员:**承担软件测试任务。软件测试人员通常需要独立于其他的开发人员角色。一个团队可能有一个或多个测试小组。一个小组可能有一个或多个软件测试人员。
  • 项目管理人员:负责计划、组织、领导、协调和控制软件开发的各项工作。相比于传统意义上的管理者,他们不完全是监控者和控制者,更多得是协调者。通常一个团队只有一个项目管理人员。
  • 软件配置管理人员:管理软件开发中产生的各种制品,具体工作是对重要制品进行标识、变更控制、状态报告等。通常一个团队只有一个软件配置管理人员。
  • 质量保障人员:在生产过程中监督和控制软件产品质量的人员。通常一个团队有一个质量保障小组,由一个或多个人员组成。
  • 培训和支持人员:负责软件移交与维护任务。他们可以是其他开发人员的一部分,也可以是独立的人员。
  • 文档编写人员:专门负责写作软件开发各种文档的人员。他们的存在是为了充分利用部分宝贵的人力资源(例如需求工程师和软件体系结构师),让这些人力资源从繁杂的文档化工作中解放出来。

项目的定义

项目是具有下列特征的一系列活动和任务[Kerzner2009]:

  • 具有一个明确的目标;
  • 有限定的开始和结束日期;
  • 有成本限制;
  • 消耗人力和非人力资源;
  • 多工种合作。

项目管理的目标:

  • 在限定时间内;
  • 在一定的成本内;
  • 在要求的质量水平上;
  • 高效使用资源;
  • 获得客户认可。

过程组与活动

过程组:
项目启动、项目计划、项目执行、项目跟踪与控制和项目收尾

活动:
计划制定、团队管理、成本控制、质量保障、度量、过程管理、进度跟踪与控制、风险管理、配置管理

软件配置管理

配置管理:

用技术的和管理的指导和监督方法,来标识和说明配置项的功能和物理特征,控制对这些特征的变更,记录和报告变更处理及其实现状态,并验证与规格需求的一致性

配置项:

置于软件配置管理之下的软件配置的各种有关项目,包括各类管理文档、评审记录与文档、软件文档、源码及其可执行码、运行所需的系统软件和支持软件以及有关数据等

基线:

已经经过正式评审的规格说明或产品,可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能变更。

image-20250320021929373

分支管理

  • 主分支(Master)

  • 开发分支(Develop)

  • 临时性分支

    • 功能(Feature)
    • 预发布(Release)
    • 修补bug(Fixbug)

image-20250320022145732

image-20250320022158046


SEII-1
https://www.jcjovo.top/2025/03/19/SEII-1/
作者
jcjovo
发布于
2025年3月19日
许可协议