第一章概述
一.软件=程序+软件工程
- 软件=程序+软件工程
- 多种语言与工具:Excel,C/C++,C#,VB,Unix Shell,Emacs,Powershell,Emacs,Powershell/VBScript,JavaScript,Perl,Python......
- 源代码管理的问题—也叫配置管理。
- 质量保障:有一系列的工具,流程和文档来保证程序的正确性,这些工具,流程应该达到很高的质量,才能确保开发出的软件的质量。具体的验证过程叫做软件测试。
- 推论:软件=程序+软件工程
- 软件企业=软件+商业模式
二.软件工程是什么
- 软件工程:是把系统的、有序的、可量化的方法应用到软件开发、运营和维护的过程。
- 软件工程包括下列领域:软件需求分析、软件设计、软件构造、软件测试和软件维护。
- 软件工具系统:Microsoft Visual Studio、GitHub、Eclipse、ClearCase和ClearQuest等等。
- 软件的特殊性:复杂性、不可见性、易变性、服从性、非连续性。
三.软件工程和计算机科学的关系
1.计算机科学和软件工程的不同侧重点
计算机科学 |
软件工程 |
发现和研究长期的、客观的真理 |
短期的实际效果 |
理想化的 |
各种因素的折衷 |
确定性,完美,通用性 |
对不确定性和风险的管理足够好,具体的应用 |
各个学科独立深入研究,做出成果 |
关注和应用各个相关学科的知识,解决问题 |
理论的统一 |
百花齐放的实践方法 |
强调原创性 |
最好的、成熟的实践方法 |
形式化,追求简明的公式 |
在实践中建立起来的灵感和直觉 |
正确性 |
可靠性 |
三.软件工程的知识领域
- 生命周期:软件需求、软件设计、软件构建、软件测试、软件维护。
- 专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量。
- 理论基础:计算基础、数学基础、工程基础。
四.软件工程的目标
- 目标:创造“足够好”的软件。
- Bug可直接衡量软件的开发效率、用户满意度、可靠性、软件流程的质量、可维护性。
P18-2
问题一:关于第二章关于单元测试的问题,单元测试的实际作用到底有多重要?根据阅读书本上的解释,单元测试可以使模块的质量能得到稳定性、量化的保证。但是这样可能会花费更多时间精力,有没有更节约时间且有效的方法?
问题二:两人合作合理吗?两人合作可能会出现两人编写习惯不同、学习程度不同而造成的难沟通现象。
问题三:代码为什么要进行复审?开始我认为程序中的问题在开发者调试时就可以发现,用专人进行复审没有必要。但是在书中知道代码复审还有“教育”和“传播知识”的作用。
问题四:MSF团队模型的分配作用?因为在平常团队完成任务时会觉得有人起不到重要作用,但是通过实践和阅读书本知道在团队合作中每一个部分都很重要。
问题五:书中195页中说“开发人员签入的代码有一些小问题”为什么说这不是风险?通过看书解释说代码签入带来的是软件生命周期的正常事件,是一个常态。要求代码签入完美的人才是风险。最后我还是对代码签入问题是否属于风险有疑问。
P18-3
1. 手机App 分类
通讯工具:QQ、微信、邮箱
学习工具:百词斩、有道词典、一点英语、考研帮
生活服务:饿了么、美团、百度地图
购物工具:淘宝、唯品会、小红书、毒
支付工具:支付宝、邮政银行、小米钱包
影视工具:网易云、腾讯视频、爱奇艺
2.软件问题总结
(1)如何说服我:符合我对其的要求需求。
(2)他们的目标:盈利。
(3)这些软件如何到我手上的:应用商城下载。
(4)感觉如何:很满意。
(5)如何处理Bug和更新:应用商城中进行软件更新,网上查找补丁
(6)同一类型软件如何竞争:宣传效果以及提升用户真实体验感受,并且做好处理反馈工作。