软件工程
一、软件
P1 综述
P2 软件定义介绍
P3 软件面临问题介绍
P4 什么是软件工程
P5 软件工程质量标准
P6 访谈
P7 编程过程与规范
P8 良好的编程实践
P9 Python集成开发环境简介
P10 代码审查
P11 代码性能优化
P12 结对编程与访谈介绍
P13 访谈(主讲人口才经验思维都很强)
P14 单元测试
P15 黑盒测试方法
P16 基本概念
P17 代码覆盖标准
P18 基本路径测试
P19 单元测试工具
P20 软件开发过程
P21 软件开发模型
P22 敏捷开发方法
P23 邹欣经理自我介绍
P24 微软开发过程之一
P25 微软开发过程之二
P26 软件团队的重要性
P27 团队沟通
P28 软件项目计划
P29 软件项目估算
P30 敏捷开发之Scrum
P31 用户故事方法
P32 Tower工具介绍(1)
P33 Tower工具介绍(2)
P34 软件配置管理
P35 软件配置管理工具git
P36 需求工程师介绍与技能要求
P37 需求定义
P38 需求分类
P39 需求分类详解
P40 需求过程
P41 需求来源
P42 需求获取技术
P43 需求研讨会
P44 需求注意事项
P45 撰写需求文档
P46 情景驱动的需求方法-用例建模
P47 用力建模过程
P48 用例精讲
P49 常用软件建模工具
P50 “紫荆之声”抢票系统–用例建模
P51 面向对象建模分析
P52 CRC卡片分拣法
P53 CRC卡片分拣法(2)
P54 面向对象设计
P55 开闭原则
P56 UML类图
P57 继承|泛化
P58 软件行为建模
P59 顺序图建模过程
P60 顺序图建模风格
P61 状态建模
P62 状态图
P63 状态图精讲
P64 软件体系结构概念
P65 软件设计原则
P66 软件体系结构风格(一)
P67 软件体系结构风格(二)
P68 事件风格
P69 软件设计过程
P70 Web系统架构设计
P71 数据库选择策略
P72 软件交互设计(讲师笑容挺甜)
P73 软件交互设计–可用性
P74 软件交互设计–设计原理
P75 设计原理–KML效率模型
P76 设计原理–Fitts定律
P77 软件交互设计–设计过程
P78 软件测试概念
P79 软件测试类型
P80 软件功能测试
P81 软件性能测试
P82 软件部署与交付
P83 软件演化与维护
1. 软件的定义
软件=程序+数据+文档
2. 软件的本质特性
复杂性、一致性、可变性、不可见性
3. 软件开发活动
问题定义—需求开发—软件设计—软件构造—软件测试
4. 软件工程方法
面向过程—面向对象—面向构件—面向服务
5. 编程规范(Python)
-
注释:#解释为什么不是是什么
-
命名:
- 类名:驼峰风格且首字母大写 class BookShelf
- 变量名:下划线风格 bool_shelf
- 不要使用制表符tab进行缩进,要使用四个空格
- 每行只写一条语句
- 语句末尾不要加分号
-
语句:
-
import语句:
-
import次序:import Python内置模块-》第三方模块-》自己开发项目中的其他模块
这几种模块用空行分隔开来
-
一条import语句import一个模块
-
当从模块中import多个对象且超过一行时,使用如下方法断行
from module import(obj1,obj2,obj3,obj4,obj5,obj6)
-
不要使用from module import*,除非import常量定义模块或者其他你确保不会出现命名空间冲突的模块
-
-
6. 模块化设计
- 单一职责:类或者函数应该只做一件事,并且做好这件事。只有一个引起变化的原因
单一职责not单一功能
7. Python的集成开发环境IDE-PyCharm
8. 代码审查
代码分析工具 PyLint
9. 代码性能优化
性能测试工具Profile 是Python语言内置的性能分析工具
import profile
def profileTest(){
}
if __name__ == "__main__":
profile.run("profileTest()")
- 改进算法,选择合适的数据结构
- 算法时间复杂度的排序依次是:
*c < log2N < n < n * Log2N < n^2 < n^3 < 2^n < 3^n < n!* - 对成员的查找访问等操作,字典(dictionary)要比列表(list)更快
- 集合set的并、交、差的操作比列表list的迭代要快
- 循环优化的基本原则:尽量减少循环过程中的计算量,在多重循环的时候尽量将内层的计算提到上一层
- 字符串的优化:Python的字符串对象是不可改变的。字符串连接的使用尽量使用join()而不是+。当对字符串可以使用正则表达式或者内置函数处理时,选择内置函数。
- 使用列表解析和生成器表达式:列表解析要比在循环中重新构建一个新的list更为有效,因此可以利用这一特性来提高运行效率。
10. 结对编程
11. 单元测试
- 单元测试内容
- 单元测试原则
- 单元测试过程