到底什么是软件开发?软件行业的由来
2022/7/26 14:48:32

记得10年刚上大学那会,我爷爷问我,学的什么专业,我简单说学得计算机(实际是信息工程系,软件工程专业,NET方向),爷爷问我那是干嘛的?

 

我说:“就是给电脑设计软件的”

“软件是什么?”

我指了指电视说“就类似电视上在播放的那些东西吧”

爷爷说:“修电视电脑的?”

我说不是,“主要是电脑等机器上用到一些处理软件..电脑是硬件,我学的就是软件是里面的东西”

“哦,电路板呀!”

我:“不是电路板,是更里面的东西,看不见摸不着的”

爷:“…”

我:“…”

 

可能到今天他还以为我做的东西很玄乎吧。

 

我是14年毕业的,学的是软件工程专业,在专业里面谈不上顶尖,但也算是佼佼者吧,

刚毕业从最底层的程序员做起,从生疏到熟练,从帮老工程师打下手,到自己独立架构一个企业级项目,这期间数年,也算是积累了大量的知识;

下面我用大白话的方式,尽可能的把软件开发是什么,有哪些内容,给讲明白,做一个科普;

一、软件开发的定义

 

 图片1.png


 

 

我给翻译下:

软件开发的意思呢就是说,基于程序设计语言,如java\net\php等开发语言,去实现某一类需求系统的开发和建设,并最终将其安装到电脑或手机,甚至是冰箱等智能设备载体上去运行的一种行为;

 

软件开发的行为较为复杂,里面包含了需求分析、设计、编码实现和测试维护等众多阶段内容;

但最终我们需求的就是通过这一种建造方式,来做出我们理想的产品来,便于我们日常的工作和生活使用;任何智能设备如果离开了软件的支持,那么就是一堆废铁;

 

不仅仅是我们日常用到的微信、钉钉等软件,就是我们电脑安装的window 或者MAC OS操作系统也可以视为一类软件;

 

软件开发细说的话也分很多种类,如嵌入式开发,智能AI等范畴也都包含了软件开发的行为,我们本文只阐述并解释 纯软件行为;暂不涉及硬件、物联网等范畴;

二、软件编程语言的进化

学过《数字逻辑电路》这门课程的同学知道,我们涉及电路板,让他理解信号并处理,用的就是0、1二进制;0、1所代表的也叫机器语言;


那么再往上一点叫汇编语言,相比较0、1就要上一层了,但依旧很难懂,会的人很少;

再进步一点呢,我们就有了C语言,C语言至今也是各大院校开发语言学习的入门语言;

C语言的诞生,使得计算机进入了一个崭新的时代,其人性化的编程风格,使得编程技术迅速普及起来

再后来,我们就有了C++、C# JAVA等面向对象的语言;

我们可以用比较简单的词汇,去编写一段处理逻辑,用我们人脑的思维去给机器编程;

对比最开始的0、1是伟大的进步了;

图片4.png

至今,各类面向对象语言的编程和设计,已经得到了长足的应用,并且各类前后端技术还在如雨后春笋般迭代;

同时,我们用的软件,也从最开始的黑白‘软体’到现如今琳琅满目的漂亮应用;

 

我们使用软件开发技术,解决了一个又一个领域的问题,现在倡导的互联网+,更是把软件开发行为和传统生产模式相结合,大大的提升了企业的生产效率和产值;

 

好,重点来了!

我们前面讲了软件开发的基本定义和编程语言技术应用领域发展,下面我们讲下软件开发的几个步骤和过程;

让我们看看,一个软件到底是怎么做出来的?

三、软件开发的流程和步骤

网上流传着一个笑话,我已经找不到出处了,无法@,大致是讲了一个秃头理论:

我给润色补充了下:

说是,一个标准的“掉头发”人员的参与流程标准应该是下面这样的;

 

第一步是:销售人员和你对接,确定开发意向;

第二步是:项目经理找你谈具体的开发细节,并确定工期报价,并签约

第三步是:技术或者项目经理给你绘制原型图,确定模块和功能分布

第四步是:UI设计师,按照确定好的原型图,给你做界面和美工

第五步是:程序员,按照项目开发内容要求,编写程序并结合前台UI实现功能

你以为到这里就完了?

第六步是:测试员,开始测试全面项目稳定性和功能实现度,并拉着项目经理找程序员“约架”!

第七步是:程序员哭着改完了所有的Bug,项目经理找到你验收确认;

第八步是:项目培训,有专门的人员和您公司的对接人讲解并说明使用;并提供操作手册,源代码等

第九步是:就是正式使用软件,并进入软件生命周期的最后一个阶段,维护期;软件公司会专门给你配置一个对接人,负责维护你的项目,有问题可以随时反馈给他们;他们来提供技术支持;

图片5.png

 

 

大家可能读起来代入感不强,那么我下面用第一视角,给安排下:

假如你现在是一家企业的老板,你现在需要一款CRM客户管理系统,用于存储你的客户信息,并要求每个客户和客户对应的订单关联起来,然后订单的金额里面区分开已收款和待收款,并要求实现报表统计的实时数据,方便你查看; 开发的终端要求有电脑端和app、小程序端;方便销售员快速录入客户和订单信息等;

经过朋友介绍,你考察好了一家软件公司准备合作,那么你们的合作流程如下:

 

第一步:乙方公司的代表和你探讨了你的项目的具体开发要求,并就预算和工期两家达成一致;

这时候你们要签署一份开发合约,合约中明确了开发内容和设计约束等方面约定;

第二步:乙方公司的项目经理,和您进行了二次和细致的沟通,就开发的细节部分进行了确认,项目经理几天后做出了一份项目原型设计,找到你。

原型设计里面,展示了项目的基础模块位置、功能、和基本样式、交互等信息;

你和项目经理,交换了意见后,确认了原型图的设计

(在项目的一开始,乙方公司会通知你进行相关的ICP备案和小程序认证,服务器购买等工作)

第三步:

软件公司安排了一个UI设计师去设计你的项目图,项目图是在原型图的逻辑基础上绘制出来了。UI设计师会告诉你,这是咱们项目的配色和样式,您确认下;如果有问题可以改;

双方确认无误后,进入了第三步

第四步:

前端的工程师入场,开始就网页和APP端的H5和Uniapp界面,进行实现;

前段工程师带着写好的前段网页代码找到你进行演示,双方交换意见,修改确认;

在这个阶段,你和乙方基本确认了本项目的交互方式

第五步:

后台工程师入场,开始数据库建模和程序编写,这个过程需要多消耗些时间,终于后台工程师把项目的演示网址发给您确认。

双方对项目的整体功能模块和数据交互层面,进行了确认和完善;

并在进行了几轮的修改调整后,确定了最终的功能设计

第六步:

后台工程师将你的项目演示网址,发给了测试部门的同事,测试部开始进行单元测试、集成测试等各类回归测试、极限测试、白盒黑盒测试等等等等;

并且把测试发现的问题,统一反馈给前面的UI、前端、后端技术进行协作修改完善;

第七步:

项目经理拿着测试好的项目找到你进行最后的验收确认,你安排了你们公司的几个业务骨干进行试用。没有问题了之后了打款验收;

第八步:

乙方公司将你的项目源码部署到你的服务器上,并交接了相关的开发文档等内容;

你表示,后续的维护等问题还需要继续保持良好合作

第九步:

项目正式上线运行,维护阶段正式开始,在这个阶段的维护有效期内,甲方公司发现的bug等问题,可以免费找到乙方提供技术支持,乙方负责保障项目的良好稳定运行;

 

至此呢,你公司所需要的业务管理软件,就算是正式做出来了;

这也就是一个普通的企业级项目开发的流程了。

当然了,在这个流程描述中比较理想化,我们会常常遇到双方沟通隔阂,甚至是需求变更、加价等问题;

并且呢,随着项目的使用,还会有后续的二次开发事宜;

 

如果有想省事的老板,可以直接看看我的这篇文章;相当于自己组建了一个IT团队,用自己熟练的业务知识,快速搭建自己理想的系统;

 

四、常见的企业管理软件类型

我们前面讲了软件开发的概念、应用语言和平台架构以及一个软件开发项目的实际实施过程;

下面我们补充讲下企业管理系统的几个类型:

只做简单介绍,不讲得太复杂;

 

企业管理系统我们常见的有

ERP(企业资源计划管理系统)

CRM(客户管理系统)

OA(协同办公自动化)

WMS(仓储管理系统)

进销存生产管理系统、PM项目管理系统、HR(人力资源系统系统),财务管理系统等

 

我们发现,每一类型的管理系统,实际上都是基于客户公司的实际业务做出来的分支;

我们打个比方,如果客户公司体量较大,员工好几百人这样的;那么他就一定需要一个OA协同办公的系统;

在OA系统中,我们比较常见的功能有行政审批;请假、报销、开会通知日程管理等日常业务的管理

如果客户公司的体量不是很大,十几几十个人,那么他们可能就不太需要一个OA的系统定制,但是会需要CRM的系统开发;去存储他们的客户基本信息,进行销售;

 

再打个比方,如果你的公司是一家生产制造型的企业,那么你就一定需要进销存的系统或者大一点ERP的资源计划系统;

因为你一定要通过这类系统对整个公司的生产销售一把抓。从物料的进库,到生产和销售统计、每一个环节的出库、入库;采购单、生产计划单、物料运输单、验收单等等;

那么这类系统就是你一定要做的;

再有一些HR系统、财务系统等等,那么他们适用的客户首先是一些大客户,有较多的员工和财务统计数据,其次呢就是一些个专门领域的公司,如财税公司、人力资源公司等等;

我们客户在找开发商开发的时候,其实不一定需要对系统软件的类型过于较真,而只需要把自己想要做的功能拎出来,搞定就可以了。

六、给大家的几点建议

最后给想做软件开发的客户,几点个人建议:

首先找准自己的定位:

如果你是创业公司,预算有限,建议前期做软件开发,只考虑做自己核心业务的需求点,这些最基础的功能实现了之后,等你的公司规模扩大了再一点一点的去加,或者到时候有钱了再一步到位,深入的去做自身业务需求分析的搞;这样既节约了预算,也节约了时间;

不建议,一上来就耗费巨资去做一堆自己暂时用不上的功能;这叫做减法;

 

如果您是大老板,公司的体量较大,譬如上百人的公司,那么建议要做管理系统的时候,尽可能的把公司各个部门的人员召集起来,头脑风暴的分析出需要的点;

把你和你的手下认为你公司的发展期望内可能会用到的功能,详细的统计好并做出来,或者有条件的可以直接找几家不错的软件公司去深入的给你们做调研和分析;不要等着项目做出来一看才发现很多功能都只做了一半,或者有很多地方忘了加的;还得浪费时间重新去商议签约再二次开发等等;

如果有人不明确自己的需求,那么也可以照着你公司的章程和政策一条一条去看,看看哪些是可以通过软件约束实现的管理,如果有必要上就做加法;

 

小公司做减法,大公司做加法

小公司重点节约预算,大公司重点节约时间;

 

其次呢 ,我们在做软件的时候,一定要有自己的主导权

不管你找谁给你开发了软件,你花了钱了就应该拥有这套软件的全部知识产权和源代码数据库;

且要时刻确认你的软件离开了他的原始作者,找别人开发也能继续二次升级的开发;这点尤为重要,我见过很多不地道的同行给客户做了个软件,故意用很绕的逻辑去写,写出来的代码,让别人看很难懂,客户就只能找他再合作,要多少钱就得给多少钱;要不就得重新再做一遍;

最后,提一点,很多客户没想到的,数据安全性

 

我始终不建议企业去用一些个SaaS模式的平台,几百块钱就能放心把自己企业的客户数据放到别人的平台上?

图片6.png

 

我主页的文章里面有专门去将企业数据安全的,感兴趣的可以去看下,这里不展开了。

 

总结下:

 

如果你想给自己的企业上一套软件,首先找准自己的定位,用有限的时间和预算去做出最适合自己的产品才是正解,其次时刻把握自己项目的主导权,不应该受到任何的第三方牵制,最后把自己的数据安全放到首先要考虑的层面;

 

“低成本、私有化、快速开发、可视化设计、独立源码数据库”

感兴趣的老板点我这篇文章看下吧,我们有提供这类解决方案;

 

更多开发知识科普,可以进我的主页看看;多了解了解没坏处;无论是要采购我们产品的客户还是已经在和别的软件公司合作的朋友,都建议看下;读一篇文章可能就是几分钟时间,但是可能给你带来的效益或节约的预算就是几万块;帮您360C°全方位,避雷~