论文部分内容阅读
【文章摘要】
随着计算机科学技术的迅速发展,软件系统越来越复杂,若还采用原来旧的方法开发软件,则无法满足软件系统的要求,这就需要有一种更新,更符合系統工程要求的方法来指导软件系统的开发。
【关键词】
软件系统;模型;软件开发方法
1 软件系统的开发过程
1.1 软件过程领域的基本概念
软件可划分为智能软件、系统软件和应用软件三个领域。由于不同的软件采用的开发知识不同,从而构成各自相应的方法。尽管,智能软件和应用软件分属不同的领域,但智能软件和应用软件都是计算机软件。建造软件系统的解决方案由三个关键的相互关联的基本要素组成:(1)软件工程过程(SEP)。(2)软件工程过程支持环境(SEPSE,如开发工具和建模语言等)。(3)培训、指导和咨询服务。
1.2 软件过程的特点
软件过程中的所谓“过程”是创建一个产品或完成某些任务的一种系统化的方法和工作过程,它异于通常计算机领域所特指的可运行的软件的过程,其执行者不再仅仅是计算机,而经常是由具体承担任务的软件开发人员使用给定的开发工具来执行,其意义更为广泛,描述了以某种有条理的方法进行工作或实现一个目标的任何一种机制,它甚至可以是一个无法在计算机上运行的过程,完全由人工或人工借助计算机领域以外的其它工具来完成。
软件过程是关系错综复杂的各种活动的集合,各活动之间有时有严格的时序关系,有时是异步并行的,有时互为条件,有时互为反馈,因此实际的软件过程中的活动存在一种复杂的网状关系。软件开发是一个高度动态的过程,动态变化渗透到了软件过程的各个方面:需求说明、任务分配、调试、开发策略、工具集、支持环境等,这些变化的出现通常不可预料,造成的影响也无法确定。
2 建立过程模型的基本过程
开发过程模型首先要对外部过程模型进行提取和抽象,产生一个非正式的过程模型,包括执行过程所接收到的反馈。随后对过程的活动顺序以及所涉及的产品进行抽象描述,它可用于许多相似的项目和组织之中,共享某些信息。这样的模型意味着是一个非常高层的过程体系结构,可以满足一般的原则和需求,可以将其视为一个通用的原模型。在此基础上,用户可以根据具体情况详细而又严格地描述过程中的各种任务类型,这时可以从管理人员的角度来精细化所有的子模型,如对特定领域内的任务和角色进行分类和施加约束。在将软件模块交付集成测试组时,可以说明这是某个特定过程模型所产生的结果。同时这个过程模型还需要进一步实例化以适应项目的各种约束和条件,因而实例化的过程模型是一个可执行的过程描述,它将实例化的活动与具体的产品和项目资源联系起来,并遵循一定的调度时间表。一旦过程模型为相应的项目进行了实例化,该模型就可以进行模拟和运作。在模拟之后就可以对过程模型进行实际运作,生产有关的产品。
3 当前主流的软件开发方法
3.1 结构化方法
所谓软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装。软件的构件化和集成技术的目标是:软件系统可以由不同厂商提供的,用不同语言开发的,在不同硬件平台上实现的软件构件,方便地、动态地集成。这些构件要求能互操作,它们可以放在本地的计算机上,也可以分布式地放置在网上异构环境下的不同结点上。
3.1.1结构化程序设计方法
20世纪60年代,围绕是否应取消goto语句,人们展开了一场激烈的争论。围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须考虑到程序的可维护性,重视程序的可读性、清晰性和可理解性,而不能随心所欲地去过分追求程序编写技巧。
由于使用三种基本程序结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以逐渐成为主流的程序结构标准。按照这样的新思维观念,形成了一个新的程序设计方法——结构化程序设计方法,结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。
3.1.2结构化分析方法和结构化设计方法
结构化程序设计方法的巨大成功推动了结构化分析方法和结构化设计方法的发展。1974年,Stevens、Myers 和Constantine发表文章《Structured Analysis》,提出了结构化分析和结构化设计的概念。
结构化分析方法根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模块,从而完成需求分析工作。结构化设计方法使用模块化和自顶向下逐步细化技术,将数据流图等结构化分析的结果转化为软件系统总体结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
3.2 面向对象方法
面向对象软件开发方法包括面向对象分析方法(Object-Oriented Analysis,简称OOA)、面向对象设计方法(Object-Oriented Design,简称OOD)和面向对象程序设计(Object-Oriented Programming,简称OOP),其核心是面向对象程序设计方法。
一般认为软件由程序和文档组成,而程序又由数据结构和算法组成,在传统的程序设计方法中,数据(数据结构)和施加在数据上的操作(算法)被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合,然而客观世界的实体既有静态的属性(即数据),又有动态的行为(即对数据的操作),因此这两方面内容密切相关,由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,增加了软件开发的难度。相反,面向对象方法有下列要点:客观世界是由各种对象(Object)组成的,复杂对象可以由简单对象组成。有共同属性和方法的一组对象抽象为一个类(Class)。一个类(子类)可以继承另外一个类(父类)的方法和属性,这一特性称为继承。对象之间通过传递消息进行通信。
以上特点可以归结为如下的公式:Object-Ori-ented=Object+Classification+Inheritance+ Communication with Messages。在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解。这一思维观念创新使得问题空间与解空间的结构基本一致,有利于软件复用,也与人们通常认识世界的思维方式相符,更利于加强代码的易懂性。
3.3 形式化方法
软件工程中的形式化方法就是依靠数学模型和计算来描述和验证一个目标软件系统的行为和特性,包括需求规格、设计和实现等,形式化方法最根本的特征就是建立在严格的数学基础上,如果一个方法有良好的数学基础,那么它就是形式化的,典型的以形式化规约语言给出。形式化方法能很好地解决在软件开发中经常出现的二义性问题,因为形式化方法主要是符号系统,这种符号系统具有一定的数学性质。
4 结束语
总之,我们要不断坚持和谐软件过程,根据软件、行业、人文等各类因素,不断地落实和深化和谐软件过程的理念,不断反思总结吸收借鉴改善创新,如并行工程,敏捷制造和全球制造。
【参考文献】
禾盈.软件研发向质量管理要效益[N].金融时报,2001
【作者简介】
钱秋实,(1990—),男,辽宁沈阳市人,同济大学软件学院硕士研究生。
随着计算机科学技术的迅速发展,软件系统越来越复杂,若还采用原来旧的方法开发软件,则无法满足软件系统的要求,这就需要有一种更新,更符合系統工程要求的方法来指导软件系统的开发。
【关键词】
软件系统;模型;软件开发方法
1 软件系统的开发过程
1.1 软件过程领域的基本概念
软件可划分为智能软件、系统软件和应用软件三个领域。由于不同的软件采用的开发知识不同,从而构成各自相应的方法。尽管,智能软件和应用软件分属不同的领域,但智能软件和应用软件都是计算机软件。建造软件系统的解决方案由三个关键的相互关联的基本要素组成:(1)软件工程过程(SEP)。(2)软件工程过程支持环境(SEPSE,如开发工具和建模语言等)。(3)培训、指导和咨询服务。
1.2 软件过程的特点
软件过程中的所谓“过程”是创建一个产品或完成某些任务的一种系统化的方法和工作过程,它异于通常计算机领域所特指的可运行的软件的过程,其执行者不再仅仅是计算机,而经常是由具体承担任务的软件开发人员使用给定的开发工具来执行,其意义更为广泛,描述了以某种有条理的方法进行工作或实现一个目标的任何一种机制,它甚至可以是一个无法在计算机上运行的过程,完全由人工或人工借助计算机领域以外的其它工具来完成。
软件过程是关系错综复杂的各种活动的集合,各活动之间有时有严格的时序关系,有时是异步并行的,有时互为条件,有时互为反馈,因此实际的软件过程中的活动存在一种复杂的网状关系。软件开发是一个高度动态的过程,动态变化渗透到了软件过程的各个方面:需求说明、任务分配、调试、开发策略、工具集、支持环境等,这些变化的出现通常不可预料,造成的影响也无法确定。
2 建立过程模型的基本过程
开发过程模型首先要对外部过程模型进行提取和抽象,产生一个非正式的过程模型,包括执行过程所接收到的反馈。随后对过程的活动顺序以及所涉及的产品进行抽象描述,它可用于许多相似的项目和组织之中,共享某些信息。这样的模型意味着是一个非常高层的过程体系结构,可以满足一般的原则和需求,可以将其视为一个通用的原模型。在此基础上,用户可以根据具体情况详细而又严格地描述过程中的各种任务类型,这时可以从管理人员的角度来精细化所有的子模型,如对特定领域内的任务和角色进行分类和施加约束。在将软件模块交付集成测试组时,可以说明这是某个特定过程模型所产生的结果。同时这个过程模型还需要进一步实例化以适应项目的各种约束和条件,因而实例化的过程模型是一个可执行的过程描述,它将实例化的活动与具体的产品和项目资源联系起来,并遵循一定的调度时间表。一旦过程模型为相应的项目进行了实例化,该模型就可以进行模拟和运作。在模拟之后就可以对过程模型进行实际运作,生产有关的产品。
3 当前主流的软件开发方法
3.1 结构化方法
所谓软件构件化,就是要让软件开发像机械制造工业一样,可以用各种标准和非标准的零件来进行组装。软件的构件化和集成技术的目标是:软件系统可以由不同厂商提供的,用不同语言开发的,在不同硬件平台上实现的软件构件,方便地、动态地集成。这些构件要求能互操作,它们可以放在本地的计算机上,也可以分布式地放置在网上异构环境下的不同结点上。
3.1.1结构化程序设计方法
20世纪60年代,围绕是否应取消goto语句,人们展开了一场激烈的争论。围绕goto语句争论的结果使人们形成了新的思维观念:编写程序时,在正确地实现了软件功能的前提下,必须考虑到程序的可维护性,重视程序的可读性、清晰性和可理解性,而不能随心所欲地去过分追求程序编写技巧。
由于使用三种基本程序结构(顺序、选择、循环)组成的程序具有良好的可读性、清晰性和可理解性,容易维护,所以逐渐成为主流的程序结构标准。按照这样的新思维观念,形成了一个新的程序设计方法——结构化程序设计方法,结构化程序设计是根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,从而实现详细设计。
3.1.2结构化分析方法和结构化设计方法
结构化程序设计方法的巨大成功推动了结构化分析方法和结构化设计方法的发展。1974年,Stevens、Myers 和Constantine发表文章《Structured Analysis》,提出了结构化分析和结构化设计的概念。
结构化分析方法根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模块,从而完成需求分析工作。结构化设计方法使用模块化和自顶向下逐步细化技术,将数据流图等结构化分析的结果转化为软件系统总体结构,用软件结构图来建立系统的物理模型,实现系统的概要设计。
3.2 面向对象方法
面向对象软件开发方法包括面向对象分析方法(Object-Oriented Analysis,简称OOA)、面向对象设计方法(Object-Oriented Design,简称OOD)和面向对象程序设计(Object-Oriented Programming,简称OOP),其核心是面向对象程序设计方法。
一般认为软件由程序和文档组成,而程序又由数据结构和算法组成,在传统的程序设计方法中,数据(数据结构)和施加在数据上的操作(算法)被分离成两个独立的部分,而程序被看作是工作在数据上的一系列过程或函数的集合,然而客观世界的实体既有静态的属性(即数据),又有动态的行为(即对数据的操作),因此这两方面内容密切相关,由于传统的程序设计方法将这两方面内容分离,无形中加深了问题空间与解空间之间的裂痕,增加了软件开发的难度。相反,面向对象方法有下列要点:客观世界是由各种对象(Object)组成的,复杂对象可以由简单对象组成。有共同属性和方法的一组对象抽象为一个类(Class)。一个类(子类)可以继承另外一个类(父类)的方法和属性,这一特性称为继承。对象之间通过传递消息进行通信。
以上特点可以归结为如下的公式:Object-Ori-ented=Object+Classification+Inheritance+ Communication with Messages。在面向对象程序设计方法中,数据和施加在数据上的操作被封装在一起,形成类和对象的概念,用对象分解取代了传统方法的功能分解。这一思维观念创新使得问题空间与解空间的结构基本一致,有利于软件复用,也与人们通常认识世界的思维方式相符,更利于加强代码的易懂性。
3.3 形式化方法
软件工程中的形式化方法就是依靠数学模型和计算来描述和验证一个目标软件系统的行为和特性,包括需求规格、设计和实现等,形式化方法最根本的特征就是建立在严格的数学基础上,如果一个方法有良好的数学基础,那么它就是形式化的,典型的以形式化规约语言给出。形式化方法能很好地解决在软件开发中经常出现的二义性问题,因为形式化方法主要是符号系统,这种符号系统具有一定的数学性质。
4 结束语
总之,我们要不断坚持和谐软件过程,根据软件、行业、人文等各类因素,不断地落实和深化和谐软件过程的理念,不断反思总结吸收借鉴改善创新,如并行工程,敏捷制造和全球制造。
【参考文献】
禾盈.软件研发向质量管理要效益[N].金融时报,2001
【作者简介】
钱秋实,(1990—),男,辽宁沈阳市人,同济大学软件学院硕士研究生。