首页 > 其他分享 >软件工程——学堂在线学习笔记一

软件工程——学堂在线学习笔记一

时间:2022-12-26 20:06:43浏览次数:55  
标签:软件开发 高质量 单元测试 笔记 学堂 软件工程 测试 软件


文章目录

  • ​​一. 初识软件工程​​
  • ​​1. 软件定义​​
  • ​​2. 软件具有的本质特性​​
  • ​​3. 软件开发面临什么主要问题?​​
  • ​​4. 怎么理解软件工程概念​​
  • ​​(1). 发展历史​​
  • ​​(2). 理解概念​​
  • ​​(3). 软件开发基本要素​​
  • ​​1. 过程:​​
  • ​​2. 方法:​​
  • ​​3. 工具:​​
  • ​​(4). 软件开发的基本策略​​
  • ​​(5). 软件工程学科发展的一些规范​​
  • ​​5. 软件开发遵循哪些工程化原则?​​
  • ​​(1). 什么是好的软件?​​
  • ​​1. 软件质量好​​
  • ​​(2). 如何对一个产品判断其质量的好坏​​
  • ​​(3). 如何提高一个软件产品的质量?​​
  • ​​1. 高质量的软件开发之道:​​
  • ​​(4). 商业环境下的软件质量​​
  • ​​6. 软件企业人士怎么看待软件工程?​​
  • ​​二. 编写高质量代码​​
  • ​​1. 软件编程工作​​
  • ​​2. 高质量的软件开发之道之规范的编码​​
  • ​​3. Python编码规范举例​​
  • ​​(1). 程序模板​​
  • ​​(2). 注释​​
  • ​​(3). 命名​​
  • ​​(4). 语句​​
  • ​​4. 高质量的软件开发之道之高质量的设计​​
  • ​​(1). 模块化设计​​
  • ​​(2). 面向抽象编程​​
  • ​​(3). 错误与异常处理​​
  • ​​三. 单元测试​​
  • ​​1. 高质量的软件开发之道之有效的测试​​
  • ​​2. 单元测试内容​​
  • ​​3. 单元测试原则​​
  • ​​4. 单元测试过程​​
  • ​​5. 衡量测试质量的指标​​
  • ​​(1). 测试通过率​​
  • ​​(2). 测试覆盖率​​
  • ​​1. 概念​​
  • ​​(3). 代码覆盖率​​
  • ​​6. 单元测试方法​​
  • ​​(1). 分类一​​
  • ​​1. 静态测试​​
  • ​​2. 动态测试​​
  • ​​(2). 分类二​​
  • ​​1. 黑盒测试(Black Box Testing)​​
  • ​​2. 白盒测试​​
  • ​​7. 单元测试的工具​​
  • ​​(1). 单元测试之Unit​​
  • ​​(2). 单元测试之Mock​​
  • ​​8. 测试用例​​
  • ​​(1). 重要性​​
  • ​​(2). 概念​​
  • ​​(3). 设计要求​​

一. 初识软件工程

1. 软件定义

软件是软件工程的研究对象,是软件工程的产品形态与客观存在

工程是将理论和知识应用于实践的科学

软件 = 程序 + 数据 + 文档

程序:自己编写的代码
数据:使程序能够操作的信息的数据结构
文档:描述程序的研制过程、方法和一些的资料

2. 软件具有的本质特性

软件具有复杂性、一致性、可变性、不可见性等内在特性,这些导致了软件开发困难。

开发过程难以控制,开发团队如同在焦油坑中挣扎的巨兽

3. 软件开发面临什么主要问题?

客户不满意

项目过程失控

风险与成本问题

无力管理团队

4. 怎么理解软件工程概念

(1). 发展历史

20世纪60年代末爆发软件危机

1968年,北大西洋公约召开国际会议,提出了软件工程

1968-1982年结构化开发方法

瀑布式软件生命周期模型成为典型

1983年-1995年面向对象开发方法

软件过程改进:CMM/ISO9000/SPICE质量标准体系

20世纪90年代至今敏捷开发方法

紧密团队协作
有效应对需求变化
快速提交高质量软件
迭代和增量开发过程

(2). 理解概念

工程:将理论和知识应用于实践的科学,以便经济有效解决问题

软件工程:将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,也就是将工程化应用到软件上

(3). 软件开发基本要素

1. 过程:

支持软件开发各个环节的控制和管理

软件开发活动

  • 问题定义
  • 需求开发
  • 软件设计
  • 软件构造
  • 软件测试
  • 软件维护
2. 方法:

完成软件开发的技术手段

软件工程方法

  • 面向服务
  • 面向构件
  • 面向对象
  • 面向过程
3. 工具:

让软件开发提供自动的软件环境支持

软件工程工具

软件工程——学堂在线学习笔记一_单元测试

(4). 软件开发的基本策略

  1. 软件复用
    不用光靠自己来制造轮子,用别人造好的轮子
例如:库函数、模板、设计模式、组件、框架
  1. 分而治之
    复杂问题分成一些小的简单的模块,逐个解决
  2. 逐步演进
    遵循客观规律,进行迭代增量
  3. 优化折中
    不断的优化和折中成本和性能

(5). 软件工程学科发展的一些规范

  1. 抽象
  2. 软件建模方法
  3. 用户界面原型化
  4. 软件体系结构
  5. 软件过程
  6. 软件复用
  7. 度量
  8. 工具与集成环境

5. 软件开发遵循哪些工程化原则?

(1). 什么是好的软件?

1. 软件质量好

对用户来说:功能质量丰富
对开发人员:结构质量强
对投资者来说:过程质量按时交付

所以软件质量涵盖:软件过程、软件产品、产品效用

(2). 如何对一个产品判断其质量的好坏

从产品的质量维度来看:

  1. 性能
  2. 特色
  3. 可靠性
  4. 符合性
  5. 耐久性
  6. 可服务性
  7. 审美
  8. 感知

ISO9126质量模型来判断软件的好坏

  1. 功能性
  2. 可靠性
  3. 易用性
  4. 效率
  5. 可维护性
  6. 可移植性

(3). 如何提高一个软件产品的质量?

软件工程——学堂在线学习笔记一_单元测试_02

1. 高质量的软件开发之道:
  1. 高质量的设计
  2. 规范的编码
  3. 有效的测试

(4). 商业环境下的软件质量

因为企业是要赚钱的,所以不会一味地追求软件质量

企业会从:成本、质量、效率综合考虑

6. 软件企业人士怎么看待软件工程?

软件的质量和软件开发周期的平衡

人:
代码的极强的书写和阅读能力
极强的责任心,责任感
职业的道德
协同的能力

二. 编写高质量代码

编程是软件工程师的基本能力
编写优雅的代码是每一个程序员的不懈追求
编程是一门艺术,他能展示结构之美、构造之美、表达之美

1. 软件编程工作

包括:

  1. 编写代码
  2. 代码审查
  3. 单元测试
  4. 代码优化
  5. 系统构建
  6. 集成调试

软件工程——学堂在线学习笔记一_单元测试_03

2. 高质量的软件开发之道之规范的编码

软件工程——学堂在线学习笔记一_软件工程_04


说白了就是编写代码的规则

可以减少BUG,提高可读性,可移植性

参考Google的编程规范

3. Python编码规范举例

(1). 程序模板

软件工程——学堂在线学习笔记一_软件开发_05

(2). 注释

  • 以#开头
  • 字符串文档’’’ ‘’’

学会只编写够用的注释,过犹不及,重视质量而不是数量

软件工程——学堂在线学习笔记一_单元测试_06


pydoc库可以将代码自动生成文档

(3). 命名

好的名字一目了然

(4). 语句

缩进

不要分号

类名首字母大写

import语句要规范

4. 高质量的软件开发之道之高质量的设计

软件工程——学堂在线学习笔记一_软件开发_07

(1). 模块化设计

将大的程序按功能分为一系列小的模块

(2). 面向抽象编程

(3). 错误与异常处理

三. 单元测试

1. 高质量的软件开发之道之有效的测试

对软件的最小可测试单元进行检查和验证

2. 单元测试内容

软件工程——学堂在线学习笔记一_单元测试_08

3. 单元测试原则

  1. 快速的
  2. 独立的
  3. 可重复的
  4. 自我验证的
  5. 及时的

4. 单元测试过程

软件工程——学堂在线学习笔记一_软件工程_09

5. 衡量测试质量的指标

(1). 测试通过率

(2). 测试覆盖率

1. 概念

软件工程——学堂在线学习笔记一_软件工程_10

(3). 代码覆盖率

软件工程——学堂在线学习笔记一_软件工程_11

6. 单元测试方法

软件工程——学堂在线学习笔记一_软件开发_12

(1). 分类一

1. 静态测试

人工分析

2. 动态测试

动态分析

(2). 分类二

1. 黑盒测试(Black Box Testing)

又叫功能测试

将测试对象看做一个黑盒子,完全不考虑程序内部的结构和特性,只根据需求规格说明书,检查功能是否符合

软件工程——学堂在线学习笔记一_软件开发_13

2. 白盒测试

又叫结构测试

把测试对象看做一个透明的盒子,允许测试人员利用内部的结构和信息,设计或选择测试用例,对所有逻辑路径进行测试
拆开零件,查看每一个部分

白盒测试技术

  • 基于控制流测试
    控制流图
  • 软件工程——学堂在线学习笔记一_软件工程_14

  • 控制流测试过程
  • 软件工程——学堂在线学习笔记一_软件开发_15

  • 基本路径测试
  • 循环测试
    嵌套循环、串接循环、Z路径覆盖下的循环测试

7. 单元测试的工具

软件工程——学堂在线学习笔记一_单元测试_16

(1). 单元测试之Unit

好处:

  • 单个函数、单个类、几个功能相关类测试
  • 纯函数测试,接口级测试

(2). 单元测试之Mock

解决复杂场景的测试

8. 测试用例

(1). 重要性

软件工程——学堂在线学习笔记一_单元测试_17

(2). 概念

为了一个特定的目标设计的特定输入、执行条件、预期结果

目的:测试路径是否正确

包括:测试用例值、期望结果、前缀值、后缀值

(3). 设计要求

软件工程——学堂在线学习笔记一_单元测试_18


标签:软件开发,高质量,单元测试,笔记,学堂,软件工程,测试,软件
From: https://blog.51cto.com/u_15923298/5970746

相关文章

  • 软件工程——学堂在线学习笔记二
    文章目录​​一.软件开发过程​​​​1.什么是过程​​​​2.如何保证最终交付的是用户满意的产品​​​​(1).怎么有效控制呢?​​​​(2).过程的方法​​​​3.软件......
  • 软件工程——学堂在线学习笔记四
    文章目录​​一.需求工程师​​​​1.优秀需求⼯程师的目标​​​​二.需求定义​​​​1.概述​​​​2.需求难度在?​​​​3.需求的内容​​​​4.将问题与解决⽅......
  • 软件工程——学堂在线学习笔记三
    文章目录​​一、团队开发管理​​​​1.团队组织与管理​​​​(1).人员的选择​​​​(2).团队的概念​​​​(3).开发团队组织模式​​​​2.项目沟通管理​​​​(......
  • 声纹识别技术初步了解(阅读笔记)
    目录1.声纹识别分类1.1按任务分类1.1.1声纹验证(speakerverification)1.1.2声纹辨认(speakeridentification或speakermatching)1.2按文本内容分类1.2.1文本相关1.2.......
  • UE4学习笔记27——【UI】3DUI的交互和显示
    P69.3DUI的交互和显示P69 (新建一个包含第一人称射击模板的项目)新建一个文件夹(用于存放自己新建的文件)(我重命名为了“WJJ1221P69”),在此文件夹中,右键“用户界面——......
  • 微积分 II 笔记
    5.1定积分的概念定义定积分是积分的一种,是函数\(f(x)\)在区间\([a,b]\)上积分和的极限若\(f(x)\)在\([a,b]\)有界,在\([a,b]\)上任意插入\(n\)个分点将......
  • 一些排序算法的学习笔记
    大纲:冒泡排序插入排序选择排序快速排序归并排序堆排序一、冒泡排序简述:把一个数组看成一个装水的桶,数组中的每个元素的值代表其质量。一开始这些元素被我用箩筐......
  • Android笔记--视图显示
    视图显示视图的宽高设置方式一:在.xml文件中设置视图的宽和高通过调用android:layout_width设置视图的宽通过调用android:layout_height设置视图的高宽和高的取值主要......
  • 软件工程——软件测试(黑盒测试、白盒测试、测试分析报告)
    经过前面软件测编码阶段,是不是我们就可以把软件发布出去供用户使用了呢?不是的,为了确保软件不会出现不必要的差错,还需要经过重重测试的。目录​​软件测试的目的​​​​软件......
  • 软件工程——文档篇
    何为软件工程?就是客户和开发人员提前定好相关需求,并形成文字材料,开发人员通过这个需求来开发软件,为了软件能够更适用,并进行相关的维护测试等方面的一个过程。简单来说就是开......