从事软件开发工作必须具备哪些知识?

2024年11月20日 07:41
有5个网友回答
网友(1):

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测试

软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。

6维护

维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。

一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。

在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

网友(2):

献给计算机专业的同学

1.首先请你热爱这个专业。只有这样,你才会从抽象的理论中找到实实在在的快乐。如果

你不热爱她,或者只因为这是个热门专业,那么极力要求你放弃这个专业,因为计算机是

一把双刃剑,学好了你会飞黄腾达,学不好你毕业后会极其痛苦,高不成低不就,没有发

展潜力,如同学英语专业的人到了美国一样。

2.不要用功利眼光对待这个学科,这绝对不是点点鼠标就能挣钱的专业。不要去想做网站

挣钱,不要想靠点击率增加广告,这个在4年前已经过时,如果你现在仍然这么想,千万别

说出来,因为我会觉得你很土。计算级专业的成就感总是伴随着身体上的痛苦而来,肩周

炎,颈椎病,眼睛干涩,掉头发,腰椎间盘突出,关节炎,不夸张,这么帅的我工作了两

个月以后发现开始掉头发了。

3.搞明白计算机“科学”与“技术”的含义。做网页,做图片,做flash,玩游戏,上网,

听歌,录mp3,搞电影字幕,装windows,改注册表,为软件皮肤……这通通不叫计算机科学

与技术,如果你是计算机的学生,会做以上事情,那是你应该的,不会做,也没什么丢人

的,我们需要的不是让别人称作“高手”。

4.明确你最终的专业方向是软件还是硬件。方向是网络?网络不是专业方向。网络是最优

秀的软件工程师、最优秀的硬件工程师与最优秀的通信工程师的智慧结晶。如果你是软件

方向,请你在学精一揽子数学、数据结构、算法设计、数值分析、汇编语言、操作系统、

编译原理、数据库原理、软件工程之类课程后,仔细的听一听硬件课程,他对你有用。软

件工程绝对不是背背就能过的课,计算机理论可能是一个人就能研究出来,软件工程是成

千万网软件工程师几十年来失败的教训凝结成的结晶,请认真听课。不要问我应该学什么

语言,计算机专业的人必须具备任何语言1小时上手的能力,最起码要在10分钟把"hello

world"做出来。如果说有必须学的两种语言,那他们是c++与java,学他们不是在学语言,

而是在学thinking in c++,thinking in java,一个是软件的基础理论,一个是面向对象

的基础理论,从来没有人听说过“thinking in basic”。如果你说c++过时了,那么千万

别告诉别人你的名字,因为很丢人。山科大的老师只会教给你c,不会教给你++,所以不要

被他蒙蔽,大胆的问他++,如果他不会,干脆换老师。学硬件的同学在认真听听以上课程

后,学精除了政治以外的其他课程。

5.即使你学好了以上课程,我们仍然差得很远,我们只弄清学什么了,但是还不知道做什

么。我们的课程设计太小儿科了,别对你在国外的同学说,否则会被笑话,所以我们要尽

可能的多做设计,别一个人们闷着头做,两三个人合作一个项目,不会交流的计算机人员

30岁以后肯定会下岗。题目呢,尽量是一些简单的底层开发,可以去国外大学网站上搜一

搜,要自信你一定能做出来,毕竟不是什么难题,而是我们应当具备的素质。

6.如果你对网络有意,在具备了一定动手能力后从协议或者底层硬件的角度去学习它。否

则你是自甘从一名高贵的计算机专业人员堕落为做着沉重机械体力劳动的民工。对网络安

全感兴趣,那么你就在学会使用各种工具的一个月后从编程的角度深入学习网络协议和操

作系统吧!只会用工具攻击无知人员的漏洞是一种意淫的行为,如果乐此不疲,并到处叫

嚷“黑客”,那么这种行为可以被称作“手淫”。网上呼吁中美、中日黑客战时,希望你

安心学习课程,或者睡觉休息,或者去运动娱乐,不要给祖国抹黑。

7.正确对待认证。绝大部分认证不是高薪的敲门砖,而是你上岗前的智商水平测试。如果

你考过了认证,别对别人说这个认证是垃圾,请告诉别人你在学习中懂得了那些知识,如

果你没有懂得知识,那么你是个paper,认证不是垃圾,你是垃圾。如果你连认证都没考就

到处喊它垃圾,那么你就亲自考考试试,考过了,懂了,那么你随便;如果过了但是不懂

,认证不是垃圾你是垃圾,如果没考过,那么看这个贴子的所有人都知道你是什么了。MC

SE、CCNA、CIW等等都有它存在的意义,只要你有钱都值得一学,他们是最正规的知识来源

,是经过理论、实践、时间与市场考验的产品。

二.给非计算级专业的同学的一点建议

1.热爱你的原专业,尤其是自然学课和基础学科,为了计算机放弃他们就如同为了10张一元

钱扔掉了一张100元一样。

2.计算机是具有学术性和工具性的双重属性学课。架设一做计算级专业与你本专业的桥梁

,那对两个专业都是做出了贡献,如果你真的很牛,把计算机学的很深很好,那么你真的

值得尊敬。

3.再次记住做网页,做图片,做flash,玩游戏,上网,听歌,录mp3,搞电影字幕,装win

dows,改注册表,为软件皮肤……这些不是计算机专业,也挣不到钱。不要让浮躁余功利蒙

蔽你的双眼,毁掉你光明的前程。

以上差不多都说完了,对学校的不满我就不说了,毕竟是一时的,虽然现在还很烂,

但是将来会慢慢变好的,大家在痛骂学校的同时一定多给学校提出好的意见,多为学校的

发展出力,将来谁成就了大事,别忘了回来,因为我们的孩子也许还会在这里上学,我们不

能让他们再受苦受委屈。

网友(3):

精通两门以上语言吧,当然还得看你是网络方面的还是嵌入式什么的然后你得精通数据库,数据结构,算法当然你要是有软件工程只是就更好了

网友(4):

兴趣爱好、编程基础、英文能力、技术技巧、逻辑能力、业务分析能力、团队能力、及时了解互联网资讯

网友(5):

需要经过专业系统的学习才可以从事软件开发,现在java,.net都很主流,必须具备一定的编程能力