1.传统软件开发模式
传统(目前)软件开发模式如图1,分为开发环境,测试环境,和客户运行环境。开发客户端(Deve Client)负责软件编码,并将代码发布到测试环境的开发测试机(Deve Test Env),该机可以被开发者访问更改。开发者可以在该机器进行初步的集成测试。当初步集成测试结束后,开发者向发布者(Release Client)提交集成测试申请,发布者将编译好的程序发布到集成测试机(Integration Test Env)。测试人员则在测试可客户端开始集成测试。当集成测试通过后,再由项目经理向发布者提交产品发布申请,最终又发布者发布为产品。
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 6in; HEIGHT: 260.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png"></imagedata></shape>
图1
缺点:
1.需要熟记过多的软硬件配置信息。大型软件开发时,各种环境都有很多服务器,例如产品运行环境Web服务器4台,数据库服务器2台,中间件服务器8台,客户端80台;集成测试环境,Web服务器2台,数据库服务器1台,中间件服务器4台,客户端4台;开发测试环境Web服务器2台,数据库服务器1台,中间件服务器2台,客户端2台。如果每台Web服务器有2个服务,每台中间件服务器有2个不同产品,在这种情况下,开发者通常需要熟记5种以上的软硬件配置。而集成测试者需要记更多,发布者则需要使用工具才能完成发布到上百个目标机器的工作。通常,开发者在发布到开发测试机一个补丁时,需要手动拷贝到不同的目录下,或者临时需要编写一些脚本。不管是采用那种方式,都不是一件轻松的工作,并且这种工作会经常出现。在项目进入维护阶段后,因为维护阶段不再配有测试人员,维护者既是开发者也是测试者这种繁杂的工作就更加明显。也给培训新来的人带来了不少工作量;
2.发布者的工作量过重。通常软件发布人数不会太多,开发阶段3到4人左右,维护阶段一般2人,1人负责产品发布,1人负责集成测试环境发布。但不代表发布工作会少于开发阶段。在维护初期,系统还不稳定,经常会发布各种补丁。因为发布时间必须是其他人员休息时间,发布者的工作是非常辛苦的。发布者除了需要掌握各种发布环境,和工具,他们还必须认真审查开发者提交来的发布申请书,保证发布程序无误。因此发布者的压力也是很大的。
3.其它的重复劳动。除了开发环境,测试环境和产品发布需要做很多重复工作之外,还包括各个服务器软件产品运行状态监视,批处理程序的运行结果审查,密码过期处理,以及日常各种系统维护工作等。目前这些工作需要使用不同的工具来完成,有些需要购买,有些需要自行开发。而这些工具分散在不同的机器,由于产品不同,很难把他们整合在一起。
2.未来软件开发模式
未来软件开发模式,如图2,是结合现有ALM,SCM,SAM,CLMS,ES技术,提出的一种类似于中枢神经的N:1:M模式,N代表N台客户端;1代表中枢神经,这里指的是基于人工智能应用程序生命周期管理系统( ALM),它还包括软件配置管理(SCM),软件资产管理(SAM),组件库管理系统(CLMS),专家系统(ES);M则代表需要管理的各种环境,例如产品运行环境,测试环境等。
图2
未来的软件开发模式构成,如图3:
1.客户端已不需要在分门别类,任何一个客户端只要能连接到AI.ALMS并有相应的权限,就可以充当任何角色。是AI.ALMS的构成。用户可以通过各种Web浏览器访问AI. ALMS。当开发者需要访问或更新源代码时,可以通过这些SCM的客户端在AI.ALMS提供的配置信息下操作。AI. AI. ALMS还提供了访问各个环境的远程登录工具,该工具结合Telnet,FTP,微软的Remote Desktop Connection的功能。
<shape id="_x0000_i1027" style="WIDTH: 6in; HEIGHT: 228.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png"></imagedata></shape>
图3
2.CLMS是组件库管理系统,在开发软件过程中,通过与CLMS交互,开发者可以获得CLMS的可再利用组件。而开发者在开发过程的软件资产CLMS会通过SCM自动获取,自动组织加入到CLMS中。
3.ES是软件开发的专家系统,帮助开发者解决技术难题,修改程序现在bug,并将和开发者的交互记录保存到知识库中。
4.SCM是软件配置管理,它负责管理项目的所有源代码和文档。它还负责连接各个环境,代码发布将通过SCM上传到各个环境中。SCM保管各个环境的应用程序副本。当一个程序需要发布,SCM根据本地副本的目录地址上传到目标机的相应位置。ALMS可包含多种SCM系统,例如CVS,VSS,SVN等。根据项目需要SCM可能需要安装在不同的操作系统。
5.ALM是生命周期管理器,包括分布开发管理,变更管理,需求管理,发布管理,Bug管理。
优点:
1.统一管理。AI.ALMS类似于大脑的神经中枢,统一控制软件开发的所有资源。项目组成员在系统搭建后就不需要熟记各个环境的配置信息。AI.ALMS会管理的很好。
2.软件发布。发布者不需要在本地保留发布副本,或是从其他的开发者获得发布副本,而只直接方法AI.ALMS,在AI.ALMS的应用程序生命周期管理器(ALM)里,已有开发者申请发布记录和产品经理审批记录,发布者所做的只是点击发布按钮,ALM自己将完成剩余操作。开发者在开发测试环境里发布自己的程序时,也可充当发布者的角色,不同的时在开发测试环境发布不需要产品经理的审批。发布的过程也非常简单,ALM访问SCM,根据源文件的版本号,来判断哪些文件需要发布,在需要发布的文件上打上发布的记号,再由ALM的发布程序来完成剩余的操作。当然这一些都是在配置好AI.ALMS的情况下进行。
3.辅助开发。CLMS和ES帮助开发者实现各种功能和解决各种技术问题。CLMS和ES里保存的内容是公司的软件资产也是智慧宝库。是急速软件开发必不可少的组成部分。
总结:
虽然题目是未来软件开发模式,其实离我们并不遥远,本文所使用的术语和系统名称都来自于现代技术,或许某个公司的某个项目已经使用了这种模式。诚然AI.ALMS的建立是复杂的,需要做大量的准备工作。但一旦系统搭建起来,其受益是不可估量的。
分享到:
相关推荐
软件开发模式,也称为设计模式,是软件设计中的一种通用解决方案,针对特定问题或场景,经过时间验证并被广泛接受。它们不是代码片段,而是描述在特定上下文中如何设计和实现组件之间关系的方法。模式的存在帮助...
### 微软公司软件开发模式简介 #### 一、引言 随着信息技术的快速发展,软件开发已成为推动全球科技进步的关键力量之一。微软作为全球领先的软件公司,在软件开发领域积累了丰富的经验和创新方法。北京大学出版社...
### 适合ChatGPT的水母式软件开发模式 #### 概述 在当前快速发展的信息技术领域中,人工智能(AI)...随着ChatGPT等自然语言处理技术的不断发展和完善,“水母式”开发模式有望成为未来软件开发领域的重要趋势之一。
常见的软件开发模式有边做边改模型、瀑布模型、迭代模型、快速原型模型和增量模型等。 1. 边做边改模型(Build-and-Fix Mode) 边做边改模型是一种简单的软件开发方式,开发人员根据客户的需求编写程序,调试通过...
在“软件开发技术作业”这一主题中,我们可以深入探讨一系列关于软件开发的重要概念和技术。...通过深入研究和完成这样的作业,学生将能够掌握软件开发的关键技术和最佳实践,为未来的职业生涯打下坚实基础。
本文将探讨企业软件开发模式在C语言实践教学中的应用,重点是敏捷开发模式和结对编程工作模式在教学中的实施与效果。 一、敏捷开发模式 敏捷开发模式是一种以人为核心,迭代、循序渐进的软件开发方法。它的核心在于...
【软件开发五大模式】是指微软公司在软件开发过程中遵循的一套高效策略,旨在通过科学的管理方式提高产品质量和开发效率。以下是对这五大原则的详细解释: 原则一:里程碑式开发阶段 微软采取“同步-稳定产品开发法...
总之,《Java手机程序设计入门》这本书不仅是一本技术指南,更是一种对未来软件开发模式的展望。它鼓励我们超越技术层面的局限,探索软件开发与创意、实用性的深度融合,为构建更加开放和包容的软件生态系统奠定了...
在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...
### 银行金融软件开发项目管理模式研究 #### 摘要 在信息化时代背景下,银行金融软件...未来,随着金融科技的不断发展,银行金融软件开发项目管理模式也需要不断创新和完善,以适应快速变化的市场需求和技术环境。
### 软件开发的哲学思考 ...面对日益复杂的软件开发环境,我们需要不断地反思和探索,以找到更加高效、人性化的开发模式。未来,随着人工智能、大数据等技术的发展,软件开发领域将迎来更多的机遇与挑战。
【软件设计模式】是软件开发中的重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。设计模式是为了解决在软件设计中遇到的一般问题而提出的解决方案,它并不直接解决编程中的具体...
### SaaS的开发模式及其关键技术 #### 引言 随着信息技术的发展,软件即服务(Software as a Service,简称SaaS)作为一种...未来,随着技术的不断进步和市场需求的变化,SaaS的开发模式和技术也将持续演进和发展。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软件体系结构,并提供了一些技术来解决特定的再现设计问题,对软件开发的初学者和专家都有帮助。把本书用作软件工程课程的指南,可以给学生...
### 设计模式与软件开发:理解与应用 #### 接口型模式——适配器模式解析 设计模式是在软件工程领域内,针对特定问题的一种通用解决方案。它们提供了一种标准化的方式来处理常见的编程难题,使代码更加灵活、可...
在软件开发设计课程中,我们主要探讨的是如何有效地构建高质量的软件系统,这涉及到一系列的理论...通过系统的学习和实践,学生不仅可以掌握编程技能,还能理解软件开发的流程和管理,为未来的职业生涯打下坚实的基础。