面向对象方法是目前主流开发方法。
OMT、OOSE及Booch最后统一称为UML(United Model Language,统一建模语言)
1、Coad/Yourdon方法
Coad/Yourdon方法主要由面向对象的分析(Object-Oriented Analysis, OOA)和面向对象设计(Object-oriented Design, OOD)构成,特别强调OOA和OOD采用完全一致的概念和表示法,使分析和设计之间不需要表示法的转换。
2、Booch方法
Booch方法认为软件开发是一个螺旋上升的过程,每个周期包括4个步骤。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型(类图、对象图)和物理模型(模块图、进程图);动态模型包括状态图和顺序图。
Booch方法不仅建立了开发方法,还提出了设计人员的技术要求,以及不同开发阶段的人力资源配置。
3、OMT方法(Object Model Technology, 对象建模技术)
OMT作为一种软件工程方法学,支持整个软件生存周期,覆盖率问题构成分析、设计和实现等阶段。
OMT方法使用了建模的思想,从三个不同而又相关的角度建立了三类模型,分别是对象模型、动态模型和功能模型。
4、OOSE (Object-oriented Software Engineering, 面向对象的软件工程)
OOSE在OMT的基础上,对功能模型进行了补充,提出来用例(use case)的概念,最终取代了数据流图来进行需求分析和建立功能模型。
OOSE采用5类模型来建立目标系统:需求模型、分析模型、设计模型、实现模型、测试模型;
用例(use case)是OOSE中的重要概念,它实际上是描述系统用户对于系统的使用情况,是从使用者的角度来确定系统的功能。因此,首先必须分析确定系统的使用者,然后进一步考虑使用者的主要任务、使用的方式、识别所使用的事件,即用例。
结构化方法和面向对象方法有一个共同的特点:在系统开发初期必须明确系统的功能要求,确定系统边界。
通常,原型是指模拟某种产品的原始模型。
1、原型的分类
软件原型是所提出的新产品的部分实现,建立原型的主要目的是为了解决在产品开发的早期阶段的需求不确定的问题,其目的是:明确并完善需求、探索设计选择方案、发展为最终的产品。
从原型是否实现功能来分:水平原型(行为原型,功能的导航)和垂直原型(结构化原型,用在复杂算法实现上)。
从原型的最终结果来分:可抛弃型原型和演化型原型(用在易于升级和优化的系统,适用于WEB项目)。
2、原型类型的选择
如果在需求分析阶段要使用原型化方法,必须从系统结构、逻辑结构、用户特征、应用约束、项目管理和项目环境等多方面来考虑,以决定是否采用原型化方法。
3、原型生存期
构造原型:两个基本原则:集成原则(尽可能用现有软件和模型来构成,这需要相应的原型工具)和最小系统原则(耗资一般不超过总投资的10%)
4、原型开发技术
通常用于构造原型的一些技术包括可执行规格说明、基于场景的设计、自动程序设计、专用语言、可复用的软件构件、简化假设和面向对象技术等。其中前3中还适用于用户界面的设计。
5、原型法适合于用户需求不明确的场合。过程中需要用户的参与和决策,缩短开发周期,降低开发风险,原型法成败的关键及效率的高低,在于模型的建立及模型的速度。
随着维护次数的增加,可能会造成软件结构的混乱,是软件的可维护性降低,束缚了新软件的开发。同事,那些待维护的软件又常是业务的关键,不可能废弃或重新开发。于是引出了软件再工程(Reengineering),即需要对旧的软件进行重新处理、调整,提高其可维护性。
1、再工程(Reenigineering)
再工程是对现有软件系统的重新开发过程,包括逆向工程(Reverse Engineering,反逆向工程)、新需求的考虑(软件重构)和正向工程三个步骤。
软件再工程旨在对现有的大量软件系统进行挖掘、整理以得到有用的软件构件,或对已有软件构件进行维护以延长其生存期。
再工程的基础是系统理解,包括对运行系统、源代码、设计、分析和文档等的全面理解。
2、软件重构
软件重构是对源代码、数据进行修改,使其易于修改和维护,以适应将来的变更。通常软件重构并不修改软件体系结构,而是关注模块的细节。
代码重构:功能相同,质量更高的程序。
数据重构:较低抽象层次,全局性的再工程活动。
软件重构的意义在于:提高软件质量和生产率,减少维护工作量,提高软件可维护性。
3、逆向工程
逆向工程是分析程序,力图在比源代码更高的抽象层次上建立程序表示的过程。
l 抽象层次&完整性:
逆向工程过程及用于实现该过程的工具的抽象层次是指可从源代码中抽取出来的设计信息的精密程度。 要尽可能的高。 过程的设计表示(一种低层的抽象)、程序和数据结构信息(稍高一点层次的抽象)、数据和控制流模型(一种相对高层的抽象),以及实体关系模型(一种高层抽象)。层次越高,越有助于理解程序的信息。
逆向工程的完整性是指在莫抽象层次提供的细节程度。在大多数情况,随着抽象层次增高,完整性就降低。