1 软件工程知识域
2 程序
2.1 何为程序及程序的质量要求
何为程序:
理解:软件工程可能就是在弥补OOP语言与自然语言之间还存在的鸿沟
2.1.1 程序质量的内在和外在体现
2.1.2 程序质量的语法和语义体现
2.2 编写代码的基本原则
2.3 程序质量保证方法
2.3.1 遵循编码风格
代码布局与组织:
Java程序的排版格式推荐:
变量命名风格:
代码注释:
2.3.2 采用程序设计方法
2.3.2.1 语句设计
2.3.2.2 模块化设计
2.3.2.3 高内聚度、低耦合度原则
模块内各要素紧密相关,仅实现单一功能, 模块间的关系应设计的非常松散
2.3.3 开展代码重用
2.3.4 进行结对编程
2.3.4.1 个体开发的局限性
2.3.4.2 软件开发是集体性/群体性行为
2.3.4.3 如何实现结对编程
2.3.4.4 结对编程中的代码复审
2.3.4.5 结对编程的好处
2.3.4.6 结对编程的不同阶段和技巧
2.4 程序质量的分析方法
2.4.1 程序代码中潜在的质量问题&原因
2.4.2 代码质量分析的常用方法
2.4.2.1 人工审查方法
2.4.2.2 自动化分析方法
代码静态分析:
代码审查后要做的工作:
2.4.2.3 程序测试方法
软件测试的目的和任务:尽可能多的找到软件中的缺陷,软件缺陷可能隐藏得比较深,难以发现
2.5 编写程序需要解决的问题
2.5.1 编写程序面临的挑战
2.6 ChatGPT对程序员带来的影响
ChatGPT的职业影响:
3 软件
3.1 何为软件及软件的特点
3.1.1 何为软件
从开发的角度:
3.1.2 何为文档&为什么需要文档&编写文档的目的
何为文档:
3.1.3 何为数据
数据是程序的加工处理对象和结果
数据形式包括:用户、订单、交易、日志数据
数据处理包括:表示、获取、存储、检索、分析
3.1.4 软件的特点
3.1.5 军用软件的特殊性
军用软件:导弹中的飞行控制软件、指挥信息系统、后勤保障软件等
3.2 软件的生命周期
3.3 软件的分类
分类一:
分类二:
3.4 应用的类型
3.5 闭源软件
3.6 开源软件定义&好处
开源软件的特点:
- 源程序代码对外开放
- 自由使用、修改和传播
- 任何人都可获得开源软件的代码
开源软件正在逐步替代闭源软件
开源软件的推动者
开源软件的优势:
3.7 开源软件许可证
3.7.1 宽松式开源许可证
3.7.2 Copyleft式开源许可证
3.7.3 Apache开源许可证
3.7.4 GPL开源许可证
3.7.5 不同许可证之间的差别
3.8 软件质量
软件质量是指软件满足给定需求的程度,它是产品生命线
3.8.1 软件质量要素
3.8.2 可信软件的基本要求
3.9 软件特征的变化
3.9.1 软件的地位和作用
3.9.2 软件的运行环境
3.9.3 软件形态
3.9.3.1 社会技术系统
3.9.3.2 系统子系统
3.9.3.3 分布式异构系统
3.9.3.4 动态演化系统
3.9.3.5 系统联盟
3.9.3.6 生态系统
生态:共同环境 + 诸多要素 + 独立演化 + 相互依存