软件开发需要掌握什么知识?
1,良好的数学和英语基础,关键是逻辑推理和语言组织能力要不错。
像韩信点兵,百钱买百鸡,九宫格,八王后等经典算法。
2,算法与数据结构,面向对象程序程序设计,高级语言程序设计这三门课是很关键的专业基础课。
3,C++或JAVA语言一定要掌握其中一个,并精通。
4,如果数学基础一般:可以从JAVASCRIPT脚本类语言开始入手。
容易些,还可以从事网站前台开发。
5,买本带有案例和光碟的教程,反复做。
最好是根据要求做案例。
软件开发的基础知识
软件因计算机而存在,而计算机的实质是数学,所以计算机的知识本质上就是数学知识,也可以这么说数学知识也是计算机的基础知识,计算机的基础知识也是软件的基础知识。
在。
软件发展的过程中,软件的知识也在慢慢地积累,很多软件知识与数学并无直接的联系,而。
在这里我们所要说的就是纯软件的基础知识。
我们可以把软件的知识分为两个部分,专业技能知识和领域知识或说行业知识。
1,专业技能知识 一门编程语言及库 你可以在书店里找到各色各样的关于编程方面的书籍,但是我建议你只需要深入地掌握一门便可,而且任何程序员都需要熟悉C语言。
你所深入掌握的语言可有多种选择。
如果你从事的是驱动程序开发,我想必须要掌握汇编语言,C语言也是个不错的选择,而如果是做UI的话C++也许更好,Java语言比较适合网络程序的开发,当然JavaScript在google肯定很受推崇。
对于程序员来说,编程语言就相当于游侠手中的武器,可以是长剑,也可是以是短剑,可以是大刀,也可以是匕首。
这些武器各有所长,而要发挥这些武器的长处必须基于一套路数上,那么对于程序员来说就是基于某一种编程语言的代码库。
如GNUC的库就是libc或ulibc。
如果你是用C语言,而且你是在类UNIX平台下开发,那么你就必须正确理解libc的工作原理,你代码里所调用的每一个函数的输入与输出,可能的错误,可能的歧义,对系统可能产生的影响。
比如某一个函数是否是可再入的,还是不可再入的,如果出现了多线程同时调用的情况会发生什么错误等等细节上的问题。
一种编程思想 全世界都惊叹于***的领导和军事才能,而在他的才能表象之后是什么,是他的革命精神,是他的睿智的思想。
编程也一样,如果没有了编程思想就没有了指导前进的动力,就没有了创造的灵感的土壤。
软件知识发展到现在比较常用的编程思想就是结构化(模块化)和面向对象化(设计模式)。
有些语言是在模块化大行其道的历史背景下被发明出来的,如C语言,而有些语言则是为了满足面向对象的编程思想而构造出来的,如C++。
有一部分程序员会认为C语言是结构化的编程语言无法实现面向对象的编程思想。
其实不然,C语言同样可以很好地实现面向对象的编程思想,只不过有些面向对象的工作由程序员来做而已。
同样,面向对象的编程语言也可以用于写模块化的程序。
一种信仰 就我所接触过的系统里,Windows我只会安装,使用,VC/VB也只能做一些简单的开发,而MACOS体验过一次安装,不过最终还是失败了,iPhone的系统还没有机会体验过。
曾经在AIX下做过开发,目前正在Fedora9下做开发,目标板的CPU是SH4,将来也可能是MIPS。
不管是MACOS,Windows,UNIX,Linux等都有各自的追随着,我把这种现像称为信仰。
就拿我自己来说,我信仰Linux,Linux内核的源代码对于我来说就是神话。
我觉得在Linux下工作是一件很娱悦的事情。
如果你每每解决一些比较棘手的问题,都会有一种成就感,这是在Windows平台下感受不到的。
所以对于这一信仰,我觉得至少需要知道它的安装,启动,配置,安全,如引导程序GRUB,ftp,telnet,sshd,smbd,named等等服务器的配置,网络安全的配置等等。
如果你要在Linux下进行开发,你必须了解Linux的API,标准库,也就是libc。
如果你的程序是多线程的,你还得掌握libpthread.so里的函数使用方法。
GCC,GDB,LD,AS,AR,以及Makefile和make等等工具的使用。
如果你能掌握find,awk,sed,grep,od,nm,objdump等实用工具的话,将会大大提高你的工作效率。
这,就是我的信仰。
总之一句话,一种编程语言及库,一种编程思想和一种信仰。
一切OK! 2,领域知识/行业知识 我记得我的第一份工作是银行的交易开发程序员,当时是一家外包公司把我外派到工商银行,我对工商银行的业务一无所知。
不过初出茅庐不怕虎,硬是一个人完成了一个我一无所知的项目,而仅凭我对自己技术实力的自信。
但事后我却有些后怕,因为我并不明白,为什么那个整数要乘以个0.456存入到数据库,也不知道银行对数据的精确度是多大,等等细节上的问题我一无所知。
那我只能求上天保佑,哪天不要多扣了人家的钱,天啊,这事我也做了?!当然不至于那么严重:) 后来我确实发现自己对于银行这套业务系统了解起来比较吃力,我宁愿花点时间写些小的C程序也不愿花时间去肯那些苦涩的业务流程文档。
所以在那家公司呆満一年后我辞职了。
我想,大部分程序员都想做一些相对技术含量高的开发工作,像那种整天与数据和数据库打交道的开发工作,随便有点志向的程序员也不愿意去做,当然如果钱足够多的话我还是愿意的:) 但现在我发现我错了。
因为这部分也是软件知识的一部分。
就拿我目前的工作来说,技术上不会有太大的困难,但是蓝光规格以及其涉及到的规格相当的多,恐怕没有十年时间无法做到精通。
这就是领域知识或说是行业知识。
有些人一生只做一件事,还不一定能做好,而我现在只做了不到两年,虽觉时间不长但也不短,纵是一无所获。
所以,我觉得自己仍不是一名合格的开发者。
软件开发的基础知识包括专业知识和行业知识,如果基础...
软件工程师都应该掌握哪些知识
软件设计师考试大纲 一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。
2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平 -------------------------------------------------------------------------------- 提问人的追问 2009-11-23 18:31 谢谢! 我更想知道的是:实际生活中软件工程师需要的能力。
很多人(包括我)认为:现在证书只是供参考的。
当然,完全达到考试大纲要求是相当不容易的…… -------------------------------------------------------------------------------- 回答人的补充 2009-11-23 19:02 -------------------------------------------------------------------------------- 在现代社会中,软件应用于多个方面。
典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。
同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。
这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析员,软件设计师,系统架构师,程序员,测试员等等。
人们也常常用程序员来泛指各种软件工程师。
前端开发需要掌握哪些基础知识
当然每个培训机构的授课方式会有所不同,赛尔盟教育各位IT专家凭借在教育领域多年的教学经验,总结出了一套适用于广大青年学习html5开发体系。
即五步教学法,从兴趣入手,“看一遍,讲一遍,练一遍,学一遍,做一遍”讲解由浅入深,复杂问题简单化,实战全程相伴。
企业要求会什么,我们就教什么,讲究学中用,用中学。
软件开发工程师需要掌握哪些技能知识呢?
第七是要有勇于探索,勇于创新的精神一个优秀的程序员,不能总是原地不动,不去思考,要多去想一想为什么要这样做,如果不这样做会产生什么样的后果;要努力学习新的知识,因为软件行业是一个更新速度非常快的行业,如果你的知识2年都没有更新的话,那么,你在这个软件开发行业的前景就不容乐观了;每天都要抽出一定的时间学习新知识,只有这样,才能走的更好,更远,更稳
软件开发需要哪些知识和技能
开发过程 软件开发过程分为5个阶段:分析 软件需求分析就是回答做什么的问题。
它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。
本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。
需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。
系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。
设计 软件设计可以分为概要设计和详细设计两个阶段。
实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。
可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。
模块,然后进行模块设计。
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
编码 软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。
充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。
而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
测试 软件测试的目的是以较小的代价发现尽可能多的错误。
要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。
如何才能设计出一套出色的测试用例,关键在于理解测试方法。
不同的测试方法有不同的测试用例设计方法。
两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。
结构错误包括逻辑、数据流、初始化等错误。
用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。
白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。
其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。
黑盒法。
维护 维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。
即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。
编写软件问题报告、软件修改报告。
一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。
那么它的维护阶段也是运行的这五年至十年期间。
在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。
做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。
然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。
而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。
在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。
编辑本段开发平台 软件开发平台源于繁琐的实践开发过程中。
开发人员在实践中将常用的函数、类、抽象、接口等进行总结、封装,成为了可以重复使用的“中间件”,而随着“中间件”的成熟和通用,功能更强大、更能满足企业级客户需求的——软件开平台应运而生。
平台是一段时间内科研成果的汇聚,也是阶段性平台期的标志,为行业进入新的研发领域提供了基础。
由于平台对企业核心竞争力的提升非常明显,目前国内的管理软件市场,软件开发平台的应用已经成为一种趋势。
由于开发环境、开发人员、功能定位、行业背景等的不同,不同品牌的平台存在较大差别。
编辑本段开发环境 软件开发环境在欧洲又叫集成式项目支援环境(Integrated Project Support Environment,IPSE)。
软件开发环境的主要组成成分是软件工具。
人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件...
网站前端开发都需要掌握哪些知识
我们都知道网站开发分为 前端(客户端)和 后端(服务器端)两个部分。
网站开发 后端 更多的是与数据库进行交互以处理相应的业务逻辑。
需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等。
至于 前端,在这里泛指Web前端,也就是在Web应用中用户可以看得见碰得着的东西。
包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。
主要负责实现视觉和交互效果,以及与服务器通信,完成业务逻辑。
它的核心价值在于实现用户体验,大型互联网公司的用户体验部门,一般会包括用户研究、交互设计、前端技术和视觉设计等方面的内容。
作为一名网站前端开发者,以下的知识是不可或缺的:1HTMLHTML即HyperText Markup Languag,超级文本标记语言。
这是网站开发中最简单的,也是最基础的内容,几乎所有的开发者都必须首先经历这个环节。
必须要熟练掌握div、form、table、li 、p、span、font等等标签,这些都是最常用的。
其中尤其需要注意div和table这两个,算是用到最多的内容。
div用于布局;table用来和数据打交道(虽然table也可以用于布局,但是并不灵活)。
2CSSCSS即Cascading style Sheets层叠样式表,其中css3我们先不谈。
CSS主要用于辅助html来布局和展示,我们称之为“css样式”。
对于css要掌握的内容主要包括float、position、width、height、overflow、margin、padding等等,这些都是跟布局有关系的样式。
不管你用什么工具软件制作网页,其实都有在有意无意地使用CSS。
用好CSS能使你的网页更加简炼,为什么同样内容的网页,有的人做出来有几十KB,而高手做出来只有十几KB,CSS在其中的作用是不言而喻的。
3JSJS即JavaScript,作为一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。
我们所讲的前两个内容都很基础,接下来的东西可能接受起来有难度,但是事实上js入门算是比较简单的,不需要会很多东西的。
基础点的内容只要会根据某个id、或者name拿到网页dom或者样式、或者值,然后会给某个id或者name的元素标签赋值、或者追加数据、追html,这个是跟数据有关系的操作,之后数据逻辑判断。
至于效果方面的,无非就是跳转、弹框、隐藏什么的。
当然,这些东西单独拿出来比较简单,但是实际中几乎没有这么简单的情况,很多时候都需要把这些各种各样地结合起来。
4JQueryJQuery说白了是一个JavaScript(JS)框架,相当于把js封装了一套的一个js插件,目的就是操作起来更方便,代码写的更少,它支持JS的常规操作以及一些扩展,比如图形等,对JSON格式也能很好的解析,ajax也做了封装,语法也比较简单。
功能十分强大。
jquery入门也很简单,那些是入门需要学的和js一样,只是换成了jq的代码。
不好的地方是它将js语法与开发人员完全隔离,也就说你开发几年JQuery后还会不会用纯 编程都是个问题。
5CSS3+HTML5这是最近比较流行的内容了。
HTML5在原有的基础上新增和移除了一些元素,提供了对表单的强大支持。
它并非仅仅用来表示Web内容,它的新使命是将Web带入一个成熟的应用平台,在HTML 5平台上,视频,音频,图象,动画,以及同电脑的交互都被标准化。
CSS3对于我们Web开发者来说不只是新奇的技术,更重要的是这些全新概念的web应用给我们带来更多无限的可能性,也极大地提高了我们的开发效率。
我们将不必再依赖图片或者Javascript 去完成圆角、多背景、用户自定义字体、3D动画、渐变、盒阴影、文字阴影、透明度等提高Web设计质量的特色应用。
6简单后台语言作为一名前端开发者不仅需要掌握上面讲的有关前端的知识,还必须懂一点后台语言,比如java、php等等。
因为前台界面的数据都是从后台来的,我们必须知道怎么跟后台交互数据。
这样不仅能够节约时间,还可以让前端代码更规范,让后台开发者减少一些不必要的麻烦。
否则的话,可能因为前台的写法和后端给来的数据不能结合上,导致前端代码必须重新编写。
软件开发基础是零,需要学习什么?
有毅力可以自学,没有得到还是报个班吧(青鸟什么的),报班有老师教和解答问题,有同学烘托气氛,学的快。
自学的话先从C或C++开始吧,选学学基础的逻辑。
学完基础就要想想学什么语言了,现在比较多的是Web,可以学Java,.net,Php等,还要学Html和JScript等网页界面语言。
也可以学C/S的,如QQ、360这样的软件,语言有C++和C#,都不错,只不过WEB的越深越偏向现实的业务逻辑,什么ERP、OA之类,而C/S越深一般越偏向架构,因为C/s的架构和传输大多都是自己写的。
之后还有驱动和算法之类的,做这个的挣的比较多,也比较有难度,但是招的人少,没工作经验很难找到好点的工作。
转载请注明出处51数据库 » 软件开发需掌握基础知识
蒙奇迪孤狼