《软件工程》笔记

本文详细介绍了软件工程的各个方面,包括软件开发过程中的各种生命周期模型(如瀑布、敏捷、快速原型等),强调了需求分析中的用例图,以及敏捷开发方法(如极限编程、Scrum和DevOps)的优势。同时涵盖了测试分类和度量,如白盒测试和环形复杂度等。
摘要由CSDN通过智能技术生成

目录

一、软件工程概述

二、软件开发过程

1、软件生命周期模型

2、传统生命周期模型

2.1 瀑布模型(顺序式)

2.2 快速原型模型

2.3 增量模型

2.4 螺旋模型

2.5 喷泉模型(面向对象的生命周期模型)

3、敏捷生命周期模型

3.1 优势*

3.2 极限编程(Extreme Programming,XP)

3.3 Scrum

3.4 DevOps 过程

三、需求分析

1、系统涉众

2、用例图与用例规约

2.1 用例图**


一、软件工程概述

软件 = 程序 + 数据 + 文档

软件工程:将系统化、规范化、可量化的⼯程原则和⽅法应⽤于软件的开发、运⾏、维护及对其中⽅法的理论研究。其主要目标是⾼效开发⾼质量的软件,降低开发成本。

软件工程知识体系:

软件工程开发方法:

  • 传统方法(结构化方法):
    • 静态思想,顺序开发,分而治之
    • 缺少灵活性,开发难成功,成功难维护
  • 面向对象方法
    • 动态思想,抽象实体为对象,对象内封装静态属性与动态方法
    • 概念、逻辑相协调,逻辑结构稳定
    • 主动多次迭代
    • 对象可重用

二、软件开发过程

1、软件生命周期模型

4种类型:顺序式、迭代式、增量式、敏捷式

3个时期,6个阶段:软件定义(可行性分析与开发计划、需求分析)、软件开发(软件设计、编码)、运行维护(软件测试、软件维护)

2、传统生命周期模型

2.1 瀑布模型(顺序式)

计划驱动模型,适合规模较大的系统开发或者分布式的开发模式

  • 文档驱动(静态开发)、推迟实现(充分认识后才开始编码)、质量保证(各阶段结束前评审)
  • 用户只在开发早期和开发结束后接触软件、被动式救火、缺乏灵活性

2.2 快速原型模型

适合于全新系统开发,可以借助原型使⽤户了解到开发的⽅向是否正确的开发模式,适合于⼯期⽐较紧张的项目

  • 快速构建软件原型 -> 开发者用户沟通反馈 -> 改进原型
  • 可以尝试运用未来系统中需要的新技术
  • 技术和工具不一定实际需要、质量较差

2.3 增量模型

每个阶段只交付满足用户需求的可运行产品的子集,第一个增量只实现基本需求的核心产品。

  • 必须具备开放式体系结构、容易退化为“边做边改”,失去整体性

2.4 螺旋模型

⼀种将瀑布模型和快速原型模型结合起来,强调风险分析,特别适合大型复杂的系统开发的开发模式

2.5 喷泉模型(面向对象的生命周期模型)

更多迭代与增量,各阶段相互重叠、多次反复,可以嵌入子生存期

3、敏捷生命周期模型

基本特点:增量交付、迭代开发

先实现必要的用户案例,体现出软件的价值,然后在后续版本中对功能进行细化,使得软件产品的所有功能都能达到相同的用户体验水平

用例:通过系统完成的有价值的目标(用例不是功能,“-”减法是一个功能,“2-1”是一个用例)

3.1 优势*

解决了传统模型解决不了的问题(初期需求笼统、无法处理细节,外部环境、互联网时代需求变化快)

3.2 极限编程(Extreme Programming,XP)

主要目的:降低需求变化的成本

3.3 Scrum

更注重软件开发的系统化过程

需求积压(Product Backlog)

冲刺(Sprint)周期

回顾会议(Sprint Retrospective)

3.4 DevOps 过程

开发(Development)和运维(Operations),强调“个体和交互胜过流程和工具”

提倡开发和运维高度协同,追求自动化和可持续交互,促进各部门的沟通、协作、整合

三、需求分析

1、系统涉众

2、用例图与用例规约

2.1 用例图**

名称作用表示方法
用例用户的任务椭圆
涉众(角色)参与任务的人或系统人形符号

<<Include>>:包含关系,表示一种依赖。必要的附加用例依赖于主用例,不是简单的逻辑分解。

(如:“更改密码”和“下单”依赖于“登录程序”)

<<Extend>>:扩展关系,在某些情况下想特殊表达的意愿,使用折角矩形声明该特殊情况

(如:“心率分析”扩展出的“报警功能”,当心率低于某阈值时触发)

十、软件测试

1、测试分类

V模型:

测试粒度:

  • 白盒测试
    • 逻辑覆盖测试法:语句覆盖、分⽀覆盖、条件覆盖、条件组合覆盖
    • 控制(路径)结构测试法:基本路径测试、条件测试、数据流测试、循环测试
  • 黑盒测试
    • 等价类划分
    • 边界值分析
    • 错误猜测法
    • 因果图法:检测输入条件的各种组合可能会引起的错误

2、测试度量

2.1 控制流图与环形复杂度

控制流图:使用带圈数字表示程序流程图

环形复杂度(McCabe)

V(G)= 边数 - 节点数 + 2  = 闭合区域数 + 1

2.2 方法内聚缺乏度(LCOM*) 

用于衡量方法内聚性,m为方法数,a为实例变量数,μ(Aj)为访问j变量的方法数

0≤LCOM*≤1

LCOM = 0 :每个实例变量再任意方法中都使用过,高内聚

LCOM = 1 :每个实例变量只2在一个不同的方法中被使用,低内聚

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值