从事软件开发工作必须具备哪些知识?
展开全部 1.首先热爱这个专业。
只有这样,才会从抽象的理论中找到实实在在的快乐。
如果 不热爱她,或者只因为这是个热门专业,那么极力要求放弃这个专业,因为计算机是 一把双刃剑,学好了会飞黄腾达,学不好毕业后会极其痛苦,高不成低不就,没有发 展潜力,如同学英语专业的人到了美国一样。
2.不要用功利眼光对待这个学科,这绝对不是点点鼠标就能挣钱的专业。
不要去想做网站 挣钱,不要想靠点击率增加广告,这个在4年前已经过时,如果现在仍然这么想,千万别 说出来,因为会觉得很土。
计算级专业的成就感总是伴随着身体上的痛苦而来,肩周 炎,颈椎病,眼睛干涩,掉头发,腰椎间盘突出,关节炎 3.搞明白计算机“科学”与“技术”的含义。
做网页,做图片,做flash,玩游戏,上网, 听歌,录mp3,搞电影字幕,装windows,改注册表,为软件皮肤……这通通不叫计算机科学 与技术,如果是计算机的学生,会做以上事情,那是应该的,不会做,也没什么丢人 的,需要的不是让别人称作“高手”。
4.明确最终的专业方向是软件还是硬件。
方向是网络?网络不是专业方向。
网络是最优 秀的软件工程师、最优秀的硬件工程师与最优秀的通信工程师的智慧结晶。
如果是软件 方向,请在学精一揽子数学、数据结构、算法设计、数值分析、汇编语言、操作系统、 编译原理、数据库原理、软件工程之类课程后,仔细的听一听硬件课程,软 件工程绝对不是背背就能过的课,计算机理论可能是一个人就能研究出来,软件工程是成 千万网软件工程师几十年来失败的教训凝结成的结晶,请认真听课。
不要问应该学什么 语言,计算机专业的人必须具备任何语言1小时上手的能力,最起码要在10分钟把"hello world"做出来。
如果说有必须学的两种语言,那他们是c++与java,学他们不是在学语言, 而是在学thinking in c++,thinking in java,一个是软件的基础理论,一个是面向对象。
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。
软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。
软件一般是用某种程序设计语言来实现的。
通常采用软件开发工具可以进行开发。
软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
1计划 对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计,制订完成开发任务的实施计划。
2分析 软件需求分析就是对开发什么样的软件的一个系统的分析与设想。
它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。
本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。
需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
在任何软件或系统开发的初始阶段必须先完全掌握用户需求,以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。
系统工程师最终将据此完成设计方案,在此基础上对随后的程序开发、系统功能和性能的描述及限制作出定义。
3设计 软件设计可以分为概要设计和详细设计两个阶段。
实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。
可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。
模块,然后进行模块设计。
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
4编码 软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的“源程序清单”。
充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。
而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
5测试 软件测试的目的是以较小的代价发现尽可能多的错误。
要实现这...
软件开发过程需要哪些设计图表
软件开发一般分为五个阶段:1.问题的定义及规划此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
一个完整的软件开发过程包括那些步骤呢?
1 相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
2系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。
这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。
3系统分析员和用户再次确认需求。
4系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。
5系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。
6测试编写好的系统。
交给用户使用,用户使用后一个一个的确认每个功能,然后验收。
做软件开发要有什么基础
通常,软件美工是做平面设计出身的,这是业内和业外的共识。
大家也想当然地认为美工做的是美术设计工作,不需要懂软件本身用到的技术——另外,与此相伴的就是,对于程序员缺乏可用性观念和审美情趣,虽然痛心疾首,但同样习以为常。
在程序员和美工之间通常难以存在高效的沟通。
相对好一点的情况是,开发团队运用科学的管理手段进行管理,如果人员数量能得到保证,项目管理人员、交互设计师可以作为程序员和美工之间的桥。
但这也只是从工程管理的角度来看相对好一点而已。
这种桥式接口毕竟只是桥,不是路。
从我自己这些年来跟一些美工合作过的经历来看,我认为沟通出现困难的根源在于,软件开发过程中需要的美工,决不能是纯粹的平面设计美工!因为他们的工作,不是设计海报、广告、宣传画,而是设计软件界面;不仅要考虑美观性和可用性,还要考虑是否“是”个软件界面,考虑其可实现性;软件美工,最后交出来的活,应该是交互设计师给出的软件界面上各元素独立的形象设计——可以由程序员不需要再做“副美工”的加工就能在程序中直接拿来构造出界面的资源,而不是给一张像海报一样的设计图,整个界面的效果图全在一张没有层的 JPEG 或 PNG 或其它格式的像素图中,要程序员再从里面抠出按钮、输入框等部件。
事实上传统的平面设计美工在设计和制作软件界面效果图的过程倒恰好跟程序员的需求有些对路。
使用诸如 PhotoShop 之类的专业图像处理软件,必然涉及到层的操作。
他们通常在不同的层里处理界面中不同部分,逐渐“组合”起来出现最后的效果。
譬如整个窗体的背景图是一个层,非客户区(标题条、边框、缩放把手)是一个层,别的层里做好按钮、图标、输入框等效果,最后组合成一张图。
其实,这些分立的部件(或者说 PSD 文件也可以,不过程序员通常还是不要拿到这个来自己搞为妙),对程序员来说比那张最终效果的 JPEG 更重要。
在正规的项目里,因为开发过程和团队都相对完备,所以美工可能会在经验丰富的组长管理之下把这些事情做好。
然而我们(尤其指像我这种情况的非正式软件开发者)可能不具备组建一个完备团队的条件。
于是就会遇到这样一种情况:美工辛辛苦苦熬了几个夜,终于做出了漂亮的界面设计图,兴高采烈地交给程序员,可怜的业余程序员傻了眼——图虽然好看,但还要做不少额外工作才能用在程序中,甚至根本没法用。
基于窗体的程序还好一些,最郁闷的是网页。
很多美工用 PhotoShop 设计网页效果,然后用内置的切割和导出工具直接输出成 HTML,这样看似不错,但实际很糟糕。
页面被切成大大小小十几个 用 absolute 方式定位的 DIV,每个大小和位置几乎难以调整,动一下就会在别的位置出现糟糕的空白,还有一堆无用的细长条 DIV 纯粹就是切割的时候出现的占位块。
纯静态的 HTML 还好一些,如果内容是动态填充的,可能哪里多几个字符就会破坏布局,或者把显示的内容裁剪掉一部分。
如果是内容管理系统,页面区块可以用户控制的,那可就彻底乱套了。
因此,非常有必要细化出“软件界面美工”这样专门的角色,甚至有必要在高校艺术设计类专业里增设类似的课程。
他们不需要了解一个 GUI 程序从启动到推出的窗口消息是怎么路由的,不需要知道网站后台如何生成页面传送给浏览器,但是,应当有一定的简单 GUI 程序开发经历,要手写过 HTML 页面,知道 CSS 是怎么用的,也就是说能够理解程序和艺术数据之间如何契合,程序展现界面时需要什么形式、什么组织结构、什么格式的美工作品。
当然,作为程序员这个想法还是有点自私的:让学艺术的人来理解和计算机代码相关的东西,似乎不太人性化。
不过,软件界面毕竟不是纯粹的艺术品,软件美工也不可能是纯粹的艺术家,对吧?
开发软件需要会做图吗?
软件开发肯定要用到数据库,因为要编的软件得用数据库。
比如你编一个图书管理的一个软件,就需要存储大量的图书数据、会员数据、借书还书数据,等等,这么多数据,需要一个专门存数据的地方,这就是数据库。
数据库能有效存储数据,读取数据、查找数据更是方便,其实那些管理软件就只是通过软件的界面向内部的数据库进行数据的增、删、改、查的操作罢了! 所以数据库很重要
转载请注明出处51数据库 » 软件开发需要做哪些图