《现代软件工程—构建之法》第一章总结
任务一:专业术语
1.1 软件=程序+软件工程
行业内被人熟知的一句名言:程序=数据结构+算法
源程序,就是一行行的代码,是建立在数据结构上的一些算法。
软件构件的过程包括:合理的软件架构、软件设计与实现、各种文件来描述各个程序文件之间的依赖关系、编译参数、链接参数等。
有些程序要配置不同的界面,运行在中文、英文或其他语言的操作系统上,有些程序还有32位版本、64位版本等。这些问题称作源代码管理的问题,也叫配置管理。
有一系列的工具、流程和文档来保证程序的正确性,这些工具(也是软件)、流程应该达到很高的质量,才能保证开发出来的软件的质量。这个过程称作质量保障,具体的验证过程叫做软件测试。
软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫程序理解。软件在运行过程中还会出现这样那样的问题,也许我们要时不时的给软件打一个补丁,或者维护众多的服务,团队的新老成员要一起修复各种各样的问题,这叫软件维护,或者服务运营。这一系列过程就是软件的生命周期,在这一周期中,有人得负责软件项目的管理。
软件开发的不同阶段:
1、玩具阶段
2、业余爱好阶段
3、探索阶段
4、成熟的产业阶段
1.2 软件工程是什么
人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件开发、运营、维护的效率,并提高软件按的质量、用户满意度、可靠性和软件的可维护性。
1.2.1软件的特殊性
软件是可以运行在计算机及电子设备中的指令和数据的有序集合,可以按照下面的进行分类:
系统软件:操作系统、设备驱动程序、工作软件等
应用软件:用户使用它们来完成工作,从管理核电厂到写文章,或者是通信、游戏、浏览网页、播放视频等
恶意软件:软件病毒等
软件开发过程中,遇到的难题:
1、复杂性
2、不可见性
3、易变性
4、服从性
5、非连续性
以上特性是由软件的本质决定的,软件还有其他特性:
有许多不同的程序设计语言、软件工具和软件开发平台
存在许多不同的软件开发流程
软件团队中存在许多不同的角色
软件既可以存在磁带上,也可以存在CD/DVD上
1.2.2软件工程的目标——创造“足够好”的软件
什么是好软件?其实就是软件没有缺陷。而软件工程,其实就是将软件中的Bug消灭掉的过程。Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。
用户满意度:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率。
可靠性:某个软件经常会崩溃,某个操作系统会时不时的死机,某个网站往往在最需要的时候登录不上去。
软件流程的质量:软件团队和开发流程的问题太多,导致团队成员无法互相协作,按时交付软件。这也可以说是软件团队的Bug
可维护性:某个软件太难维护了,按下葫芦起了瓢,修复了一个问题,另一个问题又出来了。也没有足够的文档,维护人员表示需要更多的时间和资金来维护这个软甲,甚至建议推到重写。
任务二:P18-2
Q1:需求分析师需要掌握哪方面的知识,需要具备计算机方面的什么能力?
Q2:什么规模的项目必须使用专业的测试人员?小项目能否使用项目组成员替代专业测试人员进行测试工作?
Q3:PM需要强大的编码能力么?在软件公司,什么职能职位的人,可以晋升到PM?
Q4:在软件测试过程中,遇到难以解决的bug,修改代价很大 ,是尽力解决还是放弃解决?
Q5:书中描述:稳定和发布阶段,有一个模块不能实现用户需求,时间快到了,可以砍掉该功能。问砍掉功能,不能实现用户需求,这种做法可取么?
任务三:P18-3
社交app:QQ、微信、微博、知乎、抖音
下载原因:正常社交,与朋友在网络上互动
盈利模式:QQ、微博、知乎均可以充值会员进行盈利;抖音通过直播礼物抽成、视频推广进行盈利;微信可能通过微信支付进行盈利(不确定);
支付软件:微信、支付宝
购物软件:京东、淘宝、毒、识货
生活软件:12306、美团、饿了么、滴滴出行、肯德基
视频软件:爱美剧、爱奇艺、腾讯视频