阅读笔记
1、软件=程序+软件工程
程序(源代码)是一行行的代码,是建立在数据结构上的一些算法。程序还要对数据进行操作,这些数据有的是静态的(如软件图标、提示信息),有的是动态的(如程序生成的随机数字、程序通过网络下载的数据、用户的文字或语音输入等)。
光有代码和静态数据是不行的,工程师要把她们构件为机器能懂的可执行代码。一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等。这些都是软件构建的过程。
软件团队的成员每天都修改源代码,需要保证软件在修改过程中不断提高质量至少保持以前的质量;为某个需求写一些特殊功能,不久后再将功能合并回主要版本;程序要配置不同的界面,运行在中文、英文或其他语言的操作系统上。这是源代码管理(配置管理)。
还有一系列的工具、流程、文档来保证程序的正确性,这些工具(也是软件)、流程应该达到很高的质量,才能保障开发出来的软件的质量。这是质量保障,具体的验证过程为软件测试。
软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到发布软件。
软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计。这是程序理解。
软件在运行过程中会出现问题,也许要是不是打一个补丁,或者维护众多的服务,修复问题。这是软件维护,或服务运营。
这一系列过程是软件的生命周期,有人得负责软件项目的管理。
软件的用户体验:一个好的软件和同类软件区别不太大,但却让人感觉很好用。
软件企业的商业模式也会影响软件的需求。
在相关法律完善之前,软件行业应该有职业道德规范来约束IT人的行为。
上面这些和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容,是软件工程的核心部分。广义上的软件工程也包括用户体验、用户界面设计等。所以 软件=程序+软件工程
2、软件工程
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件:系统软件、应用软件、恶意软件。
软件工程的15个知识领域:
1、Software Requirements
2、Software Design
3、Software Construction
4、Software Testing
5、Software Maintenance
6、Software Configuration Management
7、Software Engineering Management
8、Software Engineering Process
9、Software Engineering Models and Methods
10、Software Quality
11、Software Engineering Professional Practice
12、Software Engineering Economics //1-12:软件工程学科本身的知识领域
13、Computing Foundations(计算基础)
14、Mathematical Foundations(数学基础)
15、Engineering Foundations (工程基础) //13-15:软件工程三大类基础知识领域
个人感受
1、过去的做法:对于老师留得编程任务再次增加任务或者对功能进行更新之后,就会从头开始写。任务量就比较大,学习新知识的时间就很少,导致效率不高。
2、不好的原因:从头开始写,任务量就比较大,学习新知识的时间就很少,导致效率不高。要学会软件构建的过程。软件=程序+软件工程。
3、解决办法:当需要更新时,要学会对现有的程序源代码进行更新,在原有程序上修改增加功能。