从事软件开发工作必须具备哪些知识?
展开全部 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测试 软件测试的目的是以较小的代价发现尽可能多的错误。
要实现这...
“下载软件”的原理是什么?下载
展开全部 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。
软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。
软件一般是用某种程序设计语言来实现的。
通常采用软件开发工具可以进行开发。
软件分为系统软件和应用软件,并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
...
计算机专业的主要学什么?
本专业培养掌握计算机应用专业必要的基础理论, 能熟练掌握常用计算机软件操作,至少熟练掌握一门编程语言,具有一定分析问题和解决问题能力,并具有较强实践技能的高级计算机应用型人才。
主要课程:计算机软硬件技术基础、Linux操作系统、数据库系统SQL、数据结构与C程序设计、单片机原理与技术、VB.net程序设计、多媒体软件应用、计算机网络与网站建设、Delphi程序设计、Java语言程序设计、图形图像应用处理(PhotoShop)、微型计算机安装调试维修、办公室软件应用操作、计算机辅助设计、岗前培训“一技之长”就业方向:计算机软件开发、计算机及其网络管理维护、互联网站建设维护等职业岗位群。
软件开发文档的分类
1. 《功能要求》 -- 来源于客户要求和市场调查,是软件开发中最早期的一个环节。
客户提出一个模糊的功能概念,或者要求解决一个实际问题,或者参照同类软件的一个功能。
有软件经验的客户还会提供比较详细的技术规范书,把他们的要求全部列表书写在文档中,必要时加以图表解说。
这份文档是需求分析的基础。
2. 《投标方案》 -- 根据用户的功能要求,经过与招标方沟通和确认,技术人员开始书写《投标方案》,方案书一般包括以下几个重要的章节: 前言 -- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。
需求分析 -- 项目要求、软件结构、功能列表、功能描述、注意事项等。
技术方案 -- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。
项目管理 -- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。
技术支持 -- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。
系统报价 -- 软、硬件平台报价列表、软件开发费用、系统维护费用等。
项目进度 -- 整个项目的进度计划,包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。
3. 《需求分析》 -- 包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等。
以《功能要求》为基础,进行详细的功能分析 ( 包括客户提出的要求和根据开发经验建议的功能 ) ,列出本产品是什么,有什么特殊的概念,包括哪些功能分类,需要具备什么功能,该功能的操作如何,实现的时候该注意什么细节,客户有什么要求,系统运行环境的要求等。
这里的功能描述跟以后的使用手册是一致的。
4. 《技术分析》 -- 包括技术选型、技术比较、开发人员、关键技术问题的解决、技术风险、技术升级方向、技术方案评价,竞争对手技术分析等。
以《需求分析》为基础,进行详细的技术分析 ( 产品的性能和实现方法 ) ,列出本项目需要使用什么技术方案,为什么,有哪些技术问题要解决 ,估计开发期间会碰到什么困难,技术方案以后如何升级,对本项目的技术有什么评价等。
5. 《系统分析》 -- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、软件开发需要考虑的各种问题等。
以《需求分析》为基础,进行详细的系统分析 ( 产品的开发和实现方法 ) ,估计开发期间需要把什么问题说明白,程序员根据《系统分析》,开始在项目主管的带领下进行编码。
6. 《数据库文档》 -- 包括数据库名称、表名、字段名、字段类型、字段说明、备注、字段数值计算公式等。
以《系统分析》为基础,进行详细的数据库设计。
必要时可以用图表解说,特别是关系数据库。
7. 《功能函数文档》 -- 包括变量名、变量初值、功能,函数名,参数,如何调用、备注、注意事项等。
以《系统分析》为基础,进行详细的说明,列出哪个功能涉及多少个函数,以便以后程序员修改、接手和扩展。
8. 《界面文档》 -- 包括软件外观、界面素材、编辑工具、文件名、菜单、按钮和其它界面部件的要求,这里与软件完成后的运行界面是一致的。
9. 《编译手册》 -- 包括服务器编译环境、操作系统、编译工具、 GNU 的 C++ 编译器版本信息、目录说明、程序生成、源程序文件列表、 Makefile 配置及其相关程序的对应关系列表。
客户端的编译过程、编译结果、编译示例、编译环境、操作系统、编译工具、源文件列表和制作安装程序的过程。
10. 《 QA 文档》 -- 包括产品简介、产品原理、产品功能列表、功能描述、功能流程、执行结果、数据库结构、测试要求等,提供给软件测试人员使用。
11. 《项目总结》 -- 包括项目简介、项目参与人员和开发时间、项目风险管理过程、项目功能列表、项目结构特点、技术特点、对项目的升级建议、对以后的项目的建议、人员素质情况等。
1. 《产品简介》 -- 包括公司背景、产品概念、适用范围、产品功能、功能特点、运行要求和公司联系地址。
2. 《产品演示》 -- 包括公司简介、产品背景、产品描述、产品特点、产品作用、适用范围、使用分析、功能模块、解决问题、合作伙伴、成功案例等。
一般用 Power point 或者 VCD 录制软件实现。
3. 《疑问解答》 -- 列出用户关心的问题和处理方法。
用于解答软件的操作功能和解决用户的疑难问题。
4. 《功能介绍》 -- 以《需求分析》为书写基础,包括软件介绍、软件结构、功能列表、功能描述和公司联系地址。
5. 《技术白皮书》 -- 以《技术分析》为书写基础,包括功能实现、技术选型、关键技术问题的解决、技术方案特点、技术升级方向等。
6. 《评测报告》 -- 第三方权威评测报告。
包括评测目的、评测范围、评测环境、评测内容、实测数据、性能表现、结果分析和评测总结等。
7. 《安装手册》 -- 包括系统环境、运行平台、产品安装过程、初始环境设置、安装记录等。
8. 《使用手册》 -- 包括产品简介、功能列表、功能描述和解释、功能操作、客户服务和联系方式等。
9. 《维护手册》 -- 包括产品简介、系统须知、初始...
安装计算机系统的原理是什么?
展开全部 操作系统,即计算机管理控制程序,它是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。
操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。
实际上,用户是不用接触操作系统的,操作系统管理着计算机硬件资源,同时按着应用程序的资源请求,为其分配资源,如:划分CPU时间,内存空间的开辟,调用打印机等。
操作系统的种类相当多,各种设备安装的操作系统可从简单到复杂,可分为智能卡操作系统、实时操作系统、传感器节点操作系统、嵌入式操作系统、个人计算机操作系统、多处理器操作系统、网络操作系统和大型机操作系统。
按应用领域划分主要有三种:桌面操作系统、服务器操作系统和嵌入式操作系统。
操作系统用于组织和控制硬件、软件,从而使安装操作系统的设备以一种灵活但可预期的方式运行。
在本文中,我们将讲述必须具备什么功能的软件才称为操作系统,并向您介绍台式计算机中操作系统的工作原理,以及举例说明如何控制身边的其他操作系统。
操作系统的本质 并不是所有的计算机都具有操作系统。
例如,厨房中控制微波炉的计算机就不需要操作系统。
微波炉有一组要执行的任务,用户可直接输入所期望执行的操作(数字按键和一些预设置的按钮),并且它还具有可以控制的简单且无需更改的硬件。
对于此类计算机,操作系统反而会成为不必要的负担——它将大幅增加产品的开发和生产成本,而且增添不必要的复杂性。
因此,微波炉中装入的计算机只需一直运行一个简单的固化程序即可。
对于其他设备,操作系统需要具有满足以下条件的功能: 实现多种用途以更复杂的方式与用户进行交互满足随时间而改变的需求所有的台式计算机都具有操作系统。
其中最普遍的是微软开发的Windows操作系统、苹果公司开发的Macintosh操作系统以及UNIX系列操作系统(由若干开发人员、公司及合作者共同开发)。
此外,还有针对特殊应用领域的数以百计的其他操作系统,包括专门用于大型机、机器人技术、生产制造和实时控制系统等的操作系统。
操作系统的功能 简单来说,操作系统的功能有两个: 它管理系统的硬件和软件资源。
在台式计算机中,这些资源包括处理器、存储器、磁盘空间等。
(在手机中,这些资源则包括键盘、屏幕、通讯簿、电话拔号器、电池和网络连接。
) 在无需了解硬件的所有详细信息情况下,为应用程序提供稳定、一致的方式来处理硬件。
第一个任务(即管理硬件和软件资源)非常重要,因为多个程序和输入方法会出于自己的目的竞相争夺CPU(中央处理单元)的资源,并且使用内存、存储器及输入/输出带宽。
在此功能中,操作系统扮演着出色的指挥者角色,它既要确保每个应用程序都得到所需的资源,又要保证与所有其他应用程序的兼容,同时还要充分利用有限的系统容量,从而最大程度地满足所有用户和应用程序的需要。
如果有多个特定类型的计算机使用操作系统,或者要更换计算机硬件时,第二项任务(即提供兼容的应用程序接口)就变得格外重要。
一致的应用程序接口(API)使软件开发人员在一台计算机上编写应用程序时,有信心保证此应用程序可以在另一台同一类型的计算机上运行,尽管两台计算机的内存容量或存储器数量各不相同。
即使某种特殊计算机是唯一的,操作系统也可以确保在硬件升级和更新时应用程序得以正常运行。
这是因为,操作系统(而不是应用程序)负责管理硬件和分配其资源。
开发人员面临的挑战之一是要保证他们的操作系统具有足够的灵活性,从而可以在成千上万的计算机设备供应商所提供的硬件上运行。
因为当今的系统可以配置成千上万种不同种类的打印机、磁盘驱动器以及任何可能组合的特殊外设。
操作系统的种类 操作系统拥有广泛的系列,根据它们所控制的计算机类型和所支持应用程序的类型,大致可分为四类。
这些广泛的分类包括: 实时操作系统(RTOS)——实时操作系统用于控制机械设备、科学仪器以及工业系统。
由于RTOS在交付使用时采用的是“全封闭”形式,因此在通常情况下,该系统几乎没有什么用户界面功能,也没有最终用户实用程序。
RTOS的一个重要作用是管理计算机资源,从而在每次执行某种特定的操作时,都严格使用相同的时间。
在一台复杂的机器中,由于其具备可用系统资源而使机器的某一部分以更快的速度运行,这将与因系统繁忙而无法运行一样具有相同的灾难性。
单用户,单任务——顾名思义,该操作系统设计用于管理计算机,使单个用户每次只能高效地执行一个操作。
用于掌上电脑的Palm OS是现代单用户、单任务操作系统的一个良好示例。
单用户,多任务——这就是目前多数用户在他们的台式计算机或笔记本电脑中...
软件开发的有哪些书是必看的
展开全部没有基础的人,如何学习软件开发? 软件开发之路是充满荆棘与挑战之路,也是充满希望之路。
软件学习也是如此,没有捷径可走。
今天我们来谈谈如何学习,希望大家"不走弯路,就是捷径"。
一般学习软件开发都会首先学习一门语言,Java被称为最好的面向对象语言,让我们来看看Java的学习路线。
1 基础语法及JAVA原理 基础语法和JAVA原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。
学习JAVA也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。
2 OO思想的领悟 掌握了基础语法和JAVA程序运行原理后,我们就可以用JAVA语言实现面向对象的思想了。
面向对象,是一种方法学;是独立于语言之外的编程思想;是基于组件开发的基础;属于强势技术之一。
现在还有AO技术。
是OO技术的一种补充。
3 基本API的学习 进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。
我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。
那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。
4 开发工具的用法 在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对JAVA技术本身的注意力。
过了这一阶段你就可以开始熟悉IDE了。
JAVA开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。
5 学习开源软件的设计思想 JAVA领域有许多源代码开放的工具、组件、框架,JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore宠物店等等多如牛毛。
这些可是前辈给我们留下的瑰宝呀。
入宝山而空手归,你心甘吗?对这些工具、框架进行分析,领会其中的设计思想,有朝一日说不定你也能写一个XXX框架什么的,风光一把。
分析开源软件其实是你提高技术、提高实战能力的便捷方法。
6 不局限于JAVA JAVA不要孤立地去学习,需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知