软件开发方法
软件开发方法是软件开发的方法学。自从“软件危机”爆发以来,软件研究人员就在对开发方法进行不断地研究,以期能够提高软件的质量、降低软件的成本。经过 40 多年的研究,人们提出了很多开发方法,如最初的结构化开发到现在非常流行的面向对象的开发方法等。本章将介绍软件生命周期、软件开发模型、软件重用技术、逆向工程及形式化开发方法。
结构化方法
结构化方法(即面向过程方法)总的指导思想是自顶向下、逐层分解,它的基本原则是功能的分解与抽象。适合于数据处理领域的问题,不适合解决大规模的、特别复杂的项目,且难以适应需求的变化。
面向对象方法
面向对象方法的本质是主张参照人们认识一个现实系统的方法,完成分析、设计与实现一个软件系统。自底向上,阶段界限不明确,更好应变,更好复用,符合人们的思维习惯。
面向服务方法
粗粒度、松耦合,标准化和构建化。包含三个抽象级别,由低到高为:操作、服务、业务流程。
原型法
原型法(用于需求分析阶段)是指在获取一组基本的需求定义后,利用高级软件工具可视化的开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。原型方法比较适合于用户需求不清、需求经常变化的情况。当系统规模不是很大也不太复杂时,采用该方法比较好。按功能分:水平原型(界面)、垂直原型(复杂算法)按最终结果分:抛弃型原型、演化型原型形式化方法
形式化方法是基于数学的特种技术,适合于软件和硬件系统的描述、开发和验证。所有东西均可证明和验证,而不是通过测试。
统一过程方法UP
是软件工程的过程,它提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。统一过程(Rational Unified Process,RUP/UP)是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型。
敏捷方法
总体目标是通过“尽可能早地、持续地对有价值的软件的交付”,使得客户满意。适用于:“小步快跑”的思想,适合小项目小团队。基本原则如下:
- 短平快的会议
- 小型版本发布
- 较少的文档
- 合作为重
- 客户直接参与
- 自动化测试
- 适应性计划调整
- 结对编程
- 测试驱动开发
- 持续集成
- 重构
四大价值观
- 沟通:与系统的开发者交流以明确系统的具体需求,这一任务是通过文档来完成的
- 简单:鼓励从最简单的解决方式入手再通过不断重构达到更好的结果
- 反馈:系统的反馈、客户的反馈、小组的反馈,反馈是与“交流”、“简单”这两条价值紧密联系的
- 勇气:只为今天的需求设计以及编码,不要考虑明天。这是努力避免陷入设计的泥潭、而在其他问题上花费了太多不必要的精力
五大原则
- 快速反馈:掌握新情况以及做出修改,对系统、客户、小组的反馈进行快速的修改
- 简单设想:假设简单认为任何问题都可以”极度简单”地解决,不考虑未来变化
- 增量变化:小步快跑,使得整个开发进度以及正在开发的系统对于用户来说变得更为可控
- 拥抱变化:不要对变化采取反抗的态度,而应该拥抱它们,并且拟定计划使得下一个阶段的产品能够满足
- 优质工作:每个人都期望出色的完成工作,在规定的工作时间内高效完成工作
六种主流开发方法
- 极限编程:一些对费用控制严格的公司中使用,非常有效。
- 水晶法(Crystall):探索了用最小纪律而仍能成功的方法,从而产出效率与易于运作上达到一种平衡。认为每一个不同的项目都需要一套不同的策略、约定和方法论,认为人对软件质量有着重要的影响(以人为本),因此随着项目质量和开发人员素质的提高,项目和过程的质量也随之提高。通过更好地交流和经常性交付,软件生产力得到提高。
- 开放式编码:程序开发人员在地域上分布很广。
- 并列争球法(SCRUM):明确定义了的可重复的方法过程。把每30天一次的迭代称为一个“冲刺”,并按需求的优先级来实现产品。多个自组织和自治小组并行地递增实现产品。协调是通过简短的日常情况会议来进行,就像橄榄球中的“并列争球”。
- 功用驱动开发方法FDD:变成开发人员分成两类:首席程序员和“类”程序员。
- 自适应软件开发ASD:其核心是三个非线性的、重叠的开发阶段:猜想、合作与学习。

十二大最佳实践
- 计划游戏:快速制定计划、随着细节的不断变化而完善
- 小型发布:系统的设计要能够尽可能早地发布
- 系统隐喻:找到合适的比喻传达信息
- 结对编程:由两个人坐在一台电脑前一起完成。一个程序员控制电脑并且主要考虑编码细节。另外一个人主要关注整体结构,不断的对第一个程序员写的代码进行评审
- 现场客户:客户应该时刻在现场解决问题
- 重构:重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求
- 代码集体所有:每个人都对所有的代码负责,每个人都可以更改代码的任意部分
- 测试驱动开发:先写测试代码,再写编写程序
- 持续集成:可以按日甚至按小时为客户提供可运行的版本,每周工作40小时
- 编码规范:团队使用统一的编码规范
- 可持续的节奏:团队能够长期维持的速度努力工作
- 简单设计:设计只要能满足系统和客户在当下的需求就可以了,不需要任何画蛇添足的设计
敏捷方法与其它方法对比:

基于架构的开发方法【ABSD】
软件开发模型
瀑布模型(SDLC)

瀑布模型也称为生命周期法,是结构化方法中最常用的开发模型,以文档作为驱动,适合于软件需求很明确的软件项目。
V模型

将验收确认活动应用于早起的软件工程工作中,测试贯穿始终。
原型模型

原型方法比较适用于用户需求不清晰、需求经常变化的情况,当系统规模不是很大也不太复杂的是很好,采用该方法比较好。
螺旋模型

将瀑布模型和演化模型相结合,综合了两者的优点,并增加了风险分析。特别适用于庞大、复杂并且具有高风险系统。它以原型为基础,沿着螺线自内向外旋转,每旋转一圈都要经过制订计划、风险分析、实施工程及客户评价等活动,并开发原型的一个新版本。经过若干次螺旋上升的过程,得到最终的系统。
相关影片资源迅雷下载推荐
1688找工厂的安心购到底要不要开通?
1688找工厂的安心购到底要不要开通?
分享购,1688找工厂的安心购到底要不要开通?
增量模型

增量模型把软件产品划分为一系列的增量构件,第一个增量往往是核心的产品,即第一个增量实现了基本的需求。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。
喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动地模型,主要用于描述面向对象的软件开发过程,该模型认为软件开发过程自下而上的,各阶段是相互迭代和无间隙的。
构件组装模型(CBSD)

对象技术为软件工程的基于构件的过程模型提供了技术框架。面向对象范型强调了类的创建,类封装了数据和用于操纵该数据的算法。如果经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统结构中复用。
快速应用开发模型(RAD)
是一种试图快速生成系统而不会牺牲质量的结构化开发方法。RAD与有同样的目标——对用户需求做出,但它范围更广。通过瀑布模型和构建组装模型合并组成。
- 业务建模
- 数据建模
- 过程建模
- 应用生成
- 测试交付
统一过程模型(UP)

以用例驱动,以架构为中心,迭代和增量。
RUP阶段 | 工作内容 |
初始阶段 | 确定项目范围和边界,识别系统的关键用例,展示系统的候选架构,估计项目费用、时间和风险 |
细化阶段 | 分析系统问题领域,建立软件架构基础,淘汰最高风险元素 |
构建阶段 | 开发剩余组件,构件组装与测试 |
交付阶段 | 进行β测试,制作发布版本,用户文档定稿,确认新系统,培训、调整产品 |
逆向工程
逆向工程是设计恢复过程。

- 实现级:包括程序的抽象语法树、符号表、过程的设计表示
- 结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
- 功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制模型
- 领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型
基于架构的软件设计
基于架构的软件设计(Architecture-Based Software Design,ABSD)是一种架构驱动方法。
- ABSD方法是架构驱动,即强调由业务、质量和功能需求的组合驱动架构设计
- ABSD方法有三个基础:
- 功能的分解。再功能分解中,ABSD方法使用已有的基于模块的内聚和耦合技术;
- 通过选择架构风格来实现质量和业务需求;
- 软件模板的使用。
- 视角与视图:从不同的视角来检查,所以会有不同的视图。
- 用例用来捕获功能需求、特定场景用来捕获质量需求。
基于架构的软件开发模型
基于架构的软件开发模型(Architecture-Based Software Design Model,ABSDM)把整个 基于架构的软件过程划分为架构需求、设计、文档化、复审、实现、演化等 6 个子过程。

架构需求

架构设计

架构文档化架构文档化过程的主要输出结果是架构需求规格说明和测试架构需求的质量设计说明书这两个文档。文档的完整性和质量是软件架构成功的关键因素。文档要从使用者的角度进行编写,必须分发给所有与系统有关的开 发人员,且必须保证开发者手上的文档是最新的。 架构复审复审的目的是标识潜在的风险,以及早发现架构设计中的缺陷和错误,包括架构能否满 足需求、质量需求是否在设计中得到体现、层次是否清晰、构件的划分是否合理、文档表达 是否明确、构件的设计是否满足功能与性能的要求,等等。架构实现

架构演化

企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930相关影片资源迅雷下载推荐
拼团类项目就是资金盘骗局,看看这些有你参与的吗?请远离 ... ...
拼团项目也是资盘的一种,本质是“庞氏骗局”,即以后来者的钱发前面人的收益。一场击鼓传花的游戏,鼓声一停,后面成群结队的人全军覆没。“新食泰团团赚”改名“新概念欢乐购”,也是拼团项目之一。“新概念欢乐购 ...
七人拼团,拼团类项目就是资金盘骗局,看看这些有你参与的吗?请远离 ... ...
标签: 软件开发 系统架构设计师知识点总结:软件工程之软件开发