您现在所在的位置是:首页 > 业界新闻

服装营销软件工程方法

方法是工程学的核心,只有采用正确的方法,才能保证工程的有效实施。软件工程方法包括软件开发方法、软件管理方法、软件度量方法、软件环境方法等。从方法的层次上,可以把软件开发方法分为基础方法和一般方法。基础方法包括分析方法、综合方法、关联方法、抽象方法、模型方法、分类方法、系统方法、集成方法等。一般方法有面向功能方法、面向数据方法和面向对象方法等。教学要求①了解软件工程方法的含义和分类。②了解软件工程的一般方法。③了解面向功能方法和面向数据方法。④掌握面向对象方法的基本思想和基本概念。重点和难点①面向对象方法。

1.1概述
1.1.1软件工程方法的含义
从广义上讲,服装营销软件工程方法包括软件开发方法、软件管理方法、软件度量方法、软件环境方法等,其中软件管理方法、软件度量方法和软件环境方法属于软件工程管理、软件工程度量和软件工程环境等分支学科中的内容,一般所讨论的软件工程方法也就是指软件开发方法。软件工程方法与软件生存周期、软件过程、软件建模语言等存在着密切的联系,并在很大程度上决定着软件开发的成败和优劣,所以说,软件工程方法是软件工程学科的重要内容。

1.1.2软件工程方法的分类可以从不同方面对软件工程方法进行分类。从方法的层次上,可以分为基础方法和一般方法。基础方法指在软件工程过程中人们分析问题和解决问题的通用方法,主要包括分析方法、综合方法、关联方法、抽象方法、模型方法、分类方法、系统方法、集成方法等。一般方法是建立在基础方法之上,根据软件和软件工程的特点和性质,适应软件开发工作的独特性所形成的方法体系。我们日常所谈论的软件开发方法是指软件开发的一般方法,一般方法有面向功能方法、面向数据方法和面向对象方法。
从方法所适应的范围可以分为局部方法和全局方法。局部方法仅适应于软件开发周期某一个或某几个阶段,如程序设计方法、系统分析方法等。全局方法是覆盖软件开发全过程的方法,面向功能方法、面向数据方法和面向对象方法都是全局方法。
从开发风范上可以分为自顶向下的方法和白底向上的方法。自顶向下方法遵循由粗到细、从总体到局部、由框架到细节的开发风范。自底向上方法则是反过来,按照由局部到总体、由细节到框架的开发风范的一类方法。大部分软件工程方法并不单独采用某一种方法风范,而是两种开发风范相结合,但以某一种风范为主。
根据方法的严密性,可以把软件工程方法分为形式化方法和非形式化方法。形式化方法采用严格的数学方法,对软件需求、过程和要素采用形式化描述,对描述的结果可以进行论证,对被证明是正确的描述可以通过软件生成系统转化为所需的软件结果。非形式化方法在软件工程过程中采用非形式化的自然语言或限定性自然语言进行描述,强调软件开发的工程性,缺乏严密的形式化描述。
从方法侧重的不同,可以分为面向功能方法、面向数据方法和面向对象方法。面向功能方法是从把系统的功能作为分析、设计和实现主线的一类软件工程方法,结构化方法就属于此类方法。面向数据方法是从系统所处理的数据和信息以及数据结构入手,进行软件开发的一类方法,JSD是典型的面向数据的方法。面向对象方法则是直接面向问题领域中的客观事物,以客观事物为对象来进行系统分析、设计和实现。
根据系统开发效率和人工介入的程度,可以分为自动化方法、半自动化方法和手工方法。自动化方法是人工不介入或介入很少,可以由软件生成工具自动生成所需要的软件。半自动化方法则是在人工的控制和参与下,借用辅助开发工具开发软件。手工方法则是没有工具和环境的支持,完全通过人工进行分析、设计、实现工作。目前的服装营销软件开发大部分采用半自动化方法,即需要一定软件开发工具和环境的支持,但主要靠开发人员的参与和控制。
根据方法的过渡方式,可以分为过程型方法和演化型方法。过程型方法严格划分工作阶段和工作步骤,并且按照阶段和步骤的顺序从事软件开发工作。演化型方法则是螺旋式的开发方式,先根据需求构造一个初步的系统原型,在原型的基础上逐步完善,软件开发没有明显的过程特征。

1.1.3软件工程的基础方法
软件工程的基础方法是建立在人类思维方法的基础之上,与软件开发相关的,人们认识问题和解决问题的通用方法。任何一种思维方法都直接或间接地决定和影响着软件的开发方法。根据其相关程度,软件工程的基础方法主要有分析方法、综合方法、关联方法、抽象方法、模型方法、分类方法、系统方法、集成方法等。下面简要介绍这些方法。
1.分析方法
分析是人们在认识客观事物过程中使用的一种基本思维方法,意指把事物分解成为多个部分、方面、属性、要素、阶段等,而分别加以思考和认识。根据一个事物的生存演化过程,可以从时间上把一个事物划分为多个生存阶段,对每一个阶段分别进行认识和把握。例如,把人的生命过程划分为幼年、童年、少年、青年、中年和老年几个阶段。也可以按照事物的组成进行分解,例如,医学上把人分为神经系统、消化系统、内分泌系统、生殖系统等部分。
分析方法是软件开发的一个基本方法,体现在软件开发的各个方面。把软件按时间过程划分成为策划、分析、设计、实现、演化等阶段,把一个大型的软件划分为计划、统计、财务、生产、人事、科研、质量、供应、销售等子系统,把一个子系统又分为多个构件,都是分析方法的运用。
所有软件开发都运用到了分析方法,但分析的对象和依据各有不同。面向功能方法是按照功能进行分解,面向对象方法则是按照事物实体进行分解,面向数据的方法则是按照实体静态属性所呈现的结构形态进行分解。2.综合方法
综合是把事物的各部分、属性、要素、阶段等联系起来进行整体认识的思维方法。例如,由控制器、运算器、存储器、输入设备和输出设备五部分构成计算机整体,本能、理智和理性等部分构成了人的心理部分,而机体和心理两部分则共同构成了人。
分析与综合是同一思维活动的两个方面,是矛盾的辩证统一关系。分析是基于对事物整体认识,而分析的结果又会加深对事物的整体认识。综合以分析为基础,分析越精细准确,综合就越全面完美。分析和综合并不是一次完成的,而是一个螺旋过程,经过综合——分析——再综合,逐步接近于事物本质。
综合方法是指导软件开发的一个基本方法。综合策划、分析、设计、实现、演化几个阶段构成完整的软件生存周期,软件的开发综合软件的目标、需求、方法、技术、环境等多种要素,在面向对象方法中,由对象构成类,由类以及类相互之间的联系构成系统都运用到综合方法。3.关联方法
事物之间存在着广泛的联系,事物之间的联系影响着事物的行为和特征。所以要全面地分析和认识事物,必须关心事物之间的联系。关联方法就是分析事物时,主动从事物之间的联系上分析和认识事物的思维方法。在软件开发过程中必须考虑软件与其外部环境以及软件内部各要素之间的联系。与软件关系最为密切的是软件所服务的业务领域和其支撑环境。软件开发者必须搞清楚所服务业务领域的业务和管理。另外,软件也需要依附它的运行环境。在软件内部,各子系统之间和子系统内部各构件之间也都存在密切的联系。在面向对象方法中,各对象之间的一般—特殊关系、整体一部分关系都是对象之间的关系,软件开发者必须认识和理清这些关系。
4.抽象方法
抽象是抽取出同类事物本质特征而舍弃非本质特征的思维方法。抽象的目的是认识事物,进而反映事物。抽象对事物的反映是一种本质、概要和简化的反映,而不是对事物原貌的复制和照搬。要认识事物本质就需要对事物进行分析和综合,所以,抽象要运用分析、综合等其他思维方法。
抽象是软件开发过程中广泛使用的方法,存在于软件的宏观结构、微观分析和软件开发的各个活动之中。在系统分析过程中,通过抽象来认识问题领域的本质,由需求分析所得出的系统逻辑模型就是抽象的结果。在系统设计阶段,确定软件结构、构件、构件内部算法和流程,都要运用到抽象方法。
5.模型方法
模型是对事物抽象、概括、本质的反映。在软件开发中,大量使用到模型方法。系统分析中的逻辑模型,系统的设计模型,数据库设计中的概念模型、逻辑模型和物理模型,业务过程的决策模型、库存模型、产供销模型、财务模型、人才需求模型等应用模型,都是模型方法在软件开发中的应用。
6.分类方法
分类是指按照事物的特征,对事物分门别类地进行组织,使事物有序和系统化。如果没有分类,人类社会和我们的日常生活将处于无序和混乱状态,因此,分类在社会组织、日常生活和科学研究中起着十分重要的作用。分类是人们使用的一种基本思维方法。人按性别可划分为男女,按年龄划分为幼年、童年、少年、青年、中年和老年,按学历划分为小学、中学、大学和研究生,按职称划分为初级、中级和高级,按道德标准划分为好人和坏人等,这都是分类方法的具体应用。
分类方法是软件工程方法的基础,并广泛应用于开发的各个方面。在面向对象方法中,类的概念就是分类方法的运用,把具有相同属性和服务的一组对象称为一个类。
7.系统方法
系统是由相互联系、相互影响的多个部分结合为具有确定目标和功能,并处于特定环境的有机整体。系统具有整体性、关联性、综合性、结构性和适应性等特征。系统既是描述相互联系的客观统一体,又是一种十分有用的思维方法。系统方法就是从全局出发,对系统内外各种联系及其规律性加以辩证的分析,找出合乎目的的最佳方案,并依此指导人们行动的方法。系统方法一般包括五个步骤:①确定系统目标;②根据目标提出多个可行方案;③设计方案的模型来模拟实际情况;④对模型进行比较,选出最佳方案;⑤确定系统的组成、结构和相互联系。
软件本身是系统,所以在软件开发过程中广泛地运用到系统方法。软件开发阶段的划分就是系统方法的体现。每个软件的开发需要从时序上划分成为多个阶段,每一个阶段有确定的目标、任务和时间要求,各阶段的目标、任务和时限的确定必须服从于系统总目标的需要,这就体现了系统方法的整体性;各阶段的工作既相对独立,又互有联系,共同协调构成软件开发总过程,这又体现了系统方法综合性。另外,阶段的确定,各阶段目标、任务和时限的确定都必须遵循辩证统一的原则。
8.集成方法
集成方法是指把多个相对独立的构件或部分,根据目标的需要构成和谐、兼容和相互联系的整体所遵循的方法。在把多个部分综合成为整体方面,集成与综合有相似之处,但集成方法有其独特性。在集成过程中,各部分的独立性更强,联系更为稀松。例如,大庆、辽河、新疆、大港、胜利等油田的信息系统本来已经是独立的信息系统了,但可以集成为整个中国石油天然气总公司的综合信息系统。集成的各个部分的结构具有多样性。可以把多个结构差异很大的计算机、网络和支撑软件集成为一个一体化的系统平台。集成对时限的要求也比较宽松。例如,一个大型软件的建设,可以规划多年完成,已经完成的部分可以自成系统地投入使用。在随后时间里,可以把后开发的子系统逐步集成到总系统之中。
除了以上基础方法之外,比较方法、分隔方法、观察方法、数学方法、实验方法也都是软件开发所遵从的基础方法。

1.1.4软件工程的一般方法
软件工程的一般方法是建立在基础方法之上,适应和满足软件开发的特殊要求,所形成的相对一套完整的方法体系。软件工程的一般方法与软件的生存规律、软件过程、软件开发技术、软件的工具和环境都有密切的联系,它在一定程度上由这些因素所决定,并反过来影响这些因素。除此之外,软件工程方法的形成与人们审视软件和软件开发过程的角度也有很重要的关系,这也是造成软件工程方法多样化的一个重要原因。
20世纪60年代中期以来,人们对软件工程方法进行了不懈的研究,先后出现了几十种软件工程方法,其中产生重大影响的有面向功能方法、面向数据方法和面向对象方法等。本章将简要介绍这些方法。
1.2面向功能方法
面向功能是软件工程的一类方法,该类方法把软件开发的侧重点放在软件功能上面,面向功能方法的典型代表是结构化方法。本节以结构化方法为主,介绍面向功能方法的思想和基本方法。

1.2.1结构化方法的特征
结构化方法(structuredmethod)是20世纪60年代末,在结构化程序设计的基础上发展起来的,遵循系统思想,严格划分工作阶段,充分考虑用户需求,遵循软件生命周期,突出软件各部分之间的结构关系的一类开发软件的全局方法。结构化方法由结构化分析
{(SA)、结构化设计(SD)和结构化编程(SP)三部分构成,结构化方法的主要特征表现在以下几个方面。
1.遵循系统思想
系统思想是结构化方法的灵魂。结构化方法首先按照系统的思想和观点来认识和观察软件。软件以及软件所服务的业务领域本身是复杂的系统,在认识过程中需要运用系统的思想和方法。在认识系统的各个部分和要素及其相互关系时,总是从系统的总体目标出发,把各要素放到系统整体中,认识各部分在总系统中的作用和位置。
软件开发过程需要利用系统的思想和方法来指导开发工作。整个软件开发是一个完整的工程项目,需要按照系统方法来组织和管理项目开发工作。开发工作的组织安排、人员分工、资源调配、技术运用、工程进展都要从系统全局需要出发,符合系统开发的整体要求。在系统开发各阶段的工作开展也离不开系统方法的指导。在系统调研、分析和设计过程中,从总体到局部、从宏观到微观、由粗到细的白顶向下方法就是系统化思想和方法的体现。系统分析阶段采用的分层数据流图和设计阶段采用的模块结构图都闪烁着系统化思想。
2.严格划分工作阶段
结构化方法把软件开发划分为问题定义、需求分析、设计、实现和测试等阶段。每一个阶段都有明确的目标、任务和预期达到的结果。前一阶段的工作未完成之前,不能跨越到下一阶段,这样才能使整个开发工作有条不紊地进行。结构化方法按时间顺序划分工作阶段也是系统化思想的体现。结构化方法遵循软件生存周期的瀑布模型。
3.充分考虑用户需求
用户既是软件需求的提出者,又是软件的使用者,同时也是软件开发工作的参与者。因此,软件开发必须充分考虑和满足用户的需求。在软件开发中,开发人员必须与用户广泛地进行交流,深入了解用户的想法,并对用户所提出的需求全面深入地进行分析。
4.按照工程化的方法
结构化方法形成了相对完整的工程化方法体系。在分析阶段用自顶向下的分层数据流图和数据字典来进行需求分析,并导出系统的逻辑模型;设计阶段用系统结构图、HIPO来描述系统的结构;而在详细设计阶段用结构化英语、判定树、判定表等工具描述模块算法和流程。
5.突出系统各部分的联系
结构化方法强调和凸显系统部分之间的联系。分析阶段采用的分层数据流图就是从数据变换的角度,反映出系统的需求结构框架。在软件中数据是对客观实体的反映,数据的变化过程反映系统的功能处理需求,所以结构化方法把数据流图和数据字典作为新系统的逻辑模型。系统结构图是设计阶段用来描述系统软件结构的工具,它反映构成系统的各个模块之间的调用和数据传输关系。到了实现阶段,采用结构化程序设计,整个软件由多个模块构成,模块之间和模块内部呈现出顺序、选择和循环三种结构形态。突出系统各部分之间的结构框架就成为结构化方法的显著特征。

1.2.2结构化分析
1.概述
结构化分析是结构化方法中的第一个环节,也是系统开发过程中最重要的环节。结构化分析工作的主要任务是运用结构化分析方法和工具,调研现行系统的业务管理过程和新系统的需求,在详细调研的基础上,通过综合系统目标、用户要求、考虑系统的背景和环境,以及资金能力和技术因素,通过客观、认真、全面的分析,确定出合理可行的系统需求,并提出新系统的逻辑方案(也叫系统逻辑模型),编写出系统规格说明。系统规格说明经过审查通过之后,可以结束分析工作,把系统规格说明提供给设计阶段,作为结构化设计工作的依据。
结构化分析遵从瀑布模型。在分析工作没有完全完成,系统规格说明未通过审查之前,不能结束分析工作。结构化分析运用的工具是数据流图和数据字典。用数据流图描述数据的传输、加工和处理过程。数据流图既作为现行系统数据加工处理的描述工具,同时又作为新系统逻辑模型的描述工具。

2.结构化分析方法
结构化分析方法基于数据处理的观点,从系统功能的角度,运用分层数据流图对数据处理流程采用自顶向下、逐步细化求精的方法,分析和描述系统需求。
数据处理观点认为软件是数据和信息的加工处理系统,软件处理的直接对象是数据和信息,软件的作用就是把数据源通过多环节的加工处理,变换成为用户所需的信息。按照数据处理观点,软件的功能是通过软件对数据的加工处理过程表现出来的。基于这种认识,结构化分析方法的基本思想是,根据系统的功能需求,运用数据流图和数据字典等工具,通过对数据流程变换过程的分析,构造和描述出新系统的逻辑模型。

(1)数据流图
数据流图是结构化分析的工具。数据流图采用图3一I中的四个基本符号。数据流:一数据源c淞口数据加工:数据存储:图3-I数据流图的基本符号
数据流是在数据加工、数据存储或数据源之间传输的数据。数据流不同于控制流,只有实际存在数据传输时,才能有数据流。在数据流上要标出数据流的名称,数据流名要能够明确反映数据的确切含义。数据流可以表示一组复杂抽象的数据,如客户数据,也可以表示一个简单的具体数据,如学生的数学成绩。
数据加工表示对数据的加工变换处理,简称为加工。数据加工的作用是把进入加工的数据流变换成为加工流出的数据流。数据加工需要有确定的名称,在数据加工符号的上方还要给出加工编号。
数据源和数据汇表示系统之外数据的来源和终点,简称为数据源。数据源也要有名称。
数据存储是对数据存放的抽象表示,可以是一个文件、数据库或记录簿,也要给出数据存储的名称。
图3—2是学生成绩管理数据流图的例子。该数据流图描述了学校对学生成绩管理的数据处理过程。教师阅完卷之后,向教务处提交学生的成绩单,教务处把成绩单中的成绩登记到学籍表中。教务处需要对学生成绩进行汇总,把汇总结果记入成绩汇总表。根据成绩单和成绩汇总表对学生成绩进行分析,并把分析结果填入成绩分析表中。还要从成绩单中摘出不及格的学生,记入学生补考名单,以便通知补考的学生。在这个数据流图中共有成绩单、成绩汇总表、成绩分析表和学生补考名单四个数据流。数据源是教师,数据汇是教务处。学籍表是数据存储。图中有四个数据加工,分别是登记学生成绩、汇总学生成绩、分析学生成绩和抽取补考成绩。图3.2学生成绩管理数据流图
绘制数据流图需要遵循一些基本原则。第一是客观原则。数据流图必须反映数据流程变换的客观实际,主观臆断、违背客观实际的数据流图只能把系统开发引入失败,所以要求开发人员在绘制数据流图之前,要进行深入细致的调查研究工作。第二是数据流原则。在数据流图中的每一股数据流必须是实际存在的数据流。控制流不能作为数据流,初学者常常把数据流和控制流混为一谈。第三是平衡原则。每一个数据加工有流入的数据流也需有流出的数据流。没有流入或没有流出数据流的加工肯定存在问题。平衡原则还体现在分层数据流图之间数据流是平衡的,在上层数据流图和下层数据流图的数据流必须一致。

(2)分层数据流图
大型系统存在复杂的数据变换处理,很难在一张数据流图上描述出整个系统的数据处理流程,可以采用分层数据流图来描述。把数据流图划分成为多个层次,有顶层、中间层和底层数据流图。一般在顶层数据流图中,仅有一个数据加工,表示整个系统的数据加工处理。所有与系统有关的数据源、数据汇和数据存储也描绘在顶层数据流图中。顶层图中的加工就相当于一个抽象度很高的黑匣子,表示整个系统的数据加工处理,以及本系统与外部的数据联系。
项层数据流图仅反映了本系统与外部的数据联系,抽象度很高,单从图中的加工名称看不清楚详细的数据变换处理过程,需要对顶层加工进行分解。图3-2就是学生成绩管理系统对顶层数据流图的分解。对数据流图分解主要是对加工的分解。当上层数据流图中的一个加工比较复杂或抽象,不能清楚反映数据的加工处理过程时,可以对这个加工进行分解,形成下层数据流图,分解成多个加工和多股数据流。数据流图的层数并没有硬性规定,可一直分解到图中的所有加工都简单、清楚为止。
分层数据流图既是分析和描述的需要,同时也是对数据加工过程抽象层次的客观反映。在系统中的数据加工处理过程是呈结构和层次的,分层数据流图正好弥补了单层数据流图在这点上的不足,这也是数据流图的客观原则的体现。
分层数据流图也是人们解决复杂问题由抽象到具体、由粗到细、自顶向下的分解和控制的系统方法的运用。对初接触的复杂系统,在未深入到系统的内部细节之前,可先绘出其顶层数据流图,抽象地反映本系统数据处理,以及与外部的数据联系。对顶层加工的分解就是对问题的细化,在下层数据流图中,把上层一个复杂加工分解成为相对简单的几个加工。可以对这个加工再进行分解,直到所有的数据流程完全简单清楚为止,如图3.4所示。

(3)数据字典
数据字典是按照确定图素条目顺序排列的,对数据流图中的数据流、加工、数据存储和数据元素等图素的描述、解释和说明的文本。数据字典是数据流图的说明和补充,它能够给出数据流图中各个图素详尽、一致的定义和解释。
数据字典中的条目种类包括数据流、加工、数据存储和数据元素等四类。数据元素是数据流或数据存储的构成要素。在数据字典中这四类条目分类排放,不要掺杂到一起,以便于查阅。图3-5给出了各条目的式样。
可以把数据字典制作成卡片,一一个卡片上登记一个图素条目,最后把卡片装订成册就是数据字典。大型系统也可采用数据库或数据字典工具来存储和维护数据字典,这样一方面能够提高数据字典条目的查找速度,更重要的是能够保证数据字典中数据的一致性。

(4)新系统的逻辑模型
通过大量的系统分析工作,最后要得出新系统的逻辑模型。新系统逻辑模型是从需求的角度,用确定的描述方法,对蹩要开发的系统的抽象描述。逻辑模型不等同于实际系统,但它是对系统的框架、功能、组成的抽象和直观的反映。
结构化方法采用数据流图和数据字典作为新系统逻辑模型的描述工具。数据流图和数据字典具有简洁、规范和可操作的特点,更重要的是数据流图反映的数据流和数据的加工转换过程。数据是对软件所服务和处理的业务领域中的事物和事物特征的反映,数据的加工处理过程则反映了系统为了获取所需要的信息而必须进行的处理,所以是系统功能和作用的体现。数据处理过程中蕴涵着业务的方法和过程,因此数据流图能够全面地反映系统需求的构成和结构。数据字典则是对数据流图进一步的解释和说明,是数据流图的辅助工具。

1.系统设计的基本任务
系统分析的任务是调研和理解系统需求,在深入分析的基础上提出新系统的逻辑模型。所以,系统分析的核心是解决系统应该“做什么”的问题。系统设计阶段则着重解决系统在具体环境下如何做的问题。系统设计的基本任务是:在系统逻辑方案的基础上,运用确定的设计方法,从系统平台、系统结构、系统组成、人机界面、数据处理、系统接口等方面构造出完整的系统设计方案。
系统设计包括概要设计、物理设计、模块设计、数据库设计、人机界面设计和代码设计等方面的工作,设计的结果是系统的设计方案。存在多种系统设计方法,不同的设计方法除了对设计方案描述的形式不同之外,在设计考虑的侧面、设计内容、设计工作的步骤等方面都有差异。

2.结构化设计的基本概念
结构化设计方法认为,软件系统由多个具有相互联系的模块组成,模块是系统的基本构件,模块之间存在执行调用关系和参数传递关系。结构化设计的工作就是确定构成系统的模块、各模块之间的联系以及每一个模块的功能、算法和流程,所以,结构化设计也被称为模块设计。
结构化设计包括总体设计和详细设计两个层次的工作。总体设计需要确定构成系统的所有模块以及各模块之间的关系,并用系统结构图来描述系统的总体结构。总体设计也被称为概要设计。详细设计则需要深入到各个模块内部,设计模块的数据结构和处理逻辑。详细设计也被称为模块设计。一般用伪码、判定树、判定表等工具描述模块的内部逻辑。设计工作的依据是系统的逻辑模型,在设计过程中,需要把系统的数据流图转变成为系统结构图,并根据数据流图中的各个加工,设计各个模块的内部数据结构和处理流程。

3.模块化设计
模块是软件的构件。模块是执行~个确定任务或实现一个特殊的抽象数据类型的一组例程和数据结构。每一个模块由接口和模块体两部分组成:接口描述模块的外部特性,包括模块的功能、输入输出参数、调用规约等;模块体则是组成模块的内部实体,是实现模块对外功能的本体,一般由模块的私有量和程序流程组成。
在模块设计过程中,应该尽量减少各模块之间的联系,而加强模块内部各部分之间聚合度,这种设计原则称为高内聚、低耦合的原则。模块之间的耦合性越小,说明模块之间的联系越简单,模块的独立性就越强。与之相对应的是,模块内部各部分之间的聚合程度越强,模块对外的独立性就越高。
模块耦合性反映系统中各模块之间的关联程度。模块之间存在七种耦合类型:非直接耦合、数据耦合、结构耦合、控制耦合、外部耦合、公共耦合和内容耦合。非直接耦合指模块之间没有直接联系,只是通过主模块对模块的相互调用而建立的非直接联系,这种耦合度最低。如果两个模块在调用过程中,其问仅仅传输数据参数,而不传输控制或其他内容,这种联系称为数据耦合。由于仅仅传输数据参数,所以模块之间的联系也比较简单,耦合程度较低。结构耦合是指模块之问传输复杂的数据结构,而不是简单变量,这种耦合程度比数据耦合高。控制耦合指模块调用过程中传输控制型参数,对另一个模块的功能、状态起着控制和选择作用。外部耦合是指一组模块访问同一个外部变量。公共耦合则指一组模块访问同一个外部数据结构,它的耦合度比外部偶合高。内容耦合指一个模块直接访问另外一个模块的内部数据或不通过模块入口进入模块内部。在这七种耦合类型中,非直接耦合程度最低,内容耦合程度最高。所以在设计过程中,应该尽量避免内容耦合。
模块内聚性反映模块内部的聚合程度,模块内聚性越高,模块的独立性越强。存在七种不同的模块内聚类型:功能内聚、信息内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和巧合内聚。功能内聚指模块根据一个具体功能要求而设计的模块,模块中的各个部分都是围绕完成功能的需要而设置的,内聚性最高。信息内聚是指模块内部要完成多个功能,各个功能之间要共享同一个数据结构,通过同一个数据结构把模块内部各个部分聚合到一起。这种模块的聚合性比功能聚合弱,因为它聚集了多个功能于一个模块之中。通信内聚则指一个模块中的各个部分使用相同的输入数据或产生了相同的输出数据。时间内聚指模块内各个功能在同一个时间区段中执行,所以把这些功能聚集到一个模块之中。过程内聚是模块内部各个部分在处理顺序上有相关性,因此,把各部分汇集到一个模块之中。逻辑内聚指模块中蕴涵的多个功能需要根据某一个判断逻辑来进行选择性的执行。巧合内聚是指模块内部各个部分之间没有必然的联系,因为设计过程的巧合因素把它们聚合到一个模块之中,这种模块的内聚性最差。在设计过程应该尽量地提高模块的内聚程度,尽量把那些内聚程度低的模块转化成为内聚性高的一个或多个模块,以提高模块的独立性。

4.总体设计总体设计的任务是确定软件的总体结构。总体设计的工作是把整个软件系统划分成为多个相对独立的模块,确定每一个模块的接口和模块之间的联系,并用系统结构图描述出系统的总体结构。
系统结构图的描述符号十分简单,用矩形框表示模块,模块之间的连线表示模块之间的层次调用关系,箭头表示模块之间传输的数据。图3-6表示模块以及模块的调用关系。
有时上层模块需要根据一定的判定条件来调用下层模块,当条件满足时才调用,模块之间的这种调用被称为判定调用。模块之间也存在上层模块对下层模块循环多次调用的情况,这种调用被称为循环调用。在系统结构图中用图3—7中的两个符号表示判定调用和循环调用。图3-8是修改库结构文件的系统结构图。
在进行总体设计时,首先需要根据系统逻辑模型确定系统结构图。目前还没有一种规范的方法,能够把数据流图直接转换成为系统结构图,需要系统设计人员根据实际问题的需要,运用已有的经验,通过分析得出系统结构图。
系统总体设计过程是一个逐步优化的过程。系统结构图除了能够反映系统的总体结构之外,还必须遵循一定的优化原则。例如结构图的层数不宜过多,每一个模块的下层模块数和上层模块数也要控制在一定的范围内,要做到高内聚和低耦合等。所以,根据数据流图得出初步的系统结构图之后,还要对系统结构图进行进一步的调整和优化。

5.详细设计
详细设计是对模块内部的设计,主要任务是根据模块接口所定义的功能和出入数据,来设计模块内部的数据结构、算法和处理流程。详细设计一般用到以下设计工具和描述方法。
(1)IPO图
IPO(inputprocessingoutput)是输入、处理和输出图,用它可以描述模块的输入数据、处理功能和输出数据,是从外部特征对模块的概要描述。(2)流程图
流程图也称为程序流程图或框图,是在结构化方法出现之前就已经存在的描述程序流程的工具,.在结构化方法中可以用流程图来描述模块的流程。流程图是使用比较广泛的一种流程描述工具。
(3)限定性自然语言
限定性自然语言是指通过对自然语言增加一定的约束语法,来描述模块的内部流程。限定性自然语言在国外被称为伪码或结构化英语。在限定性自然语言中增加描述选择、循环等结构的标识符,使得对模块流程的描述尽量地符合结构化规范,以便于进行结构化程序设计。
例如,某工厂在进行内部机构改革过程中,人事部门要对一部分职工重新分配工作。分配工作的原则是:如果年龄不满18岁,小学文化程度的职工,让其脱产学习,文化程度是中学的职工让其当电工;年龄在18~40岁之间,文化程度是小学或中学的,男性当钳工,图3.11流程图女性当车工,文化程度是大学的,当技术员;年满40岁以上,文化程度是小学或中学的,当材料员,文化程度是大学的当技术员。图3—12是对职工分配工作的处理流程的描述。
(4)判定表和判定树
结构化方法一般采用限定性自然语言来描述模块的流程。当存在复杂判断逻辑时,可以采用判定树或判定表描述。判定树通过树型逻辑结构描述多路判断逻辑,具有清晰、直观的优点,判定树的不足在于不能反映和检查存在错误、矛盾和疏漏的判断逻辑。判定表是用规范的表格形式描述多路判断逻辑,并可以对判断逻辑进行化简和优化。判断表的缺点是描述方法复杂,不易于理解和掌握。

1.3面向数据方法
1.3.1概述
面向数据方法是软件工程方法中的另外一类重要的方法,该类方法把软件开发的侧重点放到软件所处理的数据和数据结构上面,根据对软件所处理的数据及其结构的分析,进而确定软件的功能和结构,并形成的一套软件开发的全局性方法。本节以JSD为例,介绍面向数据方法的思想和基本技术。Jackson系统开发方法(JacksonsystemdeveloDmentmethod,JSD)是在Jackson的面向数据结构的程序设计方法的基础上发展而来的,它是~种面向软件开发全过程的系统化开发方法。该方法的基本思想是,从客观现实中提取出各种客观实体,并确定各个实体的活动以及实体与各活动之间的相互关系,生成反映客观问题的进程模型。在进程模型的基础上,增加系统功能、确定时序关系,最后实现所设计的系统。JSD方法可划分为建模、设计和实现三个阶段,共包括6个步骤,如图3—15所示。建模阶段设计阶段实现阶段

1.3.2建模阶段图3—15JSD方法开发阶段和步骤
建模阶段的工作是在现实世界中,通过对具体问题的分析,建立进程模型。进程模型是还没有考虑系统功能和实现环境,对现实世界问题描述的抽象模型。
1.实体活动分析
在这个步骤中,通过对问题领域和需求的分析,从问题领域中提取出与需求相关的客观实体以及实体的诸多活动,并把提取的实体和实体的活动列在实体表和实体活动表中。实体是指软件所要服务的问题领域中的各种客观事物或客观对象。如学校中的学生、教师、教材、课程,银行中的工作人员、客户等就是实体。活动是在实体上所发生的动作和事件。
2.实体结构分析
实体所发生的各个活动之间存在着确定的时序关系,例如,商店中商品的活动具有“出库”,“上架”,“售出”的时序关系。JSD方法要求对实体的诸多活动进行分析,以确定出实体各活动的时序关系,并通过实体结构图来反映实体活动之间的时序关系。实体结构图反映客观世界中各实体中各个活动之间的时序关系。每一个实体都有一幅实体结构图,整个系统就构成一个实体结构图集。
图3.16是“售货员”和“顾客”的实体结构图。在“售货员”实体中的“上班”、“售货”和“下班”三个活动是顺序的,而在上班期问可以有多次“售货”活动。每一次“售货”活动,又包括“取商品”、“收款”和“售出商品”三个顺序的活动。“顾客”实体包括“选择商品”、“付款”和“领取商品”三个顺序的活动。
3.建立进程模型
“实体活动分析”和“实体结构分析”用来发现现实世界中所存在的实体及实体的活动,并用实体结构图描述实体的诸活动之间的时序关系。这两步工作是立足于现实世界,对现实世界的抽象描述。软件系统开发不能仅仅停留在对现实世界的抽象描述上,需要在现实世界的基础上,建立系统的逻辑模型,然后对系统逻辑模型进行进一步细化和优化,最后变为可实现的程序,JSD方法的系统逻辑模型称为进程模型。
进程是在系统中由一组有序活动构成的活动体。例如,在商店管理系统中,商店有“顾客”实体,该实体有“选择商品”、“付款”和“领取商品”三个活动。在系统中,就可以对应设置一个“顾客”进程,该进程也对应有“选择商品”、“付款”和“领取商品”活动。但“顾客”实体和“顾客”进程有本质的区别,前者是现实世界中的事物,后者则是软件系统中的构成要素,后者是根据前者而设置的。
进程模型是用系统规格说明图来抽象描述系统的构成、框架、活动和与外界联系的系统模型。系统规格说明图(systemspecificationdiagram,SSD)描述进程与进程之间的数据通信关系。系统规格说明图由实体、进程、数据流和状态向量几部分构成。
带复线的矩形框表示客观现实中的实体,矩形框表示进程,圆圈表示数据流,菱形框表示状态向量。“售货员0”是客观世界中的一个实体,“售货员1”是系统中的一个进程,AD是由实体“售货员0”发给进程“售货员1”的数据流。数据流反映实体与进程以及进程相互之间的数据通信关系,它相当于一个先进先出的缓冲数据通道。进程之间的联系除了数据流之外,还可以通过状态向量连接。菱形框表示状态向量,状态向量通过状态向量的值来表示实体或进程的某种状态,当实体或进程的状态发生变化,状态向量的值就改变。
图3—17中反映出“售货员”和“顾客”两个实体向系统中的“售货员”和“顾客”两个进程发送数据流。售货员和顾客在日常工作中必然要把他们的工作数据传送给系统。系统中的“商品”进程在不同时间具有不同的状态,如“库存”、“货架”、“出售”、“售出”等。“商品”状态通过状态向量反映出来。“售货员”和“顾客”两个进程可以查询“商品”的状态向量,以了解商品的状态。
在SSD图中,实体和进程之间的关系反映了系统外部和系统之间的数据关系,这些关系将是下一步人机界面设计的依据。
4.结构文本
JSD方法采用结构文本描述SSD图中的各进程的内部细节。

1.3.3设计阶段
设计阶段的任务是在初始模型的基础上增加系统的功能和时序限制,使进程模型具体化。
1.确定系统功能
上面所确定的进程模型,只反映了系统的实体、进程和相互之间的通信关系,结构文本也只描述了进程对应实体的活动过程,没有反映系统的输入、输出和例外特殊处理。这个步骤的任务就是向进程模型中增加输入、输出和例外处理等功能。
从图3.17的SSD中可以看到,“售货员1”进程的输入是实体“售货员0”的数据流AD和“商品”进程的状态向量SV。AD数据流所包括的输入数据有:上班的注册数据、商品收款数据、商品售出数据和下班注销数据等。这些数据都是由售货员实体实际输入到系统之中的。SV是商品的状态向量,反映商品当前所处的状态,“售货员”进程需要随时查询SV,以了解商品当前所处的状态。
“售货员1”和“顾客1”要通过状态向量SV了解“商品”当前所处的状态,所以“商品”进程每一个活动之后,都应该改变SV的值。对“商品”进程的结构文本增加输出功能,见图3—19。
除了考虑输入输出功能之外,还需要考虑特殊处理,如出错报告、信息查询、状态报告等功能。例如顾客在选购商品时可能需要了解商品的性能、同种商品的性能价格的比较信息等。再比如,当货架上的商品出售完后,需要及时打印商品缺货清单,以便从库房领取商品。这些功能都应该在结构文本中反映出来。
COMMODITYseq商品
OUT—STOREHOUSE:出库;
Save1toSV;1表示商品已出库;
TAKE.FRAME;上架;
Save2toSV;2表示商品已上架;
CHARGE.ACCOUNT;登账;
Save3toSV;3表示商品已登账;
SELLED—COMMODITY;售出:
Save4toSV;4表示商品已售出;
COMMODITYend商品结束
图3—19“商品”进程增加设置状态值后的结构文本
2.确定系统定时关系
系统有确定的定时要求。顾客向售货员提出选购商品的要求,一般要求售货员在几秒之内能够予以应答和处理,如果等待几分钟或十几分钟,顾客可能会对商店的服务产生意见。所以,要求系统从性能上应能够满足售货的要求。不同的系统具有不同的定时要求。实时控制一般需要在毫秒级对需求做出响应,而一般的事务处理在秒级或分级响应便可以满足要求。

1.3.4实现阶段
实现阶段的任务是在具体的系统环境下实现所要开发的系统。实现阶段要解决的主要问题有以下几个方面:
·系统软硬件环境。
·进程的分配和调度。
·系统变换。
·得出程序结构图。
·系统的细化和优化。
·生成系统程序。
下面我们逐一讨论这些工作。
1.确定系统的软硬件环境
设计阶段主要依据应用需求和输入输出而从事的设计工作,没有考虑系统实现的具体环境。在实现阶段需要确定系统的软硬件环境。
2.进程分配和调度
在SSD图中,一个进程是一个独立的执行单位,多个进程是并行执行的,因此,把一个进程分配在一个处理机上是最理想的分配方式。但是在实际系统中,一般不可能给每个进程分配一个独立的处理机,而是多个进程共享一个处理机。为了协调处理机上的多个进程的运行,系统需要设置一个调度进程,由调度进程在处理机上安排和协调多个进程的运行。
3.系统变换
确定了调度进程之后,第三步工作是进行系统变换,由SSD图变换成为SID(systemimplementdiagram)系统实现图。需要做以下工作:
(1)把SSD图中的进程分配给不同的处理机,一个处理机上可能有一个或多个进程,一个处理机对应一个SID图。
(2)在一个SID图中设置一个调度进程,并把该调度进程作为核心进程。
(3)分配给该处理机的进程,在SID图中作为调度进程的子进程。
(4)数据流作为进程之间传递的数据参数或进程之间数据交换的缓冲区。
(5)状态向量变换成为记录文件或数据库,能够按照索引进程方便查询。
4.得出程序结构图
Jackson程序设计方法的基本N,想是Eh数据结构变换成为系统的程序结构。本步由SID图生成为系统的程序结构图。
5.系统细化和优化
对程序结构图做进一步的细化和优化。
6.生成程序
根据程序结构图,编写计算机程序,并进行调试,得出可运行的软件。

1.4面向对象方法
1.4.1概述
面向对象技术是近二十年来计算机科学与技术领域最具影响的技术之一,它已经深入到了软件工程、计算机应用技术、计算机体系结构、人工智能等许多计算机学科领域。例如,分布对象技术和对象存储技术就是面向对象思想在分布式计算和分布式系统领域中的应用。
在面向对象方法中的对象指客观世界中的各种事物。面向对象方法的思想就是在软件开发中,直接面向问题领域中的客观事物,并运用一整套诸如对象、类、封装、继承、对象连接、对象结构、消息等机制,指导软件开发。因此,面向对象方法是用面向对象的思想指导软件开发的规范化软件开发方法。
由于面向对象方法直接面向客观问题,因此,较之于其他方法,面向对象更接近于问题域实际,更简单、更易于理解和掌握。在计算机技术发展过程中,曾经出现过面向功能和面向数据的方法,但人们经过正反经验的总结和理性的思考,开始认识到在系统开发过程中,直接面向客观问题领域才是最根本、最直接、最正确的方法。因此,有人认为面向对象的方法是人类认识事物的一个返璞归真的过程,是在几十年系统开发道路上辛苦探索之后对正途的回归。面向对象方法已经成为被大家普遍接受的,应用前景广阔的软件开发方法。

1.4.2面向对象方法的基本概念本节介绍面向对象方法的基本概念,描述规则符合IM,规范。
1.对象和类
(1)对象的概念
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和操作组成。对象既可以描述客观存在的事物,也可以表示由人主观构造的抽象概念。对象的属性描述它所反映的客观事物的静态性质,对象的操作描述客观事物的动态性质。对象是系统中一个独立实体。例如,一张桌子、一辆汽车、一个学生等都是对象。
(2)类的概念
类用来描述具有相同性质的一组对象。例如,桌子就是一个类,所有桌子都具有桌子的性质,都属于这个类中的对象。实际上客观中的所有概念都可以认为是类,因为概念总是表示一组具有相同性质的事物。例如,桌子、汽车、学生等都是类。
(3)类的表示
类可以有抽象表示、简化表示和规范表示等多种形式。
①类的抽象表示
类在概念层次上采用抽象表示形式,可分为边界类、控制类和实体类三种类型,见图3—22。
实体类用来表示客观实体。像“图书”、“学生”、“书单”等都属于实体类。边界类表示外界与系统之间交互的抽象实体。控制类表示系统对其他对象实施协调处理、逻辑运算的抽象实体。
②类的简化表示
类的简化表示用矩形来描述一个类,只填写类名,不表示类的属性和操作信息。在类图中仅需要反映类的抽象结构,而不需要反映类的内部细节时,对类采用简化表示形式,见图3—23。
③类的规范表示
规范表示是类的一般表示形式,要描述类的名称、类的属性和操作等信息,见图3—24。
(4)属性
①属性的概念
属性一般表示实体的特性或特征。在面向对象方法中,属性用来表示对象的静态特性。每一个属性中的具体值称为属性值。对“人”这个对象来说,姓名、性别、出生年月、家庭住址、电话、体重、身高、血型、性格、爱好、职业、毕业院校、所学专业都是该对象的属性。赵晓,男,1966.10.12,西安石油大学11楼103号,8216381,63公斤等则是属性值。
②属性的描述
一般在类中仅给出属性名。属性的完整描述形式为:
可视性属性名[范围]:类型=值
·属性名:用字符串表示。如果用英文字符串,首字符用小写。例如,name,studentSex。
类型为属性值所取的数据类型,一般有整型、实型、字符型、布尔型、日期型等。
等号后面如果有值,表示赋予新建立对象本属性的初始值。例如,性别:String=男。
·可视性:一般放在属性前面,表示该属性可以被其他对象访问的受限性。可视性一
般分为三种形式。
+:公用(public),表示该属性可以被其他外部对象访问。
#:保护(protected),表示该属性仅能被本类以及所有子类的对象访问。
-:私有(private),表示该属性不能被其他对象访问。
·范围:为可选项,指出本属性取值的范围或可选的值。例如,0··*,1··7等。
(5)操作
操作用来表示对象的行为或动态特性。操作的一般描述形式为:
可视性操作名(参数列表):返回列表例如,
#openfile(fileID:Number)其中,
·操作名:用字符串表示。如果用英文字符串,首字符用小写。
·参数列表:为可选项。参数之间用逗号隔开。
·可视性:含义与属性中的可视性含义相同。

2.类的关联
(1)关联的概念
关联本指事物之问存在的固有的牵连关系。在面向对象方法中,关联是对具有共同结构特征、关系和语义的链接描述。例如,“张老师”给“计2002—1班”上课。“教师”类中的对象“张老师”就和“班级”类中的对象“计2002.1班”之间存在链接关系。关联是对对象之间链接关系的一种抽象称谓。
(2)关联的要素
类之间通过一条连线表示关联。例如,在图3.25中,“公司”与“职员”之间存在雇佣的关联关系。关联关系涉及多个关联的要素。
①关联名
关联名就是关联的名称,表示两个类之间存在的具体的关联关系。关联名标在关联关系的上方。例如,图3.25关联的表示图3—25中,“公司”与“职员”之间存在“雇佣”的关联关系。如果两个类之间的关联关系十分清楚,可以省略关联名。例如,“教师”和“学生”之间存在“教学”关联关系,因为这个关系十分明确,就可以省略“教学”关联名。
②关联的角色
角色是类参与关联的特征。例如,“公司”与“职员”之问的“雇佣”关联关系中,“公司”在关联中承担“雇主”的角色,而“职员”承担“雇员”的角色。在关联关系中,如果角色名和类名相同,可以省略角色名。例如,“教师”和“学生”之间的教学关联关系,“教师”和“学生”在关联中的角色名也就是它的类名,可以在表示时省略角色名。
③关联的多重性
多重性描述关联中对象之间的链接数目。
④导航
导航表示关联的链接方向,用箭头来表示。一个类到另外一个类存在导航关系,表示从源类中的一个对象可以直接找到与该对象存在链接关系的目标类中对应对象。在关联线上标有一个箭头表示单向导航,两个箭头表示双向导航,不标箭头表示双向导航或导航关系还没有确定。例如,图3.25中“职员”到“公司”之间存在单向导航关系。
⑤关联类
在关联关系中,有时类和类之间的关联信息需要通过类的形式表现出来,用来表示关联信息的类被称为关联类。例如,图3—25中,“公司”与“职员”之间存在雇佣关联关系,而雇佣关系中的雇佣期、雇佣协定等信息是雇佣关联信息,把这些信息通过“雇佣”关联类描述出来。
(3)关联的种类
根据参与关联的类的数目,可以把关联划分成为一元关联、二元关联和多元关联三种类型。
①一元关联
一元关联表示一个类中的不同对象或同一对象之间存在的链接关系,也称为自返关联。例如,图3—27中“学生”类中存在班长对其他学生管理的关联关系,“教师”类中存在系主任对一般教师领导的关联关系。
②二元关联
两个类之间存在的关联关系。
③多元关联
三个或三个以上类之间存在关联关系时,称为多元关联。多元关联用菱形符号连接相互关联的类。
由部分构成整体的组成关系是客观世界事物之间普遍存在的一种基本关系。例如,计算机由主机、键盘、显示器、打印机等部件组成,汽车由发动机、车轮、车厢、驾驶室等部分构成。面向对象方法用聚合和组合来描述事物的类之间的组成关系。组成关系是关联关系的一种特例。
(1)聚合
聚合表示多个部分以聚集的方式构成整体。聚合表示事物之问相对松散的组成关系,在没有整体时,部分也可能存在,但这个时间部分的存在并不是以整体的部分的身份而存在的,而是可能作为一个独立整体而存在,也可能作为另外一个整体的部分存在。例如,班级是由学生聚合而成的,但是如果新招来的学生还没有编排班级,学生仍然是存在的。
聚合由关联线在整体端增Dnd,空心菱形来表示。
(2)组合
组合表示整体与部分同存同亡的紧密组成关系。部分因整体而存在,如果整体不存在,部分就没有存在的必要。例如,人与心脏之间就是组合关系。心脏这个部分是因人这个整体而存在的,如果没有人,心脏也就没有存在的意义。

4.泛化与继承
(1)泛化的概念
泛化具有抽象、概括和超越的含义。泛化指抽取事物的共性特征,形成超越特殊事物而具有普遍意义的一般事物的方法。泛化反映事物之间的特殊与一般关系。例如,“家具”是对“桌子”、“椅子”、“沙发”等特殊事物的泛化。“交通工具”是对“汽车”、“轮船”和“飞机”等事物的泛化。
在泛化关系中,把表示一般特性的实体称为超类,把表示特殊特性的实体称为子类。
泛化与继承描述事物的同一种关系。继承是一类事物拥有或承接另一类事物的某些特性,成为自己所具有的特性。这样,这类事物除了具有自己独特特性之外,还具有所承接的另一事物的特性。这类事物属于具有特殊特性的事物,而具有被承接的特性的那类事物肯定属于具有一般特性的事物。
(2)泛化的表示
泛化用三角符号表示,三角符号指向超类,表示对子类的泛化。

5.依赖
(1)依赖关系的含义
依赖表示两个实体之间的因果关系,指一个实体的变化必然影响到所依赖的另外一个实体。例如,在教学管理系统中,课表依赖于课程,课程发生改变,课表也必须跟着改变。任课教师依赖于课表,课表改变,任课教师上课就要调整。任课教师依赖课表,课表依赖课程。

6.封装
在面向对象方法中,封装(encapsulation)是通过隐藏内部细节,使得对象成为相对独立的系统单位的一种机制。在面向对象方法中封装是对对象实施的封装。把对象中的属性和操作紧密地结合在一起,使对象形成一个相对独立的系统单位。通过封装将把对象中的属性和操作等细节隐藏在对象内部,而只把对象需要向外部提供的特性以接口的形式提供给外部。
封装是抽象原则的体现。通过封装抽象出系统中所有对象的外在特性,并通过各个对象的接口表现出来,而隐藏了所有对象的内部细节,使系统在对象层次上的特性进一步清晰、简化。封装隔离了各个对象的内部细节,排除了对象之间所存在的不必要联系,简化了系统之间的接口,使对象内部问题局部化,排除了因一个对象的局部问题而影响和蔓延到其他对象的问题,限制了问题的扩散和传播。封装性也提高了系统的适应性。细节被封装在对象的内部,只要对象的对外接口不发生改变,则对象的内部细节发生任何改变,均不会影响对象与其他对象的联系。在不改变对象接口的前提下,我们对对象内部方法的优化,对对象内部适应性的改变都不会影响系统。

7.消息
事物之间存在着广泛的动态联系。在面向对象方法中,对象也存在着大量的动态联系。一些复杂的系统功能和业务流程,需要多个对象相互配合来完成。一个对象在执行一个操作的过程中,可能需要启动另外一个对象的操作。消息是一个对象向其他对象发出的操作请求。面向对象方法通过消息机制来实现对象与对象之间的动态联系。
为了实现对象之间的操作请求,一个消息应该包括:提供操作的对象、操作、输入信息、应答信息。完整的消息内容还应该包括发出消息的对象,但面向对象方法中的消息机制能够隐含提供和识别发出消息的对象,因此在消息中不需要显式地提供这条信息。
通常我们把发出消息的对象称为发送者或发送对象,把接收消息的对象称为接收者或接收对象。发送对象在发出一个消息之前首先要生成所要发送的消息。按照要求,在消息中应该包括接收对象、要启动的操作、操作所要求的输入信息、返回信息等。

本章小结
服装营销软件工程方法包括软件开发方法、软件管理方法、软件度量方法和软件环境方法等。软件工程方法可以从多个方面进行分类。软件工程基础方法包括分析方法、综合方法、关联方法、抽象方法、模型方法、分类方法、系统方法、集成方法等,较有影响的软件工程一般方法有面向功能方法、面向数据方法和面向对象方法。
结构化方法是面向功能方法的典型代表,它是在结构化程序设计的基础上发展起来的,遵循系统工程的思想,充分考虑用户需求,遵循软件生命周期,突出软件各部分之间的结构关系的一类开发软件的全局方法。结构化方法由结构化分析、结构化设计和结构化多编程三部分构成。JSD方法是面向数据方法的代表,它是在JSP方法的基础上发展起来的一种面向数据结构的软件开发方法。JSD方法把软件开发划分为建模、设计和实现三个阶段,共包括实体活动分析、实体结构分析、建立进程模型、确定系统功能、确定系统时序和系统实现六个步骤。对象指客观世界中的各种事物,面向对象方法是在软件开发中,直接面向问题领域中的客观事物,并运用一套诸如对象、类、封装、继承等机制,指导软件开发的一套系统方法。面向对象方法是目前被普遍采用的服装营销软件开发方法。

文章来源:秘奥软件网,中小企业信息化领跑者!全国咨询热线:400-9908-527_www.misall.com

最新新闻: