软件工程-五 过程

news/2024/10/5 19:11:23

 

做过程不是做工程

软件工程这个概念被提出的时候大概是在20个世纪60年代末。它作为成熟的概念的标志是软件工程的瀑布模型的提出。

瀑布模型将软件开发的过程分成需求、分析、设计、开发和测试五个主要阶段,其主要环节关系表现为如下的这样一种形态

在瀑布模型之后,很多人开始研究过程模型的问题。很多从实际工程中提炼出来的过程模型都是值得称道的,例如RAD(Rapid Application Development,快速应用开发)模型、螺旋模型和现在常被提及的RUP(Rational Unified Process,Rational统一开发过程)模型。

模型就是“样子”。人家拿出一个东西来说:这是模型。其言下之意就是要你按照这个样子来做。过程被描述为可重复的模型,实施的结果却可能演变成为相当尴尬的局面,如图所示。

我们看到,按照模型所描述的这个“样子”,做完过程的每一个阶段,并不等于做完了工程。或者说,工程并不是这样就可以做成功的。

换而言之,无论是用RAD模型还是RUP模型来做工程,即使是亦步亦趋,也做不好工程。

如果工程可以那样做成的话,只需要有瀑布模型就足够了。因此“做过程”并不是做工程的精义。

 

做过场

前面那张图就是一个过场。尽管那是一张用来描述“沟通问题”的经典图例

如果每一遍(或者用RUP的那个术语“迭代”)都只是“过场”的话,项目将只是一场无休止的演出而已。

最终呢?观众受不了,就交钱走人;演员受不了,就下台散伙。戏目和项目的结局,竟如此的相似。

 

实现,才是目的

很多人把问题的本质给忘掉了。从最开始,从我们编程开始,我们的目的就是实现一个东西。无论这个东西是小到称手的一个工具,还是大到千万的一个工程,我们的目标,都是要“实现”它。

工程只是一种实现的途径。最初做开发的前辈们,不用什么工程或者过程,也一样编出了程序,也一样解决了问题,也一样实现了目的。

 

工程不是做的,是组织的

不能“做”工程,而是要“组织”工程。项目经理的工作,就是要去组织这个工程中的各个角色,使得分工明确,步调一致,共同地完成这个项目。

 

 

大道至简:软件工程实践者的思想 第五章 失败的过程也是过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hjln.cn/news/43166.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

centos tream 9安装dingding

https://github.com/zhullyb/dingtalk-for-fedora/blob/master/README_zh.md 用deb包转成rpm,然后用dnf安装rpm即可 dingtalk-for-fedora提供了如何转化,需要了解rpmrebuild如何使用

redis自学(46)键值设计

Redis键值设计 优雅的key结构 Redis的Key虽然可以自定义,到但是最好遵循下面的几个最佳实践约定: l 遵循基本格式:[业务名称]:[数据名]:[id] l 长度不超过44字节(长度越小,占用的内存越少) l 不包含特殊字符优点: ① 可读性强 ② 避免key冲突 ③ 方便管理 ④ 更节省…

windows计划任务的“等待空闲时间”已弃用

想使用windows的计划任务来实现:当计算机空闲时,自动关机,避免资源浪费。 方案一: 测试了过多个软件,如shutter,WinOFFSetup,虽然功能多,但这些软件只能在用户登录时运行。而windows 11一段时间后会自动注销,查了多种设置方法没有解决。 方案二: 用AI写了检测用户空闲…

AML HW3

高级机器学习 HW31. 完成 value_iteration 函数, 实现值迭代算法 根据 Bellman 最优方程,我们可以得到如下的公式: \[V^*(s) = \max_a \sum_{s} T(s, a, s) [R(s, a, s) + \gamma V^*(s)] = \max_a Q^*(s, a) \]可以将其写成迭代更新的方式 \[V_{k+1}(s) = \max_a \sum_{s} T…

08-表格和表单

表格和表单01-列表 1.1 常见列表1.2 有序列表 直接子元素只能是li <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta n…

JavaScript基础语法

原文链接:https://blog.csdn.net/m0_67683346/article/details/127591079 6.2、console.log在控制台打印一个日志(一般是给程序员看的): console.log("hello JavaScript");需要在开发者工具中的控制台查看打印结果: ★ console是JS中的一个“对象”,. 表示取对象…

Leetcode419 甲板上的战舰

最近以来,我在力扣上坚持完成每天一题,今天系统推的题目为《甲板上的战舰》,在此记录一下。 题目描述如下: 给你一个大小为 m x n 的矩阵 board 表示甲板,其中,每个单元格可以是一艘战舰 X 或者是一个空位 . ,返回在甲板 board 上放置的 战舰 的数量。 战舰 只能水平或者…

$.extend()使用详解

原文链接:https://blog.csdn.net/shadow_zed/article/details/106419848 1. jquery.extend(), 为jQuery类添加类方法例子1 例子2 调用直接用$.类名 2. jquery.extend(), 将两个或更多对象的内容合并到第一个对象。 当我们提供两个或多个对象给$.extend(),对象的所有属性…