软件工程的几种定义
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、给出n种常用的“软件工程”、“软件质量”的定义并进行适当的解释。阅读相关的文章,
对文章进行总结,概括其主要结论并简述你自己的观点。每项至少1页A4纸。
软件工程:
几种软件工程的定义:
Fritz Bauer在NATO会议上给出的定义:软件工程是建立和使用一套合理的工程原则,从而经济地获得可靠的,可以在实际机器上高效运行的软件。
IEEE在软件工程术语汇编中的定义:软件工程是(1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。(2)在(1)中所述方法的研究。
《计算机科学技术百科全书》中的定义:软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
百度百科:软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
上面是软件的几个定义,其实概括起来就是软件加工程。就是把工程学的思想应用于软件,但是软件工程又不同于其他的工程,它有它特别的地方。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。随着信息化的不断扩大,软件的范围已经越来越广了,越来越大了。所以有一个良好的软件开发方法,能有效的提高软件的开发效率。软件工程就是研究这一方面的。如同土木工程,建筑工程一样,软件也需要系统化,规范化,可量化的进行开发。但是软件开发又与建筑工程有不一样的地方。如果使用双倍的人力建筑工程可能可以将工程期提早一半完成,例如两个人砌一个人的砖是不是快了一倍。但如果说使用双倍的人数就能将软件工程的开发周期提高一倍的话,那是不可能的。软件的开发过程中,需要团队人员不断的沟通。我觉得软件开发过程中需要的合作沟通远远比建筑工程需要的多。所以说团队的人越多,花在沟通上的时间也会越多,人均的效率反而可能会降低。
软件质量:
字典中队质量的定义是:“某一事物的特征或属性”。作为一个事物的属性,质量指的是可测量的特征-与已知标准可以进行比较,如长度、颜色、电气特性、课延展性等等。但是软件在很大程度上是一种知识实体,其特征的定义远比物理对象要困难得多。然而却是存在程序特征的测量。这些属性包括循环复杂度,内聚性,功能点数量、代码行数、以及其他很多属性。当根据对象的可测量特征考察一个对象时,可以有两种不同的质量,设计质量和一致性质量。
软件质量是一模糊的、捉摸不定的概念。我们常常听说:某某软件好用;某某某软件功能全、结构合理、层次分明、语言流畅。这些模模糊糊的语言实在不能算作是软件质量评价,特别不能算作是软件质量科学的定量的评价。但是,软件质量,乃至于任何产品质量,都是一个很复杂的事物性质和行为。对于什么是产品质量,可以从以下几个观点来看:
* 透明性观点:质量是产品一种可以认识但不可定义的性质;
* 使用者观点:质量是产品满足使用目的之程度;
* 制造者观点:质量是产品性能和规格要求的符合度;
* 产品观点:质量是联结产品固有性能的纽带;
* 基于价值观点:质量依赖于顾客愿意付给产品报酬的数量。
按照ISO/IEC9126-1991(GB/T16260-1996)"信息技术软件产品评价质量特性及其使用指南"国际标准,对软件质量也有定义,软件质量(software quality)是与软件产品满足明确或隐含需求的能力有关的特征和特性的总和。简言之,软件质量是软件一些特性的组合,它仅依赖软件本身。对于软件质量有三种不同的视面。用户主要感兴趣的是如何使用软件、软件性能和使用软件的效果。所以他们关心的是:(1)是否具有所需要的功能;(2)可靠程度如何;(3)效率如何;(4)使用是否方便;(5)环境开放的程度如何。我们进一步解释软件质量特性,一个软件质量特性可破细化成多个子特性。功能性是与一组功能及其指定的性质有关的一组属性,可靠性是与在规定的一段时间和条件下,软件维持其性能水平的能力有关的一组属性,易用性是与一组规定或潜在用户为使用软件所需作的努力和对这样的使用所作的评价有关的一组属性。
我认为软件的质量包括两方面。对用户来说,软件可靠性强,软件易用,软件稳定性强。则用户觉得质量好;对于开发人员来说:除了用户所关心的,他们还可能会关心,程序的代码结构,整体框架,软件的可维护性,程序的可读性等等也标志着它的质量。当然,我们还能从其它角度,比如软件的生产者-人的素质,来诠释软件质量,但不管怎样,软件的产品质量是最终的检验标准,而最终的检验者就是客户。从这个意义上说,软件质量就是客户满意度。
二、名词解释:“软件危机”,“软件的特点”,“软件的产生和发展”
1、软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。一些复杂的、大型
的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
2、软件的特点:
A) 软件是一种逻辑实体,是人类智力成果的表现形式。
B ) 软件的开发和制造是一个统一的过程。
C)软件开发时一项经济活动,在一定的成本和时间限制下,满足用户的需求是软件的开发的目标。
D ) 软件不会磨损,但可能存在错误,需要进行维护。
E ) 软件的复杂度随着亏魔的增大迅速增加。
3、软件的产生和发展
软件的产生始于早期的机械式计算机的开发。从19世纪起,随着机械式计算机的更新,出现了穿孔卡片,这种卡片可以指导计算机进行工作。但是直到20世纪中期现代化的电子计算机出现之后,软件才真正得以飞速发展。软件工程发展史上各个阶段的里程碑是:(1)70年代:程序设计方法学、结构化分析和设计、抽象数据类型、软件工具;(2)80年代:软件开发方法学、软件工程环境(CASE)、面向对象技术;(3)90年代:软件复用和软件构件技术、软件过程、需求工程。如何达成软件工程的目标--提高开发质量和生产率?过去的认识:技术的发展是达到上述目标的主要(唯一)途径。如:80年代后期,CASE工具、环境被认为是最好的解决方案--通过自动化工具的支持可以很容易地提高质量和效率;90年代,GUI生成技术和OO技术也被寄予厚望。其原因在于,技术可以给出立即可见的解决方案,并很快得到收益。但结果却经常不尽人意。