第一章 概论
1.1:软件=程序+软件工程
程序=数据结构+算法
程序,在这里指的是源程序,就是一行行的代码。他们是建立在数据结构上的一些算法。程序还要对数据进行操作,这些数据有些事静态的,有些是动态的。
一个复杂的软件不但要有合理的软件架构、软件设计与实现、还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等。
源代码管理的问题,也叫配置管理。保证程序的正确性,这就是质量保障,具体的验证过程叫做软件测试。
顾客有各种需求,软件团队需要需求分析。
软件团队的人员会流动,新的成员要尽快读懂已有程序,这叫做程序理解。
修复各种各样的问题,这个叫做软件维护或服务运营。这一系列的过程就是软件的生命周期。
软件=程序+软件工程
软件企业=软件+商业模式
软件开发的不同阶段
1.玩具阶段
2.业余爱好阶段
3.探索阶段
4.成熟的产业阶段
1.2软件工程是什么
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件工程和下列学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
1.21 软件的特殊性
1.复杂性
2.不可见性
3.易变性
4.服从性
5.非连续性
1.2.2 软件工程与计算机科学的关系
计算机科学 |
软件工程 |
发现和研究长期的、客观的真理 |
短期的实际结果(具体的软件会过时) |
理想化的 | 对各种因素的折衷 |
确定性,完美,通用性 | 对不确定性和风险的管理,足够好,具体的应用 |
各个学科独立深入研究,做出成果 | 关注和应用各个相关学科的知识,解决问题 |
理论的统一 | 百花齐放的实践方法 |
强调原创性 | 最好的、成熟的实践方法 |
形式化,追求简明的公式 | 在实践中建立起来的灵感和直觉 |
正确性 | 可靠性 |
1.2.3 软件工程的知识领域
生命周期 | 软件需求、软件设计、软件构建、软件测试、软件维护 |
专门领域 | 软件配置管理、软件工程管理、软件工程工程、软件工程模型和方法、软件质量 |
理论基础 | 计算基础、数学基础、工程基础 |
1.2.4 软件工程的目标—创造“足够好”的软件
1、用户满意度
2、可靠性
3、软件流程的质量
4、可维护性
教材P18-2
1、如何进行软件测试
2、成为一名优秀的软件工程师需要具备什么样的素质
3、如何根据用户需求来设计软件
4、程序员这门职业都有什么约定俗成的规矩
5、如何保证软件的质量
教材P18-3
Games:王者荣耀、炉石传说、
Tools:百词斩、新东方在线、搜狗输入法
Mobile Apps:优酷、QQ浏览器、网易云音乐
1、游戏因为社交需求。工具类因为日常生活中需要。手机应用是因为随身携带。而且方便。
目标大多数都是盈利。
2、都是下载到手的。大多数都是高二到大学期间下载的。
3、先由用户反馈bug。然后定期更新版本。
4、同类型软件有的依靠与其他软件的联动性来竞争。还有的利用软件的方便。实用功能来占据市场。