构建之法现代软件工程第一章
1.1 软件=程序+软件工程
程序=数据结构+算法
软件工程的目标是开发出足够好的软件,而非完美的软件。
基础知识领域:计算机基础、数学基础、工程基础。
程序:指的是源程序,就是一行行的代码。它们是建立在数据结构上的一些算法。程序还要对数据进行操作这些数据有些是静态的,有些是动态的。
软件构建:一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数、这些都是软件构建的过程
配置管理:有些程序要配置不同的界面,运行在中文、英文或其他语言的操作系统上;有些程序还有32位版本、64位版本等。
质量保障:有一系列的工具、流程和文档来保证程序的正确性,这些工具(也是软件)、流程应该达到很高的质量,才能保证开发出来的软件的质量。
需求分析:把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到最后发布软件。
程序理解:软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫程序理解
软件维护:软件在运行过程中还会出这样那样的问题,也许我们要时不时给软件打一个补丁,或者维护众多的服务,团队的新老成员要-起修复 各种各样的问题,这叫软件维护
用户体验:一个好的软件,即使功能和同类软件区别不大,但却会让人感觉到非常好用。这就是软件的用户体验
国际化和本地化:软件还要处理不同语言、不同地区的用户对界面和功能的不同需求,这叫做软件的国际化和本地化
软件开发的不同阶段: 1.玩具阶段 2.业余爱好阶段 3.探索阶段 4成熟的产品阶段
1.2 软件工程是什么
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
1.2.1软件的特殊性
1.复杂性 2.不可见性 3.易变性 4.服从性 5非连续性
软件还有其他特性:
·有许多不同的程序设计语言、软件工具和软件开发平台
·存在许多不同的软件开发流程
·软件团队中存在许多不同的角色
·软件既可以存储在磁带上,也可以存储在 CD/DVD上
1.2.2软件工程与计算机科学的关系
计算机科学偏理论研究,是追求那种理想化、完美的真理,各个学科会独立深入研究并出成果;
软件工程偏向实践,和人的行为、社会的需求息息相关。因为要对不可抗的现实因素折衷,会融合各个领域的知识去实现实际的问题。
1.2.3 软件工程的知识领域
生命周期:软件需求、软件设计、软件构建、软件测试、软件维护
专门领域:软件配置管理、软件工程管理、软件工程过程软件工程模型和方法、软件质量
理论基础:计算基础、数学基础、工程基础
1.2.4 软件工程的目标——创造“足够好”的软件
用户满意度:需要满足客户的需求,使用期间没有BUG,效率高。
可靠性:软件稳定,关键时刻靠得住。
软件流程的质量:团队要有一个分工明确的合作,按时交付软件。
可维护性:出了问题方便解决。
1.3 练习与讨论
2.
(1)效能分析工具VSTS怎么使用?
(2)极限编程是什么?
(3)调用关系树是什么?
(4)软件的开发流程是固定不变的吗?
(5)设计软件是团队人员之间如何有效的分工?
3.
社交软件 QQ、微信、微博
服务类软件 去哪儿旅行 、高德地图、淘宝、京东
娱乐软件 腾讯视频、抖音、王者荣耀、QQ音乐、bilibili、斗鱼
学习软件 百度翻译 、CSDN、超级课程表
(1)洞悉用户的需求 目标是盈利 赚取现金提供服务
(2)应用商店 大一 提供了便利的服务
(3)通过版本的更新 在应用商店升级
(4)提供优惠活动