开发者网络

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 128|回复: 1

备考高级系统架构师(笔记记录)-软件工程01(软件开发方法 ...

[复制链接]

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2022-10-25 17:06:15 | 显示全部楼层 |阅读模式
开启新章节了,最近有点忙,感觉时间又不是自己的了,什么时候出卖时间糊口的日子能彻底结束,不过今天看到华为的新闻,把活下来作为主要纲领了,这里也不是制造焦虑,面对全球经济的衰退,历史周期总是起起伏伏,咱们普通人过好自己的日子就可以了,本章主要讲解的是软件开发的方法以及模型,在系统分析师中也有介绍。
1.软件开发方法

1.1结构化法

(早期,C语言,面向过程)

  • 用户至上
  • 严格区分工作阶段,每阶段有任务和成果
  • 强调系统开发过程的整体性和全局性
  • 系统开发过程工程化,文档资料标准化
  • 自顶向下,逐步分解(求精)
1.2面向对象方法

(C++,JAVA, VB, dephl)

  • 在计算机中构建一个相对真实的体系。
  • 更好的复用性。
  • 关键在于建立一个全面、合理、统一的模型。
  • 分析、设计、实现三个阶段,界限不明确。
1.3面向服务方法


  • 在面向对象的基础上,进行的再次封装。
  • SO方法有三个主要的抽象级别:操作(方法)、服务、业务流程。
  • SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
  • 服务建模:分为服务发现、服务规约和服务实现三个阶段。
1.4原型法


  • 用于分析阶段(DEMO)Axure,静态UI
  • 适用于需求不明确的开发
  • 包括抛弃型原型和进化型模型
2.软件开发模型

2.1瀑布模型

瀑布模型(典型的结构化开发方法,适合于需求明确的项目),通常与原型模型一起使用,一次性完成,是此模型的特点,(SDLC)
分为定义阶段、开发阶段、维护阶段
软件计划,需求分析、软件设计、程序编码、软件测试、运行维护。
向下进行,向上反馈,逐层依赖。各阶段产出物相对明确。


2.2原型模型

原型模型(用于需求不明确的,避免用户阅读需求文档障碍),快速原型(主要是了解用户需求),演化型原型。
2.3螺旋慢型



螺旋模型是一个演化软件过程模型,将原型实现的迭代特征与线性顺序(瀑布)模型中控制的和系统化的方面结合起来。在螺旋模型中,软件开发是一系列的增量发布
分为制订计划、风险分析、实施工程、客户评估四个象限,从中心向外扩充。用到了选代的思想,螺旋推进,每次开发出一个原型版本,由用户确认。最终完成目标。适合于大型项目
ps:螺旋模型就是原型为结果加上瀑布模型形成的!与螺旋模型相对应的是增量模型
2.4增量模型

增量模型将系统分成几块,将各功能块分别开发,最后组装。每一个增量均发布一个可操作的产品。
2.5 V模型



V模型(强调测试贯穿始终的模型,测试迟早做,提前做),将一系列的测试计划做在前面,将测试用例
上行:需求分析、概要设计、详细设计、编码
下行:验收测试、系统测试、集成测试、单元测试
上行跟下行一一对应,然后单元测试的计划是在详细设计阶段完成的
将测试尽早做、提前做,测试用例及时跟上,发现问题,解决问题。在需要分析阶段做(验收测试计划、系统测试计划),在概要设计时做集成测试计划,在详细设计阶段进行单元测试计划。
2.6喷泉模型

面向对象的开发模型,使开发过程具有迭代性和无间隙性。
2.7快速应用开发(RAD)

快速应用开发(RAD)。常与瀑布模型和构件库开发一起使用,业务建模、数据建模、过程建模、应用生成、测试与交付
2.8构件组装模型(基于构件的开发方法,CBSD)

步骤包含:需求分析定义、软件架构设计、构件库建立、应用软件构建、测试和发布
在构件库建立阶段,要完成构件的标准的定义,以及构件库的管理功能。构件标准发(CORBA,COM/DCOM,EJB)。此阶段是此模型的重中之重。
只是负责构件的组装,开发过,稳定性好,节约成本。构件是基于标准的,互相通用,http://CORBA.COM/DCOM,EJB。
构建构件库需要很长的时间。
构建是个广义概念,微服务,单个的服务就是一个构件,微服务就是标准更高的模型。
2.9统一过程



统一过程/统一开发方法(RUP、UP)-在基于构件的开发方法发展而来。特点:用例驱动,以架构为中心,迭代和增量
分为初始(系统分析)、细化(完成架构设计)、构建(软件的组装与测试)、交付(制作发布版本)四个阶段。
初始:

  • 确定项目的范围和边界(做什么,不做什么)
  • 识别系统的关键用例(经常使用的是关键,80%的时间,只用到20%的功能)
  • 展示系统的候选架构
  • 估计项目费用和时间
  • 评估项目风险
细化:

  • 分析系统问题领域,分析该问题采用什么手段解决
  • 建立软件架构基础
  • 淘汰最高风险元素
构建:

  • 开发剩余构件
  • 构件组装与测试
交付:

  • 进行测试
  • 制作发布版本
  • 用户文档定稿
  • 确认新系统
  • 培训、调整产品
3.0敏捷开发

敏捷开发方法(比较新的方法,自适应开发,水晶方法,特性驱动开发,极限编程)适合小型项目的开发,不是单一的模型,是一个混合的模型。
在以往的开发方法论已经很成熟,再次调整的方法。比如觉得开发不可控,所以提出了软件工程。但开发方法论做到了极致,导致过多的文档负担。要给开发人员减负,才提出了这个方法,更加注重开发,小步快跑的模式。
基本原则:

  • 短平快的会议
  • 小型版本发布
  • 较少的文档
  • 合作为重
  • 客户直接参与
  • 自动化测试
  • 适应性计划调整
  • 结对编程
  • 测试驱动开发
  • 持续集成
  • 重构
4大价值观
沟通:做好项目的对内及对外的沟通,砍掉了很多文档,所以沟通变得重要了。
简单:简单设计,不过度设计
反馈:及时跟客户沟通相关问题,一两周为一个开发周期。
勇气:应对变更的勇气,及时响应用户的需求变更,大量的问题在前面爆发出来,后来的变更就少了。要注意对需求变更的响应程度。
5大原则
快速反馈,简单性假设,逐步修改,提倡更改,优质工作
12大最佳实践
计划游戏-让用户参与,描述功能或过程的场景的模拟,讲故事,更形象小型发布,
隐喻,
简单设计,
测试先行,
重构,
结对编程,集体代码所有制,持续完成(每2周发布一个版本),每周工作40小时,现场客户,编码标准
各种敏捷方法的特点
XP-以人力中心的理念。在对一些费用控制严格的公司中使用,已经敏证明是非常有效的。
水晶系列方法-用最少的纪律约束而仍能成功的方法,从而在产出改率与易于动作上达到一种平衡。虽然水晶系列不如XP那个的产出效率,但会有更多的人能够接受并遵循它。
开放式编码-程序员在地域上分布很广。
SCRUM-明确定义了可重复的方法过程,是目前使用比较广泛的方法,有专门的书籍介绍,2-4周为一个冲刺。
FDD(驱动开发方法)-致力于迭代阶段和可见可用的功能。在FDD中,一个选代周期一般是两周。编程开发人员分成两类:首席程序员和类程序员(首席主导,类编码)
ASD-其核心是三上非线性的、重叠的开发阶段:猜测、合作与学习。
例题来了:
1.下列关于不同软件开发方法所使用的模型的描述中正确的是()
A.在进行结构化分析时必须使用数据流图和软件结构图这两种模型
B.采用面向对象开发方法时,可以使用状态图和活动图对系统的动态行为进行建模
C.实体联系图(E-R图)是在数据库逻辑结构设计时才开始创建的模型
D.UML的活动图与程序流程图的表达能力等价
2.快速迭代式的原型开发能够有效控制成本()-是指在开发过程中逐步改进和细化原型直至产生出目标系统。
A.可视化原型开发
B.抛弃式原型开发
C.演化式原型开发
D.增量式原型开发
3.螺旋模型将整个软件开发过程分为多个阶段,每个阶段都由目标设定()开发和有效性验证以及评审4个部分组成。
A.需求分析
B.风险分析
C.系统设计
D.架构设计
4.快速应用开发(Rapid Application Development , RAD)通过使用基于()的开发方法获得快速开发。当()一时,最适合于采用RAD方法
A.用例 B.数据结构 C.剧情 D.构件
A.一个新系统要采用很多新技术
B.新系统与现有系统有较高的互操作性
C.系统模块化程度较高
D.用户不能很好地参与到需求分析中
5.以下关于软件开发方法的叙述,错误的是()
A.对于较为复杂的应用问题适合采用形式化方法进行需求分析
B.形式化方法的优势在于能够精确地表述和研究应用问题及其软件实现
C.净室软件工程将正确性验证作为发现和排除错误的主要机制
D.净室软件工程强调统计质量控制技术,包括对客户软件使用预期的测试
6.以下关于自项向下开发方法的叙述中,正确的是()
A.自顶向下过程因为单元测试而比较耗费时间
B.自顶向下过程可以更快地发现系统性能方面的问题
C.相对于自底向上方法,自顶向下方法可以更快地得到系统的演示原型
D.在自顶向下的设计中,如发现了错误,通常是因为底层模块没有满足其规格说明(因为高层模块已经被测试过了)
7.RUP强调采用()的方式来开发软件,这样做的好处是()
A.原型和螺旋 B.螺旋和增量 C.迭代和增量 D.快速和迭代
A.在软件开发的早期就可以对关键的影响大的风险进行处理
B.可以避免需求的变更
C.能够非常快速地实现系统的所有需求
D能够更好地控制软件的质
答案解析可以关注公众号:Coding-9527,也可以自己做。
感谢大伙点赞+关注的支持,是我持续学习更新的动力,关注公众号:Coding-9527,跟大伙一起学习,成长,进步!
回复

使用道具 举报

2

主题

5

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 昨天 03:46 | 显示全部楼层
支持,赞一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|开发者网络

GMT+8, 2025-4-7 07:48 , Processed in 0.084646 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表