目前的软件开发产品多以互联网形式呈现,所以就以一套互联网产品为例来说一下开发者都需要掌握哪些技术。
一套完整的互联网产品包括移动端(iOS、Android、WP)开发、Web前端开发和后端开发几个大的组成部分,下面分别描述一下这几个部分都需要学习哪些技术。
iOS开发需要学习OC或者Swift编程语言,Android开发需要学习Java或者是kotlin,而WP开发则需要学习C#。移动端开发属于比较典型的应用型开发,大部分开发任务并不复杂,大部分人经过一段时间的学习都能够掌握。
Web前端开发涉及到Html、CSS和JavaScript几个大的内容,另外还需要学习一下比较流行的开发框架。Web前端开发的学习重点在JavaScript上,虽然JavaScript看起来比较简单,但也是有一定难度的,而且JavaScript正在从前端走向后端,从发展的前景来看,JavaScript还是非常不错的。
可以做后端开发的语言比较多,比如Java、PHP、Python等都是比较常见的选择。Java的特点是性能比较稳定,对于大型Web开发来说是一个不错的选择。PHP是Web开发领域使用普及率非常高的编程语言,PHP自身具备极大的灵活性,所以深受开发人员喜爱,被称为“最好的编程语言”。Python语言的特点是简单、直接和灵活,Python有丰富的库支持,但是Python在性能上还需要提高。
另外后端开发还需要掌握数据库知识和一些常见的开发模式,在当前的大数据时代,也需要掌握如何在大数据平台上完成软件的开发。
以上这些只是一些基本的开发技能,要想开发出一套高质量的软件系统还需要掌握包括测试在内的一系列工具,当然往往也需要一个专业的开发团队。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。
欢迎关注作者,欢迎咨询计算机相关问题。
看运行在什么系统吧。
我现在运营6-7款软件,都是自己独立开发的,大部分都是winform下的软件系统。
编程语言主要是C#,其中脚本系统之前用的是python,后来因为性能问题都改成了C#。
官网需要跟软件系统授权整合,后端类库和数据库需要保持一致,用的也是C#,前端用的是asp.net+jqurey+ajax等等,都是比较老的技术,运行稳定,性能可靠,也没什么不好。
数据库是sqlserver,单库装在阿里最便宜的ECS上,十几万的用户数量,15分钟在线峰值大概700以内,足够了。
其他的像xml、css、ras、md5、json、http、cookie、gdi+、h5等等,这些点的应用也称得上技术的话,那可就多了去了。
不过我一直认为我们绝大部分做的都是应用软件,说白了就是使用别人已经创造好的技术,技术再牛你也不过是个使用者,充其量算是个应用型人才。搞算法、搞理论或者制订标准的,那才是真正的技术。
一: 独立开发一套软件系统先了解下前后端
Web前端和后端开发的区别和要求
有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通。那到底什么是前端、后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等。
Web前端开发
什么是 Web 前端?
Web前端,顾名思义是来做web的前端页面的。这里所说的前端泛指web前端,也就是在web应用中用户可以看得见碰得着的东西。包括web页面的结构、web的外观视觉表现以及web层面的交互实现。web前端分为网页设计师、网页美工、web前端开发工程师。首先网页设计师是对网页的架构、色彩以及网站的整体页面代码,负责网页美工只针对UI这块儿的东西,比如网站是否做的漂亮。web前端开发工程师是负责交互设计的,需要和程序猿进行交互设计的配合。
Web前端开发需要掌握的技术:
1.熟练掌握前端开发技术(HTML5、JS、JSON、XHTML、CSS3),了解各项技术的相关标准
2.掌握Ajax异步编程,能够写出高性能、可复用的前端组件;
3.对OO、MVC、MVVM等编程思想、前端框架有深刻理解,熟练掌握一个前端框架(常用前端框架 Vuejs,AngularJS,React,Bootstrap,QUICK UI,移动端有:Frozen UI,weUI ,SUI,MUI,AUI)了解其原理(框架有很多,选择两三个主流的框架,熟练,深度了解才可以);
4.善于Web性能优化,可访问性、对SEO等有良好的体验;理解表现层与数据层分离的概念、 Web语义化(这些也是在找工作中,很有用的加分项);
5.了解前端安全机制,熟悉HTTP协议以及浏览器缓存策略;
6.熟悉常见JS开发框架源码实现,(如:prototype、jQuery、Mootools,Ext, Dojo,underscore、YUI、Kissy),至少熟练一种(当然也不要去选一些用的人很少的框架,要明白大项目都是团队做,不能自己搞一套);
7.拥有良好的代码编写,设计文档撰写的经验,熟练使用Git等版本控制工具;
8.对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;如IE6/7/8/9、 Firefox、Safari、Chrome;
9.具有较高的审美(这个很重要,多去见识一些模板,高端的项目,就能感觉到有多大的差距)
web后端开发
什么是 Web 后端?
Web后端更多的是负责产品的服务技术实现,包括业务逻辑,数据存储和处理,消息队列处理等。以及产品服务端接口实现,包括与前端的接口,第三方的接口,服务体系内部接口等。后端开发主要是对数据库进行交互以处理相应的业务逻辑。web后端的话可供开发的语言有 java、php、jsp、.NET 这些后端开发语言,并且要掌握几个常用后端框架。
Web前端开发需要掌握的技术:
1.目前多数企业要求对服务器端高并发,大数据量处理经验(简单的说就是优化服务器处理高并发事务的能力)
2.精通 java,php,jsp,servlet,java bean,JMS,EJB,Jdbc,Flex开发,对相关的工具、类库以及框架非常熟悉,常用后端框架如 SSM(Spring+SpringMVC+MyBatis)框架集,Velocity,Hibernate,iBatis,OSGI等,对Web开发的模式有较深的理解(只少熟练掌握一套后端框架);
3.至少熟悉一种关系型数据库,如:mysql,oracle等。熟练使用oracle、sqlserver、SQL Develpoer,PLSQL,MySQL Workbench等常用的数据库管理工具,对数据库有较强的设计能力
4.熟悉maven项目配置管理工具,熟悉tomcat、jboss等应用服务器,同时对在高并发处理情况下的负载调优有相关经验者优先考虑
5.精通面向对象分析和设计技术,包括设计模式、UML建模等
6.熟悉网络编程,具有设计和开发对外API接口经验和能力,同时具备跨平台的API规范设计以及API高效调用设计能力
7.熟悉部分前端知识
总结
我感觉无论在知识的掌握深度上,还是知识掌握的宽度上,都是不够的。
二: APP开发制作方法/步骤
1/9 分步阅读
用户需求分析是整个APP开发流程中最重要的一环,相当于企业中决策者的地位,一款APP成功与否也尽数决定于此。此处的用户需求分析是基于用户的要求进行APP功能的梳理。注意此处是用户,因为很多公司要求开发出来的APP是给其用户使用,因此在整理APP开发需求时,不仅要了解开发企业的需求,也要了解其客户群体的需求。最终将这些需求进行梳理、分类,整理出大体的APP功能框架。此过程中需要与客户密切的进行沟通,力求做到没有任何疑问,以免开发出不实用的APP。
2/9
产品原型设计
在进行一轮用户需求分析之后,将整理出来的需求分类、整理、排序成功能结构模块,此时可以利用现有的功能模块搭建一个简单的产品原型。产品原型类似于一个APP产品的草图,将基本的功能结构展示给客户,可以借助产品原型设计软件模拟出相似的APP产品。将此产品原型与客户进行确认,确认完毕就可进入下一环节的开发
3/9
UI视觉设计
在拥有APP产品原型草图结构之后,UI设计师们开始对APP的界面进行设计美化,根据APP的表现内容进行版面结构设计,然后对每一块区域进行相应的配色,并绘制每个功能菜单的图标及其他页面元素的设计,最终设计出所有的APP界面效果图。此过程与客户进行沟通,参考客户建议进行设计。
4/9
数据库搭建
按照需求分析整理出来的功能数据处理情况,建立合理的数据库表结构,优化数据算法,提升数据的处理效率,保证在使用APP的过程中数据的安全性、准确性、稳定性和及时性。
5/9
服务端开发
APP应用的核心处理过程均是由服务器端的程序完成的,客户端的APP仅仅只需要进行收发数据即可。由于用户的移动端设备硬件配置和存储容量有限,因此核心数据处理过程均是由服务器端进行运算处理的,这种方式也被称为云计算,服务器处理完成之后反馈给客户端APP。因此服务器端的程序开发极为重要,所有的功能均需要严格按照需求分析阶段整理的功能来进行开发。
6/9
iOS/Android客户端开发
此时按照设计师设计的APP效果图进行开发客户端,主要是对设计效果图的代码实现,并写入功能调用的接口,连接服务器端,方便与服务器端的数据进行交互。根据Android和iOS的设备软硬件情况进行APP开发和优化,最终开发出与效果图一致的APP客户端。
7/9
APP程序测试
对已开发好的APP客户端进行全面的测试,此测试模拟用户正常使用以及非正常使用的情况,通常会导入一些测试数据来进行测试,将测试的结果进行记录,出现错误则返回到开发阶段进行修复,如果测试通过,则说明整体APP开发过程已经完成。将成品APP应用交给用户进行试用,用户满意之后进行下一步工作。
8/9
上传到应用商店
到此阶段一个APP开发已经完成,在完成签名验证之后,将开发好的客户端APP程序提交发布到各应用商店。iOS版本的APP提交到苹果的AppStore,安卓的提交到国内各大安卓应用商店。
9/9
APP的维护及更新
对上线之后的APP进行维护,收集用户反馈信息,及时修复APP应用中出现的错误(Bug)。如客户需要进行APP的功能更新时,则返回至需求功能整理阶段进行开发,新功能开发完成后经测试通过即可发布更新。
。作为程序员我自己表示并没有达到独立开发一套企业级的软件系统,如果只是一个比较普通的小项目,也是需要一定技术素养的。
本问答由科技黑洞宇文笑创作,喜欢科技关注宇文笑由于软件种类过多,所需技术千变万化,这里只用B/S架构的传统web项目作为案例。独立开发系统,首先你要明确自己需要做什么,为什么人群做,怎么做。what,who,how,WWH就包含了所需要的技能。
what,做什么,这需要软件工程的知识,设计一款软件应该严格按照软件工程的思维去设计,而不是凭空浮想联翩,有一些产品经理不懂技术设计的功能令人啼笑皆非。
who,这款软件为谁而设计的,这特别重要,因为这将影响业务逻辑以及数据库设计,数据库设计是软件开发非常核心的部分,尤其是数据量庞大的项目,调优可不是容易活。
how,怎样做。这就涉及软件的开发,相关的技术活比较多。首先是精通一门编程语言,这里举例Java,你要懂Java的web运用,熟悉适用项目的框架,知道怎么搭框架,比如基本的SSM框架,尤其是spring框架的掌握,然后在嵌入技术比如安全框架shiro,缓存数据Redis。
需要架构的好,设计模式至少得熟悉,Java源码至少得熟读。性能要调好,那可能jvm也得去碰一碰。除此之外,你还需要Linux的技术,这是用于服务器的运维,你还要懂前端,不然怎么和你的服务器进行数据交互。
需要独立开发系统需要很多方面的技术,但是独立开发优秀实用的系统则需要良好的技术素养和高效高质量的团队。
宇文笑一句话:
没有好的team难有好的software。
(觉得有理的点点关注)