计算机专业就业方向一、 关于企业计算方向企业计算(Enterprise Computing)是稍时髦较好听的名词,主要是指企业信息系统,如ERP
软件(企业资源规划)、CRM软件(客户关系管理)、SCM软件(供应链管理,即物流软件),银行证券软件,财务软件,电子商务/政务(包括各种网站),数据仓库,数据挖掘,商务智能等企业信息管理系统. 企业计算领域对人才的
需求显然永远是数量最大的,因为这是计算机应用最多的领域. 搞这方面的好处是: (1)人才需求量极大,从事企业计算的公司在IT企业中占了大多数。除非在专业上一无特长 ,一般在这一领域总能找到工作。 (2)这方面的入门门槛相对较低(如果你的软件功底不是很深,可考虑这一领域) (3)这方面的大公司较多,大公司要赚大钱,所以多将精力花在企业计算业务上.如果将来想到大公司找一份相对稳定的工作,从事这方面机会要大很多。 但从事这一领域的缺点也是明显的:由于这方面的入门门槛相对较低,虽然这方面的人才需求量是最大的,但将来竞争对手会较多。您会发现,即使他原不是学IT专业的人,也许他突击几个月后,做得照样像模像样。特别是当您年纪渐大后,您可能会发现,后面的年轻人可能很容易追上你的水平。如果您将来到国外去工作,你可能会发现从事这领域的人更多且高手如云。当然,若您在这一领域经过多年企业经验,达到较高境界(如能设计软件架构),则身价永远是高的。国内在这方面人才领域的主要问题是,有经验的高手太少,皮毛了解的人太多。 从事企业计算领域,最重要的技能型技术课程是(1)J2EE架构与程序设计(2)大型数据库系统(如Oracle) (3)基于UML的系统分析与设计。如果说还有什么重要的技能,还可将XML与Web Service技术包含进来,若您在这几个领域掌握较好,则不愁找不到工作。其中尤其以J2EE最为重要,目前J2EE已成为企业计算软件开发的最主要平台。希望同学无论将来想从事何种方向,都应学一下J2EE课程,至少可为将来找工作备一手关键功夫。包括想从事
嵌入式或其它领域的同学,也是很有必要学一下J2EE的,毕竟J2EE是目前最重要的平台之一,即使您将来不想从事企业计算领域,了解一下J2EE也是必要的,就像一门常识课程一样。其它与企业计算关系较密切的技能还包括:Dot Net架构与程序设计、软件测试技术、软件配置管理,该领域较高层次的技能包括数据仓库技术、构件与中间件技术、设计模式等。像通信协议分析与网络程序设计,Unix系统管理等也属有些关系的课程。只一个J2EE便是博大精深的,足够你啃下去的,钻研下去,您会发现你还要学的相关知识还有很多(包括EJB、XML、Web Service、Design Pattern等)。 虽然从事企业计算的人才很多,但以下企业计算领域无论国内外都属稀缺人才:(1)掌握大型ERP系统,主要是SAP系统,包括SAP Basis(系统管理)或SAP ABAP(编程)或SAP功能模块实施(特别是财务模块FI的实施)。 SAP顾问身价是最高的,而且非常难找。其它大型ERP系统,掌握 PeopleSoft、Oracle Fi nacial、J.D.Edward、Siebel等大型ERP软件系统的人也很值钱。这方面的人之所以身价奇高,主要是因为这些软件很专业,特别大,很难有D版可学习,只有特大企业(如世界500 强,90%以上使用SAP)才用得起,而且必须有实际工作经验才能掌握。如果是一个个人人都很容易有机会接触的软件,那么这方面的人通常就不会稀缺。如果大家将来有机会接触学习这些大型ERP软件系统的机会,建议毫不犹豫地抓住,那将捧上一辈的金饭碗。在国外,会SAP的人特别值钱。物以稀为贵,这永远是颠扑不破的真理。SAP的价值不仅是因为他是一个ERP软件,而是其中体现的现代企业管理理念(如根据订货需求自动安排原料采购和生产计划等)。一般500强公司绝不会像国内很多企业那样,用J2EE从头设计企业的 ERP系统(即将是怎样的人力投入,而且设计出来的系统怎么可能是完善的?),一定都会使用 SAP这样成熟的ERP软件。用不起SAP的公司可能会用 J2EE设计ERP系统。 (2)掌握IBM大型机技术的人,如S/390主机,MVS *** 作系统,JCL作业控制语言,COBOL程序设计语言,DB2关系数据库或IMS层次数据库,CISC中间件交易控制系统等IBM大型机专用技术。国内五大银行,以及国外绝大多数银行的后台系统使用的都是以上平台。IBM大型机号称永不宕机而且平台相对封闭(这样最安全),所以这些要求在24*7环境中连续运行的关键应用(术语叫mission critical applications)都采用IBM大型机。这方面的人才之所以稀缺,是因为会大型机的人都是老人(90年代以前搞IT的人),全世界新毕业的IT毕业生不可能再去学IBM大型机(这是一种相对"古老"的技术),没有新人补上,而银行的系统必须维持下去而且银行还要不断开发新业务(如新的存款品种), 虽然对IBM大型机人才的绝对需求量不很大,但相对恒定,银行到哪里找这方面的新人,很难找到. 若好找,花旗软件也不会花那么大的代价去培训我们的实习同学了(去年培训20多个人,听说公司就花了数十万元培训费 ). .(3)其它如掌握数据仓库技术的人在国内也很少. 目前最主流的数据仓库平台应是ORACLE 的数据仓库工具. 在国外,会一些特殊数据仓库的人,如NCR/TEREDATA的人非常难找. 二、关于嵌入式系统方向 嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、 VCD/DVD/MP3 Player、数字相机( DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。 嵌入式系统是软硬结合的东西,搞嵌入式开发的人有两类。 一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、 Board Support Package(像PC的 BIOS一样,往下驱动硬件,往上支持 *** 作系统),最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚,不足是他们更擅长定义各种硬件接口,但对复杂软件系统往往力不从心(例如嵌入式 *** 作系统原理和复杂应用软件等)。 另一类是学软件、计算机专业出身的人,主要从事嵌入式 *** 作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握,我们完全也可写BSP 和硬件驱动程序。嵌入式硬件设计完后,各种功能就全靠软件来实现了,嵌入式设备的增值很大程度上取决于嵌入式软件,这占了嵌入式系统的最主要工作(目前有很多公司将硬件设计包给了专门的硬件公司,稍复杂的硬件都交给台湾或国外公司设计,国内的硬件设计力量很弱,很多嵌入式公司自己只负责开发软件,因为公司都知道,嵌入式产品的差异很大程度在软件上,在软件方面是最有"花头"可做的),所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之地,越是智能设备越是复杂系统,软件越起关键作用,而且这是目前的趋势。 从事嵌入式软件开发的好处是:(1)目前国内外这方面的人都很稀缺。一方面,是因为这一领域入门门槛较高,不仅要懂较底层软件(例如 *** 作系统级、驱动程序级软件),对软件专业水平要求较高(嵌入式系统对软件设计的时间和空间效率要求较高),而且必须懂得硬件的工作原理,所以非专业 IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,很多软硬件技术出现时间不长或正在出现(如ARM处理器、嵌入式 *** 作系统、MPEG技术、无线通信协议等),掌握这些新技术的人当然很找。嵌入式人才稀缺,身价自然就高,越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。搞企业应用软件的IT企业,这个用户的系统搞完了,又得去搞下一个用户的,而且每个用户的需求和完成时间都得按客户要求改变,往往疲于奔命,重复劳动。相比而言,搞嵌入式系统的公司,都有自己的产品计划,按自己的节奏行事。所开发的产品通常是通用的,不会因客户的不同而修改。一个产品型号开发完了,往往有较长一段空闲时间(或只是对软件进行一些小修补),有时间进行充电和休整。另外,从事嵌入式软件的每个人工作范围相对狭窄,所涉及的专业技术范围就是那些(ARM、RTOS、MPEG、802.11等),时间长了这些东西会越搞越有经验,卖卖老本,几句指导也够让那些初入道者琢磨半年的。若搞应用软件,可能下一个客户要换成一个完全不同的软件开发平台,那就苦了。 (3)哪天若想创业,搞自已的产品,那么嵌入式是一个不错的主意,这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌上PDA(南校区门口有广告),施工技术人员用该PDA可当场进行土木概预算和其它土木计算,据说销路特好。我认识的某大学老师,他开发的饭馆用的点菜 PDA(WinCE平台,可无线连网和上网),据他说销路不错,饭馆点点PDA让客户点菜,多显派头档次。我记得00级2+2班当年有一组同学在学 Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目,当时真想建议他们将这个软件做成PDA,估计会有些销路(上海火车站南广场的M acdonald便使用很漂亮的PDA给用户点食品,像摸像样的)。这些PDA的硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (1) 掌握主流嵌入式微处理器的结构与原理(2) 必须掌握一个嵌入式 *** 作系统 (3) 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。 在嵌入式软件方面最重要的课程包括:(1)嵌入式微处理器结构与应用:这是一门嵌入式硬件基础课程,我院用这门课取代了传统的“微机原理与接口”课程(目前国内已有少部分高校IT专业这样做了,因为讲x86微机原理与接口很难找到实际用处,只为教学而已)。我们说过,嵌入式是软硬件结合的技术,搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解,包括ARM的汇编指令系统。若不了解处理器原理,怎么能控制硬件工作,怎么能写出节省内存又运行高速的最优代码(嵌入式软件设计特别讲究时空效率),怎么能写出驱动程序(驱动程序都是与硬件打交道的)?很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器,将来若同学到公司中从事嵌入式软件开发,公司都会给你一本该设备的硬件规格说明书 (xxx Specificatio n),您必须能看懂其中的内存分布和端口使用等最基本的说明(就像x86汇编一样),否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥,这主要是硬件课程都较抽象的原因,等我们的嵌入式实验室10月份建好后,您做了一些实验后就会觉得看得见摸得着。还有同学对ARM汇编不感兴趣,以为嵌入式开发用C语言就足够了。其实不应仅是将汇编语言当成一个程序设计语言,学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人,怎么能在该处理器写出最优的C语言代码。在嵌入式开发的一些关键部分,有时还必须写汇编,如Bootloader等(可能还包括BSP)。特别是在对速度有极高要求的场合(如DSP处理器的高速图像采集和图像解压缩),目前主要还要靠汇编写程序(我看到过很多公司是这样做的)。当您在一个嵌入式公司工作时,在查看描述原理的手册时,可能很多都是用汇编描述的(我就遇到过),这是因为很多硬件设计人员只会写或者喜欢用汇编描述,此时您就必须看懂汇编程序,否则软硬件人员可能就无法交流。很多嵌入式职位招聘时都要求熟悉汇编。 用。 (2) 嵌入式 *** 作系统类课程除了WinCE的实时性稍差外,大多数嵌入式 *** 作系统的实时性都很强,所以也可称为实时 *** 作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式 *** 作系统(当然掌握两个更好),这在嵌入式的所有技术中是最为关键的了。 目前最重要的RTOS主要包括:第一类、传统的经典RTOS:最主要的便是Vxworks *** 作系统,以及其Tornado开发平台。Vx works因出现稍早,实时性很强(据说可在 1ms内响应外部事件请求),并且内核可极微(据说最小可8K),可靠性较高等,所以在北美,Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中,几乎非Vxworks莫属。Vxworks的很多概念和技术都和Linux很类似,主要是C语言开发。像Bell- alcatel、Lucent、华为等通信企业在开发产品时,Vxworks用得很多。但Vxworks因价格很高,所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转(听说华为目前正在这样转)。但无论如何, Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时 *** 作系统还有pS OS、QNX、Nucleus等RTOS。 第二类、嵌入式Linux *** 作系统:Linux的前途除作为服务器 *** 作系统外,最成功的便是在嵌入式领域的应用,原因当然是免费、开源、支持软件多、呼拥者众,这样嵌入式产品成本会低。Linux本身不是一个为嵌入式设计的 *** 作系统,不是微内核的,并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类:一类是专为嵌入式设计的已被裁减过的L inux系统,最常用的是uClinux(不带MMU功能),目前占较大应用份额,可在ARM7上跑;另一类是跑在ARM 9上的,一般是将Linux 2.4.18 内核移植在其上,可使用更多的Linux功能(当然uClinux更可跑在ARM 9上)。很多人预测,嵌入式Linux预计将占嵌入式 *** 作系统的50%以上份额,非常重要。缺点是熟悉Linux的人太少,开发难度稍大。 第三类、 Windows CE嵌入式 *** 作系统:Microsoft也看准了嵌入式的巨大市场,MS永远是最厉害的,WinCE出来只有几年时间,但目前已占据了很大市场份额,特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合,WinCE目前已很流行(据说有一家卖工控机的公司板子卖得太好,以至来不及为客户裁减WinCE)。WinCE目前主要为4.2版(. NET),开发平台主要为WinCE Platform Builder,有时也用EVC环境开发一些较上层的应用,由于WinCE开发都是大家熟悉的VC++环境,所以我院学过Windows程序设计课程的同学都不会有多大难度,这也是WinCE容易被人们接受的原因,开发环境方便快速,微软的强大技术支持,WinCE开发难度远低于嵌入式Linux。对于急于完成,不想拿嵌入式Linux冒险的开发场合,WinCE是最合适了(找嵌入式Linux的人可没那么好找的),毕竟公司不能像学生学习那样试试看,保证开发成功更重要。根据不同的侧重点,WinCE还有两个特殊版本,一个是MS PocketPC *** 作系统专用于PDA上(掌上电脑),另一个是MS SmartPhone *** 作系统用于智能手机上(带PDA功能的手机),两者也都属于WinCE平台。在PDA和手机市场上,除W inCE外,著名的PDA 嵌入式 *** 作系统还有Palm OS(因出现很早,很有名)、Symbian等,但在WinCE的强劲冲击下,Palm和Symbian来日还能有多长?我院可能是全国高校中唯一一家开设专门的"Windows CE嵌入式 *** 作系统"课程的学校,这主要是基于以下原因:我院本身前面便有Windows程序设计课程,同学学过VC++后再学WinCE,非常方便自然,通过学习WinCE 同样也可了解嵌入式软件的一般开发过程,对Linux有惧怕心理的同学也很合适。很显然,嵌入式Linux永远不可能替代 WinCE,而且将来谁占份额大还很难讲,毕竟很多人更愿意接受MS的平台,就像各国政府都在大力推LINUX已好长时间,但您能看到几个在PC机上真正使用LINUX的用户?据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑二是微软亚洲研究院对我院WinCE课程的支持计划,我们也很希望将来我院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一,他们很需要精通WinCE的人。总结关于嵌入式 *** 作系统类课程,若您觉得自己功底较深且能钻研下去,则可去学嵌入式 Linux;若您觉得自己VC++功底较好且想短平快地学嵌入式开发,则我院的WinCE课程是最好的选择。 (3) 嵌入式开发的其它相关软件课程搞嵌入式若能熟悉嵌入式应用的一些主要领域,这样的人更受企业欢迎。主要的相关领域包括: A、数字图像压缩技术:这是嵌入式最重要最热门的应用领域之一,主要是应掌握MPEG编解码算法和技术,如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此,我院已预订了一位能开设数字图像处理课程的博士。 B、通信协议及编程技术:这包括传统的TCP/IP协议和热门的无线通信协议。首先,大多数嵌入式设备都要连入局域网或Internet,所以首先应掌握 TCP/IP协议及其编程,这是需首要掌握的基本技术;其次,无线通信是目前的大趋势,所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议802.11系列,Bluetooth,以及移动通信(如GPRS、GSM、CDMA等)。 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:DSP是Digital Signal Process数字信号处理的意思,DSP处理器通过硬件实现数字信号处理算法,如高速数据采集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程,对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信号处理等课程基础,对于学习MPEG编解码原理会有很大帮助。 (4)嵌入式开发的相关硬件基础 对于软件工程专业的学生,从事嵌入式软件开发,像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外,汇编语言、C/C++、数据结构和算法、特别是 *** 作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别 *** 作系统级软件,那将是我们的优势。我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展过来的,只是单片机不带 OS,而现在很多嵌入式应用越来越复杂,以至不得不引入嵌入式 *** 作系统。另外,为追求更高速的信号处理速度,现在在一些速度要求较高的场合,有不少公司是将一些DSP算法,如MPEG压缩解压缩算法等用硬件来实现,这就涉及到HDL数字电路设计技术及其FPGA/IP核实现技术,这方面的人目前市场上也很缺。 三、关于游戏软件方向 将游戏软件人才称为数字媒体软件人才可能更好听些,包括游戏软件策划(最缺游戏策划的人)、游戏软件美术设计、游戏软件程序设计等多方面的人才,对软件学院,游戏软件程序设计当然是最合适的了。 游戏软件人才的确目前很缺,听说很多游戏软件公司苦于没新人才补充,特别是没有高手补充,不得不相互挖人才,以至将游戏软件人才身价越抬越高。网上说*** 教育部刚刚批准成立了***第一家专门培养四年制游戏软件人才的本科大学。其实国内很多大学,特别是软件学院都有搞游戏软件人才的设想,但目前很少有做成的,主要原因是找不到能上游戏软件课的教师,听说有个学校只能花很大的价钱从Korea找老师来上课,果真缺到此等地步? 已有很多青少年沉湎于网游而颓废的实例,好在还不至于上升到制造精神鸦片的高度,所以开发游戏软件的人也不必每日惭悔(但开发儿童益智类游戏软件的人是不需惭悔的),如果想想这是为发展民族软件产业做贡献,那反倒是一件有意义的事情了。不过听一家游戏软件公司的老板讲,搞游戏软件开发是非常辛苦的。 若想自己创业,搞搞游戏软件是不错的主意。现在网上网站或公司都在收购游戏软件(特别是手机游戏软件,因为手机游戏用户可选从网站上download到手机上,不像网游那么复杂),按download次数分成或一次性收购的都有。我们的同学在校期间是否也可发点小财?搞得好,说不定可卖到国外网站,直接挣 $$$呢。 大致游戏分成以下几类:(1) PC类游戏,包括单机和网游。这类游戏开发平台基本上都是基于VC++和DitrectX(如DirectShow,DirectDraw,D3D等, DirectX资料可直接到MS网站上查)。DirectX和Op enGL是两个主要的图形标准,OpenGL跨平台(Unix/Windows上都可跑),尽管很多搞研究的人对OpenGL赞不绝口,将DirectX骂得一文不值,但事实是,在Windows平台上,Direct X是最快最方便的,所以在Windows平台上的游戏还是DirectX当家。 (2) 手机游戏:目前手机游戏主要开发平台有两类:第一类手机游戏是J2ME平台(Java 2 Micro Edition),J2ME本是为嵌入式平台设计的Java ,但由于Java生来就需要Java虚拟机(JVM)来解释,所以在嵌入式产品很少用J2ME (太慢太耗内存)。但在手机游戏中J2ME倒有梦渲diff -Nurp linux-2.4.31/Documentation/Configure.help linux-2.4.31-layer7/Documentation/Configure.help而你的内核版本如果不为linux-2.4.31,而需要打入此patch,则进行 本机内核相应linux-2.4.31/目录,即Documentatio的同级目录运行patch -p1 <目录/补丁文件名.patch,即可。代码:--- old/modules/pcitableMon Sep 27 11:03:56 1999+++ new/modules/pcitableTue Dec 19 20:05:41 2000如果使用参数-p0,就表示从当前目录,找一个叫作new的目录,在它下面找一个叫modules的目录,再在它下面找一个叫pcitableMon的目录。如果使用参数-p1,就表示忽略第一层,从当前目录找一个叫modules的目录,在它下面找一个叫modules的目录。这样会忽略掉补丁头提到的new目录。项目需求分析怎么写
项目需求分析的概念需求分析是指理解用户需求,就软件功能与客户达成一致,估计软件风险和评估项目代价,最终形成开发计划的一个复杂过程。(这个和我在微软体验到的又不太一样,微软的需求分析大多是市场人员和用户协助小组的人去评估用户的接受程度,这一点也可以理解,因为公司的性质有根本差别)在这个过程中,用户的确是处在主导地位,需求分析工程师和项目经理要负责整理用户需求,为之后的软件设计打下基础。需求分析阶段结束后,要求得到:1.SRS文档(System Requirement Specificatio郸)2.DRM 文档;3.Acceptance Plan. 从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。
狭义上理解:需求分析指需求的分析、定义过程。 一、为什么要需求分析需求分析就是分析软件用户的需求是什么.如果投入大量的人力,物力,财力,时间,开发出的软件却没人要,那所有的投入都是徒劳.如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的.(相信大家都有体会)比如,用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件,当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,痕不得找块豆腐一头撞死.
需求分析之所以重要,就因为他具有决策性,方向性,策略性的作用,他在软件开发的过程中具有举足轻重的地位.大家一定要对需求分析具有足够的重视.在一个大型软件系统的开发中,他的作用要远远大于程序设计. 二、需求分析的任务简言之,需求分析的任务就是解决"做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求.三、需求分析的过程需求分析阶段的工作,可以分为四个方面:问题识别,分析与综合,制订规格说明,评审.
问题识别
就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准.这些需求包括:功能需求(做什么),性能需求(要达到什么指标),环境需求(如机型, *** 作系统等),可靠性需求(不发生故障的概率),安全保密需求,用户界面需求,资源使用需求(软件运行是所需的内存,CPU等),软件成本消耗与开发进度需求,预先估计以后系统可能达到的目标.
分析与综合
逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分.最后,综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型).
制订规格说明书
即编制文档,描述需求的文档称为软件需求规格说明书.请注意,需求分析阶段的成果是需求规格说明书(好象软考曾经考过这个问题),向下一阶段提交.
评审
对功能的正确性,完整性和清晰性,以及其它需求给予评价.评审通过才可进行下一阶段的工作,否则重新进行需求分析。 四、需求分析的方法需求分析的方法有很多.这里只强调原型化方法,其它的方法如:结构化方法,动态分析法等(个人认为,对初学者不必深究这些方法,实际上我也从来没用过这些方法)在此不讨论.
原型化方法是十分重要的(是软考等常考的知识点).原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能.
原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能,但是这个......
软件的需求分析怎么写啊?
1. 引言
1.1 编写目的:编写此文档的目的是进一步定制软件开发的细节问题,便于用户与开发商协调工作.本文档面向的读者主要是项目委托单位的管理人员.希望能使本软件开发工作更具体.
1.2 项目背景
1.2.1项目委托单位:****公司
1.2.2开发单位:***公司
1.3 定义
1.4参考资料
2. 任务概述
2.1 目标:
<1>决策支持:根据公司的要求及时提供所需报表及文件,并在适当时候对各部门领导给予销售及进货等方面的提示
<2>提高效率:利用软件进行管理,避免人工管理的失误以及 延迟性,从而实现高效率的管理.
2.2 运行环境:
<1>硬件方面:Pentium级处理芯片
1兆显存的兼容显卡
256色,800*600的兼容显示器
标准兼容打印机
<2>软件方面: WIN95 *** 作系统
2.3 条件与限制:
编程用计算机一台
完成期限2000/7/1
无资金供给
3. 数据概述
数据流程图如下:
3.1 静态数据:包括系统登录密码,各数据库所在位置,系统分析原始数据
3.2 动态数据:包括各数据库内各项显示数据,用户登录信息,系统时间
3.3 数据库描述:
人事管理数据库:公司内人员的个人详细信息,包括档案信息
销售管理数据库:当日销售记录及以前的销售统计,用于销售分析
财务管理数据库:公司内部账目及收支情况详表
技术管理数据库:公司所需各技术档案的详细记录(包括文档)
3.4 数据字典:
<1>数据流词条描述:
1.数据流名:登录信息
来源:用户的输入
去向:系统内部检验部分
组成:用户名,密码
流通量:每次登录输入一次
2.数据流名:登录结果
来源:系统
去向:用户
组成:返回信息
流通量:每次登录返回一次
3.数据流名:输入修改信息
来源:用户
去向:系统判断部分
组成:根据各数据库内容而不同
流通量:依用户输入而定
4.数据流名:反馈信息
来源:系统判断部分
去向:用户
组成:系统经判断后发回的字符数据
流通量: 依系统当前信息而定
5.数据流名:识别信息
来源:系统内部检验部分
去向:系统判断部分
组成:系统各数据库的标识信息
流通量:用户每次输入流通一次
6.数据流名:处理信息
来源:系统判断部分
去向:各数据库处理部分
组成:读取/修改标识,读取/修改的变量名称
流通量:用户每次输入流通一次
7.数据流名:读取修改
来源:系统判断部分
去向:系统各数据库
组成:读取/修改标识,读取/修改内容
流通量: 用户每次输入流通一次
<2>数据文件词条描述:
1.数据文件名:人事数据
简述:存储人员信息
数据文件组成:人员的各项信息(以CString类型为主)
2.数据文件名:销售数据
简述:存储当日及从前的销售记录
数据文件组成:销售的各项信息
3.数据文件名:财务数据
简述:存储财务管理信息
数据文件组成:财务管理的各项记录
4.数据文件名:技术数据
简述:存储公司内部使用的技术档案信息
数据文件组成:技术档案名称,内容
<3>加工逻辑词条描述:
1.加工名:检验
......
项目目标与任务需求分析应该怎么写?
项目目标与任务需求分析=项目的目标和任务,目标和任务是什么就写什么了
项目需求报告要怎么写?
听棠的“客户需求何时休”深刻的披露了这个问题存在的根源。需求分析,不仅仅是拿到客户的需求,更重要的是还需进行分析,了解细节,并就细节跟客户咨询,获取最详细的资料。客户所能提供给你的只是他们想到的功能需求,很多问题并不在他们考虑的范围之内,如果作为项目承担方没有去做分析,简单的按照功能要求去设计、规划,最终出来的系统是很难完全符合客户的业务流程的,这时,自然需要更改,被看成了需求的更改。其实,都是缺乏分析所一手造成的。问题等到系统出来了才被发现,这样的系统本身就是先天不足的了。听棠所说到的几点,感受特别深:“其实问题出在开头,客户需求只是软件需求分析的一部分,虽然是比较重要的一部分,但也不要只是去记客户的需求,而是要把客户的需求进行分析”还有客户的需求本身会有矛盾(这矛盾是指在逻辑角度来讲),客户本身是意识不到的,只有在分析设计时,才会分析出这里的矛盾,而这些问题,如果在期初时,软件负责人不分析,而是纯粹的“听从”客户要求去做,当暴露这些问题时,你怪客户也没用啊。项目需求分析报告,在了解客户需求时,不要不动脑子,不要一味的点头说“I C”,其实在表面的业务里面可能包含着N多的细节,这些细节是需要你反问客户的,只有当你提的问题越多,最终获取的需求最具体,才能让项目越顺利。而且有很多问题,都是在你的反问中,客户也才开始思考本来没思考过的问题,客户也会找到一种合理的需求给你,有人会觉得这样了解客户需求未免太麻烦了。至于一些在技术上会遇到问题的地方,也要告诉客户,别以为到时候再说,客户是不关心你的技术细节的,但你如果给他解释的话,他也会试着理解的。客户的需求本身是无休止,因为他们本身也在变,但当你期初的分析合理,后面的变动也将在逻辑上变动,相信代价已经不会那么大了。这其实也体现了系统的扩展性。需求分析,是一个项目提出方和承担方相互沟通的过程,一方是系统的使用者,一方是系统的制造者,在系统制造过程中,只有双方相互配合,共同对系统进行设计才能最后达到使用的要求。客户是业务上的熟悉者,对业务流程有非常清晰的了解,但是,对于软件需求方面的描述是不了解的,他们所能提供的只是他们最终要达到的功能,但是,这其中包含的业务流程是非常复杂的。我们拿到客户需求后,应该根据功能、流程进行初步的设计,构造出业务流程图,再让客户进行评审,提出业务流程上不对的地方进行修改。这样来回的交流,最终才能取得较全面的需求,并减少后期的修改。
如何做需求分析
随着技术的不断发展和用户对网站功能性的需求不断提高,如今网站项目的设计已经不能再仅仅简单地利用静态Html文件来实现,与前几年网站设计由一两名网页设计师自由的创作相比,网站项目的设计和开发越来越像一个软件工程,也越来越复杂,网站项目的设计和开发进入了需要强调流程和分工的时代,建立规范的、有效的、健壮的开发机制,才能适应用户不断变化的需要,达到预期的计划目标。
网站项目管理(WPM)的含义为Web-based Project Management,即以Web 应用程序为主要表现方式的架构来进行的项目设计及管理,这样的架构中包含了浏览器、网络和Web
服务器等关键主体,主要体现在网站设计、以浏览器为客户端的Web应用程序开发(例如信息类网站、网上商店、虚拟邮局、客户关系管理。)等项目管理中。
按照笔者的经验,网站项目管理可以分为以下l六个阶段进行控制:
1. 需求分析及变更管理
2. 项目模型及业务流程分析
3. 系统分析及软件建模
4. 界面设计、交互设计及程序开发
5. 系统测试和文档编写
6. 客户培训、技术支持和售后服务
需要说明的是,这些阶段虽然具有一定的延续性,但是并非完全隔断的,例如需求变更管理和测试工作、文档编写都是贯穿整个项目过程的,许多工作时交叉进行或同时进行的。
(一)如何做好需求分析及变更管理?
业务员与客户进行的沟通,撰写需求分析报告是项目展开的基础。项目是以客户的需求为中心,而不是为技术而迁就需求。
一:让客户畅所欲言,罗列出所有的需求
让用户将所有的想法尽可能的阐述清楚,并把所有的要求罗列出来,不要遗漏。这时候不应该害怕“勾引”起客户的潜在需求而增加设计开发的工作量,从而被今后客户无止境的变更拖入泥潭,直接明白地跟客户把问题和要求一条条地列出来,把条理、归纳、分析先都扔到一边去,将用户最原始、最完整的要求准确地记录下来就完成了第一步的工作。
很明显,假如客户的需求做的都不完整,随时可能会产生意想之外的变更,甚至这个变更会破坏已经做的模型及结构,那么这个项目从开始就注定了会失败;比如站点所有的功能都实现了,本地测试起来也没有什么问题了,但是你却不知道客户的系统是要承受每天100万独立IP的访问,而你原来想当然的以为了不起就是1万独立IP访问的访问流量,稍微有经验的开发人员都会明白这样的设计是个灾难,无论是应用服务器、数据库还是程序全部要重新开发!
二:透过现象分析潜在的需求
很多情况下客户并非专业人士,在他们滔滔不绝的描述中不能指望他们帮助我们整理出重点和技术难关,这需要我们去为客户进行分析、归纳和整理,尤其是客户谈的不多却又是技术上实现难度和强度很高的地方特别值得注意。
客户往往对需求的概念是非常模糊的,大多时候给出的需求都是笼统而且尺度难以控制的,这就要求业务人员在倾听了客户的详细说明以后,帮助客户进行整理和分析,同时预测客户在开发过程中变更及今后应用中可能进行修改升级的潜在需求。
比如在为客户设计办公自动化系统的时候,也许就要为客户预留将来与他们的业务单位进行交互的通道;在设计邮件系统的时候要考虑可能会需要广告管理服务器;设计网络电子商店时今后增加库存产品进销存统计分析等等;限于时间财力的考虑,客户通常能够接受分阶段实施的开发过程,在需求分析时,提早为客户设想到今后的需求变更除了使项目开发更加顺利以外,也为今后业务的进一步深入打下......
做程序,项目需求分析,一般做多久。
国内很多老一辈的根本不注重这一点。但国外的,很小的开始实战写需求了。因为他们一直认为需求是相当重要。每次都做项目前都是,乱七八 *** 的需求分析,像个草搞。偶尔做一下,改一下。改一下需求,那么,原来的框架,编码都要改。而我同学他们的虽然做需求做了一个月多,但却是按需求很顺利的一气搞定。我问的是:无论是多大,还是多小的项目,都要把需求写清楚再做。
java 项目需求文档要怎么写?
需求文档一般分两类
需求调研报告
需求分析报告
调研报告:是记录的用户的原始需求,基本上可以算做是和用户沟通的原始记录。
分析报告:是对调研报告进行归类分析的结果。一个比较全面的文档了,在这个文档里面一般包含以下内容:
项目的背景
项目的目标
项目的范围
用户特点
相关技术、规范标准等
相关约束
用户的组织结构、角色等
用户需要的功能点,这些功能的优先级,业务流程、功能特点,有没有特殊需求等等
总而言之,需求分析报告的下一站是给设计人员的,设计人员看到需求分析报告就知道系统应该包含哪些功能点、权限设计、流程设计等,这些内容都可以直接从需要分析报告里面得出
评论列表(0条)