我想学软件开发,怎么入门?
一个软件从开始到最后一共需要以下几个流程: 1、计划 2、分析 3、设计 4、编码 5、测试 6、维护 1、计划 对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。
2、分析 软件需求分析就是对开发什么样的软件的一个系统的分析与设想。
它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。
本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。
需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。
系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。
3、设计 软件设计可以分为概要设计和详细设计两个阶段。
实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。
可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。
模块,然后进行模块设计。
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
4、编码 软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。
充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。
而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
5、测试 软件测试的目的是以较小的代价发现尽可能多的错误。
要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。
如何才能设计出一套出色的测试用例,关键在于理解测试方法。
不同的测试方法有不同的测试用例设计方法。
两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。
结构错误包括逻辑、数据流、初始化等错误。
用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。
白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。
其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。
6、维护 维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。
即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。
编写软件问题报告、软件修改报告。
一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。
那么它的维护阶段也是运行的这五年至十年期间。
在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。
做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。
然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。
而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。
在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。
想学习做简单的电脑软件
就我所了解的,在现在以及可预见的未来,这个行业对软件工程师的需求绝对是碾压硬件工程师的。
也就是说,招软件工程师的职位比硬件工程师的职位要多的多,而且软件工程师找工作上来说会比硬件工程师更容易。
先从企业的角度来讲讲。
我个人认为造成这个差异的原因,第一个是基本上所有的公司,从初创公司到全球百强,都有对软件工程师的需求。
现在哪个公司不需要几个码农来开发app,或者做个web。
但是做硬件这种工作并不是所有公司会去做的。
举个简单的例子,摩根大通银行在我们学校的招聘会上明确招软件工程师,expedia也明确招聘软件工程师,如果这个两个公司突然说要招电子工程师,这不是逗我吗。
。
而且哪怕是硬件公司,也需要大量的软件工程师来支持硬件前端工作。
第二点我觉得要归功于现在的创业潮。
不管在美国在中国互联网创业都是趋势,但是可以说绝大部分的初创互联网公司做的都是软件方向。
有个点子,有点技术,找几个合伙人抱着电脑就能开干了。
但是初创公司要专注做硬件开发就比较难了,因为成立设计硬件公司的门槛和起步开销比较大。
所以这也导致大部分初创公司以互联网为主,能做的了硬件设计的公司基本上都是处于垄断地位的大企业。
第三个很重要的原因就是硬件设计在现在来看已经是相对成熟的技术,我甚至有ee的同学跟我说大部分硬件的东西已经步入夕阳产业的范畴,因为很多东西已经成了规范,也因为很多东西被自动化所取代。
前一阵子全球大牌的硬件公司才裁了不少人,intel更是裁掉了接近20%的硬件工程师。
但是互联网热从90年代开始到现在热头还没过,而且未来诸多产业如人工智能、机器学习、图像识别、大数据都才刚起步,所以还有一定的上升空间。
还记得当初我们学校的初创公司招聘会上几十家公司只有一家招硬件工程师,而且还是偏软件的硬件工程师,剩下的公司里98%都在找会码代码的人;大企业的招聘会上才能见到nvidia、arm、 intel、 TI 的身影,但是哪怕是这样,基本上所有的公司招牌上都会有大写加粗的招computer science的字样。
。
再从个人的角度来讲。
想成为一名软件工程师找到工作的门槛远比成为一名合格的硬件工程师低很多。
要想以软件工程师的身份混到个饭碗,学两门语言学好,常用的数据结构,刷点题就基本上能找到薪水小几千的岗位。
我甚至知道国内有专门的软件工程师培训机构,那种专门教java和算法,两个月速成班,而且所声称的学生就业率还挺高的。
但是要想成为一名合格的硬件工程师,不是科班出身的不好好学几门模电数电信号逻辑设计的课,没有在学校实验室里自己焊点电路做实践,连简历都发不出去。
而且现在要想学个什么语言框架,网上搜一搜“”xxx语言入门教程“”就有非常丰富的资源,但是要是在网上搜“如何学好超大规模集成电路设计”,要想找到可以受用的资源几乎是不可能的。
而且就我所参加的招聘会来说,如果有招硬件工程师基本都要求有研究生的学位,但是对软件工程师的要求基本上就是熟悉算法数据结构,会web编程有相关经历就够了。
软件工程师很多时候吃的是体力,硬件工程师大部分时候是吃经验,所以硬件工程师一般得有一定的经历积淀才能脱颖而出。
尤其像模电这种上手程度很高的方向,没个十年八年的相关经验根本不算学成出师。
所以说本身对从业者的资质要求更高,也是硬件工程师不好找工作的原因之一。
上面是我所认为的短时间内软件工程师就找工作方面来说会比硬件工程师更容易的原因。
但是这并不意味着会编程就肯定找得到工作,也不意味着硬件产业就会低迷下去。
软件工程师的职位多,但是每年从事这个职业的人也更多,虽然我认为现在软件工程师短期内还没有出现饱和的趋势(毕竟那么高的工资还摆在那),但是总有一天这个行业也会像金融产业一样降温(人才供过于求)。
硬件产业虽然大部分已经有步入夕阳产业的趋势,但是曾经一度被宣称没啥好搞的供电网络最近也被smart grid搞得神乎其神,美国top5的高校都还设立了相关实验室。
此外,现在物联网,车联网,智能家居的概念被炒得火热,我相信等相关成熟的支持技术(能量采集,低功耗通信)以及统一的开发平台一旦出现,硬件工程师的需求只会更多,虽然这些产品依旧只有那些有背景的大公司才做得动(不过因为欧美国家电子产业上的封锁,国家也在硬件设计上砸了很多银子,初创企业也会慢慢增加,相信国内的相关机遇也会更多)。
而且毕竟软件产业还是依靠硬件,如何设计低功耗,高稳定性,能够承载大吞吐量计算量的硬件也是这个产业的挑战,毕竟人工智能,机器学习,视觉处理等领域是很吃硬件计算量的。
没有强大的硬件支持,阿狗要想打败李世乭还是痴心妄想吧。
本人现在在一家为硬件的公司设计软件的百强软件公司实习,做的工作大部分还是偏软件,所以本身对工作常态也并没有非常深入的自己的感受。
但是就我观察身边的同事以及跟别人的交流来看,不管是做软件硬件,都是要:对。
着。
电。
脑。
。
。
软件工程师平时就是上班啊调试程序,比较低级的码农只能给高级软件工程师打打下手,帮他们做测试,实现他们设计好...
嵌入式开发软件和硬件学习
我希望我能为楼主答疑解惑1:嵌入式软件开发 驱动和系统是比较难,毕竟需要一些硬件知识,相对应用软件可能工资高点,但是不能说哪个更好,因为做应用有个优势,你会对某一个行业很了解,也许以后你就可以自己做了。
2:嵌入式硬件开发和软件开发也没有办法说哪个更好,累不累在于你要做什么活,你在什么公司做,在A公司也许软件的比较累,B公司也许硬件的比较累,这不是绝对的,工资也是差不多,关键还是在于个人能力。
3:单纯从就业角度来考虑,我认为是软件的机会比较多。
因为一般公司软件的人员比硬件都要多的多。
软件的工作量相对比较大,所以需求也比较大。
4:学习嵌入式的课程,说来说去还是几个基础的课程,建议楼主可以到嵌入式学习网看看,里面有个学习指导,有很多很好的文章,我摘抄一篇文章给你看看,关于如何学习嵌入式的。
首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言,你说不掌握它可以吗?至于如何学习C语言,我想这些基础的知识每个人都有自己的方法,关键要去学习,看书也好,网上找些视频看也好。
很多人会问,C语言要学到怎么样,我觉得这没有标准的答案。
我想至少你在明白了一些基础的概念后,就该写代码了,动手才是最重要的,当你动手了,遇到问题了,再反过来学习,反过来查查课本,那时的收获就不是你死看书能得到的。
其次,应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。
应该把系统的管理理解一下,比如进程、线程,系统如何来分配资源的,系统如何来管理硬件的,当然,不是看书就能把这些理解透,如果不是一时能理解,没关系,多看看,结合以后的项目经验,会有更好的理解的。
还有应该学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助,当然,如果做手机的话,那可以学习MTK、塞班、Android等操作系统,Android是以后发展的趋势,现在很热门,Android也是基于linux系统封装的,所以建议先学习下linux。
还有,应该学习下单片机或者ARM或者MIPS,很多人说我没有单片机的经验,直接学ARM可以吗?我觉得那完全没有问题的,当然如果你学习过单片机,那最好不过了,以后学习ARM就更简单了。
最后如果你把以上的知识都有所了解后,就该去阅读阅读一些优秀的代码,比如结合arm芯片手册学习去学习下UBOOT的源代码,了解下最小的系统开发,那对你整个嵌入式开发的非常有帮助的,可以的话,还可以学习下linux的源代码,当然如果你直接阅读2.6的代码,我想你会很痛苦的,可以先看看linux 代码早期的版本,比如0.12 的代码等等,麻雀虽小,五脏俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程师。
至于上面说的知识如何学习呢?每个人都应该去找自己最好的方法,所谓的最好的方法就是最适合自己的方法。
很多人看不进书,那就去看看视频吧。
视频也应该要选择,不是随便看看,应该要有所选择,有所挑选。
我也是这样一路走过来的,不过我这人比较懒,我看不进书,一看书我就想睡觉,所以这几年我都是看视频过来的,现在也算学有所成,但也不敢说是高手吧。
我在网上看到,有人把自己学习嵌入式的视频总结出来,嵌入式系列实践和视频教程,大家可以看看网址http://www.ic120.com/embedvideo.htm我仔细看了觉得很不错,我本来也想整理下,可是奈何我自己的电脑硬盘空间才40G,没有办法,时间也是不够,心有余而力不足,我不是在帮他做广告,虽然要花钱,我觉得算不错,至少自己不用去整理和花大量的时间去找资源,当然如果网上有的下,你网速和硬盘都够的话,我建议大家自己网上下也好。
想想我自己该开始学的时候,那时视频资源少之又少,我买书和买视频至少花了几千块,但是我觉得那很值,至少我现在赚回来了很多知识。
最后,希望这篇文章对热爱嵌入式,想致力于嵌入式开发的朋友有所帮助。
送给大家一句简单而又朴素的话,坚持就是胜利,贵在坚持,也可以看看如何坚持嵌入式学习!最后也祝愿楼主学业顺利,也希望楼主早点学好嵌入式
大学毕业了觉得专业不好想学软件开发去哪里学呢?
展开全部 基础学习 :计算机学习过程往往是由硬件开始,走向软件,但最终又会走向硬件。
学软件开发往往要与数学,英语打交道,因为目前的计算机程序设计语言主要是外国开发的,编代码的主要语句往往是英文,中文通常是做解释和说明用。
有一定的英文基础,在计算机学习上可以事半功倍。
编程学习 :在学习一些基础课如java,C语言等,会感觉到似乎这些没什么大作用,这些近似于低级语言的东西好像再努力也难成大器,但是这些编程语言都是成为成为一名优秀的软件开发的垫脚砖 。
理论实践 :学习编写程序,不仅要领悟老师的各种知识点,多看教材,还要结合课程重视上机的练习。
上机前要计划一下上机做些什么,要有一些新思路来设计和调试程序。
只有在上机过程中不断发现问题,解决问题,才能逐步迈向程序员之路。
因此,实操要与理论同步,紧密结合,方可为编程打下扎实的基础。
...
想从事软件开发,软件开发培训学校哪家好一些
展开全部 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。
软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。
软件一般是用某种程序设计语言来实现的。
通常采用软件开发工具可以进行开发。
随着社会的不断进步和发展,软件开发人才的社会需求特别大。
软件开发技术是很多计算机专业毕业的学生想要学习的技术。
软件开发技术培训机构哪家好?1. 看学校的实力,硬件和软件。
硬件就是学校的设备和师资力量是否比较好,软实力,就是看一个学校的文化怎么样,是不是灵活的,可靠的,不断发展更新的。
2. 看学校的办学规模和办学时间,学校规模是否可观能看出这个学校的发展潜力,办学时间能够知道学校的专业发展怎么样。
3. 看学生对学校的评价怎么样,以及毕业学员的就业情况怎么样。
学生参加学习学一门技术最终还是为了能够找到一份理想高薪工作。
看就业学员的情况就能知道学校的就业服务以及就业实力是怎么样的。
...
想学习编程序 开发自己的软件从哪里开始入手!
下面是我给k来的,但愿给你点启发。
设备:电脑 你既然喜欢编程,就应该认认真真的学习一门语言,学习微软的就先从VB开始,VB是比较好的入门语言,可视化的,比较简单,是非常好的入门语言。
书籍最少应该准备两本,不可能一本书籍会包含VB的所有内容,在看书的时候,可以交叉的看,一本书籍中没有讲到的内容可以在另一本中看到,这样对学习是很有好处的,也能保证所学知识的完整性。
学编程是一个很漫长的过程,不要着急,要理论与实践想结合,例程书籍也是很重要的,看源代码对学习也是很有帮助的,等你学完这门VB语言之后,学习别的语言是非常简单,可以尝试C语言,按照C——C++——VC的顺序学习,有助于知识的连贯性,我也希望你能学好的。
或者学习Delphi,入门较为简单类似于VB,但比VB强大,即可作为入门又能做强、做大 怎样学编程 1.明确学习目的 学习编程对大多数IT业人员来说都是非常有用的。
学编程,做一名编程人员,从个人角度讲,可以解决在软件使用中所遇到的问题,改进现有软件,可以为自己找到一份理想的工作添加重要得砝码,有利于在求职道路上谋得一个好的职位;从国家的角度,可以为中国的软件产业做出应有的贡献,一名优秀的程序员永远是被争夺的对象。
学习编程还能锻炼思维,使我们的逻辑思维更加严密;能够不断享受到创新的乐趣,将一直有机会走在高科技的前沿,因为程序设计本身是一种创造性的工作。
知识经济时代给我们带来了无限的机会,要想真正掌握计算机技术,并在IT行业里干出一番事业来,有所作为,具有一定的编程能力是一个基本条件和要求。
2.打好基础 学编程要具备一定的基础,总结之有以下几方面: (1)数学基础 从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。
因此,要学好计算机就要有一定的数学基础,出学者有高中水平就差不多了。
(2)逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,“逻思力”的培养要长时间的实践锻炼。
要想成为一名优秀的程序员,最重要的是掌握编程思想。
要做到这一点必须在反复的实践、观察、分析、比较、总结中逐渐地积累。
因此在学习编程过程中,我们不必等到什么都完全明白了才去动手实践,只要明白了大概,就要敢于自己动手去体验。
谁都有第一次。
有些问题只有通过实践后才能明白,也只有实践才能把老师和书上的知识变成自己的,高手都是这样成材的。
(3)选择一种合适的入门语言 面对各种各样的语言,应按什么样的顺序学呢?程序设计工具不外乎如下几类: 1)本地开发应用软件开发的工具有:Visual Basic 、Delphi 、VC++ ( C++ Builder ) 等;数据库开发工具有:Visual Foxpro 、Oracle Developer 、Power Builder 等。
2)跨平台开发开发工具如 Java 等。
3)网络开发对客户端开发工具如:Java Script 等;对服务器开发工具如:PHP 、ASP 、JSP 、ISAPI 、NSAPI 、CGI 等。
以上不同的环境下几种开发工具中 VB 法简单并容易理解,界面设计是可设化的,易学、易用。
选 VB 作为入门的方向对出学者是较为适合的。
3. 注意理解一些重要概念 一本程序设计的书看到的无非就是变量、函数、条件语句、循环语句等概念,但要真正能进行编程应用,需要深入理解这些概念,在理解的基础上应用,不要只简单地学习语法、结构,而要吃透针对这些语法、结构的应用例子,做到举一反三,触类旁通。
4.掌握编程思想 学习一门语言或开发工具,语法结构、功能调用是次要的,最主要是学习它的思想。
例如学习 VC 就要学习 Windows 的内在机理、什么是线程......;学习 COM 就要知道 VTALBE 、类厂、接口、idl......,关键是学一种思想,有了思想,那么我们就可以触类旁通。
5.多实践、多交流 掌握编程思想必须在编程实际工作中去实践和体会。
编程起步阶段要经常自己动手设计程序,具体设计时不要拘泥于固定的思维方式,遇到问题要多想几种解决的方案。
这就要多交流,各人的思维方式不同、角度各异,各有高招,通过交流可不断吸收别人的长处,丰富编程实践,帮助自己提高水平。
亲自动手进行程序设计是创造性思维应用的体现,也是培养逻辑思维的好方法。
6.养成良好的编程习惯 编程入门不难,但入门后不断学习是十分重要的,相对来说较为漫长。
在此期间要注意养成一些良好的编程习惯。
编程风格的好坏很大程度影响程序质量。
良好的编程风格可以使程序结构清晰合理,且使程序代码便于维护。
如代码的缩进编排、变量命令规则的一致性、代码的注释等。
7.上网学编程 在网上可以学到很多不同的编程思想、方法、经验和技巧,有大量的工具和作品及相关的辅导材料供下载。
例如网站“编程课堂”(http://best.yeah.net/)主要以 VB 和 Delph;教学和交流为主,提供大量实用技巧;网站“现在时编程学园”(http://pshool.yeah.net/)是专门介绍C、VC、VB、Delphi 等的综合编程网站;网站“ VB 编程乐园 ”(http://www.vbeden.com/)提供内容丰富而且实用的编程技术文章、精选控件、源代码下载、计算机考试、相关软件以及编程书籍推荐等等。
8....
想学手机软件开发,大学该报什么专业?
学习手机软件开发,在大学需要报软件工程与计算机科学与技术两个专业,简称软工与计科。
手机的软件开发需要语言知识与计算机基础知识,手机也是微型计算机的一种。
语言知识包括C、C++、Java等等,安卓需要Java基础,IOS需要OC基础。
计算机基本知识包括算发与数据结构、操作系统、数字逻辑等等基础课。
而软件工程与计算机科学与技术有完整的学习以上知识的方案。
也有靠近的专业如物联网专业,但是此专业偏向硬件基础,软件只是涉及学习,如果专工手机软件开发,需要自己有一定的自学能力。
此情可待成追忆