① 为什么提出软件工程
1.软件
要知道什么是软件工程,当然得先知道什么是软件.软件就是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据和相关文档的完整组合.注意:软件不仅包括程序,还包括文档.所以做软件也不仅仅是编程序,还需要写文档,后者应该提到与前者并重的地位。
2.软件危机
从50年代到60年代,人们曾经把程序设计看作是一种任人发挥创造才能的技术领域,只要程序能得到正确的结果,程序的写法可以不受任何约束.人们认为好的程序应该是运用了许多与众不同的技巧和窍门的程序.这种观点好象把编程序当成了一种艺术,因为艺术总是宣扬个性,喜欢与众不同.(实际上,编程序的确可以看做是一种艺术,不过这种艺术是在遵循一定范式和准则这个前提下的艺术,个人观点) 然而,随着软件的规模越来越大,人们在实践中发现随心所欲编写的程序给维护,修改带来了很大的麻烦.程序晦涩难懂,不同程序员,不同时期编写的模块难以接口.因此,软件开发遇到了很大的困难.往往投入很大,收获甚微.做的软件漏洞百出,或无人使用.这就是软件危机.
于是,人们在茫然中,渐渐的抛弃了原先的观点,开始探索一种新的软件开发的思想.这就导致了软件工程的产生.程序也从按个人意图创造的"艺术品"转化为一种工程化的产品。
3.软件工程的定义
软件工程的定义很多,如:“软件工程是开发,运行,维护和修复软件的系统方法”;“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”等等。
定义是抽象的,掌握精髓才是关键。对软件工程的最好理解就是“只可意会,不可言传”,试问各位看官,您们都学过化学,但化学的定义是什么呢?
但是,为了更快的意会,有必要在此废话几句。软件工程可以看作是一种方法,一种思想,就是指导大家如何更好地开发软件的方法和原则。软工也可看作是一种工具,就是帮助大家分析,设计软件的工具,如:流程图,数据字典,以及一些辅助软件等。软工还可以看做是一种过程,就是软件开发的过程。实际上,方法,工具,过程三者是软件工程的三要素.
我是大一软件工程专业的新生呢,上面的我从网上找来的,觉得挺好的,再者,说简略一点就是,我认为是在做软件开发的过程中加入了工程化的思想,使软件开发,管理得更好,质量更高。
② 为何需要软件工程
软件工程是相对于硬件工程而言,“软件工程”相当于人的大脑学习、提升、组织营运,重要!!!
③ 软件工程对于社会的重要性
软件工程目的和其他学科的工程方法(比如土木工程等)并无太大差异,主要是降低软件系统的复杂性、提高其可控性,以此在软件开发、维护、测试等各个阶段提高效率。其实要了解软件工程“有什么用”,最好能了解软件开发过程有多复杂(或者说为什么称之为“复杂”)。如果只是一个geek自己随便开发上千行代码的小系统,其实并不需要传统的软件工程方法。但是,如果开发的系统的规模上升到万行乃至十万行左右的规模,加上软件中各行代码间存在的千丝万缕的联系,普通人(即使是常常具有自我智力优越感的程序员)要继续开发并且维护这样一个系统就会变得捉襟见肘了。当现实中存在这种情况时,程序员们往往会说,这个系统“太复杂了”,或者会说这个系统“太乱了”。复杂原因在于程序员面对的问题规模(万行乃至于十万行左右的系统中千丝万缕的代码逻辑)超过了他人脑所能处理的极限。面对现实问题,比如,一个银行系统,我们很难改变它本身的规模,因为银行业务本身就很庞大,但是人们能做到的是降低那“庞然大物”内部的逻辑复杂性。更重要的是,很多时候,程序员在开发一个软件功能时并不需要完全了解整个系统的所有细节,他只需要专注于某个局部。这样,相比于系统规模,减少系统内部的逻辑耦合就更为重要。由此,软件工程的核心目的就在于做到这一点,简而言之,我们需要让整个软件系统“大而不乱”,井井有条。如果了解软件工程领域的相关知识,就会发现软件工程的准则,比如高内聚低耦合、构件化软件开发以及关注点分离等等,都是围绕这一目的提出的。当然,软件工程本身是一个很大的范畴,软件工程方面的研究也纷繁复杂,但最终目的都是要减少程序员工作的负荷并提高软件需求、设计、开发、测试、维护的效率。所以说软件工程这个专业对社会至关重要!
④ 软件工程是什么未来发展怎么样
1、软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。
2、软件工程未来发展和IT行业密切相关。IT领域将有以下几个比较明显的发展趋势:
第一:5G落地应用将带动物联网的全面发展。随着5G标准的逐渐应用,未来十年物联网相关领域将得到全面的发展,包括车联网、农业物联网、智能家居、智慧城市等领域将释放出大量的岗位需求,所以物联网相关领域将是软件工程专业关注的一个重点。
第二:产业互联网的发展将带动大数据和人工智能的落地应用。当前互联网领域正在从消费互联网向产业互联网过渡,产业互联网的发展将促使大数据和人工智能的进一步落地应用,所以软件工程专业将进一步拓展知识面。从近几年软件工程专业的毕业答辩来看,一部分同学的毕业设计就选择了大数据、机器学习、计算机视觉等方向,这也在一定程度上说明了软件工程专业对于新技术比较敏感。
第三:网络安全领域将释放出大量的发展机会。随着物联网和大数据技术的发展,网络安全的覆盖面进一步得到了拓展,没有安全的大数据走不远,同样没有安全的物联网也无法落地应用,而物联网目前也是人工智能的重要应用场景,所以安全将是未来IT行业内一个重要的领域。因此,未来软件工程专业也会更加关注安全领域的知识教育。
⑤ 谈一谈对软件工程专业的认识
对软件工程的一点看法--希望能够抛砖引玉
在这里看到很多网友的高论,很有启发。而且目前市面上也涌现出一批面向不同方面的软件过程的书籍,可是在这里,我一直没找到真正对实践有指导意义的,可操作的应用方法,所以现在这儿抛块砖,望各位高手指正。
我个人的理解,软件工程就是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。而且,软件工程在企业范围内运行,一定需要企业资源的支持,要与企业的经营、决策、管理体系联系在一起,才能够被踏踏实实的落实下来。
软件业作为一个服务业,要想得到发展,首先必须形成一个对软件服务有迫切需要的市场。其次,这个市场中的消费者必须具备足够的购买力。软件的消费群体简单一点,可以分为个体消费和企业消费。中国的企业群体,数量庞大,但是质量不高。上规模的企业极少,因此,中国的企业对大型软件的消费肯定是有限的,软件的个人消费,至少目前在中国,还是不成气候。因此,国内目前能够形成比较大规模的独立市场的,肯定是小规模的软件系统。
此外,质量的好与坏也不能绝对而论。比如说,你花500元,买双皮鞋,只穿了一个月就坏了,肯定是劣质产品。可是如果你只花了5元买这双鞋,还是穿了一个月就坏了,他就是个优质产品了。软件也是一样。
还有一个,就是软件生命周期问题。在国外,很多中、大型企业里,软件系统已经作为企业的命脉在运行,这些企业当然需要长期、稳定的软件服务、开发体系作为保障,因此相对来说,对于软件的功能需求就比较明确,而国内的中小企业在运营方面本来就把灵活多变作为生存武器,当然不可能有比较长期的经营计划,更不可能运用软件系统进行全面企业管理。这就导致对软件系统需求的短期行为,因此,他们更加希望一次性购买功能有限的软件系统,而不是长期连续的软件服务。
如果上面的分析有代表性的话,那就是说我们现在必须对开发这类软件形成一套非常有效的工程方法:
1。规模小。
2。成本低
3。质量要求不高。
4。售后服务有限。
5。生命期短。
我想,对于这类系统,RUP未必是一套好的方法。另外,我还想谈谈对软件人员素质的看法。
从我个人的经历来说,我觉得我们对于软件工程师的培养方法有问题。理论上说,软件只要设计了一个好的结构,解决了所有的技术难点,剩下的代码高中生就能做。实际上我们的很多名牌大学的计算机专业毕业生都不能很好的Coding。尤其是现在有了VB、PB、JAVA之后,大家似乎认为计算机的体系结构都不用关心了。我曾经经手的几个软件项目中,很多工程师对于用C语言开发Win32多线程、事件驱动、死锁、内存分配等问题根本束手无策。我不相信这些问题可以靠很好的文档解决。实际上,能够用OO的工具工作,根本不代表能够进行OO的系统分析与设计。
话又说回来,在中国,有10年以上软件开发背景的人,又有几个?而且他们在过去10年里的经验,更多的是小项目的Coding,而不是大项目的管理与系统分析。而一个好的系统分析师,需要的是实践、实践、再实践。假如说我们的商业环境中根本没有大型的软件项目,怎么可能有优异的系统分析师呢?
所以,我想,目前我们的问题,是工程师的技术水平、知识面与管理意识、管理方法同样重要,在这样的前提下,我们是不是要探索一下真正适合我们的软件工程方法呢?
⑥ 软件工程问题定义,什么是软件工程它可以解决什么问题
软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来,这就是软件工程。 软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。 (1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜是指软件开发、运行的整个开销满足用户要求的程度。这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。 (2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。伴随以上过程,还有管理过程、支持过程、培训过程等。 (3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。