第一章 概论
1.1 软件=程序+软件工程
(1)采用的语言或工具:Excel、c/c++、VB、Unix Shell、Emacs、Powershell/VBScript、JavaScript、Perl、Python
(2)一个复杂软件的构建:合理的软件架构,软件设计与实现,各种文件和数据来描述程序文件间的依赖关系,编译参数,链接参数等。
(3)推论:软件=程序+软件工程 扩展推论:软件企业=软件+商业模式
(4)软件开发的不同阶段:玩具阶段——>业余爱好阶段——>探索阶段——>成熟的产业阶段
1.2 软件工程是什么
(1)定义
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护的过程。
(2)领域
软件需求分析,软件设计,软件构建,软件测试和软件维护
(3)关联的学科
计算机科学,计算机工程,管理学,数学 ,项目管理学,质量管理学,软件人体工学,系统工程,工业设计和用户体验设计
(4)软件的特殊性
复杂性,不可见性,易变性,服从性,非连续性
(5)非本质,临时的特性
-
-
- 有许多不同的程序设计语言、软件工具和软件开发平台
- 存在雨多不同的软件开发流程
- 软件团队寻才许多不同的角色
- 软件既可以存储在磁带上,也可以存储在CD/DVD上
-
(6)工程的定义
创造性的运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体或实现这些实体的过程。
(7)计算机科学和软件工程的不同侧重点
计算机科学 软件工程
发现和研究长期的、客观的真理 短期的实际结果(具体的软件会过时)
理想化的 对各种因素的折衷
确定性,完美,通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关的学科的知识,解决问题
理论的统一 百花齐放的实践方法
强调原创性 最好的、成熟的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可塑性
(8)软件工程的知识领域
生命周期,专门领域,理论基础
(9)软件工程的目标
用户满意度,可靠性,软件流程的质量,可维护性
1.3 练习与讨论
p18-2
1.我看到了第三章3.2节的职业成长,有了一位软件工程师怎样才算成长了的问题,根据我的实践,应该是拥有更多的知识和技能,就算成长了,但是我还是不太懂,单单只有知识和技能,就算成长了吗?还需要什么才算真的成长了?
2.我看到了第四章5.2节,有了为什么一定要结对编程的问题,在查阅资料后,说是可以提升代码质量,加强沟通。但是根据我的经验,一个模块一个人写就可以了,为什么要多人一块写,这样不会造成浪费吗?这种模式下利真的大于弊吗?
3.我看到了第十三章3.1节的测试,有了在测试过程中发现一个小bug,但是修改需要大量的精力,还需要修改这个bug吗的问题,如果不修改,用户遇到了这个bug怎么办?
4.我看到了第十四章的软件质量,有了在制作软件的时候能牺牲质量来换取效率吗的问题,在软件制作中,质量安全和效率哪个更重要呢?
5.我看到了第十七章的职业道德,有了软件工程师可以因为各种原因而放弃自己的职业道德吗的问题,如果不放弃自己的职业道德而牺牲其他更多的东西值得吗?
p18-3
我的手里的软件分类:
1.通讯工具:QQ,微信,QQ邮箱
2.学习工具:知米背单词,网易有道,知乎,英语四级君,运动世界校园,wps
3.生活服务工具:美团,美团外卖,饿了么
4.影音工具:哔哩哔哩,虎牙直播,腾讯视频,芒果tv,QQ音乐,百度云音乐,抖音
5.购物工具:京东,淘宝
6.插件工具:掌盟,小黑盒,掌游宝
7.理财工具:中国银行,建设银行,交通银行
8.交通出行工具:滴滴出行,高德地图,车来了
9.娱乐工具:和平精英,炉石传说
软件总结:
1.这些软件说服我的原因:符合我的需求
2.他们的目标:大部分都是以盈利为目的,少部分以宣传为目的
3.如何到我手上的:大部分通过商店下载,少部分手机自带
4.使用感觉:能留在我手机里的软件全部都是使用感觉良好的
5.处理bug和更新版本:通过商店或软件里的补丁
6.同一类软件如何竞争的:通过宣传营造好的口碑,软件设计的的舒适度,后期的更新与维护