软件工程中的数据定义怎么做
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义: Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
IEEE:软件工程是开发、运行、维护和修复软件的系统方法。
Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程必须遵循什么原则 围绕工程设计、工程支持以及工程管理已提出了以下四条基本原则: (1)选取适宜的开发模型 该原则与系统设计有关。
在系统设计中,软件需求、硬件需求以及其它因素间是相互制约和影响的,经常需要权衡。
因此,必需认识需求定义的易变性,采用适当的开发模型,保证软件产品满足用户的要求。
(2)采用合适的设计方法 在软件设计中,通常需要考虑软件的模块化、抽象与信息隐蔽、局部化、一致性以及适应性等特征。
合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
(3)提供高质量的工程支撑 工欲善其事,必先利其器。
在软件工程中,软件工具与环境对软件过程的支持颇为重要。
软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
(4)重视软件工程的管理 软件工程的管理直接影响可用资源的有效利用,生产满足目标的软件产品以及提高软件组织的生产能力等问题。
因此,仅当软件过程予以有效管理时,才能实现有效的软件工程。
软件工程是指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、 技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够 得到的最好的技术方法结合起来,这就是软件工程。
软件工程强调使用生存周期方法学和各种结构分析及结构设计技术。
它们是 在七十年代为了对付应用软件日益增长的复杂程度、漫长的开发周期以及用户对 软件产品经常不满意的状况而发展起来的。
人类解决复杂问题时普遍采用的一个策 略就是“各个击破”,也就是对问题进行分解然后再分别解决各个子问题的策略 。
软件工程采用的生存周期方法学就是从时间角度对软件开发和维护的复杂问题 进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立 的任务,然后逐步完成每个阶段的任务。
采用软件工程方法论开发软件的时候, 从对任务的抽象逻辑分析开始,一个阶段一个阶段地进行开发。
前一个阶段任务 的完成是开始进行后一个阶段工作的前提和基础,而后一阶段任务的完成通常是 使前一阶段提出的解法更进一步具体化,加进了更多的物理细节。
每一个阶段的开 始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就 是后一阶段的开始标准。
在每一个阶段结束之前都必须进行正式严格的技术审查 和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这 个阶段才算结束;如果检查通不过,则必须进行必要的返工,并且返工后还要再 经过审查。
审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所 开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有 一个完整准确的软件配置交付使用。
文档是通信的工具,它们清楚准确地说明了 到这个时候为止,关于该项工程已经知道了什么,同时确立了下一步工作的基础 。
此外,文档也起备忘录的作用,如果文档不完整,那么一定是某些工作忘记做 了,在进入生存周期的下一阶段之前,必须补足这些遗漏的细节。
在完成生存周 期每个阶段的任务时,应该采用适合该阶段任务特点的系统化的技术方法——结 构分析或结构设计技术。
把软件生存周期划分成若干个...
构件的软件工程中的构件
构件是面向软件体系架构的可复用软件模块。
构件(component)是可复用的软件组成成份,可被用来构造其他软件。
它可以是被封装的对象类、类树、一些功能模块、软件框架(framework)、软件构架(或体系结构Architectural)、文档、分析件、设计模式(Pattern)等。
1995年,Ian.oraham给出的构件定义如下:构件(Component)是指一个对象(接口规范、或二进制代码),它被用于复用,接口被明确定义[8]。
构件是作为一个逻辑紧密的程序代码包的形式出现的,有着良好的接口。
像Ada的Package、Smalltalk-80和C++的class和数据类型都可属于构件范畴。
但是,操作集合、过程、函数即使可以复用也不能成为一个构件。
开发者可以通过组装已有的构件来开发新的应用系统,从而达到软件复用的目的。
软件构件技术是软件复用的关键因素,也是软件复用技术研究的重点。
(1)有用性(Usefulness):构件必须提供有用的功能;(2)可用性(Usability):构件必须易于理解和使用;(3)质量(Quality):构件及其变形必须能正确工作;(4)适应性(Adaptability):构件应该易于通过参数化等方式在不同语境中进行配置;(5)可移植性(Portability):构件应能在不同的硬件运行平台和软件环境中工作。
日历、工作流构件、订单构件、用户界面控制等等都可以是构件。
构件具有以下几个特点:(1)自描述:构件必须能够识别其属性、存取方法和事件,这些信息可以使开发环境将第三方软件构件无缝地结合起来;(2)可定制:允许提供一个典型的图形方式环境,软件构件的属性只能通过控制面板来设置;(3)可集成:构件必须可以被编程语言直接控制。
构件也可以和脚本语言或者与从代码级访问构件的环境连接,这个特点使得软件构件可以在非可视化开发项目中使用;(4)连接机制:构件必须能产生事件或者具有让程序员从语义上实现相互连接的其他机制。
采用构件软件不需要重新编译,也不需要源代码并且不局限于某一种编程语言。
该过程叫做二进制复用(Binary Reuse),因为它是建立在接口而不是源代码级别的复用之上的。
虽然软件构件必须遵守一致的接口,但是它们的内部实现是完全自动的。
因此,可以用过程语言和面向对象语言创建构件。
由于构件技术是由基于面向对象技术而发展起来的,与面向对象的设计中的对象相类似,它们都是针对软件复用,都是被封装的代码,但它们之间仍存在很大差异。
(1)在纯面向对象的设计中,对象(类)、封装和继承三者缺一不可,但对构件可以没有继承性,只要实现封装即可;(2)从构件和对象的生成方式上,对象生成属于实例化的过程,比较单一,而生成构件的方式较多;(3)构件是设计的概念,与具体编程语言无关,不像对象属于编程中的概念,要依赖于具体的编程语言;(4)在对构件操作时不允许直接操作构件中的数据,数据真正被封装了。
而对象的操作通过公共接口部分,这样数据是可能被访问操作的;(5)对象对软件复用是通过继承实现的,构件对软件复用不仅可以通过继承还可以通过组装时的引用来实现。
因此,构件不是对象,只是与对象类似。
从力学角度来说,结构是指可以承受一定力的结构形态,它可以抵抗能引起形状和大小改变的力。
每种事物都有它的架构形态,这种架构形态体现着它的结构。
一个较复杂的结构由许多不同的部分组成,这些组成部分通常成为构件。
软件工程的目标和原则
楼上的真麻烦,又从哪儿抄的贴子!你以为你上软工导论课呢?我来简单的介绍一下吧。
其实,开发软件并不简单只是编编程序(如果是那样,初、高中生就能完成了,要我们这些大学生干嘛),就象做生意(比如开商店),你总不会认为开商店就是站那儿卖货吧,你得先进行市场调研,再选店址,然后上货,卖货,当然还有售后服务),这是一个复杂的,系统的工程,一般包括以下几项:客户需求调查或市场调查、软件的框架设计、各框架的进一步细分,编写程序(内容很多,比如用什么语言,面向什么,设计模式等等),黑白盒测试,发布测试版,软件的交付以及售后服务,还有各阶段的文档总结(包括软件的帮助文件,注释等等),总之,就是一个软件从调研到最后发布的各中间过程,软件工程就是对这各种阶段的说明以及如何去实施各阶段,学好了它,对你今后的软件工程师之路是非常有用的,也是必需的。
软件工程中的cmm是什么,有哪五个层次
CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。
它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。
CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。
CMM是是一种用于评价软件承包能力并帮助其改善软件质量的方法,侧重于软件开发过程的管理及工程能力的提高与评估。
CMM分为五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。
CMM是由美国卡内基梅隆大学软件工程研究所1987年研制成功的,是目前国际上最流行最实用的软件生产过程标准和软件企业成熟度等级认证标准。
目前,我国已有软件企业通过了CMM标准认证 。
SW-CMM(Capability Maturity Model For Software 软件生产能力成熟度模型,以下简称"CMM"),是87年由美国卡内基梅隆大学软件工程研究所(CMU SEI)研究出的一种一种用于评价软件承包商能力并帮助改善软件质量的方法,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。
其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件生产中的困难。
CMM它是目前国际上最流行、最实用的一种软件生产过程标准,已经得到了众多国家以及国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。
CMM目前通用流行的版本是1.1(Version1.1)。
《按照软件工程研究所(SEI)的原来计划,CMM的改进版版本2.0(V2.0)是要在1997年的11月完成的。
但是,美国国防部办公室要求软件工程研究所(SEI)延迟发放公布CMM版本2.0,直至他们完成另一个更为紧迫的项目-CMMI。
CMMI(Capability Maturity Model Integration能力成熟度模型集成),是美国国防部的一个设想。
他们希望把所有现存的与将被发展出来的各种能力成熟度模型,集成到一个框架中去。
这个框架用于解决两个问题:第一,软件获取办法的改革;第二,从集成产品与过程发展的角度出发,建立一种包含健全的系统开发原则的过程改进。
CMM为软件企业的过程能力提供了一个阶梯式的改进框架,它基于过去所有软件工程过程改进的成果,吸取了以往软件工程的经验教训,提供了一个基于过程改进的框架;它指明了一个软件组织在软件开发方面需要管理哪些主要工作、这些工作之间的关系、以及以怎样的先后次序,一步一步的做好这些工作而使软件组织走向成熟。
一、CMM的诞生 信息时代,软件质量的重要性越来越为人们所认识。
软件是产品、是装备、是工具,其质量使得顾客满意,是产品市场开拓、事业得以发展的关键。
而软件工程领域在1992年至1997年取得了前所未有的进展,其成果超过软件工程领域过去15年来的成就总和。
软件管理工程引起广泛注意源于20世纪70年代中期。
当时美国国防部曾立题专门研究软件项目做不好的原因,发现70%的项目是因为管理不善而引起,而并不是因为技术实力不够,进而得出一个结论,即管理是影响软件研发项目全局的因素,而技术只影响局部。
到了20世纪90年代中期,软件管理工程不善的问题仍然存在,大约只有10%的项目能够在预定的费用和进度下交付。
软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件开发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常注意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险;军用标准太少且不够完善等等。
在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、项目规划、进展控制、需求变化和风险管理等都是与工程管理直接相关的因素。
由此可见,软件管理工程的意义至关重要。
软件管理工程和其它工程管理相比有其特殊性。
首先,软件是知识产品,进度和质量都难以度量,生产效率也难以保证。
其次,软件系统复杂程度也是超乎想象的。
因为软件复杂和难以度量,软件管理工程的发展还很不成熟。
软件管理工程的发展,在经历了从70年代开始以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征的结构化生产时代,到90年代中期,以CMM模型的成熟模型和日益为市场接受为标志,已经进入以过程成熟模型CMM、个体软件过程PSP和群组软件过程TSP为标志的以过程为中心的时代,而软件发展第三个时代,及软件工业化生产时代,从90年代中期软件过程技术的成熟和面向对象技术、构件技术的发展为基础,已经渐露端倪,估计到2005年,可以实现真正的软件工业化生产,这个趋势应该引起软件企业界和有关部门的高度重视,及早采取措施,跟上世界软件发展的脚步。
软件生产转向以改善软件过程为中心,是世界各国软件产业或迟或早都要走的道路。
软件过程改善是当前软件管...
在软件工程中什么是里程碑
里程碑就是项目开发过程中一个重要的阶段点,这个阶段点之后将意味着项目的开发进入了另一个层面,比如需求分析结束概要设计开始前就应该有一个里程碑,表示需求阶段结束,将进入另外一个过程,这两个过程之间只有文档的交互就可以了,而不一定非要有人员的交互。
阶段就是项目开发过程中明显可以区分的任务分解,需求收集和需求分析就可以划分为两个阶段,但都数据需求这个大阶段中的,但需求收集和需求分析之间就不能存在一个里程碑,因为你没有完成一个完整的过程。
需求收集和需求分析阶段至少有客户是必须始终参与的,而概要设计阶段一般就不需要客户的参与了。
什么是软件工程
什么是软件工程 软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程中的形式方法
《软件工程形式化方法与语言》选取并介绍了三种代表性的形式化方法,它们分别是以集合论和一阶谓词演算为基础的Z语言,以时态逻辑为基础的XYZ,还有以直觉数学学派为基础的类型理论。
《软件工程形式化方法与语言》既可以作为计算机专业的研究生的形式化课程教材,又可以用作专业人员的参考书。
虽然真正从事形式化方面的工作的人员不多,但是有必要通过对该课程的学习,使学生在理论、技术和方法上都得到了系统而有效的训练,有利于提高软件人员的素质和能力。
___娇娇___