软考高级架构师——4、软件开发方法

软件开发方法是软件开发的方法学。自从“软件危机”爆发以来,软件研究人员就在对
开发方法进行不断地研究,以期能够提高软件的质量、降低软件的成本。经过 40 多年的研
究,人们提出了很多开发方法,如最初的结构化开发到现在非常流行的面向对象的开发方法
等。本章将介绍软件生命周期、软件开发模型、软件重用技术、逆向工程及形式化开发方法
 

1 软件生命周期

可行性研究与计划

确定开发此软件的必要性,确定软件的目标、范围、风险、开发成本等内容

将产生《可行性研究报告》和《软件开发计划》

需求分析确定软件要做成什么样的
概要设计

将需求分析的结果转化为技术层面的设计方案

确定系统架构、各子系统间的关系、 接口规约、数据库模型、编码规范等内容

概要设计的结果将作为程序员的工作指南,供程序员了解系统的内部原理,并在其基础上进行详细设计和编码工作

详细设计
 

在概要设计的基础上,进行细化,如类设计
 

详细设计不是开发过程中必需的阶段

实现包括编码和单元测试
集成测试
 
指定集成测试计划,确定如何将这些程序单元集
成到一起,按照什么样的顺序进行测试,使用哪些测试数据等问题
确认测试验证软件是否同需求一致,是否达到了预期目标
使用和维护

软件维护的过程会贯穿整个软件的使用过程。

当使用和维护阶段结束后,软件系统也就自然消亡,软件系统的生命周期结束。

2 软件开发模型

瀑布模型
 

一个阶段到下一个阶段有明显的界线。

在每个阶段结束后,都会有固定的文档或源程序流入下一阶段     

       

当软件需求明确、稳定时,可以采用瀑布模型按部就班地开发软件

瀑布 V 模型
 

总体设计对应了集成测试,详细设计对应了单元测试

保持了瀑布模型的阶段式文档驱动的特点,而且更强调了软件产品的验证工作

瀑布模型后期的维护工作相当繁重,而这些维护工作大多都是修正在需求分析阶段引入的缺陷
 

螺旋模型
 

螺旋模型的每一周期都包括需求定义、风险分析、

工程实现和评审 4 个阶段,由这 4 个阶段进行迭代,软件开发过程每迭代一次,软件开发就前进一
个层次。

螺旋模型强调风险分析

需要具有相当丰富的风险评估经验和专业知识

在风险较大的项目开发中,如果未能及时标识风险,势必会造成重大损失。

增量模型
 
将系统划分为若干不同的版本,每一个版本都是一个完整的系统,后一版本以前
一版本为基础进行开发,扩充前一版本的功能
原型法开发
 

原型法的每一次迭代都经过一个完整的生命周期

户需求很不明确或技术架构中存在很多不可知因素的时候,可以采用原型法

构件组装模型
 

构件的自包容性让系统的扩展变得更加容易

在考虑软件的重用度时,往往会对其他方面做出让步,如性能

使用构件组装应用程序时,要求程序员熟练地掌握构件,增加了研发人员的学习成本

统一过程
 

统一过程(Unified Process, UP)UP 是一个迭代的二维开发模型,在生命周期的每一阶段

都可以进行需求、设计等活动

UP 的迭代特点使得更容易控制软件开发的风险。

任何一个阶段的工作都不是绝对的,都是相互交叠配合的。但每一个阶段都有其侧重点

敏捷方法

1、极限编程XP

由价值观、原则、实践和行为四个部分组成,它们彼此相互依赖、关联,并通过行
为贯穿于整个生命周期。


XP 的核心是其总结的沟通、简单、反馈、勇气四大价值观,它们是 XP 的基础,也是XP 的灵魂。

在 XP 的四大价值观之下,隐藏着一种更深刻的东西,那就是尊重。因为这一切都建立在团队成员之间相互关心、相互理解的基础之上。
 

在 XP 中,集成了 12 个最佳实践,(1)计划游戏(2)小型发布(3)隐喻(4)简单设计(5)测试先行(6)重构(7)结对编程(8)集体代码所有制(9)持续集成(10)每周工作 40 小时(11)现场客户(12)编码标准
 

敏捷方法

2、特征驱动开发(FDD)

有效的软件开发不可缺少的三个要素是:人、过程和技术

FDD 定义了 6 种关键的项目角色:(1)项目经理(2)首席架构设计师(3)开发经理(4)主程序员(5)程序员(6)领域专家:一般由客户、系统分析员等担当

FDD 共有 5 个核心过程
 

 组成 FDD 的最佳实践包括:领域对象建模、根据特征进行开发、类的个体所有、组成
特征小组、审查、定期构造、配置管理、结果的可见性。

敏捷方法

3、Scrum

Scrum 主要包括:产品待办事项列表梳理、 Sprint 计划会议、每日 Scrum 会议、 Sprint
评审会议、 Sprint 回顾会议等五个活动。

Scrum 的 5 大价值观为:
承诺—愿意对目标做出承诺。
专注—把你的心思和能力都用到你承诺的工作上去。
开放—Scrum 把项目中的一切开放给每个人看。
尊重—每个人都有他独特的背景和经验。
勇气—有勇气做出承诺,履行承诺,接受别人的尊重。

敏捷方法

4、水晶方法( Crystal)

透明水晶方法有七大体系特征:
(1)经常交付(2)反思改进(3)渗透式交流(4)个人安全(5)焦点(6)与专家用户建立方便的联系(7)配有自动测试、配置管理和经常集成功能的技术环境

敏捷方法

5、开放式源码

开放源码的一个突出特点就是查错
排障(debug)的高度并行性,任何人发现了错误都可将改正源码的“补丁”文件发给维护
者。然后由维护者将这些“补丁”或是新增的代码并入源码库

ASD 方法: ASD (Adaptive
Software Development)方法由 Jim Highsmith 提出,其核心是三个非线性的、重叠的开发阶段:猜测、合作与学习

 3 软件重用

 常见的软件重用形式包括:

(1)源代码重用

(2)架构重用

(3)应用框架的重用

(4)业务建模的重用

(5)文档及过程的重用

(6)软构件的重用

( 7)软件服务的重用
 

构件技术

构件又称为组件,是一个自包容、可复用的程序集。

构件是一个程序集,或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制的代码。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问构件,而不能直接操作构件的内部

自包容指的是构件的本身是一个功能完整的独立体,构件内部与外部的功能界限清晰明确,可以独立配置与使用。

而可重用既是构件的特点,也是构件出现的目的。

目前应用比较广泛的构件标准有 CORBA、Java Bean/EJB、COM/DCOM。


4 基于架构的软件设计

基于架构的软件设计(Architecture-Based Software Design, ABSD)是一种架构驱动方法。
这种方法有 3 个基础:
(1)功能的分解。在功能分解中, ABSD 方法使用已有的基于模块的内聚和耦合技术。
(2)通过选择架构风格来实现质量和业务需求。
(3)软件模板的使用。软件模板利用了一些软件系统的结构

 

ABSD 方法的输入由下列部分组成:
(1)抽象功能需求,包括变化的需求和通用的需求;
(2)用例(实际功能需求);
(3)抽象的质量和业务需求;
(4)质量因素(实际质量和业务需求);
(5)架构选项;
(6)约束。
 

基于架构的软件开发模型(Architecture-Based Software Design Model, ABSDM)把整个
基于架构的软件过程划分为架构需求、设计、文档化、复审、实现、演化等 6 个子过程,

5 形式化方法

 形式化方法是指采用严格的数学方法,使用形式化规约语言来精确定义软件系统

非形式化的开发方法是通过自然语言、图形或表格描述软件系统的行为和特性,然后基于这些描
述进行设计和开发,而形式化开发则是基于数学的方式描述、开发和验证系统。

形式化方法包括形式化描述和基于形式化描述的形式化验证两部分内容。

形式化描述就是用形式化语言进行描绘,建立软件需求和特性,即解决软件“做什么”的问题

形式化验证指的是验证已有的程序是否满足形式化描述的定义
 

写文章

热门文章

  • ChatGPT 全面解析 16121
  • 通俗易懂解释知识图谱(Knowledge Graph) 12968
  • 自然语言处理(NLP)学习笔记——RNN模型 9138
  • Spring手动控制事务提交 7677
  • 数据挖掘领域十大经典算法 7654

分类专栏

  • 软考 7篇
  • 深度学习 3篇
  • 知识图谱 6篇
  • NLP 6篇
  • 机器学习 5篇
  • 银行从业 4篇
  • 金融 3篇
  • 大数据 4篇
  • haproxy 1篇
  • rabbitmq 5篇
  • 数据结构 1篇
  • JavaScript 1篇
  • 数据库连接池 1篇
  • 工具
  • pinpoint 1篇
  • angular 2篇
  • mysql 5篇
  • SSH 2篇
  • java 16篇
  • ftp 2篇
  • 压缩 1篇
  • linux 11篇
  • sqlServer 1篇

最新评论

  • 机器学习18个核心算法模型

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天值得看】榜单,全部的排名请看 https://bbs.csdn.net/topics/618854272。

  • SpringBoot自定义注解@Idempotent实现API幂等性(防止接口重复请求)

    Richard Chijq: 也行,不过,如果同一个用户请求多次但是参数不一样,这个是不是重复请求呢?所以加上参数更严谨些

  • SpringBoot自定义注解@Idempotent实现API幂等性(防止接口重复请求)

    刘个Java: 这个key不如直接设置成当前用户id和方法名的拼接字符串,这样更清晰

  • 软考高级软件架构师论文——论软件架构风格

    洛阳城里无落阳: 你这通篇只写了一个层次风格不太够吧?一般至少要写三个,后面的内容你完全可以加点隐式调用(各个模块通过mq调用)、批处理(数据批量处理或者管道处理)、解释器(会员根据自定义权益收取不同费用)之类的风格呀

  • 软考高级架构师——5、系统规划分析与设计方法

    CSDN-Ada助手: 恭喜你,获得了 2023 博客之星评选的入围资格,请看这个帖子 (https://bbs.csdn.net/topics/617019698?utm_source=blogger_star_comment)。 请在这里提供反馈: https://blogdev.blog.csdn.net/article/details/129986459?utm_source=blogger_star_comment。

大家在看

  • codeArts Snap:辅助你的编程神器 1794
  • 一种基于稀疏学习的旋转机械故障诊断方法(MATLAB) 83

最新文章

  • 机器学习18个核心算法模型
  • 多模态大语言模型综述
  • 软考高级 | 系统架构设计师笔记(二)
2024年5篇
2023年43篇
2022年20篇
2021年8篇
2020年15篇
2019年7篇
2018年2篇
2017年2篇
2016年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Richard Chijq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网景字取名起名大全夕瑶花自飘零水自流歌词李星中秋节主持词生肖猪宝宝小名起名房地产开发公司起名河北辛集起名字耀和曜哪个字好姓申女孩大全起名字为戴茜小姐开车11月8日2020年鼠起名胖胖服饰网起名生辰八字起名仙剑4修改器给姓林男孩的起名小学生补课班起什么名好医路坦途查一个公司起名北京的春节课文asianmature佐山爱当尼采哭泣蛋糕店的名字怎么起女宝宝起名大全u115.com免费起名字软件吗记忆之城电视剧十月出生起名字淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化