首页 百科知识 软件开发方法

软件开发方法

时间:2022-10-09 百科知识 版权反馈
【摘要】:软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求、高质量的软件,为此需要有成功的开发方法。传统的软件开发方法也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。由于以分布式对象为基础的构件实现技术日趋成熟,CBD已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。

1.2.2 软件开发方法

软件开发的目标是要在规定的投资和时间内,开发出符合用户的需求、高质量的软件,为此需要有成功的开发方法。为了克服软件危机,从60年代末开始,一直在进行软件方法的研究与实践,提出了多种软件开发方法和技术,对软件产业的发展起着不可估量的作用。

一、软件开发方法

软件开发方法主要包括:面向过程的开发方法、面向对象的开发方法、基于构件的开发方法。

传统的软件开发方法也称为面向过程的软件开发方法,这类开发方法都典型地包含了分析、设计、实现、确认(测试)、演化(维护)等活动。典型的传统软件开发方法有:结构化开发方法(Structured Developing Method)、Jackson方法、原型化方法(Prototyping Method)、HIPO法等。

1.结构化开发方法(Structured Developing Method)

它是一种面向数据流的开发方法,是现有的软件开发方法中最成熟、应用最广泛的方法,主要特点是快速、自然和方便。

结构化方法总的指导思想是自顶向下、逐步求精,以数据流、数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。

结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如功能的分解与抽象、模块独立性、信息屏蔽等。

2.Jackson方法

它是一种面向数据结构的设计方法。强调程序结构与问题结构相对应。Jackson方法由JSP(Jackson Structured Programming)和JSD(Jackson Sys-tem Development)构成。

3.原型化方法(Prototyping Method)

原型是软件开发过程中,软件的一个早期可运行的版本,它反映了最终系统的部分重要特性。

原型化方法的基本思想是花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,原型化方法又称速成原型法(Rapid Prototyping)。强调的是软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。将维护和修改阶段的工作尽早进行,使用户验收提前,从而使软件产品更加适用。

4.HIPO法(Hierarchy Plus Input-process-output Method)

按功能层次结构分析法,74年由IBM公司推出的软件分析及设计方法,又称HIPO图。HIPO图是以功能、功能完备性准则逐层分解的。由直观目录表(H图),概要HIPO图,详细IPO图三部分组成。

面向对象的软件开发方法OOSD(Object-oriented Software Develop-ment)是80年代推出的一种全新的软件开发方法。非常实用,被誉为90年代软件的核心技术之一。其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。

二、软件构件

基于构件的开发(Component-based Development,简称CBD)或基于构件的软件工程(Component-based Software Engineering,简称CBSE)是一种软件开发新范型,它是在一定构件模型的支持下,复用构件库中的一个或多个软件构件,通过组合手段,高效率、高质量地构造应用软件系统的过程。由于以分布式对象为基础的构件实现技术日趋成熟,CBD已经成为现今软件复用实践的研究热点,被认为是最具潜力的软件工程发展方向之一。

下面介绍一些基于构件开发的相关概念,包括构件、接口、契约、构件框架等,另外还介绍CBD开发模式,以及构件技术和对象技术的关系。

1.构件

Szyperski把构件定义为“软件构件是一个仅带特定契约接口和显式语境依赖的结构单元”,同时他还写道:“软件构件可以独立部署,易与第三方整合。”根据这个观点,可以认为构件由一方定义其规格说明,被另一方实现,然后供给第三方使用。

2.接口和契约

接口(Interface)是用户与构件发生交互的连接渠道,第三方只能通过构件接口的规格说明理解和复用构件,接口规格说明也是一种“契约”(Contract),它足够精确地描述构件实现的功能,同时又不把构件限定于唯一的实现方法,这种不确定性带来解决方案的灵活性。另一方面,虽然构件可以独立部署,但是一个构件可能会用到其他构件或平台提供的服务,或者说基于构件的软件系统中通常是多个构件协作完成一定功能,所以构件依赖于组装环境或称为语境(Context)。

3.构件框架

构件基础设施(Infrastructure)是异构构件互操作的标准和通信平台,构件框架(Framework)是构件实例“即插即用”的支撑结构。通过一定的环境条件和交互规则,构件框架允许一组构件形成一个“孤岛”,独立地与外部构件或其他框架交互和协作,因此构件框架及其内含的构件也可以视为一个构件,于是构件通过不断地迭代和合成,构成一个结构复杂的应用系统。目前,有多个组织和公司制定了构件基础设施的标准或开发了相关产品,也为构件、构件框架和接口建立了模型和技术规范,其中OMG CORBA、Microsoft COM/DCOM(或.NET)以及Sun JavaBean/EJB占主导地位。

4.CBD开发模式

CBD遵循“购买而不创建(Buy,don't Build)”的开发哲学,让人们从“一切从头开始”(Build From Scratch)的程序编制转向软件组装。基于构件的开发任务包括创建、检索和评价、适配、组装、测试和验证、配置和部署、维护和演进等主要活动,它们与传统的生命周期中的方法不尽相同。首先,CBD采用以构件库为中心的开发模式,构件检索和评价是CBD的一项关键任务,这里我们理解的构件库不仅仅是一个独立的数据库,而是广泛的、一切可获得的构件资源,尤其是通过互联网发布的软件构件。其次,构件形成是一种在软件体系结构支持下的组装过程,也就是说,在应用领域里需要用DSSA将独立的构件组装成完整的应用系统,可见构件的匹配和一致性验证也成为CBD的关键任务。再次,CBD过程中需要同一些技术标准化接轨,相同的构件可能由多个软件供应商生产,被多个用户使用,所以构件接口、构件基础设施必须标准化。最后,CBD需要配置管理(Configuration Management),即专门处理构件的集成、配置和发布(Distribution)的有关事宜,于是构件的配置、适配和部署都是CBD的关键任务。

5.构件技术和对象技术的关系

构件技术与面向对象技术紧密相关。构件和对象都是对现实世界的抽象描述,通过接口封装了可复用的代码实现,不同的是,首先在概念层面上,对象描述客观世界实体,构件提供客观世界服务(Service)。其次在复用策略上,对象是通过继承实现复用。而构件是通过合成实现复用;最后在技术手段上,构件通过对象技术而实现,对象按规定经过适当的接口包装(Wrap)之后成为构件,一个构件通常是多个对象的集合体。

现在,构件技术已经成为计算环境的基本组成之一,众多中间件产品和开发工具提供了对不同构件模型的实现支持,特别在分布式、企业级应用软件系统中,无不把软件的构件化作为解决维护、扩展和升级的唯一途径。然而,虽然业已存在了大量的CBD概念、方法和工具,软件业并未完全迁移到CBD软件开发范型,一个主要原因是缺少一套成熟的CBD开发方法学,因而我们应该解决如下关键问题:

①必须建立一个完善的CBD概念框架,用数学方法定义构件相关概念的形式化模型,既要尽可能的简单,又要足以描述已有的构件基本概念和开发技术。

②必须有切实可行的构件描述方法和技术。在构件概念框架基础上,为构件开发者建立相互交流的特殊语言,例如,UML的图形化描述技术和COR-BA IDL的文本描述技术,理想的描述技术可以提供系统的一致性约束和正确性验证。

③要为CBD的开发流程建立一个合理的过程模型,特别要研究如何为扮演不同角色的开发者分配相应的任务,例如软件体系结构设计师负责软件构架设计的详细职责和结果验收标准。

④要有支持描述技术和过程模型的辅助开发工具,至少需要具备开发构件、实现应用系统和生成文档的工具。理想的开发工具还包括关键系统特征的验证工具。

显而易见,上述这些问题和前面介绍的软件复用目的和任务紧密相关,必须从软件复用的认识高度分析CBD方法中存在的问题,重点是使用知识表示方法和演化计算方法解决构件的语义模型和自动过程问题,包括CBD原理和技术中的构件模型、构件体系结构和描述语言和基于构件的开发过程等几方面内容。

特别注意:软件开发方法可以是针对局部的,也可以是针对全局的。软件工程方法,更加强调和重点研究的是需求分析与软件设计的开发方法。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈