学术论文百科

对软件工程的认识与理解论文2000字

发布时间:2024-07-06 20:31:34

对软件工程的认识与理解论文2000字

件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则 (1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品正确性指软件产品达到预期功能的程度可用性指软件基本结构、实现及文档为用户可用的程度开销合宜是指软件开发、运行的整个开销满足用户要求的程度这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束 (2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤软件工程过程主要包括开发过程、运作过程、维护过程它们覆盖了需求、设计、实现、确认以及维护等活动需求活动包括问题分析和需求分析问题分析获取需求定义,又称软件需求规约需求分析生成功能规约设计活动一般包括概要设计和详细设计概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述实现活动把设计结果转换为可执行的程序代码确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求维护活动包括使用过程中的扩充、修改与完善伴随以上过程,还有管理过程、支持过程、培训过程等 (3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统图平台、标准和设计模式等方面。通俗来讲,软件工程专业就是围绕软件开发相关的一个专业。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。这个方向的学科基础选修课有:软件质量管理与测试、软件体系结构、软件项目管理以及软件复用技术。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。软件质量管理与测试:质量管理在软件工程中是非常非常重要的一个环节,无论你有多么精妙的算法,或是使用了多么先进的技术,还是拥有了多少强的设计,在质量控制或质量管理面前,这些都可能什么都不是。这里,有一些质量管理的法则,可以让软件的用户从中受益。如果对质量管理一言以蔽之:面对一个长期不断需要改善的软件,当其用户或是管理者们来说,他们对某个组织所提供的标准有一种完全和最基本的信任。软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进。

转贴;对软件工程的一点看法--希望能够抛砖引玉在这里看到很多网友的高论,很有启发。而且目前市面上也涌现出一批面向不同方面的软件过程的书籍,可是在这里,我一直没找到真正对实践有指导意义的,可操作的应用方法,所以现在这儿抛块砖,望各位高手指正。我个人的理解,软件工程就是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少,因此,中国的企业对大型软件的消费肯定是有限的,软件的个人消费,至少目前在中国,还是不成气候。因此,国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。此外,质量的好与坏也不能绝对而论。比如说,你花500元,买双皮鞋,只穿了一个月就坏了,肯定是劣质产品。可是如果你只花了5元买这双鞋,还是穿了一个月就坏了,他就是个优质产品了。软件也是一样。还有一个,就是软件生命周期问题。在国外,很多中、大型企业里,软件系统已经作为企业的命脉在运行,这些企业当然需要长期、稳定的软件服务、开发体系作为保障,因此相对来说,对于软件的功能需求就比较明确,而国内的中小企业在运营方面本来就把灵活多变作为生存武器,当然不可能有比较长期的经营计划,更不可能运用软件系统进行全面企业管理。这就导致对软件系统需求的短期行为,因此,他们更加希望一次性购买功能有限的软件系统,而不是长期连续的软件服务。如果上面的分析有代表性的话,那就是说我们现在必须对开发这类软件形成一套非常有效的工程方法:1。规模小。2。成本低3。质量要求不高。4。售后服务有限。5。生命期短。我想,对于这类系统,RUP未必是一套好的方法。另外,我还想谈谈对软件人员素质的看法。从我个人的经历来说,我觉得我们对于软件工程师的培养方法有问题。理论上说,软件只要设计了一个好的结构,解决了所有的技术难点,剩下的代码高中生就能做。实际上我们的很多名牌大学的计算机专业毕业生都不能很好的Coding。尤其是现在有了VB、PB、JAVA之后,大家似乎认为计算机的体系结构都不用关心了。我曾经经手的几个软件项目中,很多工程师对于用C语言开发Win32多线程、事件驱动、死锁、内存分配等问题根本束手无策。我不相信这些问题可以靠很好的文档解决。实际上,能够用OO的工具工作,根本不代表能够进行OO的系统分析与设计。话又说回来,在中国,有10年以上软件开发背景的人,又有几个?而且他们在过去10年里的经验,更多的是小项目的Coding,而不是大项目的管理与系统分析。而一个好的系统分析师,需要的是实践、实践、再实践。假如说我们的商业环境中根本没有大型的软件项目,怎么可能有优异的系统分析师呢?所以,我想,目前我们的问题,是工程师的技术水平、知识面与管理意识、管理方法同样重要,在这样的前提下,我们是不是要探索一下真正适合我们的软件工程方法呢?

对软件工程的认识与理解论文

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统图平台、标准和设计模式等方面。通俗来讲,软件工程专业就是围绕软件开发相关的一个专业。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。这个方向的学科基础选修课有:软件质量管理与测试、软件体系结构、软件项目管理以及软件复用技术。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。软件质量管理与测试:质量管理在软件工程中是非常非常重要的一个环节,无论你有多么精妙的算法,或是使用了多么先进的技术,还是拥有了多少强的设计,在质量控制或质量管理面前,这些都可能什么都不是。这里,有一些质量管理的法则,可以让软件的用户从中受益。如果对质量管理一言以蔽之:面对一个长期不断需要改善的软件,当其用户或是管理者们来说,他们对某个组织所提供的标准有一种完全和最基本的信任。软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进。

1、软件工程是一门指导软件开发和维护的工程学科,主要研究软件开发和维护的工程技术和软件项目管理等内容,其中涉及如何保证软件产品的质量和可靠性,如何提高软件开发效率和拥护满意度等。2、软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。3、软件生产历经4大阶段分别为:程序设计阶段(1946-1956年)、软件开发阶段(1956-1968年)、软件工程阶段(1968年以后)、计算机辅助软件工程阶段4、常见的软件过程模型:边改边做模型、瀑布模型、演化模型、增量迭代模型、喷泉模型5、软件过程的研究,标志着人们为解决软件危机问题,把关注的焦点由编程转移到了软件开发的整个过程,包括分析、设计、编程和测试4个核心阶段和需求调研、运行与维护两个延伸阶段说明软件质量、软件开发效率、软件的可靠性、可维护性问题涉及了软件生存周期的所有阶段。6、软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护。7、需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。分别用于结构化需求建模、系统业务举例和反映系统工作流程。③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。。。。感悟:了解了什么是“软件危机”,透过软件工程于解决“软件危机”的重要性、软件工程三条重要线索、软件工程知识体系函括内容及软件工程各类生存期模型,我对软件工程思想及“工程化”软件开发的流程有了较系统的了解,透过软件工程的起源,认识到:实现软件工业的产业化,软件工程必须是真正意义上的工程化。从软件开发三条线索(开发、管理、改进)来看,软件开发的过程必须规范化(各阶段都必须形成相应文档;编码必须依照通用可读性严格遵照编程规范……);软件项目管理的核心是项目规划和项目跟踪控制,保证软件工程开发的成功完成,软件开发流程的规范化在软件项目中有着重要的作用,通过不断地优化和规范过程,企业可以提高软件生产能力。从需求分析到维护,透过软件的开发流程具体实施的学习,我对软件项目开发的流程有了更深的理解,例如通过需求规格说明书、可行性研究说明书、数据库设计说明书、需求分析说明书、总体设计说明书、详细设计说明书等六份作业的完成虽然很不完善,但仍让我对需求分析建模和设计中用到的方法有了更好的理解并熟悉了六份文档的格式。学了这门课才知道软件开发中每一阶段都有文档的产生,其管理与应用也是一门大学问……此外,这门课程里讲授了很多我以前从未接触过的方法和软件如UML模型、MVC模型、visio的强大绘图建模功能、这些知识不仅能应用于软件工程,也能应用于其他的很多领域,这门课结束了,但这些方面学习我还将继续的。

软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。 软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试,并签署确认它可以投入运行使用的过程。在这个过程中的每一阶段,都包含有相应的文档编制工作。 软件开发过程当中,遵循一定的流程,主要包括系统分析、系统设计、系统编码、系统测试以及系统的维护等几个阶段。依次概述如下: 1、系统分析 系统分析包括软件需求分析和系统可行性分析。软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。系统可行性分析就是通过需求调查来确定此系统是否具有可行性。 2、系统设计 系统设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。 3、系统编码 系统编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。 4、系统测试 系统测试的目的不是验证软件的正确性,而是以较小的代价发现尽可能多的错误。测试从需求阶段开始,此后与整个开发过程并行,换句话说,伴随着开发过程的每一个阶段,都有一个重要的测试活动,它是预期内按时交付高质量的软件的保证。 5、系统维护 系统维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。 总的说来,软件开发是一个环环相扣的设计和实施过程,整个系统开发的过程当中,系统分析和设计是重中之重。只有把握好系统分析,才能使后续改动尽可能多的减少;只有把握好系统设计,才能保证软件的根基比较稳固。也即是它们很大程度上决定着软件开发的周期以及寿命。另外,完美的开发团队和开发过程的合理控制是软件成功开发关键要素之一。>> 软件工程 过去几十年,软件技术经历了一系列重要的变化和发展,构成软件的软件实体的粒度不断增大,软件基本模型越来越符合人类的思维模式;软件运行平台的能力不断增强,越来越多地屏蔽掉计算机底层的复杂性;软件支撑平台的能力不断增强,越来越多地屏蔽了软件开发过程的复杂性;软件技术的应用范围不断扩大,越来越广地渗透到人类生活的各个方面。网络技术的发展日新月异,基于新一代网络技术的各种应用的融合是大势所趋。网络新技术与软件新技术的相互促进必将为人类创造一个更为灿烂多彩的IT世界。 这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。偏好本质的人喜欢说本质论。偏好细节的人则喜欢说精细化管理。但如果在较长的时间轴上考量这两种观点,就会发现他们之间并不真的对立。----------------------------程序员几个发展方向: 走向管理:有两种原因会使部分程序员走上管理的道路,一是与生俱来的对 权力的欲望;一是在程序员的岗位上对自我价值重新认知。对于前者如果欲望过去强烈就会急功进利,很容易走捷径,会出现不能服众的情况。对于后者自我价值的重新认知是一个缓慢的过程,一个程序员在长期的开发过程中会慢慢发现一个人的力量是有限的,做一件事情必须要借助其他人的帮助,如果需要别人的帮助就必须能影响他人。从而认识到一个人的价值对公司来说几乎是不值一文,如果想让自己的价值得到提升必须要影响到他人,借助他人的力量使自己的价值得到最大提升。 走向行业:即成为某个行业的行业专家。一般来说走这个方面需要机遇,需 要长时间的从事某一个领域的开发与管理工作,对某个行业无论是大局还是细节都了如指掌。 走向专业:即成为架构师。一般来说这些人对开发有狂热的兴趣,逐渐的从代码的编写中认识到设计与软件架构的重要性,并对软件设计乐此不疲。 自已干:这些人是野心家,也是风险最大的一条路。好多程序员都认为软件开发不需要什么成本,只要能接到单子完全可以自己干,自己当老板。然而很少了解只有长期持续的订单才是一个企业不断稳定发展的最重要因素。------------------------------程序员具备:恒心、耐心、细心 兴趣决定一切:当一个人把自己的职业仅当成谋生的手段时,那他的人生将会失去很多乐趣。如果你不喜欢软件开发,那最好离开这个职业,没有兴趣只会让你一事无成。 自我学习:做程序员就是这样,走上了一条永无止境的学习之路,不学习新知就会被淘汰。然而学习也是有方法的:1)拿来主义;2)知其然也要知其所以然,细细分析与研究别人的优秀框架会对你大有好处。 自我修复:不断的重构与完善你的代码,是对所学知识的达到溶汇贯通的最简捷的途径。 找到一个圈子或老师:有时别人的一句话会对你的点拨很大。对于知识点有时只是一层窗户纸,看似玄妙,也许你差的只是那灵光一现或是换一个角度思考,这并不难。难的是将你所了解的知识点串接起来,使其能上下贯通运用自如,而在这点上通过一己之力会变得非常的漫长与痛苦。--------------------------- 软件开发要融入工程化的思想,要有高度的设计能力,关注更多的软件运行属性和设计质量属性,同样的系统,不同的软件人员会做出完全不同的软件,正规,高效的开发团队要比游击队开发团队不只高出几十倍。软件开发,不仅仅关注功能,性能,更应该去研究可维护性,可扩展性等质量属性,不仅仅只关注代码,而更要上升为设计,复用等。还有更高层次的设计开发,软件重构,模块化,系统构架,搭建统一软件平台,度量软件质量等软件开发人员,要作的事情太多了,软件实在是一个浩大的脑力工程,甚至会让人觉得这是一个投入/产出比最低的行业,因为要学习的知识实在太多了,每时每刻都要处于不断的学习和更新当中 这是指导整个软件开发的指南,这里包括软件从开始到结束的整个过程,包括制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行/维护,这六个步骤每一步的执行是保证项目成功完成的保证,以后将对这六个过程进行一一的分析。软件生命周期 其中包括:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型。模型特点: 瀑布模型:周期长,跟用户见面比较晚,从计划到和用户一起计划外,其他的部分用户和开发人员是分离的,用户不能直接把问题直接反应过去。 演化模型:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次第一次只是实验开发,其目标只是在于探索可行性,弄清软件需求第二次则再此基础上获得较为满意的软件产品 螺旋模型:多次原型反复并增加风险评估的开发模型喷泉模型:有严格的数学理论和形式化的技术支持,但目前在所研究试验阶段,不能实现 智能模型:通过领域的专家系统,可使需求说明更加完善、准确和无二义性。通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。通过软件工程知识和特定应用领域的知识和规则的应用来提供对开发的帮助。但是,要建立适合于软件设计的专家系统,或建立一个即适合软件工程又适合应用领域的知识库都是非常困难的。--------------------------------对软件的基本认识 开发软件为什么要工程化有很多人,尤其是很多学生存在这样的误区,平时感觉自己能用语言写一个闹钟,写一个记事本等一些小东西,就以为自己一个人就可以完成一个小的项目,所以很不理解为什么开发软件有时候不能让一个人独立完成,也有个人英雄主义在作怪。其实原因很简单,比如说,高中我们做题应该很有体会,感觉一张卷子一点问题也没有,但是等成绩下来的时候总不是一百分,为什么,因为我们很难发现自己的错误,哪怕是重复很多次,这是思维定势。 软件开发与其说是技术活,不如说是规范活软件开发是程序员奇思妙想的时候,用什么方法都是随心所欲的,有的人则为了追求速度或者说是彰显个性而用一些很不大众的算法,以为这是体现自己高明的地方,恰恰相反,这真是不懂编程的表现,一般的项目一般都不是一个人来完成的,它分为开发阶段和维护阶段,然而维护阶段一般又非开发人员所为,所以如果代码技术性过于高,反而对后面的维护不利,另外,IT是个跳槽率很高的职业,如果一项工程没有完成就离开,剩下高明的算法要让谁看呢,出于对公司的考虑,最好还是规规矩矩,符合大众的口味。 文档的重要性很多人,尤其是大学生,刚开始学习编程的时候,难免会有一些急功近利的想法,想快点做出点成绩,但是往往欲速则不达,就想前段时间做的机房收费系统一样,在一种完全没有文档的情况下,虽然最后做完了,而且也跑起来了,问题似乎也没有想象的那么多,但是其中的过程只有自己知道,代码啦,数据库啦都不忍心看,可以说是乱七八糟的,想加个数据库就加,想加个功能就加,很有文档,就像没有目的的去雕塑,雕成什么样,算什么样,而且很多情况是中途发现需要这个样子了,才发现,那部分材料已经被自己给去掉了,所做的程序自然没有规律可言,如果现在有人说那个机房收费系统那个功能要修改一下,我估计我的得全盘改动 开发软件为什么时间总是那么紧,开发的人总是那么累曾经有过单纯的想法,为什么工作非要加班呢,多用些人不就行了吗,人多力量大嘛,但是自从软工看完后便觉得这种想法荡然无存了,其实,原因并不是说老板多黑心,而是取决于软件开发工作的性质,这是一项需要智慧的工作,首先,这不是工厂,没有机器,只有手工;其次,这里需要残杂很大一部分人文因素,比如说个人习惯,同样输出一个结果,两个人的算法往往就有很大的区别,所以参加人数越多,在项目中的不同因素就越多,因为各个模块之间的衔接问题就越大,所以参加人数应该是少而精,所以这也是为什么蓝精灵体中说程序员是“聪明而辛苦”,聪明在他们每个人都是一个设计师,辛苦在一项任务,自己又无可取代的位置,只能是自己的事情自己干。 如果自己无法适应社会中的潜规则,那么就学编程吧(不知道这样说对不对)从我目前的认识来看,突然发现软件行业是整个社会的一片净土,这里不像其他行业一样靠嘴吃饭,更多的是需要能力,除非老板想赔钱,不然绝对不会用一个靠关系而不是靠技术的人来当项目经理,因为这个关系到整个项目生存的决定性因素;虽然同事之间保持着微妙的竞争关系,但是一个项目要想如期完成必须要和同事上司好好合作;做软件开发的每个项目的每个功能,无处不能体现全心全意为人民服务的宗旨,所以开发软件的人无疑又是心细如丝,必定是善良的,体贴的,嫁人就嫁程序员哦。所以,以此可见,这里的确是一片净土。

对软件工程的认识与理解论文2000字怎么写

运用哲学的观点去看问题,从理论的高度看问题,显示思维的深度和思维的广度。但我们被“送来”的东西吓怕了。先有英国的鸦片,德国的废枪炮,后来法国的香粉,美国的电影,日本的印着“完全国货”的各种小东西。于是连清醒的青年们,也对于洋货发生了恐怖。其实,这正是因为那是“送来”的,而不是“拿来”的缘故。找出路高瞻远瞩,高屋建瓴,为读者指出一条解决问题的思路。多从教育、政府规范和引导、法律严惩几个角度谈起。所以我们要运用脑髓,放出眼光,自己来拿!总之,我们要拿来。我们要或使用,或存放,或毁灭。那么,主人是新主人,宅子也就会成为新宅子。然而首先要这人沉着,勇猛,有辨别,不自私。没有拿来的,人不能自成为新人,没有拿来的,文艺不能自成为新文艺。又如:“莫使‘英雄’泪满襟”这一主题,可以写出以下提纲。第一层:自己不做,阻止、限制他人;看到荣誉,嫉妒、中伤他人:这是使‘英雄’泪满襟者的典型表现。第二层:伤及他人,使英雄心如死灰;危及社会,使社会正气低迷。是使‘英雄’泪满襟者的产生出格举动的危害。第三层:个人欲望强烈,嫉妒心强,心胸狭窄,信奉“人人为我”,是使‘英雄’泪满襟者的产生出格举动的根源。第四层:不怕闲言碎语,反对嫉贤妒能,是我们对待这一出格行为的正确态度;加强道德教育,保护英雄权益,是我们对待这一出格行为的正确措施。以上为笔者对驳论文的写作指出的思路,希望广大考生积极借鉴,在考场上表现出深邃长远的目光,高瞻远瞩的见解,决胜于考场。

1996和1997两度被评为美国最富有的企业家是谁?是42岁的比尔·盖茨,他是美国微型软件公司(Microsoft简称微软公司)的董事长。他拥有好多个世界之最,例如:他是第一个靠观念、智能和思维致富的人;他是世界首富,1996年的财产是160亿美元;他是有史以来最年轻的世界第一富翁;他是第一个从一无所有白手起家,在短短20年内创造财产达139亿美元的奇才;他是人类历史上第一个靠电脑软件积累亿万财富的先行者;他是首先开发利用高科技和高智商,创造巨大财富的典范……,因此,在20世纪90年代的地球上刮起了一阵强劲的比尔·盖茨旋风。那么盖茨是怎样的一个人呢?他的事迹有许多厚厚的书作了详细的介绍,这里科单讲他几个小时候的故事吧!比尔·盖茨的童年是在美国华盛顿州的西雅图度过的,西雅图是美国波音公司的的基地,全市职工近半数在这家公司工作,所以人们也把西雅图称为波音城。它和旧金山、洛杉矶并列为美国西海岸的三大门户之一。长着一头沙色头发的7岁男孩盖茨最喜欢反复看个没完的是那套《世界图书百科全书》。他经常几个小时地连续阅读这本几乎有他体重1/3的大书,一字一句地从头到尾地看。他常常陷入沉思,冥冥之中似乎强烈地感觉到,小小的文字和巨大的书本,里面蕴藏着多么神奇和魔幻般的一个世界啊!文字的符号竟能把前人和世界各地人们的我数有趣的事情,记录下来,又传播出去。他又想,人类历史将越来越长,那么以后的百科全书不是越来越大而更重了吗!能有什么好办法造出一个魔盒那么大,就能包罗万象地把一大本百科全书都收进去,该有多方便。这个奇妙的思想火花,后来竟给他实现了,而且比香烟盒还要小,只要一块小小的芯片就行了。盖茨看的书越来越多,想的问题也越来越多。一次他忽然对他四年级的同学卡尔·爱德蒙德说:与其做一棵草坪里的小草,还不如成为一株耸立于秃丘上的橡树。因为小草千篇一律,毫无个性,而橡树则高大挺拔,昂首苍穹。他坚持写日记,随时记下自己的想法,小小的年纪常常如大人般的深思熟虑。他很早就感悟到人的生命来之不易,要十分珍惜这不到人世的宝贵机会。他在日记里这样写道:人生是一次盛大的赴约,对于一个人来说,一生中最重要的事情莫过于信守由人类积累起来的理智所提出的至高无上的诺言……那么诺言是什么呢?就是要干一番惊天动地的大事。他在另一篇日记里又写道:也许,人的生命是一场正在焚烧的火灾,一个人 ……所能去做的,就是竭尽全力要从这场火灾中去抢救点什么东西出来。这?追赶生命的意识,在同龄的孩子中是极少有的。盖茨所想的诺言也好,追赶生命中要抢救的东西也好,表现在盖茨的日常行动中,就是学校的任何功课和老师布置的作业,无论是演奏乐器,还是写作文,或者体育竞赛,他都会倾其全力,花上所有的时间去最出色地完成。老师给他所在的四年级学生布置了一篇有关人体物殊作用的作文,要求四五页的篇幅。结果盖茨利用他爸爸书房里的百科全书和其他医学、生理、心理方面的书籍,洋洋洒洒地一口气写了30多页。又有一次老师布置同学写篇不超过20页的故事,盖茨浮想联翩,竟写出长达100页的神奇而又曲折无比的故事,使老师和同学都十分惊讶!大家说他:不管盖茨做什么事,他总喜欢来个登峰造极,不鸣则已,一鸣惊人,不然他是不会甘心的。盖茨在体育和社会活动方面也表现出这种不落人后的精神。有一次暑假童子军的80公里徒步行军,时间是一个星期,他穿了一双崭新的高筒靴,显然新鞋不大合脚,每天13公里的徒步行军,又是爬山,又是穿越森林,使他吃尽苦头,第一天晚上,他的脚后跟磨破了皮,脚趾上起了许多水泡。他咬紧牙关,坚持走下去。第二天晚上,他的脚红肿得非常厉害,开裂的皮肤还流了血。同伴们都劝他停止前进,他却摇摇头,只是向随队医生要点药棉和纱布包扎一下,又要了些止痛片服用,继续上路了。就这样他一直坚持到一个途中检查站,当领队发现他的脚发炎严重,下令医冶,才中止了这次行军。盖茨的母亲从西雅图赶来,看到他双脚溃烂的样子时,难过地哭了,直埋怨儿子为什么不早点停止行军。盖茨却淡淡地说?可惜我这次没有到达目的地。1969年,盖茨所在的西雅图湖滨中学中美国是最早开设电脑课程的学校。当时还没有PC机,学校只搞到一台终端机,还是从社会和家长那里集了大批资金才买来的。这台终端机连接其他单位所拥有的小型电子计算机PDP--10,每天只能使用很短时间,每小时的费用也很高。盖茨像发现了新大陆一样,只要一有时间,便钻进计算机房去操作那台终端机,几乎到了废寝忘食的地步。13岁时,他便独立编出了第一个电脑程序,可以在电脑屏幕上玩月球软着陆的游戏。这一年的 7月20日正好是美国宇航员阿姆斯物朗和奥尔德林乘登月舱,代表人类第一次踏上了月球表面的日子。盖茨心里想,我不能坐宇宙飞船去月球,那么让我用电脑来实现我的登月梦吧!可是好景不长,只过了半年,湖滨中学就再也没有钱支付昂贵的PDP--10小型计算机的使用租金了。这件事使盖茨像失去了上学机会那么痛苦,因为这时候他对电脑已经入迷到神魂颠倒的地步。于是他和同学四处奔走,终于找到一个机会,就是帮助一家名为CCC的电脑公司抓臭虫,用除虫的报酬来支付他们操作电脑的费用。什么叫臭虫,这是电脑行业里人们称呼软件中的错误的代名词,即讨厌的臭虫(Bug)。因为一旦有了这种臭虫,就会使电脑导出错误结果或死机,美国发往金星的水手号火箭和法国职权利亚娜火箭,就曾因为电脑软件的故障(臭虫)而使发射失败,损失几亿美元。盖茨兴冲冲地约了同学中的几个电脑爱好者,每天晚上6点左右,CCC公司员工下班之后,他们便骑自行车来到那里上班了。那里有许多台电传打字终端机可用,有各种电脑软件可尽情研究,真是如鱼得水。盖茨对电脑软件太着迷了,几乎整晚都呆在那里,就像他在小学时就立志要搞出新名堂一样地执着,每个晚上,他都要在CCC公司的记录本上写满了他和伙伴们发现的一个电脑臭虫。通过这一段时间的抓臭虫,盖茨使自己在电脑硬件和软件方面学到了许多书本上和学校里学不到的知识和技能,为日后的研究开发,打下了精深的功底。1970年,当盖茨15岁时,他的电脑才能已远近闻名了。一家名叫信息科学的公司找到盖茨,希望用提供使用PDP-10的电脑时间来交换盖茨和他的同学保罗的软件技术。因为按美国法律规定,不能给未成年人支付工资,所以该公司决定,以价值一万美元的电脑时间作为酬劳,要求他们为公司设计工资管理软件。这样就使他俩获得了足够使用一学年的电脑时间,他们不禁高兴万分。1971年,湖滨中学又让盖茨帮学校设计一套排课用的电脑软件。当时的排课表全靠人工,由于学生人数多,课程又复杂多样,人排课常常分配不均,造成某些课程学生过度拥挤的现象。盖茨圆满地完成了这个艰巨的任务,又使他延长了使用电脑的宝贵时间。1973年,美国国防项目承包商TRW公司要开发一套用于管理水库的电脑监督控制系统,可是老是消灭不了各种电脑臭虫,进度缓慢,眼看要遭到违约处罚了。在这紧急关头,TRW公司得知盖茨和保罗两个小电脑天才的事情后,便向他俩求援,两个男孩高兴地答应了。这是一件很专业化又很艰难的工作,而且按规定,中学生只能拿工读生的低工资。但是盖茨并不计较,他主要目的是通过这种工作来提高和锻炼自己的软件设计 ……能力。湖滨中学也很开明,允许高年级学生在完成规定课程后去企业实习和工作。由于盖茨和保罗的加入,终于使TRW公司按时完成了项目,免受巨额罚款。而盖茨和保罗则得到了该公司一位电脑专家的具体指导,使两人的软件技巧得到了提高。盖茨上大学后,又在开发电脑方面办起了公司,以后又跨过一个个困难的高峰,使他的微软公司开发出领导世界新潮流的许多新型号电脑硬、软件,产品风行全球,那是后话啦!

软件工程我知道你最擅长的是哪个平台

对软件工程的认识与理解论文范文

转贴;对软件工程的一点看法--希望能够抛砖引玉在这里看到很多网友的高论,很有启发。而且目前市面上也涌现出一批面向不同方面的软件过程的书籍,可是在这里,我一直没找到真正对实践有指导意义的,可操作的应用方法,所以现在这儿抛块砖,望各位高手指正。我个人的理解,软件工程就是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少,因此,中国的企业对大型软件的消费肯定是有限的,软件的个人消费,至少目前在中国,还是不成气候。因此,国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。此外,质量的好与坏也不能绝对而论。比如说,你花500元,买双皮鞋,只穿了一个月就坏了,肯定是劣质产品。可是如果你只花了5元买这双鞋,还是穿了一个月就坏了,他就是个优质产品了。软件也是一样。还有一个,就是软件生命周期问题。在国外,很多中、大型企业里,软件系统已经作为企业的命脉在运行,这些企业当然需要长期、稳定的软件服务、开发体系作为保障,因此相对来说,对于软件的功能需求就比较明确,而国内的中小企业在运营方面本来就把灵活多变作为生存武器,当然不可能有比较长期的经营计划,更不可能运用软件系统进行全面企业管理。这就导致对软件系统需求的短期行为,因此,他们更加希望一次性购买功能有限的软件系统,而不是长期连续的软件服务。如果上面的分析有代表性的话,那就是说我们现在必须对开发这类软件形成一套非常有效的工程方法:1。规模小。2。成本低3。质量要求不高。4。售后服务有限。5。生命期短。我想,对于这类系统,RUP未必是一套好的方法。另外,我还想谈谈对软件人员素质的看法。从我个人的经历来说,我觉得我们对于软件工程师的培养方法有问题。理论上说,软件只要设计了一个好的结构,解决了所有的技术难点,剩下的代码高中生就能做。实际上我们的很多名牌大学的计算机专业毕业生都不能很好的Coding。尤其是现在有了VB、PB、JAVA之后,大家似乎认为计算机的体系结构都不用关心了。我曾经经手的几个软件项目中,很多工程师对于用C语言开发Win32多线程、事件驱动、死锁、内存分配等问题根本束手无策。我不相信这些问题可以靠很好的文档解决。实际上,能够用OO的工具工作,根本不代表能够进行OO的系统分析与设计。话又说回来,在中国,有10年以上软件开发背景的人,又有几个?而且他们在过去10年里的经验,更多的是小项目的Coding,而不是大项目的管理与系统分析。而一个好的系统分析师,需要的是实践、实践、再实践。假如说我们的商业环境中根本没有大型的软件项目,怎么可能有优异的系统分析师呢?所以,我想,目前我们的问题,是工程师的技术水平、知识面与管理意识、管理方法同样重要,在这样的前提下,我们是不是要探索一下真正适合我们的软件工程方法呢?

软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。 软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试,并签署确认它可以投入运行使用的过程。在这个过程中的每一阶段,都包含有相应的文档编制工作。 软件开发过程当中,遵循一定的流程,主要包括系统分析、系统设计、系统编码、系统测试以及系统的维护等几个阶段。依次概述如下: 1、系统分析 系统分析包括软件需求分析和系统可行性分析。软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。系统可行性分析就是通过需求调查来确定此系统是否具有可行性。 2、系统设计 系统设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。 3、系统编码 系统编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。 4、系统测试 系统测试的目的不是验证软件的正确性,而是以较小的代价发现尽可能多的错误。测试从需求阶段开始,此后与整个开发过程并行,换句话说,伴随着开发过程的每一个阶段,都有一个重要的测试活动,它是预期内按时交付高质量的软件的保证。 5、系统维护 系统维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。 总的说来,软件开发是一个环环相扣的设计和实施过程,整个系统开发的过程当中,系统分析和设计是重中之重。只有把握好系统分析,才能使后续改动尽可能多的减少;只有把握好系统设计,才能保证软件的根基比较稳固。也即是它们很大程度上决定着软件开发的周期以及寿命。另外,完美的开发团队和开发过程的合理控制是软件成功开发关键要素之一。>> 软件工程 过去几十年,软件技术经历了一系列重要的变化和发展,构成软件的软件实体的粒度不断增大,软件基本模型越来越符合人类的思维模式;软件运行平台的能力不断增强,越来越多地屏蔽掉计算机底层的复杂性;软件支撑平台的能力不断增强,越来越多地屏蔽了软件开发过程的复杂性;软件技术的应用范围不断扩大,越来越广地渗透到人类生活的各个方面。网络技术的发展日新月异,基于新一代网络技术的各种应用的融合是大势所趋。网络新技术与软件新技术的相互促进必将为人类创造一个更为灿烂多彩的IT世界。 这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。偏好本质的人喜欢说本质论。偏好细节的人则喜欢说精细化管理。但如果在较长的时间轴上考量这两种观点,就会发现他们之间并不真的对立。----------------------------程序员几个发展方向: 走向管理:有两种原因会使部分程序员走上管理的道路,一是与生俱来的对 权力的欲望;一是在程序员的岗位上对自我价值重新认知。对于前者如果欲望过去强烈就会急功进利,很容易走捷径,会出现不能服众的情况。对于后者自我价值的重新认知是一个缓慢的过程,一个程序员在长期的开发过程中会慢慢发现一个人的力量是有限的,做一件事情必须要借助其他人的帮助,如果需要别人的帮助就必须能影响他人。从而认识到一个人的价值对公司来说几乎是不值一文,如果想让自己的价值得到提升必须要影响到他人,借助他人的力量使自己的价值得到最大提升。 走向行业:即成为某个行业的行业专家。一般来说走这个方面需要机遇,需 要长时间的从事某一个领域的开发与管理工作,对某个行业无论是大局还是细节都了如指掌。 走向专业:即成为架构师。一般来说这些人对开发有狂热的兴趣,逐渐的从代码的编写中认识到设计与软件架构的重要性,并对软件设计乐此不疲。 自已干:这些人是野心家,也是风险最大的一条路。好多程序员都认为软件开发不需要什么成本,只要能接到单子完全可以自己干,自己当老板。然而很少了解只有长期持续的订单才是一个企业不断稳定发展的最重要因素。------------------------------程序员具备:恒心、耐心、细心 兴趣决定一切:当一个人把自己的职业仅当成谋生的手段时,那他的人生将会失去很多乐趣。如果你不喜欢软件开发,那最好离开这个职业,没有兴趣只会让你一事无成。 自我学习:做程序员就是这样,走上了一条永无止境的学习之路,不学习新知就会被淘汰。然而学习也是有方法的:1)拿来主义;2)知其然也要知其所以然,细细分析与研究别人的优秀框架会对你大有好处。 自我修复:不断的重构与完善你的代码,是对所学知识的达到溶汇贯通的最简捷的途径。 找到一个圈子或老师:有时别人的一句话会对你的点拨很大。对于知识点有时只是一层窗户纸,看似玄妙,也许你差的只是那灵光一现或是换一个角度思考,这并不难。难的是将你所了解的知识点串接起来,使其能上下贯通运用自如,而在这点上通过一己之力会变得非常的漫长与痛苦。--------------------------- 软件开发要融入工程化的思想,要有高度的设计能力,关注更多的软件运行属性和设计质量属性,同样的系统,不同的软件人员会做出完全不同的软件,正规,高效的开发团队要比游击队开发团队不只高出几十倍。软件开发,不仅仅关注功能,性能,更应该去研究可维护性,可扩展性等质量属性,不仅仅只关注代码,而更要上升为设计,复用等。还有更高层次的设计开发,软件重构,模块化,系统构架,搭建统一软件平台,度量软件质量等软件开发人员,要作的事情太多了,软件实在是一个浩大的脑力工程,甚至会让人觉得这是一个投入/产出比最低的行业,因为要学习的知识实在太多了,每时每刻都要处于不断的学习和更新当中 这是指导整个软件开发的指南,这里包括软件从开始到结束的整个过程,包括制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行/维护,这六个步骤每一步的执行是保证项目成功完成的保证,以后将对这六个过程进行一一的分析。软件生命周期 其中包括:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型。模型特点: 瀑布模型:周期长,跟用户见面比较晚,从计划到和用户一起计划外,其他的部分用户和开发人员是分离的,用户不能直接把问题直接反应过去。 演化模型:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次第一次只是实验开发,其目标只是在于探索可行性,弄清软件需求第二次则再此基础上获得较为满意的软件产品 螺旋模型:多次原型反复并增加风险评估的开发模型喷泉模型:有严格的数学理论和形式化的技术支持,但目前在所研究试验阶段,不能实现 智能模型:通过领域的专家系统,可使需求说明更加完善、准确和无二义性。通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。通过软件工程知识和特定应用领域的知识和规则的应用来提供对开发的帮助。但是,要建立适合于软件设计的专家系统,或建立一个即适合软件工程又适合应用领域的知识库都是非常困难的。--------------------------------对软件的基本认识 开发软件为什么要工程化有很多人,尤其是很多学生存在这样的误区,平时感觉自己能用语言写一个闹钟,写一个记事本等一些小东西,就以为自己一个人就可以完成一个小的项目,所以很不理解为什么开发软件有时候不能让一个人独立完成,也有个人英雄主义在作怪。其实原因很简单,比如说,高中我们做题应该很有体会,感觉一张卷子一点问题也没有,但是等成绩下来的时候总不是一百分,为什么,因为我们很难发现自己的错误,哪怕是重复很多次,这是思维定势。 软件开发与其说是技术活,不如说是规范活软件开发是程序员奇思妙想的时候,用什么方法都是随心所欲的,有的人则为了追求速度或者说是彰显个性而用一些很不大众的算法,以为这是体现自己高明的地方,恰恰相反,这真是不懂编程的表现,一般的项目一般都不是一个人来完成的,它分为开发阶段和维护阶段,然而维护阶段一般又非开发人员所为,所以如果代码技术性过于高,反而对后面的维护不利,另外,IT是个跳槽率很高的职业,如果一项工程没有完成就离开,剩下高明的算法要让谁看呢,出于对公司的考虑,最好还是规规矩矩,符合大众的口味。 文档的重要性很多人,尤其是大学生,刚开始学习编程的时候,难免会有一些急功近利的想法,想快点做出点成绩,但是往往欲速则不达,就想前段时间做的机房收费系统一样,在一种完全没有文档的情况下,虽然最后做完了,而且也跑起来了,问题似乎也没有想象的那么多,但是其中的过程只有自己知道,代码啦,数据库啦都不忍心看,可以说是乱七八糟的,想加个数据库就加,想加个功能就加,很有文档,就像没有目的的去雕塑,雕成什么样,算什么样,而且很多情况是中途发现需要这个样子了,才发现,那部分材料已经被自己给去掉了,所做的程序自然没有规律可言,如果现在有人说那个机房收费系统那个功能要修改一下,我估计我的得全盘改动 开发软件为什么时间总是那么紧,开发的人总是那么累曾经有过单纯的想法,为什么工作非要加班呢,多用些人不就行了吗,人多力量大嘛,但是自从软工看完后便觉得这种想法荡然无存了,其实,原因并不是说老板多黑心,而是取决于软件开发工作的性质,这是一项需要智慧的工作,首先,这不是工厂,没有机器,只有手工;其次,这里需要残杂很大一部分人文因素,比如说个人习惯,同样输出一个结果,两个人的算法往往就有很大的区别,所以参加人数越多,在项目中的不同因素就越多,因为各个模块之间的衔接问题就越大,所以参加人数应该是少而精,所以这也是为什么蓝精灵体中说程序员是“聪明而辛苦”,聪明在他们每个人都是一个设计师,辛苦在一项任务,自己又无可取代的位置,只能是自己的事情自己干。 如果自己无法适应社会中的潜规则,那么就学编程吧(不知道这样说对不对)从我目前的认识来看,突然发现软件行业是整个社会的一片净土,这里不像其他行业一样靠嘴吃饭,更多的是需要能力,除非老板想赔钱,不然绝对不会用一个靠关系而不是靠技术的人来当项目经理,因为这个关系到整个项目生存的决定性因素;虽然同事之间保持着微妙的竞争关系,但是一个项目要想如期完成必须要和同事上司好好合作;做软件开发的每个项目的每个功能,无处不能体现全心全意为人民服务的宗旨,所以开发软件的人无疑又是心细如丝,必定是善良的,体贴的,嫁人就嫁程序员哦。所以,以此可见,这里的确是一片净土。

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统图平台、标准和设计模式等方面。通俗来讲,软件工程专业就是围绕软件开发相关的一个专业。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。这个方向的学科基础选修课有:软件质量管理与测试、软件体系结构、软件项目管理以及软件复用技术。软件工程的目标是:在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求的软件产品。追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。软件质量管理与测试:质量管理在软件工程中是非常非常重要的一个环节,无论你有多么精妙的算法,或是使用了多么先进的技术,还是拥有了多少强的设计,在质量控制或质量管理面前,这些都可能什么都不是。这里,有一些质量管理的法则,可以让软件的用户从中受益。如果对质量管理一言以蔽之:面对一个长期不断需要改善的软件,当其用户或是管理者们来说,他们对某个组织所提供的标准有一种完全和最基本的信任。软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进。

对软件工程的认识与理解论文题目

软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。 这个问题很复杂,恕在下自不量力说几句。软件工程的目标是最小的成本、最高的质量、最短的开发时间开发软件产品。眼下流行的各种软件工程方法对这个目标的实现都差强人意。以RUP为代表的重量方法用来做计划、准备的时间太多,真正用在开发的精力却很少,以为只要企业保证软件过程的实施,其他的事情都好办,这种极端压抑人性的方法不会取得很好效果。轻量方法要好一些,毕竟绝大部分注意力都在开发上,大家都很喜欢,可是仅依靠少数几个人,对付不了大型项目。当然,大家都在改进各自的缺点,吸收对方的优点。GBooch说过,自动化不足是软件开发过程中大量问题存在的重要原因,在下深以为然,并且认为是最小的成本、最高的质量、最短的开发时间之目标难以实现的根本原因。因此,将来的软件工程必然要发展到以软件自动化技术为核心的阶段——4GL时代。为什么4GL时代还没有来临,这是因为软件自动化太困难,眼下所取得的成果局限在某些很窄的领域内,达不到实际项目要求,而且这种技术太难理解,需要对理论的深入学习,一般的开发人员难以接受。软件自动化技术没有大发展的重要愿意是目前描述动作语义的技术都很低级,因此即便用形式化方法作设计也是很费时间的,虽然可以提高一定的效率,但是还是远远不够的。为了解决这个问题,只有从利用以前的成果入手了,也就是复用构件,但不是用今天的构件技术。将来,实现了机器检索的大型构件库,这是计算机实现对构件的查找、转配等自动化的构件库,不是今天的手工构件库。但这样的构件库为什么没有出现,还是老问题,我们还没有一个很理想的描述动作语义的方法,计算机无法判定两个构件或规约和构件之间是否等价,或者有等价的成分,当然也就无法进行自动检索了。虽然有很多困难,但我相信将来软件工程的发展方向必将是高度自动化的构件式开发方法。上面说的,完全是个人观点,也许不足采信。

软件工程涉及的资源有:人力、资金、时间的合理分配,涉及到文化与管理等,及各种规划化。 软件开发是一个把用户需要转化为软件需求,把软件需求转化为软件设计,用软件代码来实现软件设计,对软件代码进行测试,并签署确认它可以投入运行使用的过程。在这个过程中的每一阶段,都包含有相应的文档编制工作。 软件开发过程当中,遵循一定的流程,主要包括系统分析、系统设计、系统编码、系统测试以及系统的维护等几个阶段。依次概述如下: 1、系统分析 系统分析包括软件需求分析和系统可行性分析。软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。系统可行性分析就是通过需求调查来确定此系统是否具有可行性。 2、系统设计 系统设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。 3、系统编码 系统编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。 4、系统测试 系统测试的目的不是验证软件的正确性,而是以较小的代价发现尽可能多的错误。测试从需求阶段开始,此后与整个开发过程并行,换句话说,伴随着开发过程的每一个阶段,都有一个重要的测试活动,它是预期内按时交付高质量的软件的保证。 5、系统维护 系统维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告。在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。 总的说来,软件开发是一个环环相扣的设计和实施过程,整个系统开发的过程当中,系统分析和设计是重中之重。只有把握好系统分析,才能使后续改动尽可能多的减少;只有把握好系统设计,才能保证软件的根基比较稳固。也即是它们很大程度上决定着软件开发的周期以及寿命。另外,完美的开发团队和开发过程的合理控制是软件成功开发关键要素之一。>> 软件工程 过去几十年,软件技术经历了一系列重要的变化和发展,构成软件的软件实体的粒度不断增大,软件基本模型越来越符合人类的思维模式;软件运行平台的能力不断增强,越来越多地屏蔽掉计算机底层的复杂性;软件支撑平台的能力不断增强,越来越多地屏蔽了软件开发过程的复杂性;软件技术的应用范围不断扩大,越来越广地渗透到人类生活的各个方面。网络技术的发展日新月异,基于新一代网络技术的各种应用的融合是大势所趋。网络新技术与软件新技术的相互促进必将为人类创造一个更为灿烂多彩的IT世界。 这世上同时存在着两种对立的声音:本质决定成败和细节决定成败。偏好本质的人喜欢说本质论。偏好细节的人则喜欢说精细化管理。但如果在较长的时间轴上考量这两种观点,就会发现他们之间并不真的对立。----------------------------程序员几个发展方向: 走向管理:有两种原因会使部分程序员走上管理的道路,一是与生俱来的对 权力的欲望;一是在程序员的岗位上对自我价值重新认知。对于前者如果欲望过去强烈就会急功进利,很容易走捷径,会出现不能服众的情况。对于后者自我价值的重新认知是一个缓慢的过程,一个程序员在长期的开发过程中会慢慢发现一个人的力量是有限的,做一件事情必须要借助其他人的帮助,如果需要别人的帮助就必须能影响他人。从而认识到一个人的价值对公司来说几乎是不值一文,如果想让自己的价值得到提升必须要影响到他人,借助他人的力量使自己的价值得到最大提升。 走向行业:即成为某个行业的行业专家。一般来说走这个方面需要机遇,需 要长时间的从事某一个领域的开发与管理工作,对某个行业无论是大局还是细节都了如指掌。 走向专业:即成为架构师。一般来说这些人对开发有狂热的兴趣,逐渐的从代码的编写中认识到设计与软件架构的重要性,并对软件设计乐此不疲。 自已干:这些人是野心家,也是风险最大的一条路。好多程序员都认为软件开发不需要什么成本,只要能接到单子完全可以自己干,自己当老板。然而很少了解只有长期持续的订单才是一个企业不断稳定发展的最重要因素。------------------------------程序员具备:恒心、耐心、细心 兴趣决定一切:当一个人把自己的职业仅当成谋生的手段时,那他的人生将会失去很多乐趣。如果你不喜欢软件开发,那最好离开这个职业,没有兴趣只会让你一事无成。 自我学习:做程序员就是这样,走上了一条永无止境的学习之路,不学习新知就会被淘汰。然而学习也是有方法的:1)拿来主义;2)知其然也要知其所以然,细细分析与研究别人的优秀框架会对你大有好处。 自我修复:不断的重构与完善你的代码,是对所学知识的达到溶汇贯通的最简捷的途径。 找到一个圈子或老师:有时别人的一句话会对你的点拨很大。对于知识点有时只是一层窗户纸,看似玄妙,也许你差的只是那灵光一现或是换一个角度思考,这并不难。难的是将你所了解的知识点串接起来,使其能上下贯通运用自如,而在这点上通过一己之力会变得非常的漫长与痛苦。--------------------------- 软件开发要融入工程化的思想,要有高度的设计能力,关注更多的软件运行属性和设计质量属性,同样的系统,不同的软件人员会做出完全不同的软件,正规,高效的开发团队要比游击队开发团队不只高出几十倍。软件开发,不仅仅关注功能,性能,更应该去研究可维护性,可扩展性等质量属性,不仅仅只关注代码,而更要上升为设计,复用等。还有更高层次的设计开发,软件重构,模块化,系统构架,搭建统一软件平台,度量软件质量等软件开发人员,要作的事情太多了,软件实在是一个浩大的脑力工程,甚至会让人觉得这是一个投入/产出比最低的行业,因为要学习的知识实在太多了,每时每刻都要处于不断的学习和更新当中 这是指导整个软件开发的指南,这里包括软件从开始到结束的整个过程,包括制定计划、需求分析和定义、软件设计、程序编写、软件测试、运行/维护,这六个步骤每一步的执行是保证项目成功完成的保证,以后将对这六个过程进行一一的分析。软件生命周期 其中包括:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型。模型特点: 瀑布模型:周期长,跟用户见面比较晚,从计划到和用户一起计划外,其他的部分用户和开发人员是分离的,用户不能直接把问题直接反应过去。 演化模型:由于在项目开发的初始阶段人们对软件的需求认识常常不够清晰,因而使得开发项目难于做到一次开发成功,出现返工再开发在所难免。做两次第一次只是实验开发,其目标只是在于探索可行性,弄清软件需求第二次则再此基础上获得较为满意的软件产品 螺旋模型:多次原型反复并增加风险评估的开发模型喷泉模型:有严格的数学理论和形式化的技术支持,但目前在所研究试验阶段,不能实现 智能模型:通过领域的专家系统,可使需求说明更加完善、准确和无二义性。通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计者的助手。通过软件工程知识和特定应用领域的知识和规则的应用来提供对开发的帮助。但是,要建立适合于软件设计的专家系统,或建立一个即适合软件工程又适合应用领域的知识库都是非常困难的。--------------------------------对软件的基本认识 开发软件为什么要工程化有很多人,尤其是很多学生存在这样的误区,平时感觉自己能用语言写一个闹钟,写一个记事本等一些小东西,就以为自己一个人就可以完成一个小的项目,所以很不理解为什么开发软件有时候不能让一个人独立完成,也有个人英雄主义在作怪。其实原因很简单,比如说,高中我们做题应该很有体会,感觉一张卷子一点问题也没有,但是等成绩下来的时候总不是一百分,为什么,因为我们很难发现自己的错误,哪怕是重复很多次,这是思维定势。 软件开发与其说是技术活,不如说是规范活软件开发是程序员奇思妙想的时候,用什么方法都是随心所欲的,有的人则为了追求速度或者说是彰显个性而用一些很不大众的算法,以为这是体现自己高明的地方,恰恰相反,这真是不懂编程的表现,一般的项目一般都不是一个人来完成的,它分为开发阶段和维护阶段,然而维护阶段一般又非开发人员所为,所以如果代码技术性过于高,反而对后面的维护不利,另外,IT是个跳槽率很高的职业,如果一项工程没有完成就离开,剩下高明的算法要让谁看呢,出于对公司的考虑,最好还是规规矩矩,符合大众的口味。 文档的重要性很多人,尤其是大学生,刚开始学习编程的时候,难免会有一些急功近利的想法,想快点做出点成绩,但是往往欲速则不达,就想前段时间做的机房收费系统一样,在一种完全没有文档的情况下,虽然最后做完了,而且也跑起来了,问题似乎也没有想象的那么多,但是其中的过程只有自己知道,代码啦,数据库啦都不忍心看,可以说是乱七八糟的,想加个数据库就加,想加个功能就加,很有文档,就像没有目的的去雕塑,雕成什么样,算什么样,而且很多情况是中途发现需要这个样子了,才发现,那部分材料已经被自己给去掉了,所做的程序自然没有规律可言,如果现在有人说那个机房收费系统那个功能要修改一下,我估计我的得全盘改动 开发软件为什么时间总是那么紧,开发的人总是那么累曾经有过单纯的想法,为什么工作非要加班呢,多用些人不就行了吗,人多力量大嘛,但是自从软工看完后便觉得这种想法荡然无存了,其实,原因并不是说老板多黑心,而是取决于软件开发工作的性质,这是一项需要智慧的工作,首先,这不是工厂,没有机器,只有手工;其次,这里需要残杂很大一部分人文因素,比如说个人习惯,同样输出一个结果,两个人的算法往往就有很大的区别,所以参加人数越多,在项目中的不同因素就越多,因为各个模块之间的衔接问题就越大,所以参加人数应该是少而精,所以这也是为什么蓝精灵体中说程序员是“聪明而辛苦”,聪明在他们每个人都是一个设计师,辛苦在一项任务,自己又无可取代的位置,只能是自己的事情自己干。 如果自己无法适应社会中的潜规则,那么就学编程吧(不知道这样说对不对)从我目前的认识来看,突然发现软件行业是整个社会的一片净土,这里不像其他行业一样靠嘴吃饭,更多的是需要能力,除非老板想赔钱,不然绝对不会用一个靠关系而不是靠技术的人来当项目经理,因为这个关系到整个项目生存的决定性因素;虽然同事之间保持着微妙的竞争关系,但是一个项目要想如期完成必须要和同事上司好好合作;做软件开发的每个项目的每个功能,无处不能体现全心全意为人民服务的宗旨,所以开发软件的人无疑又是心细如丝,必定是善良的,体贴的,嫁人就嫁程序员哦。所以,以此可见,这里的确是一片净土。

软件工程我知道你最擅长的是哪个平台

相关百科
热门百科
首页
发表服务