软件工程note

第1章 初识软件工程 (软件》软件工程》软件质量)

1.2 软件
软件=程序+数据+文档
特性:复杂性、一致性、可变性、不可见性
领域:嵌入式》单机》网络》云计算》大数据》AI智能化
1.1 软件VS.软件工程
软件是软件工程的研究对象,也是软件工程的产品形态与客观存在。
工程是将理论和知识应用于实践的科学,其目的是经济有效地解决实际问题,交付足够好的软件。
1.3 软件工程的产生与发展
史前时代:个人作坊式 	》瀑布模型	》质量标准体系:CMMI、ISO9000等》	敏捷模型
1.4 软件工程的基本概念

软件工程是①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。

软件工程3个基本要素
  1. 过程:一系列开发活动:问题》需求》设计》开发》测试+管理 在这里插入图片描述

  2. 方法:面向过程》面向对象》面向构件》面向服务
    在这里插入图片描述

  3. 工具
    在这里插入图片描述

    软件开发的4个基本策略:软件复用、分而治之、逐步演进、优化折中

1.5 软件质量实现
  1. 3个角度: 用户关注的功能质量、开发者关注的结构质量、投资者关注的过程质量

  2. 质量评价的维度 》ISO质量模型在这里插入图片描述

  3. 好软件不是完美: 质量、成本和效率的平衡。

第4章 软件开发过程

4.1 软件过程
  1. 软件开发活动:管理过程保证有效结果。麦当劳的精益求精在这里插入图片描述

  2. 过程分类
    实现过程:需求&设计&开发&测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
管理过程:项目
在这里插入图片描述
支持过程:配置等

4.2 软件过程模型
瀑布模型 、原型模型、迭代模型、可转换模型(嵌入式场景)
4.3 敏捷开发过程
1. 敏捷宣言: 
	个体和交互胜过过程和工具
	可以工作的软件胜过面面俱到的文档
	客户合作胜过合同谈判
	响应变化胜过遵循计划	
1. Scrum:每次的冲刺,Scrum偏重项目管理
1. XP偏重编程实践	

第5章 团队开发管理

5.1 团队组织与管理
5.2 项目沟通管理
5.3 软件项目计划
问题描述、顶层设计、WBS分配、初始计划
5.4 软件项目估算
估算方法:专家判断、参数估算、功能点方法、用例点估算、机器学习方法

第6章 敏捷开发与配置管理

6.1 敏捷开发之Scrum框架
  1. 团队角色
    在这里插入图片描述

  2. Scrum制品
    在这里插入图片描述

  3. 活动会议:迭代计划会议、每日站立会议、迭代评审会议、迭代回顾会议

6.2 用户故事与估算
1. 格式:角色+活动+价值
1. 特点:独立性、可协商、有价值、可估算、短小的、可测试
1. 产品订单:用户故事集
6.3 团队协作工具Tower
6.4 配置管理
配置项、基线、版本控制、分支管理
6.5 配置管理工具Git
1. 版本库:远端版本库》本地版本库》本地开发
1. 分支
6.6 持续集成与交付

第7章 需求获取

7.1 需求工程师
7.2 需求定义
  1. 涵盖如下内容
    为什么要设计该系统
    系统由谁使⽤
    系统要做什么
    系统涉及哪些信息
    对解决⽅案有何额外限制
    如何使⽤该系统
    质量需达到何种程度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 单个需求项的质量
    • 准确(Concise) • 正确(Correct) • 明确(Non-ambiguous) • 可行(Feasible) • 可证(Verifiable)
  2. 整个需求集合的质量
    • 现实(Realistic) • 精确(Concise) • 全面(Complete) • 一致(Consistent)
7.3 需求的类型
7.4 需求工程过程

• 需求抽取(Elicitation) • 需求分析(Analysis) • 需求规约(Specification) • 需求管理(Management) • 需求验证(Validation)

7.5 需求的主要来源
7.6 需求获取技术
7.7 撰写需求文档

第8章 用例建模

8.1 用例建模概念
8.2 用例建模过程
8.3 用例建模精讲
系统边界定义、关系、用例绝对不是功能分解
8.4 建模工具介绍

第10章 行为建模

10.1 顺序图概念
10.2 顺序图建模
10.3 顺序图风格
10.4 状态建模
10.5 状态图
10.6 状态图风格

第11章 软件系统设计

11.1 软件体系结构概念
1. 软件复杂性影响设计因素:词频统计程序》web检索系统。复杂性增加后,对系统的全局结构设计和规划 比 算法和数据结构 重要得多。
1. 软件体系结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/e109ceffe5c3498791ea5232cc4e7705.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YC46JCM,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

1. 软件体系结构的发展
![在这里插入图片描述](https://img-blog.csdnimg.cn/a33d3663e557438fb377ace98d2247cf.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YC46JCM,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

1. 体系结构风格(系统组织模式) VS. 软件框架(可重用设计) VS. 设计模式(观察者模式)
	体系结构风格是规约指导,描述某一特定应用领域中系统组织的惯用模式;软件框架是半成品重用
	框架给出的整个应用结构;设计模式是单一问题的解决方案
	![在这里插入图片描述](https://img-blog.csdnimg.cn/ced34517939445649439a466ae984b5e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YC46JCM,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
11.2 软件设计原则
1. 抽象 封装 模块化 层次化  复用
11.3 软件体系结构风格
11.6 软件设计过程
  1. 系统总体设计
    明确系统设计目标
    确定子系统或模块
    选择系统部署方案
    定义设计策略:存储方案、访问控制策略、全局控制流?
    评审系统设计方案
11.7 Web系统架构设计
11.8 数据库选择策略

第12章 软件交互设计

12.1 交互设计概述
12.2 交互设计目标
12.3 GUI设计原则
12.4 KLM效率模型
12.5 Fitts定律
12.6 交互设计过程

第9章 面向对象分析与设计

9.1 面向对象分析
1. 分析步骤:识别类、识别类关系结构(继承和组合)、定义主题、定义类属性和行为
9.2 CRC卡片分拣法
9.3 面向对象设计
1. 接口与实现分离、面向服务原则、环境约束
1. 原则:开闭、依赖倒置、接口分离
9.4 类图建模

第2章 编写高质量代码

2.1 编程过程与规范
2.2 良好的编程实践
  1. 看、问和练
  2. 设计

模块化:水平划分、垂直划分、易变性划分、单一职责(不是单一功能)
面向抽象编程:定义模块间接口 错误与异常处理

2.3 集成开发环境IDE
2.4 代码静态检查
2.5 代码性能分析

第3章 单元测试

3.1 单元测试概述
1. 原则:快速、独立、可重复、自我验证、及时
1. 方法:静态测试/动态测试、黑盒测试/白盒测试
1. 工具:xUnit、Mock
3.2 黑盒测试方法
1. 测试用例的概念
1. 测试用例设计的要求:等价类划分+边界值分析+健壮性测试+错误推测法
3.3 白盒测试方法
1. 基本概念:允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试
1. 代码覆盖标准:语句覆盖>判定覆盖>条件覆盖>判定条件覆盖>条件组合覆盖>路径覆盖>结合条件组合和路径覆盖
1. 如何看待测试覆盖率:需要考虑软件整体的覆盖率情况以及测试成本;不能盲目追求代码覆盖率,应想办法设计好的测试用例

第7章 华为云DevOps实践

7.1 华为云DevOps和实例
7.2 新建Scrum项目
7.3 持续规划与设计
7.4 持续开发与集成
7.5 持续测试与反馈
7.6 持续部署与发布

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第13章 软件系统测试

13.1 软件测试概念
13.2 软件测试类型

在这里插入图片描述

13.3 软件功能测试
13.4 软件性能测试
  1. 性能指标
    用户数
    • 注册用户数:所有在系统注册的用户数目
    • 在线用户数:所有正在访问系统的用户(不一定做操作)数目
    • 并发用户数:在某一给定时间内某特定时刻进行会话操作的用户数
    响应时间
    • 从客户端发出请求到获得响应的整个过程所经历的时间
    吞吐量
    • 吞吐量(Throughout)是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。
  2. 性能测试
    负载测试 通过逐渐增加系统负载,确定在满足性能指标的情况下,系统能承受的最大负载量。
    压力测试 通过逐步增加系统负载,确定在什么负载条件下系统性能处于失效状态。

第14章 软件交付与维护

14.1 软件部署与交付
14.2 软件演化与维护
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值