软件工程——站在巨人的肩膀上抱团取暖

Posted starlipure

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程——站在巨人的肩膀上抱团取暖相关的知识,希望对你有一定的参考价值。

摘要

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。

而工程化的最主要的特点是系统化、规范化、可量化并且严格控制流程得完成开发或生产任务,在此严格的条件下优质、高效的进行生产活动。

 

前言

当初懵懂无知地选择了软件工程这门专业,过了大一一年才开始程序员该有的博客之旅。而我认为“程序猿”是最需要最会站在巨人的肩膀上的,代码靠借鉴,思路靠传承,在原有的基础上创新,于是成就了无数优秀的软件。 

程序员都知道 :程序 = 算法 + 数据结构

                          软件 = 程序 + 软件工程

                          软件企业 = 软件 + 商业模式。

那么我们软件行业赖以生存的“软件”, 我们程序员用来安生立命的“程序” 是什么? 

正文

何为软件工程?

程序,在这里指的是源程序,就是一行一行的代码。仔细看过去,它们的确是建立在数据结构上的一些算法。但是光有代码还是不行的,这些一行一行的代码不会自己运行,得有人编译成机器能懂的目标代码,而编译不仅仅是 cc 和 link 命令,对于一个复杂的软件,我们不但要有合理的软件架构(Software Architecture), 软件设计和实现 (Software Design & Implementation), 我们还要用各种文件来描述各个程序文件之间的依赖关系,编译参数,链接参数,等等。这些都是软件的构建

软件团队的各个人员每天都在不断地修改各种源代码,怎么保证软件在不断的修改中能保证质量,不至于崩溃? 有些时候,我们要为某个需求写一些特殊功能,然后不久要把这些功能再合并回主要版本。有些程序还有32 位版本, 64位版本, 等等。 这是源代码管理 (Source Code Control) 的问题 – 有时候也叫配置管理 (Software Configuration Management)。我们还有一系列的工具和程序来保证程序的正确性,这些工具和程序本身应该更正确,才能保证别的软件的质量,对么? 这质量保证的工作叫Quality Assurance, 也叫软件测试 (Testing).

一个软件要有人买,就得先找到顾客,顾客有各种需求,有些靠谱,有些不靠谱,我们要把这些靠谱的需求都实现了,一群人要从需求分析 (Requirement Analysis) 开始,忙碌各种事情, 例如设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件, 软件在运行过程中还会出这样那样的问题, 也许我们要时不时给软件打一个补丁, 这叫软件的维护(Software Maintenance)。这一系列过程就是软件的生命周期 (Software Life Cycle, SLC), 有人得负责软件项目的管理 (Software Project Management)

上面的这些和软件开发活动(构建管理,源代码管理,软件设计, 软件测试,项目管理)是软件工程的核心部分。广泛意义上的软件工程也包用户体验 (User Experience), 用户界面设计 (User Interface Design) 等。所以,我觉得:软件 = 程序 + 软件工程。

程序是基本功,但是除了程序之外,软件工程决定了软件的命运

软件工程师的道德素养

除此之外, 软件的商业模式决定一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户和社会。

目前,计算机已经成为推动经济、工业、政治、医疗、教育、娱乐和整个社会发展的核心技术。软件工程师有很大的机会去造福或者危害社会,并有能力去促使或影响他人造福或者危害社会。为了尽可能确保这些影响是有利于社会的,软件工程师必须承诺自己所从事的职业能造福社会, 并且能够得到大众认可尊重。这一承诺要求软件工程师必须遵守下列《职业道德规范和实践标准》。这些准则指出了个人、小组和团体参与软件工程的道德责任关系,以及这些关系中的主要责任。

解决道德冲突最好的方法是对基本原则进行全面的思考,而不是去盲目的依靠一些具体条目。这些原则应当会促使软件工程师们去更广泛的思考哪些人是他们工作的受众,去思考他和他的同事是否给予其他人足够的尊重,去思考对他们工作有足够了解的公众会如何看待他们的决定,去思考他们的决定如何影响最小,以及去思考他们的行为是否符合一名优秀的专业软件工程师的标准。在所有这些思考中,对公众健康、安全与福利的关注是最主要的。也就是说,“公众利益”是《规范》的核心。

结言

软件工程是一门宏大的学科,非朝夕之间能领悟透,作为新晋萌新软件工程师,我一定秉持着好学的心态偷师学艺,争取能早日编撰出个人技术博文。

以上是关于软件工程——站在巨人的肩膀上抱团取暖的主要内容,如果未能解决你的问题,请参考以下文章

站在巨人的肩膀上 -- Retrofit源码解析

openResty,站在巨人的肩膀上

小游戏“跳一跳”——站在巨人的肩膀上,用技术为自己助力

博鳌亚洲论坛|站在巨人的肩膀上,看人工智能的未来!

世界最好的字体引擎,泰山FreeType,开源:我们站在巨人的肩膀上

站在巨人的肩膀上 -- MVP 模式的理解