软件生产的发展划分为三个年代:(1)程序设计时代:这一时期,软件的生产主要是个体手工劳动的生产方式。(2)程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。(3)软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
软件的定义是什么?有哪些主要特点? 简述软件开发过程需要哪些阶段?并说明个阶段的任务是什么?
软件是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。另也泛指社会结构中的管理系统、思想意识形态、思想政治觉悟、法律法规等等。
软件的特点
一、软件不同于硬件,他是计算机系统中的逻辑实体而不是物理实体,具有抽象性。
二、软件的生产不同于硬件,它没有明显的制作过程,一旦开发成功,可以大量拷贝同一内容的副本。
三、软件在运行过程中不会因为使用时间过长而出现磨损、老化以及用坏问题。
四、软件的开发、运行在很大程度上依赖于计算机系统,受计算机系统的限制,在客观上出现了软件移植问题。
五、软件开发复杂性高,开发周期长,成本较大。
六、软件开发还涉及诸多的社会因素。
软件开发过程(Software development process)即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
需求分析
1.相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。[1]
2.系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。
3.系统分析员向用户再次确认需求。
概要设计
首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
详细设计
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。
编码
在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候吗?从来没有!
测试
测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。软件测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试范围,可以分为模块测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入范围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营状况并持续修补升级,直到这个软件被彻底淘汰为止。
软件交付
在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。
《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。
《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。
验收
用户验收。
软件开发有哪几个阶段,每个阶段的任务是什么
软件开发中的V型模型(包括测试):需求分析-->系统方案-->概要设计-->详细设计-->编码-->单元测试-->集成测试-->系统测试。每个阶段的任务具体是:需求分析主要是将用户需求转化为开发需求,其中明确用户需求很重要,这将最终决定软件开发的需求和软件产品的功能。系统方案应该是在明确了用户需求之后,将开发需求确定下来之后,将软件按功能进行划分成各个子系统,降低软件开发的复杂度,便于后续的开发;概要设计则是针对各个子系统进行的功能分解,子系统分解为功能更加单一的模块,需要明确定义子系统之间的接口;详细设计是针对模块的设计,将模块进一步细化,需要抽象的函数,数据的组织等等。之后就是编码工作了,即软件的实现,这个才是程序员实际做的事情,但是是以之前的详细设计文档为基础的。大概就这么多。顺便说下测试:单元测试时针对编码进行的测试,主要还是验证模块编码的逻辑是否正确,以及语句是否能够完全走到,即所谓的语句覆盖率。集成测试是针对详细设计进行的测试,主要还是验证模块的功能实现正确性,各个模块之间的接口是否正确等等;系统测试是针对概要设计的测试,测试的是子系统功能的正确性。最终的产品交互测试则是针对系统方案进行的验证工作。不知道说的是否准确,如有错误,请多多包涵。
计算机的发展分为四个阶段,那么各个阶段的特征是什么?
第一代计算机 1946 1957 电子管 运算速度较低,耗电量大存储容量小。
第二代计算机 1958 1964 晶体管 体积小,耗电量较少,运算速度高,价格下降。
第三代计算机 1965 1971 中小规模集成电路 体积功能进一步减少,可靠性及速度进一步提高。
第四代计算机 1972年至今 大规模及超大规模集成电路 性能到规模提高,价格大幅度降低,广泛应用于社会生活的各个领域,走进办公室和家庭
软件实施工程师各个阶段发展方向(详细)
1、一定的技术基础.
身为软件实施顾问,你不能不了解你的产品,当然你可以了解得粗略,不必象技术工程师那样精通,你要能够回答客户提出的大部分问题,需要你掌握的知识非常综合、全面——强调的是广度而不是深度,当然,如果你的深度够好,那么会更加有利.如果你的深度不够,经常回答不上客户的问题,不要紧,关键是你要留一个缓冲余地,你要知道,你应该从哪里获得帮助和支持.优秀的实施顾问,应该懂得如何调度资源.
以下为我认为实施顾问应该掌握的技术:
(1)ERP软件本身,如SAP, ORACLE中的某个或某些模块,用友、金蝶等.
(2)系统管理知识,包括WINDOWS 2000,WINXP.
(3)数据库知识,包括SQL2000、ORACLE、DB2等等,SQL技能.细分可为查询分析器的使用,数据表的操作,报表的基本技能等等.
(4)网络知识.
(5)一定的硬件知识.
2、行业知识.
行业知识浩如烟海,没有人可以掌握全部.把握好你的定位,你要了解全部的产品有什么,但你要选定一个方向,在这方面成为专家.既要广博,也要有自己的专精所在.
不要贪多,很多东西知道框架即可,用的时候懂得较快地搜索、查找出来即可.时间精力极为有限,有些东西要懂得放弃.
3、管理知识和项目管理知识.
应当具备丰富的管理知识.要与客户保持好关系,要有良好的服务意识.客户管理层是项目推进中最好的资源,一定要取得他们充分的信任和合作.如果你不了解管理知识,你难以让客户信服和接受.软件之需要实施顾问,就在于实施顾问能够通过资源调度使它具备生命力,没有产品是尽善尽美的,但是一名尽责的、优秀的实施顾问,却可以弥补产品本身的不足.网络上管理知识应有尽有,只看个人的吸收能力.另外的一个好的学习途径就是客户方管理人员,他们的管理经验更有实效性.,在项目的实施过程中,我们事实上就可以学到很多管理知识.这也是这项工作的诱惑和魅力之一.
作为实施顾问,项目管理非常重要.要掌握基础的项目管理知识,掌握项目管理常用的软件工具.如果你是由技术工程师转型而来,观念上的转变至为重要.实施顾问不是替客户做事,而是指导客户做事.尽管你眼看着一个简单的问题却在客户手中无法解决,禁不住着急,想要代做,也请你管住自己.牢牢记住实施顾问的定位,不要混淆.事实证明,这是很多做惯了技术服务的工程师在转型到实施顾问时的一个瓶颈.身为实施顾问,你的专业化,恰恰是体现在“项目管理”上面.项目管理的知识,可以充分利用互联网,用BAIDU、GOOGLE去搜吧.然后,不要浮躁,用心体会。
4、英语水平.
SAP以及其他重要的ERP系统,大多都是西方人开发的,相关资料,尤其是最新的资料基本都是英文的,如果英语不灵,那真有跛腿的味道.况且用SAP的公司,大多是跨国企业,顾问本身又是一个很注重交流沟通的工作,,良好的英文水平,绝对是非常必要的.
5、你应有一个清爽整洁、职业化仪表.
要知道顾问基本上是一个服务性质的工作,得到客户方的认可,让人家喜欢和你相处.不修边幅的人,不适合担任实施顾问.你的气质与风度,你能否征服你的客户让他们接受你,信任你,是项目顺利进展的关键.曾有客户讲过,如果他们不接受顾问本身,也就难以接受顾问带来的一切.除了相貌,气质,还有谈吐.彬彬有礼、条理清晰、善于表达,是良好沟通的基础.当然,自信心也很重要.而职业化,不仅仅是实施顾问的要求,它是身在职场的人们都具备的常识.如果想在这方面得到提高,可以去买本公关礼仪方面的书或者查询网站上的相关知识.另外可以多留心一下那些公认有修养、善谈吐人士的言谈举止,逐渐地养成习惯,固化下来.
6、学习能力.
上述几条,不是独立存在,而是相辅相成,技术、管理、企业业务流程,都需要不断地学习.知识是日新月异的,与时俱进,活到老学到老,你往往需要在知识上走在客户的前面,有时候你要向客户学习,要学的东西永远太多,想要成为一名优秀的实施顾问,时间管理是要掌握的,如何合理的安排时间、有效利用时间是一门大学问,需要自己不断探索、总结.唯有热爱这个行业,对它感兴趣,甚至到了吃饭、走路、坐车、如厕也常常思考相关的问题.(睡觉就不要想了,容易失眠.: ) ) 这样算是进入状态了.你才有希望成为佼佼者.
7、一定的运气和机遇
谋事在人,成事在天.机遇也是非常重要的,一定要善于寻找机遇,创造机遇,抓住机遇.
想要成为优秀的顾问,需要一个漫长的过程,要多多用心,潜心体会,自然会有心得.常常要耐得住寂寞清静.多付出,不要太在意回报.坚韧不拔,终将修成正果.优秀的实施顾问,前途必然是光明的.
软件工程有哪些主要阶段?每个阶段的主要工作是什么
三个阶段:
1.定义阶段:可行性研究初步项目计划、需求分析
2.开发阶段:概要设计、详细设计、实现、测试
3.运行和维护阶段:运行、维护、废弃
1、 简述计算机的四个发展阶段。
1.第一代计算机(1946年~1957年) 主要元器件是电子管。
2.第二代计算机(1958年~1964年) 晶体管时代。
3.第三代计算机(1965年~1970年) 以中、小规模集成电路取代了晶体管.
4.第四代计算机(1971年至今) 采用大规模集成电路和超大规模集成电路。
现在,有进入了智能计算机阶段.
软件工程专业的发展过程
1960年代末期,计算机程序在复杂度、规模和应用领域等方面的增长引人注目,这导致上千亿资金花费在软件开发上,许多人的工作和生活依赖于软件开发的成果。软件产品帮助人们获得更高的工作和生产效率,同时也给人们提供一个更加安全、灵活和宽松的工作与生活环境。尽管有很多成功之处,许多软件产品在成本、工期、质量等方面存在严重问题。主要原因是:
软件产品是复杂的人造系统,具有复杂性、不可见性和易变性,难以处理。个人或小组开发小型软件非常有效的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。
1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,提出了“软件工程”的术语。这个时期有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。
1972年IEEE学会的计算机协会第一次出版了《软件工程学报》。此后,“软件工程”这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称里使用“软件工程”这个术语,很多大学的计算机科学系先后设立软件工程课程。 软件工程早期的发展是理清软件工程过程的各种活动,提出软件生命周期的概念和软件开发的瀑布模型,制定软件生命周期中主要活动的质量标准。
1991年,ACM和IEEE/CS的计算教程CC1991专题组将“软件工程”列为计算学科的九个知识领域之一。
1980年代末到1990年代初,计算机硬件普遍采用大规模集成电路。在单主机计算模式下,基于瀑布模型的软件开发过程和结构式过程语言编程范型占主导地位。软件工程得到巨大的发展。以阶段论看待软件生命周期,给规范和规程的制定、工具研制、预算管理、工程核算、组织质量过程带来极大方便,基于瀑布模型的软件工程的研究在软件需求分析、软件设计、软件测试、软件质量保证、软件过程改进等多个子领域得到深化和扩展,形成了软件工程学科的雏形。 1970年代末期,美国制定研究生教育计划时采纳了IEEE/CS提出的、制定软件工程教程的建议,为软件工程教育打下了基础。
1980年代末和1990年代初,软件工程教育得到卡内基-梅隆大学软件工程研究所(SEI)的培育和支持。他们调查软件工程教育的现状;出版软件工程推荐教程;在卡内基-梅隆大学建立软件工程硕士教育计划;组织和推动软件工程教育者研讨会。
1993年,IEEE-CS和ACM为把软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。随后,该指导委员会被软件工程协调委员会(SWECC)替代。SWECC给出了“软件工程职业道德规范”、“本科软件工程教育计划评价标准”和“软件工程知识体”(SWEBOK)。SWEBOK全面描述了软件工程实践所需的知识,为开发本科软件工程教育计划打下了基础。
2004年8月,全世界五百多位来自大学、科研机构和企业界的专家、教授经过多年的努力,推出了软件工程知识体、软件工程教育知识体(SEEK)两个文件的最终版本,标志着软件工程学科在世界范围正式确立,并在本科教育层次上迅速发展。软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。 中国的软件工程基础技术研究始于1980年代初。当时,软件开发方法学成为研究热点。1980年在北京召开了中国首届软件工程研讨会,之后,许多高等学校和科研单位陆续开展了软件开发方法学、CASE工具和环境、面向对象技术等软件工程基础技术的研究。“软件工程核心支撑环境”,“软件工程技术、工具和环境的研究与开发(SEP)”等课题列入国家重点科技攻关项目,其科研成果代表了中国软件工程技术研究的水平。与此同时,部分高校面向研究生开设了软件工程课程,开始引进和编写软件工程教材。1984年和1985年,国家科委选择重点高校招收了两批(200人)软件工程硕士,为软件工程教育积累了经验。此后,高等院校开始为本科开设软件工程课程。部分高校从1988年开始试办软件工程专业(后来在学科调整时又归并到计算机科学与技术学科)。
1990年代,软件重用和软件构件技术成为研究热点,面向对象方法和技术成为软件开发的主流技术,软件过程研究及软件企业的过程改善受到广泛重视。随着软件工程技术的发展,高校又增设了面向对象技术,支持面向对象技术的Smalltalk语言、软件过程管理、软件测试技术、软件过程度量等课程,软件工程领域的教学内容不断丰富,教学时数不断增加,教学改革不断深入。
为适应中国经济结构战略性调整,实现软件产业和软件人才培养的跨越式发展,2000年发布了18号文件《国务院关于印发鼓励软件产业和集成电路产业发展的若干政策的通知》,2001年经教育部和国家计委批准,全国成立了35所示范性软件学院。各高校软件学院和计算机学院(系)为培养高层次、实用型、复合型、具有国际竞争力的人才,要求学生在思维创新的基础上,提高技术创新和工程创新能力,提高软件工程实践和软件工程管理能力。这有效地促进了中国软件工程学科的发展,中国软件工程教育开始走向成熟。
转载请注明出处51数据库 » 描述软件发展阶段 简述软件的发展过程