1.1 软件 = 程序 + 软件工程
程序 = 数据结构 + 算法
程序是由用户给出的需求来搭建的,每个程序都是由用户提出的各种要求来不断完善整个程序,程序的不断完善,有更多的用户使用,满足用户的各种使用需求,拓展成为一个满足各种功能的应用软件,然后再进行后期的数据维护。
一个复杂的软件需要有合理的软件架构、软件设计与实现,需要UI、前端、后台、运维这些岗位都是必要的。
在操作程序上,有中文、英文,32位与64位版本都是根据源代码管理——也叫做配置管理,然后通过一系列工具、流程和文档来保证程序的正确性。通过软件测试来确保开发出来的软件的质量。
项目团队人员变动,新成员对程序的理解,软件在运行的过程中会出现各种问题,需要时不时的给软甲打补丁,或者进行软件维护,确保软件的正常运行与不断的满足客户的需求。
好的软件需要有更好的用户体验,用户体验与数据结构、算法没有直接的关系,但是这是一个软件赖以生存的根本,我们还要满足软件的国际化需求,满足不同语言、不同地区的用户需求。
软件 = 程序 + 软件工程
软件企业 = 软件 + 商业模式
1.2 软件工程是什么
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括以下领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
1.2.1 软件的特殊性
复杂性:一个软件是需要大量的源代码,上万个不同的文件构成的。
不可见性:软件工程师可以看见源代码,但是软代码不是软件本身,代码的运行我们看不到,出现的bug我们只能捕捉哪一些痕迹。
易变性:软件的修改比硬件方便。
服从性:软件不能独立存在,需要在硬件上运行。
非连续性:有时输入上变化很大,有时输入上变化很小。
1.2.2 软件工程与计算机科学的关系
创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。
1.2.3 软件工程的知识领域
生命周期:软件需求、软件设计、软件构建、软件测试、软件维护。
专门领域:软件配置管理、软件工程管理、软件工程过程、软件工程模型和方法、软件质量。
理论基础:计算基础、数学基础、工程基础。
1.2.4 软件工程的目标 —— 创造“足够好”的软件
用户满意度:用户使用的感受,使用时不出现bug,可以为用户更高效的完成需求。
可靠性:软件经常性崩溃,操作时死机,在需要的时候无法使用。
软件流程的质量:软件团队和开发流程的问题太多,导致无法相互写作,按时交付软件。
可维护性:软件后期维护太难,维护人员需要更多的时间来维护。
思考:
1,软件行业赖以生存的“软件”,我们程序员用来安身立命的“程序”是什么?