• 回答数

    5

  • 浏览数

    213

豪门小慧子
首页 > 化工工程师 > 敏捷开发数字化工程师

5个回答 默认排序
  • 默认排序
  • 按时间排序

别惹阿玉

已采纳

现在,敏捷开发是一个非常热门的话题,很多机构的咨询师、很多程序员对“敏捷”已经达到了一种近乎宗教的狂热的程度。谈到软件开发,必谈敏捷,必谈TDD,仿佛不用这个方法,就一定是效率低下的团队和开发方法。 我个人没有仔细研究过敏捷开发(准确说,没有研究过那几个牛人提出的敏捷开发)。但是,公司目前在大力推动敏捷,而且我去年的一个重要项目也是按照公司推动的敏捷方法进行的(据说,公司从某个著名的咨询培训机构挖来人,帮我们做项目管理培训和敏捷推广)。这篇文章中,我只想谈谈自己对这个方法的感受和想法。 我的总的观点是:敏捷开发是反软件工程的。 我承认,敏捷开发中有些实践方式是很好的,值得吸收。例如在敏捷开发的圣经“敏捷软件开发-原则、模式于实现”一书中,很多设计原则,如“单一职责”、“开放封闭”、“依赖到转”等,它们只是一般、通用的设计原则,应该应用在任何的开发方法中,这些原则并也不是只有敏捷开发方法才能用,在任何的开发方法中都可以、应该使用。 然而,敏捷开发作为一个方法论,则是软件工程的倒退。敏捷开发,更像是软件工程出现之前,小作坊式的软件开发方法。 什么是传统的小作坊式的开发?它最重要的特点包括: 1. 几个人组成一个小组(小作坊),这个小组中的人共同完成软件的需求、设计、 开发和测试。小组中有简单的分工侧重,但其实每个人都会参与每个阶段。用敏 捷的话讲,这就是产品人员、软件工程师和测试工程师紧密配合的一个小组。工 程师需要参与需求分析、测试工程师需要参与产品的设计、产品人员要不断的通 过当前已有的“原型”来挖掘、更改需求,当然,这是因为“产品人员不可能在一 开始就看到所有的需求”。 2. 在这个小组中,文档只是用来辅助交流的,人们更多的使用口头交流来明确一些 细节问题或者是存在歧义的问题。文档不许要做到“面面具到”。当然,这也是敏 捷所推崇的。 3. 没有严格的开发过程控制。 4. 需要快速的接收并响应需求的变化,因为需求是一直在变的。 我们可以看到,这也是“敏捷开发”方法论的主要特点。 那么软件工程的目标是什么?软件工程得到人们的重视实在IBM OS360开发之后。人们认识到,软件系统已经越来越复杂,越来越庞大。上面提到的这种开发方法暴露出越来越多的问题:对程序员要求过高、软件质量难以保证、软件开发完成后的维护成本巨大等等。为了解决软件开发的这些问题,人们借鉴了传统的工程项目的实施。建造一个大厦、建造一辆汽车等,这些工程不比软件开发简单(准确讲,建造一个大厦要远比我们常见的大多数软件复杂),但是这些工程却能被可控地实施并得到质量良好的结果。 由此,人们提出了“软件工程”,它的首要目标,也是最根本的目标就是“将软件开发工程化”。 剩下的问题是,怎么才能“工程化”?我们仍然可以从建筑业和制造业借鉴他们成功的方法。我们下面就来看看工程化的最重要的两个方面。 严格的过程控制。先做什么,后做什么,非常明确。比如先做需求分析、再做设计、再做结构施工、再做墙壁于管道等。并且,过程中的每一步都要有确定的(至少在本次工程中不变的)产出,并通过验收。这个产出的负责人和验收负责人都要在验收报告中签字。如果这个产出在同一个工程中必须发生变化,那么,这就是一次工程事故,根据事故的大小,责任人需要负“被开除”到“刑事犯罪”等不一的责任。例如,我们要建造一个20层高的大厦,当主设计师完成结构设计后,他会对这份设计文档签字负责,验收者会在验收报告签字。大厦的主结构就会按照这份文档中的结构进行建造。如果到项目的中期,正在进行管道、线缆的部署时,发现,主结构是有问题的,中央主梁无法承受足够的扭矩。此时,设计师和验收者的一句“我们无法在一开始就看到这个,在下一次迭代中会修复”是绝对不会被接受的。他们要负责任。同样,如果此时产品人员过来说,客户的需求变了,是25层而不是20层。而要达到这个要求的代价是:主设计师就需要将主梁的直径增加20%、部分建筑材料需要被替换......我想,对于这种产品人员而言,只能告诉他,你已经在需求文档中签字了,你需要负责赔偿包括返工、材料、工期等方面的一切损失,你该辞职辞职,该坐牢坐牢。问题是:为什么软件不能这样呢?是因为软件修改的成本低吗?事实已经证明了,软件修改的成本不低(计算上后续维护的成本)。 严格的规格说明。此处,我用了“规格说明”,其实就是我们所说的文档。文档应该做到详细、严格。举个例子,在机械制造中,常常用到螺丝。在一个机械的设计文档中,会详细指定每个螺丝在标准环境下(比如0摄氏度、5%的湿度、一个大气压)的直径、螺纹间距、螺纹高度、以及热膨胀系数等参数,负责制造螺丝的部门,拿到份文档,甚至都不用见设计师本人,就可以制造出合格的螺丝。这里面,文档才是关键的东西。哪怕设计师换了、原来的螺丝部门的工人走了,只要有这份文档和合格的工人,就一定能造出与原来一样的螺丝。我认识一个做硬件设计的人,他曾经告诉我“你知道硬件的bug为什么这么少吗?我不是在用verilog设计硬件,我是在用文档设计硬件。拿到我的文档,任何一个懂verilog语法的人都可以编码出合格的产品。”这就是文档的力量。只有设计文档才能保证在原本设计、实现一个系统的人走后,后续的人能够很容易的继续维护、扩展这个系统。 上面就是我理解的软件工程。这个世界上很少有真正的“奇迹”,我们认为的奇迹,基本上都是伟大的工程。

92 评论

晚点寿司

前言:本人所在企业采用了敏捷开发,拥有一套自身的“敏捷开发流程”。目前还处于僵化与优化阶段,为敏捷的本地化而探索与实践着。作为一名软件工程师,我有幸参与到了软件的设计与开发阶段。本文以我在工作中的学习与感悟,配合一些实例解读我对敏捷开发的理解。本文更多的是从一名程序员,一名执行者角度去解读。内容难免浅显与直白,我的目的也是在写本文的过程中通过总结与分析进一步升华对敏捷开发的理解与认识,若有错误还请诸位资深实践者及时指正,以免误人子弟。感谢!正文:引用wiki对敏捷软件开发的解释:“敏捷软件开发又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。”敏捷发展背景:敏捷一词来源于2001年初美国犹他州雪鸟滑雪圣地的一次敏捷方法发起者和实践者(他们发起组成了敏捷联盟)的聚会。其中最重要的部分就是对一些与会者一致同意的软件开发价值观的表述。这些表述最终形成了敏捷宣言。敏捷软件开发宣言我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:个体和互动 高于 流程和工具工作的软件 高于 详尽的文档客户合作 高于 合同谈判响应变化 高于 遵循计划也就是说,尽管右项有其价值,我们更重视左项的价值。Kent BeckMike BeedleArie van BennekumAlistair CockburnWard CunninghamMartin FowlerJames GrenningJim HighsmithAndrew HuntRon JeffriesJon KernBrian MarickRobert C. MartinSteve MellorKen SchwaberDave Thomas本篇所谈的敏捷开发是一种思想、一种价值观。我的理解:各个企业制定的所谓“敏捷流程”只是敏捷思想的实例。 宣言中还包括以下原则:(蓝色字体是我个人的解读)对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要。企业看重的是利润,利润=收入-成本,开发周期缩短直接带来开发成本下降。我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。开发后期如何能快速响应变化?1)开发流程中有完善的需求变更通道。2)OO,Design Pattern,低耦合高内聚,体现架构师的价值。经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。时间尺度越短,功能粒度越小,每次交付一个业务或功能,测试更集中,引入问题可以及时发现与定位。业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。实施过程中若与原始需求出现偏差可以及时发现并校正。拉近开发者与客户的距离,也使开发者体会到自己工作的价值,增加其成就感。围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。团队士气很重要,引导开发者的责任感更加重要,计划制定时要每一位开发者自己承诺交付期限,有风险及时上报。这样开发者感觉自己享受到更多信任与自由,他们更加看重自己的承诺。在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。尽量做到能够面谈的不允许电话沟通、能够电话沟通的不允许文本或邮件沟通。沟通是开发者间对对方模块了解与认识的过程,也是针对问题深入分析的过程。可以工作的软件是进度的主要度量标准。可工作的软件是我们关注的价值所在,也是可以直观度量的。敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。开发与上线周期短,不停的开发与上线。对卓越技术与良好设计的不断追求将有助于提高敏捷性。与我第二个观点吻合。简单——尽可能减少工作量的艺术至关重要。工作量减少同时意味着维护成本的降低。最好的架构、需求和设计都源自自我组织的团队。每个业务或特性交付团队的Leader需要根据业务特点从资源池中挑选团队所需要的人参与到开发中,使每个人的价值能得到最大体现。每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。企业需要根据自身所处领域、客户、产品交付形式、组织架构、团队素质等多方面因素制定适用于自身的开发流程。比如敏捷实践有很多,仅“结对编程”一项就不是每个企业都做得来的。通过对敏捷思想与原则的初步解读,使大家大体了解敏捷提倡的价值观。后续更多是结合一些实例解读敏捷在工作中发挥的作用,以及创造的价值。

100 评论

:小小的菇凉

敏捷软件开发:广泛关注的新型软件开发方法

357 评论

Yun云2870

可以根据招聘要求学习:1、o展示构建大数据解决方案的经验。Hadoop生态圈体验:Hadoop、Spark、MapReduce、Hive/Pig、Yarn、HBase等 o有使用RDBMS和NoSQL栈的经验(ElasticSearch, HBase, Cassandra)o具备良好的Python统计和科学编程能力 o有数据可视化工具使用经验:Hue, Kibana, Qlikview, Tableau优先 对数据科学概念有良好的理解,并强调机器学习技术的优先考虑 o能够独立解决问题,积极主动,自我指导 o敏捷/Scrum开发方法经验 o软件测试知识,包括黑盒测试和白盒测试方法,以及功能测试和非功能测试2、熟练Java/Scala/Python/go等一种或多种编程语言熟练SparkStructuredStreaming和Flink等流计算引擎,有实际项目经验者优先熟悉kafka,hadoop,zk,HBase,elasticsearch,clickhouse,Druid等大数据技术,有实际项目经验者优先了解并行计算或者分布式计算原理,了解数据仓库相关知识优先了解常见的机器学习算法,了解CNN/RNN/LSTM/GBDT等算法者优先

274 评论

小苹果花苑

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发中有个很好的软件构架会为软件项目节省大部分时间,使得软件研发人员只用关注核心业务的实现。

北京开运联合认为:Creat系列框架(java框架、c++框架、.net框架、app框架、php框架)是集快速开发+通用权限管理+工作流+即时通讯+微信组件+智能开发+智能报表+手机APP开发等组件于一体的敏捷开发框架。开发难度小,提高50%以上的工作效率,可无线扩展,轻松开发APP、CRM、OA、ERP、WMS、MIS等。

框架优势 开发周期短:仅用传统开发周期1/3的时间,便可以完成开发任务。 如果您对这个框架刚兴趣,想了解更多相关信息,可以打 一三六,中间是 六一二零,末尾是  四一四七!

开发难度低:仅需初级开发人员,3天内便可上手开发软件。 开发成本低:无需收费中间件,节省大部分时间和人员成本。 无限扩展性:无限扩展组件,满足多种软件应用开发。 无依赖性:对技术人员依赖程度低,新人快速上手,不惧怕人才流动。 界面美观:丰富的精美界面控件,无需专业美工,界面风格高度统一。 运行速度快:自带速度优化处理,无需开发人员操心。 安全性高:自带安全处理,自动查错,避免任何漏洞。 支持多类型数据库:自带多类型数据库接口,满足无缝隙接口对接。 以往,企业软件多是以业务系统划分的“大软件”,为了满足部门级协作的需要,软件由复杂的功能模块组成、工作流程长;“大软件”因为独立开发部署,花费大、周期长,软件之间也很难连通协作。

随着IT基础计算能力的提高、大数据的广泛应用,企业能够将分散的业务软件集成到统一的大平台上;而移动互联网的深度渗透,更迎合了用户对企业软件功能简单化、使用移 动化、协作点状化的需求。这也使得软件框架在各行业内的需求越来越多。 Creat系列数据框架体系立足于企业发展现状和企业建设需求,着眼于企业信息系统集约化建设和信息资源共享融合,在现有企业建设和发展的基础上,借鉴企业内部发展经验,通过运用大数据模式和服务模式创新,不仅将实现企业数据统一部署,基础数据统一集聚,业务数据深度融合,应用数据深入挖掘,主题数据跨行业、跨部门、跨层级共享,更为重要的是通过建立一体化的、弹性可扩展的企业数据架构项目,规范和引导应用项目开发,改变多头共享,无序交换,粗放发展的局面,重塑企业数据环境,构建双向互动、有序交换、深度融合,按需服务、良性循环的集约化企业数据生态圈。 通俗的来说Creat系列数据框架是一套软件半成品,相当于一座建好的毛坯房,主体框架已经建好,样板间已经做好,各类装修材料已经备齐,您只需要根据自己的业务需求来装修完房间就可高价出售。这款产品非常适合企业管理软件和互联网平台后台系统,开发框架中提供了完善的权限角色管理功能,快速开发功能,工作流引擎功等通用的功能模块,以及可扩展的系统机制,美观简洁的UI界面风格。

84 评论

相关问答

  • 化工技术开发工程师

    非常有前途!1. 如果在公司能开发几个产品,或改进公司产品的配方,升职、奖金你都会拿很多的;2. 如果自已有资金,再加上掌握几个产品的配方,或开发出几个新的产品

    动漫设计师 6人参与回答 2024-06-06
  • 化工开发工程师

    非常有前途!1. 如果在公司能开发几个产品,或改进公司产品的配方,升职、奖金你都会拿很多的;2. 如果自已有资金,再加上掌握几个产品的配方,或开发出几个新的产品

    瑾年凉薄 3人参与回答 2024-06-06
  • 化工厂科技开发工程师

    他们主要是对一些化学的产品进行研究改进。就业前景还是比较好的,因为现在涉及化学的东西还是比较多的。

    dp72893325 5人参与回答 2024-06-06
  • 潍坊化工开发工程师

    化学工程师一般在与化工有关的厂从事工艺管理,工艺制图,工艺设计,化工厂管理等工作.化学技术员负责生产工艺技术和设备安全管理工作,确保各项技术工作的安全可靠性等工

    车厘子妈妈 3人参与回答 2024-06-06
  • 数字化工程师如何开发客户

    小咨询公司数字化接触客户方式如下:一、首先了解客户分类客户管理的对象无疑就是企业的客户,所以企业要搞清楚客户到底包括哪些,以及如何分类。根据不同的方法来进行客户

    全能小吃货 3人参与回答 2024-06-06