软件开发过程是连续的
太多开发人员受瀑布模型的影响太深了,习惯性的将开发过程做严格的划分。这样的划分多半是自欺欺人,软件开发过程主要是靠人的思维创造,而思维过程是连续的。切断一个连续的思维过程,这可能吗?
或多或少有完整项目经验的程序员,在接到新的项目需求时,很自然就会在脑海里浮现代码实现的轮廓,剩下的活就应该是动手编码了,用个成语来形容它就是“顺 理成章”。软件开发过程也应该顺理成章,不要再浪费力气去把这一个完整连续的过程划分需求、概设、详设、编码、验收啦。
此时,应该响起反对的声音了。
反方:“不划分怎么跟踪项目进度呢?”
项目进度是一定要跟踪的,但这样的划分对跟踪项目进度没有任何意义。因为在没有可运行的代码出来之前,需求完成度100%、概设完成度100%、详设完成度100%,这些数据根本不能真实反映项目的实质的进展,若你非要一个数据,我可以告诉你,项目进度为0。
反方:“等运行的代码出来,还用得着跟踪吗?”
当然不是等系统所有的代码出来啦,这都是瀑布模型惹得祸啊!项目可以按系统功能分批次计划实现,每个批次可视作一个迭代,每个迭代的结束点就是一个里程碑。在每个里程碑去跟踪系统功能的实现情况,此时功能实现数量占总量的比例才是有效的项目进度。
软件开发过程是迭代的
说到“迭代”,很多开发人员都会禁不住汗一把,有种近而远之的心态。还有人认为迭代就一个小瀑布,我曾经对此观点深信不疑,现在却感到惭愧不已。这种观点只能说明那个人还是没有打破瀑布的惯性思维的框框。
下面这个图相信大多数人都没有见过,即使眼熟也不见得看得懂。接下来,我们就来聊聊这个图。
这个图是RUP(
Rational Unified Process)的一个核心概念图,它诠释了RUP提倡的过程精髓。图解如下:
- 图的横轴表示项目的生命周期,也就是时间轴;
- 横轴上划分了四个阶段,每个阶段又会有1~N个迭代,迭代个数的多少视阶段工作进展而定;
- 图的纵轴罗列了项目中可能实施的工作流程;
- 每个工作流程都在横轴上有一个波形图,用来表示它在时间线上工作量的起伏变化。
图中四个阶段很容易让人迷惑,我这就来简单解释一下:
- 先启阶段 - 明确项目目标和范围;
- 精化阶段 - 确立系统架构和技术方向;
- 构建阶段 - 大规模并行实施设计、开发、测试;
- 产品化阶段 - 产品验收、部署、发布。
反方:“哈哈,先启不就是需求,精化不就是设计,构建不就是编码,产品化不就是测试,这就是挂羊头卖狗肉,还是个瀑布”
“...来呀,把他给拖出去阉了...对付这类中毒太深的人,必须斩草除根!”
在RUP中,需求、设计、编码与测试不再是过程阶段,而是工作流程,从上图已经明确表明这些工作几乎存在于生命周期的每个阶段,只是不同的阶段工作量有多 有少而已。每个阶段的目标不一样,工作的侧重点自然不同,但上述四个工作流程却一个都不能少。通过各个工作流程的配合,实现阶段目标的演进,最终实现产品 化。
对事物从认知到理解,是一个由抽象到具体的演化过程。软件开发也是一样,起初是一些表象和问题,经过第一次迭代破除了表象和一些问题,但又产生了新的问题,在经过第二次迭代解决了第一次的问题,不过也会产生第二次的问题...
这样反反复复,从二维的角度看好像是原地踏步,但从三维的角度看,在理解事物本质的纵向上我们却又了很大的进展。项目范围是在一段时间内是相对稳定的,那 么迭代的周期也是固定。可从宏观上看,这个迭代是会持续下去的,就像office从97到2007,十年历经了多少迭代啊!迭代可以结束,有两种办法, 1)限定项目范围,这样问题域是有限的;2)终止项目。
收尾
再不收尾,估计没几个人看的下去了。不好意思,天马行空了一把,没办法,正如前文强调的
还请大家勉强接受这个现实吧
分享到:
- 2007-11-15 13:01
- 浏览 1915
- 评论(9)
- 论坛回复 / 浏览 (9 / 4738)
- 查看更多
相关推荐
在IT行业中,闲聊SDK通常是指为应用程序提供社交互动功能的软件开发工具包。这个压缩包文件名为“xianliao”,很可能包含了用于接入和整合闲聊功能的相关资源,特别是针对Cocos2Dx游戏引擎的接口和文档。Cocos2Dx是...
标题中的“27_闲聊几句AUTOSAR_基础软件供应商&...这些工具对于实现AUTOSAR标准的软件开发至关重要,它们帮助工程师高效地完成从系统设计、软件架构、配置、测试到标定的全过程,确保了ECU软件的质量和功能的完整性。
一、软件开发、评测平台行业办公室管理制度的重要性 办公室管理制度是公司正常运营的重要组成部分,它确保了办公秩序的正常运转和提高工作效率。办公室管理制度结合国家相关法规和特定行业的实际情况制定,旨在规范...
典型的基于AUTOSAR的ECU软件开发流程涉及需求分析、系统设计、软件模块划分、配置、集成测试和验证。 基础软件供应商,如Tier2,扮演着至关重要的角色。由于AUTOSAR规范的复杂性和细致性,大多数一级供应商(Tier1...
AUTOSAR方法论旨在规范汽车软件开发流程,从整车架构的拆解到ECU层面的开发,以及基础软件的构建。 【关键词】: AUTOSAR, 开发方法论, 抽象系统描述, VFB系统描述, 软件组件, 基础软件 正文: AUTOSAR(AUTomotive...
在软件开发项目管理中,沟通计划是至关重要的一个环节,它涵盖了项目的整个生命周期,包括项目启动、计划、执行、监控和收尾。本章主要探讨了沟通的概念、沟通方式、沟通计划及其重要性,并通过案例分析来具体阐述...
PyTorch是Facebook(现Meta)开发的一个开源深度学习库,因其易用性和灵活性而受到广大开发者喜爱。 首先,要构建这样的聊天机器人,我们需要一个大规模的语言模型数据集。ChatGPT的训练数据通常包括大量的对话记录...
4. 对于新市场参与者:标准化流程和接口降低了技术门槛,鼓励更多公司参与汽车软件开发,它们可以选择特定环节进行深度研发和市场推广。 三、AUTOSAR软件框架 AUTOSAR软件框架由三个主要部分构成:Foundation、...
.NET框架是由微软开发的一个用于构建Windows应用程序的软件开发平台。它提供了一套丰富的类库、编程模型和运行时环境,支持多种编程语言,如C#、VB.NET等。在这个QQ局域网聊天应用中,开发者可能使用C#语言,结合...
让我们逐步了解这一过程,以及如何利用提供的源码进行实践。 首先,Rasa是一个强大的工具,它为开发聊天机器人提供了全面的解决方案,包括自然语言理解(NLU)、对话管理(DM)和对话执行。在Python中,你可以通过...
5. **毕业设计/课程作业**:这个项目作为一个计算机科学的毕业设计或课程作业,旨在让学生实际操作,将理论知识应用于实践,掌握 API 设计、开发和部署的全流程,提升解决实际问题的能力。 6. **系统源码**:项目...
在AUTOSAR(AUTomotive Open System ...这些组件通过细致的层次划分和接口设计,使得软件开发更加模块化和可扩展,便于维护和适应不同应用场景的需求。对于汽车电子系统的开发者而言,深入理解和掌握这些知识至关重要。
在开发过程中,开发者使用像DaVinci Developer这样的工具配置Runnable的属性,完成设计后,代码生成器会自动生成模板代码。开发者可以根据这些模板编写实际的Runnable实现代码,以满足具体的功能需求。模板代码提供...
在初始化过程中,BswM调用Rte_Start函数启动RTE调度,OS随后按照预设的调度规则对Task进行调度。 例如,OsTaskInit_ASIL_B_Core0任务在激活后,进入OS内核等待调度。一旦调用条件满足,该Task就会被调用,执行相应...
在开发过程中,如果对具体配置不确定,可以选择"AUTO"选项,让生成工具根据Runnable的配置自动计算并确定Task类型。这种方法可以帮助工程师避免错误的配置,同时简化了配置过程。 总的来说,理解Basic Task和...
DCM负责实现诊断过程中的通信协议,如UDS,以及常见的诊断服务,如0x10服务。DEM则处理诊断事件,包括事件的触发、记录和存储,与非易失性存储(NvM)模块交互。FIM根据诊断事件来控制SWC和功能,以适应不同级别的...
RTE是软件组件(SWC,Software Component)和底层硬件之间的桥梁,它负责管理和调度软件组件的执行,以及它们之间的通信。本文将深入探讨RTE与BSW(Basic Software)以及Port的关系。 首先,RTE不仅管理SWC的...
8. **安全性**: 在开发过程中,确保用户数据的安全至关重要。开发者需要对输入进行验证,防止SQL注入等攻击,同时使用HTTPS协议加密传输,保护用户隐私。 9. **可扩展性与性能优化**: 系统可能包含一些设计,以便...
8. **持续集成/持续部署(CI/CD)**:使用如Jenkins或GitLab CI/CD来自动化构建、测试和部署过程,保证开发流程的顺畅。 9. **版本控制**:如Git用于代码版本管理,便于团队协作。 10. **前端技术**:虽然未提及,...