自顶向下设计是指根据给定的问题,递归地将给定问题分析成若干小的基本问题,自下而上是一种相反的设计方法,是指根据已有的组件(基本问题),通过一定的排列组合,最终解决需要解决的问题。从两种方法的定义可以看出自顶向下的设计方法强调的是问题的分解,而自下而上的设计方法强调的是组件(基本问题)复用,所以对于一个相对陌生的问题,采用自顶向下,逐层分解的方法可以更好的得到问题的解,而对于常见问题,则是使用现有的组件可以更快地达到目的。
形式化方法是一种具有坚实数学基础的方法,允许对系统和开发过程做严格处理和论证,主要优越性在于能够数学地表述和研究应用问题及实现。但对数学基础要求高,不适用于复杂场景,并未得到普遍应用。
敏捷方法是面向对象的,有三个特点:
敏捷方法适用于需求变化较大或前期需求不够清晰的项目。
将正确性验证(而非传统的测试)作为发现和排除错误的主要机制,强调统计质量控制技术,太过于理论化。
以粗粒度、松散耦合和基于标准的服务为基础,增强了系统的灵活性、可复用性和可演化性。
采用面向对象开发方法时可以使用状态图和活动图对系统的动态行为进行建模。
在面向对象设计中,边界类实现界面控制、外部接口和环境隔离。控制类协调控制其他类共同完成功能。

利用了基本构件开发方法的思想,大量采用线程的构建进行系统的开发,速度快,但只适用于模块化程度较高的系统。
在原型模型的基础上扩展而成,把整个软件开发流程分成多个阶段,每个阶段都由目标设定、风险分析、开发、有效性验证和评审构成。适合于开发团队较小的项目。


适用于程序开发人员在地域上分布很广的开发团队
编程开发人员分为首席程序员和“类”程序员。
三个核心特点:

一个开发周期包括四个阶段
失配问题
逻辑构件模型描述系统设计蓝图以保证系统提供适当的功能,物理构件模型用来了解系统的性能、吞吐率等非功能性属性。
所谓逆向工程就是分析已有程序,将软件某种形式的描述转化为更抽象形式的活动。

逆向工程导出的信息可分为:

4+1视图



- JRP(Joint Requirement Planning)是一种成本较高的需求获取方法。
