第一章计算机专业术语
1.1 软件=程序+软件工程
1、程序=数据结构+算法
2、从一个简单的程序,扩展到一个满足各种功能的应用软件,在扩展到一个能保证服务质量的软件服务。
3.软件构建的过程:合理的软件架构(Software Architecture)、软件设计与实现(Software Design, Implementation and Debug),还要有各种文件和数据来描述各个程序文件之间的依赖关系。
4.源代码管理(Source Code Control)的问题也叫配置管理(Software Configuration Management)
5.质量保障具体的体验过程叫软件测试(Test)
6.软件维护(Software Maintenance)或服务运营(Service Operation):给软件打一个补丁‘,或者维护众多的服务,这一系列的过程是软件的生命周期。
7. 推论:软件=程序+软件工程 扩展推论:软件企业=软件+商业模式
1.2软件工程
1、定义:把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
2、领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
3、与下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
4、软件工具:Microsoft Visual Studio、GitHub、Eclipse、ClearCase和ClearQuest等等。
1.2.1 软件的特殊性
1、软件:可以运行在计算机上及电子设备中的指令和数据的有序集合。
系统软件
应用软件
恶意软件
2、特殊性:复杂性、不可见性、易变性、服从性、非连续性
1.2.2 软件工程与计算机科学的关系
计算机偏理论的领域:
l 计算理论
l 信息和编码理论
l 算法和数据结构
l 形式化方法
l 程序设计语言
偏实践的领域:
l 计算机体系结构
l 并行计算和分布式系统
l 实时系统和嵌入式系统
l 操作系统
l 计算机网络
l 科学计算
l 安全和密码学
l 人工智能
l 数据库和大规模数据处理
l 万维网
l 自然语言处理和语言
l 人机交互
l 软件工程
计算机科学与软件工程不同侧重点
计算机科学 软件工程
发现和研究长期的客观的真理 短期的实际结果
理想化的 对各种因素的折衷
确定性,完美通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题
理论的统一 百花齐放的实践方法
强调原创性 最好的、成熟的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性
项目的特点
l Build To Learn
l Build To show
l Build To Serve
l Build To Win
1.2.3软件工程的知识领域
1、软件工程的三大类基础知识领域:计算基础、数学基础、工程基础
l 生命周期:软件需求、软件设计、软件构建、软件测试、软件维护
l 专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量
l 理论基础:计算基础、数学基础、工程基础
1.2.4软件工程的目标——创造足够好的条件
bug 的多少可以直接衡量一个软件的开发效率,用户满意度,可靠性和可维护性。
用户满意度:用户在使用时发现了软件的许多问题,影响了用户使用软件的效率
可靠性:操作系统会经常死机,软件经常会崩溃
软件流程的质量:软件团队和开发流程的问题太多,团队成员无法互相协作
可维护性:问题很多,需要更多的资金和时间来维护
教学和培训的目标
1、 研发出符合用户需求的软件
2、 通过一定的软件流程,在预计的时间内发布足够好的软件
3、 能证明所开发的软件是可以维护和继续发展的。
P18-2
第一章计算机专业术语
1.1 软件=程序+软件工程
1、程序=数据结构+算法
2、从一个简单的程序,扩展到一个满足各种功能的应用软件,在扩展到一个能保证服务质量的软件服务。
3.软件构建的过程:合理的软件架构(Software Architecture)、软件设计与实现(Software Design, Implementation and Debug),还要有各种文件和数据来描述各个程序文件之间的依赖关系。
4.源代码管理(Source Code Control)的问题也叫配置管理(Software Configuration Management)
5.质量保障具体的体验过程叫软件测试(Test)
6.软件维护(Software Maintenance)或服务运营(Service Operation):给软件打一个补丁‘,或者维护众多的服务,这一系列的过程是软件的生命周期。
7. 推论:软件=程序+软件工程 扩展推论:软件企业=软件+商业模式
1.2软件工程
1、定义:把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
2、领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
3、与下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
4、软件工具:Microsoft Visual Studio、GitHub、Eclipse、ClearCase和ClearQuest等等。
1.2.1 软件的特殊性
1、软件:可以运行在计算机上及电子设备中的指令和数据的有序集合。
系统软件
应用软件
恶意软件
2、特殊性:复杂性、不可见性、易变性、服从性、非连续性
1.2.2 软件工程与计算机科学的关系
计算机偏理论的领域:
l 计算理论
l 信息和编码理论
l 算法和数据结构
l 形式化方法
l 程序设计语言
偏实践的领域:
l 计算机体系结构
l 并行计算和分布式系统
l 实时系统和嵌入式系统
l 操作系统
l 计算机网络
l 科学计算
l 安全和密码学
l 人工智能
l 数据库和大规模数据处理
l 万维网
l 自然语言处理和语言
l 人机交互
l 软件工程
计算机科学与软件工程不同侧重点
计算机科学 软件工程
发现和研究长期的客观的真理 短期的实际结果
理想化的 对各种因素的折衷
确定性,完美通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题
理论的统一 百花齐放的实践方法
强调原创性 最好的、成熟的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性
项目的特点
l Build To Learn
l Build To show
l Build To Serve
l Build To Win
1.2.3软件工程的知识领域
1、软件工程的三大类基础知识领域:计算基础、数学基础、工程基础
l 生命周期:软件需求、软件设计、软件构建、软件测试、软件维护
l 专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量
l 理论基础:计算基础、数学基础、工程基础
1.2.4软件工程的目标——创造足够好的条件
bug 的多少可以直接衡量一个软件的开发效率,用户满意度,可靠性和可维护性。
用户满意度:用户在使用时发现了软件的许多问题,影响了用户使用软件的效率
可靠性:操作系统会经常死机,软件经常会崩溃
软件流程的质量:软件团队和开发流程的问题太多,团队成员无法互相协作
可维护性:问题很多,需要更多的资金和时间来维护
教学和培训的目标
1、 研发出符合用户需求的软件
2、 通过一定的软件流程,在预计的时间内发布足够好的软件
3、 能证明所开发的软件是可以维护和继续发展的。
P18-2
- 第二章p40 从软件构建方面是如何把一个已有的软件从一个平台迁移到另一个平台?
- 第四章p77 在代码复审时有没有硬编码或字符串/数字等存在?
- 第六章p96 蜂窝团队模式如何解决实际用户的实际需求?不能只是写了再改;要有其他的开发方法。
- 第七章p148我们经常说软件工程的目的是构建足够好的软件,那么如何评判“合适”、“足够好”的能力呢?
- 第九章p182 随着业务的发展和团队的壮大,团队成员之间的交流成本急剧增加并且很多开发和测试之外的事需要专人负责‘如何解决?
P18-3
1、 Games(游戏):休闲时的娱乐,锻炼人们的思维,有利于智力开发。
2、 Tools(工具):系统类图像类多媒体类网络类,可以在网络上直接下载使用,更新较快。每个工具软件都为了满足电脑用户某类特定需求设计的
3、 Mobile Apps:可在手机商店中下载,用于各种用途,手机用户使用各种用途、功能的软件,下载时提供相关的软件信息,方便用户了解功能和用途。
英语四级君
l 特点:英语学习软件,能进行四级的系统的复习和了解
l 契机:英语四级考试
l 目标:让用户下载网课,增加软件的下载量
l 方式:下载
l 年级:大一
l Bug:电脑版看视频卡顿
l 竞争方式:可让学生先进行简单的学习,各种四级考点都有涉及
皇室战争
l 特点:一局时间的时间较短,游戏的模式较多,还有各种小活动
l 契机:应用商店看到后下载
l 目标:盈利
l 方式: 下载
l 年级:初中
l Bug: 爱自动退出游戏
l 竞争方式:操作简单,时间短暂可短时间进行游戏
C语言编译器
l 特点:用以打c语言的代码,可以在手机上进行
l 契机:学习C语言,朋友推荐
l 目标:增加软件下载量
l 方式: 下载
l 年级:大二
l Bug: 暂发现
l 竞争方式:对于没电脑的人可以在手机上进行,操作方便