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

摘要

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

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

前言

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

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

软件 = 程序 + 软件工程

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

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

正文

何为软件工程?

程序,在这里指的是源程序,就是一行一行的代码。仔细看过去,它们的确是建立在数据结构上的一些算法。但是光有代码还是不行的,这些一行一行的代码不会自己运行,得有人编译成机器能懂的目标代码,而编译不仅仅是 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) 等。所以,我觉得:软件 = 程序 + 软件工程。

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

软件工程师的道德素养

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

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

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

结言

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

原文地址:https://www.cnblogs.com/starlipure/p/12430176.html

时间: 2024-08-28 04:33:58

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

站在巨人的肩膀上,C++开源库大全

程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分. Standard Template Library:标准模板库 C POSIX library : POSIX系统的C标准库规范 ISO C++ Standards Committee :C++标准委员会 框架 C++通用框架和库

站在巨人的肩膀上学习Android开发

我们知道,一开始最好的学习方法是模仿,尤其是模仿巨人.那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法,进而提升自己的技术. 第一招----逆向工程 要分析"巨人"们的软件,自然免不了逆向工程,即将APK程序转化为我们可以看的懂得源码.这个google官方已经帮我们做好了工具,apktool就是一款很好的逆向工具. 下载地址为:http://pan.baidu.com/s/1kTqRhaR 我们以分析微信为例来说明这个工具的使用: 你只需执行如下命令,即完成了反

站在巨人的肩膀上才能看得更加远[Amo]

本来只是路过,写详细一点.我看楼主浮躁得不得了.现在什么都不要做了,先去看几遍<不要做浮躁的嵌入式工程师>这篇文章,想清楚了,再动手吧.我做了个实例,不用ST的库来点LED,解答你的问题我的 KeilMDK 3.5我的STM32板子奋斗版是 ,IC 是 STM32F103VET6调试工具 JLINK V8LED 接在 PB5 ,高电平点亮既然楼主说一定懂C语言了,那么对于下面我的问题,不查百度,完全靠自己,懂多少?然后查了百度之后又能懂多少?(一)新建 keil 工程,IC选择 ST 公司的

站在巨人的肩膀上——人事项目数据导出word

最近在做人事项目中的,数据导出word,具体的说就是从web客户端页面获取信息,添加到信函模板中,再导出为word文档.总结一下,学会了两种方法,1.通过将word模板转换为html文件,输出word.2.利用第三方组件Aspose.Words操作word模板,输出word. 一.通过将word模板转换为html文件,输出word 1.制作word模板,在word文档中要添加内容的地方输入占位符. 2.把word模板另存为html文件. 文件-另存为-网页htm文件. 3前台代码 <asp:Bu

站在巨人的肩膀上,谈 app 的创新性

这段时间做了.看了.听了,也想了很多,我们的成功始终是站在巨人的肩膀上的,在学习了很多工业界大牛的经验之谈之后,我经过认真的思考,特别想整理这样一篇文章,希望与许多有梦想的 IT 小伙伴儿们共享.共勉!如果说的不对的地方,欢迎大家在下面留言讨论,虚心学习. 随着移动设备的普遍和相关技术的成熟发展,我们都希望自己可以开发一个好用的应用,不管是公益性的还是旨在运营推广的app,既然练手何不做的有声有色.如果你不是在资源丰富的平台下,而是自己组队开发一个app,并向体现自己的竞争力,能够脱颖而出,那么

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

在更新最新版微信之后,聊天列表下拉会出现一个崭新的模块,其中就有新推出的"跳一跳"小游戏.而在我几经努力奋斗到266分的时候,已经有技术大牛占据1999的高地... 抱着试一试的心态和蠢蠢欲动的好奇心... 实现了程序助力玩游戏... 具体代码来自gitHub的python大牛... 感兴趣的同学可以和我一起站在巨人的肩膀上... 另外说一点, 如果以后还想玩"跳一跳"的话... 不建议你接着往下看... 因为当你有了捷径... 整个游戏瞬间变得索然无味... 如果

年薪百万的程序员都是站在巨人的肩膀上开发

要想成为一名软件开发者需要学习各种专业知识.技术与框架.比如算法.数据结构.编程语言.流行框架等.但是要想成为更加出色的软件开发者,你要学习的就不仅仅是专业上的知识了. 标题过于浮夸,希望大家谅解,但本篇是满满的干货.今天我想分享一点关于软件开发者如何改进职业技能从而变得更擅长于自身工作的技巧.这里要谈的主题是通用性的,并没有针对任何特定的技术栈.其实这里要谈的大部分甚至都不是针对 IT 的.这些都是如何形成个人特质,跟同事.客户改进协作,以及拓展作为软件开发者职业生涯的一般性建议. 端到端理解

站在巨人的肩膀上---重新自定义 android- ExpandableListView 收缩类,实现列表的可收缩扩展

距离上次更新博客,时隔略长,诸事繁琐,赶在去广州答辩之前,分享下安卓 android 中的一个 列表收缩 类---ExpandableListView 先上效果图: 如果想直接看实现此页面的代码请下滑到 红线 下 关于这个类的具体各函数的使用说明,这里不作详细说明,提供一个链接http://www.apkbus.com/android-124715-1-1.html,里面有关于此类的详细介绍. 我在这里主要通过源代码的注释和必要的说明,说明如何实现自定义的收缩列表. 必要的函数: 0-> 1 E

站在“巨人”的肩膀上运维

现实问题 之前在论坛看到一个运维工程师的帖子,内容如下: "现在的一个IT工作者最头疼的就是加班,秃顶的是IT工作者最多.单身的是IT工作者最多.没有约会,没有休闲,没有旅游还是IT工作者最多.这可怎么办呢?我是一名IT运维工程师,每天的工作量很大,更不敢离开机器半步,长期跟设备.服务器打交道,因为怕万一机器出毛病,自己负担不起业务上的麻烦,又怕经理的"炒鱿鱼",况且公司还不肯出钱雇很多IT运维人员,让我一个人看着这么多的设备,真是连眼都不敢眨一下,雇来几个人也是呆不长就走人