Questions tagged «development-process»

有关软件开发过程的问题。

9
开发人员如何在自己的工作站上工作的标准
我们只是遇到了一种情况,这种情况有时会在开发人员在项目进行中几天病倒的情况下出现。 关于他是否提交了最新版本的代码还是我们应该关注的本地计算机上是否存在一些最新问题,我们存在一些疑问,我们已经交付给客户,因此我们迫不及待他返回。 其他开发人员中的一个以他的身份登录并发现了一个混乱的工作空间,其中许多貌似是同一项目,但带有时间戳,使得不清楚哪个是“当前”(他正在对项目版本的一些原型进行原型设计,而不是他的“核心”之一)。 显然这是一个痛苦的瓶颈,但是替代方案(这似乎是每个开发人员如何在自己的计算机上工作以确保其他任何开发人员都可以用最少的精力来捡拾东西的严格标准)可能会破坏很多开发人员的个人工作流程,并导致个人效率低下。 我不是在谈论签入代码的标准,甚至不是通用的开发标准,而是在谈论开发人员在本地的工作方式,根据我的经验,这个领域通常被认为几乎完全在开发人员自己的控制之下。 那么如何处理这种情况呢?这是发生的事情之一,您必须处理,让开发人员付出的代价能够以最适合他们的方式工作? 还是您要求开发人员遵守这方面的标准-使用特定目录,命名标准,Wiki上的注释或其他内容?如果是的话,您的标准涵盖了哪些内容,它们的严格程度如何,您如何监管它们等等? 还是我还缺少其他解决方案? [[为了争辩,假设无法与开发人员联系以讨论他在这里所做的事情-即使他能够知道并描述内存中哪个工作区也不会变得简单无瑕,有时人们真的可以我们无法与您联系,希望提供一种解决所有可能情况的解决方案。] 编辑:我知道通过某人的工作站是不好的形式(尽管这是一个有趣的问题,而且可能是主题外的问题,确切说明为什么如此),而且我当然不是在寻找无限的访问权限。按照标准的思路进行更多思考,在该标准中,将其代码目录设置为只读共享-无法更改,看不到其他内容,依此类推。

1
自由职业者:您如何满足聚会要求?
作为自由程序员: 从客户收集需求的过程是什么? 需求收集过程需要花费多少时间?我知道这不是固定的,并且有一些变量,例如客户端响应的提示速度等等。通常,考虑到响应的延迟等等,达到最终要求需要多长时间? 您使用哪个通信渠道(电子邮件,电话,即时通讯工具等)来收集这些要求? 您是否花时间收集需求? 您的需求收集过程中是否有任何可交付成果?如果是这样,那是什么?

3
健壮性与正确性竞赛[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 去年关闭。 在“ 需求质量”段落中阅读“代码完成2”,我发现: 是否在竞争属性之间(例如,稳健性和正确性之间)规定了可接受的折衷? (以上是检查复选框质量的一个大复选框) 因此,我在网络,学术书籍等中找到了很多关于稳健性和正确性的定义。 例如: 在“面向对象的软件构造,第二版,Bertrand Meyer,Prentice-Hall,1997”一书中: 正确性:系统在其规格,设计和实施中没有[缺陷]的程度。 鲁棒性:在无效输入或压力环境条件下,系统继续运行的程度。 尽管如此,尚不清楚这两个原因为何以及在哪些情况下可能发生冲突。 我的问题是:为什么这两个属性在竞争中?

3
向小型团队介绍版本控制分支策略
我是最近刚从一家公司开始的承包商。 团队是由3位开发人员组成的,其中包括2位初级到中级开发人员,以及即将在同级别开始的另一位开发人员和我本人(6年xp)。对于这两个现有的开发人员来说,这是他们从大学/学院毕业后的第一份工作,而且他们之前从未有资深开发人员来监督他们的工作。 没有明确的版本控制策略。开发人员在主干上进行所有开发,然后从其开发机器直接部署到生产中。现有团队不熟悉分支。 我正在改变所有这些,并引入CI,TDD测试/登台/生产服务器等,以及与此相辅相成的版本控制策略。 源代码控制系统是TFS,我以前从未使用过。它被配置为一个巨型存储库。 我已经为他们写下了一些建议,但是考虑到团队的经验,我还有什么要补充/修改的? 版本控制政策 开发在主干上完成 如果更改估计要花费一周以上的时间,则应在分支上完成,并定期从主干合并到分支中,以阻止两者不同步。 释放为生产代码创建的分支。该分支应该只包含稳定的代码。我们可以有一个发布分支,每个sprint从主干更新一次,或者我们可以每周创建一个单独的发布分支。 如果需要进行影响生产代码的紧急错误修复,则在发布分支上进行修复,然后合并回主干。 如果我们采用一个发布分支策略,则主干将在每个sprint接近sprint末尾时合并到release分支中。 如果我们采用每个发布策略独立的分支,那么主干永远不会合并到Release分支中 在某些情况下,如果分支之间的差异太大,可能有必要在不同的分支上进行两次错误修复。如果我们正在做短距离的冲刺,那么这应该不会经常发生。 我计划有三台服务器。测试环境始终在存储库中运行最新代码。一个暂存环境,该暂存环境正在运行用于暂存/测试“ Release Candidate”代码和UAT用途的最新候选候选版本,以及生产环境。 我计划执行此操作的原因是,到目前为止,该客户端仅完成了内部软件。最新的项目是针对高知名度的媒体客户的,我的感觉是团队需要采用比他们目前更为专业的开发模型。 例如,此刻,用户可以通过错误报告给团队打电话。开发人员找到并修复该错误,在自己的计算机上进行快速测试,然后直接部署到生产中。没有自动化测试或其他任何东西。 事后看来,我认为功能分支太远了,我将删除它。 因此,从本质上讲,它可以归结为a)完全没有分支)b)发行分支和主干,以及c)每个发行版本和主干的发行分支。 我倾向于后者。我最初的想法是,我将同时拥有一个发布候选版本和一个发布版本,可以同时在单独的服务器(UAT /生产)上运行,但是实际上,主干在任何时间点都是发布候选版本,因此每个释放趋于疯狂。我唯一的想法是,如果我们不希望我们的涉众看到开发代码,那么我们可能需要一个单独的候选发布分支,但是YAGNI以及所有这些.....

4
前端开发人员是否应该为后端开发人员指定JSON格式?
我在一个项目中担任前端角色。是否应该为我的后端团队成员指定他们的PHP返回我的JavaScript的JSON确切格式? 例如,我应该告诉他们,他们应该使用类似于此处所述的格式: 构造JSON以便前端使用的正确方法 还是应该尽可能地保持角色的无菌,只用文字描述我从后端接口需要的输入和输出?(当然,如果发生这种情况,就我而言,处理它们的不同数据结构格式可能会更加困难)

9
我应该听雇主的话并使用CASE工具吗?
我的雇主(不是开发人员)认为CASE工具将帮助我们改善开发流程和文档。我不确定这一点,我们是一个由5个开发人员组成的小组,为本地客户构建移动银行解决方案。我认为CASE工具需要购买,将浪费时间和金钱,而且我们需要一些时间才能习惯它们并有效地使用它们进行建模和填充。代码生成是另一个问题,我真的认为CASE生成的代码不如优秀开发人员编写的代码好。 我认为,如果我们坚持敏捷原则,设计模式,使用TDD并保持代码干净。我们应该很好。至于分析和设计,我认为白板上的简单UML图应该可以解决问题。文档既好又重要,但应尽量减少,而且我们不应该只关注文档而忘记代码。这就是我的想法。 我对么?还是应该听我的雇主并开始研究合适的CASE工具?

8
与僵化的程序员打交道
有时,长时间在项目上工作的程序员会变得僵硬,因此很难与他们进行推理。即使我们设法说服他们,他们也不太可能执行我们的建议。 例如,我最近加入了一个项目,该项目的构建和发布过程过于复杂并且有不必要的障碍。 我建议我们仅通过集成缺陷管理和版本控制工具(这都是IBM-Rational工具,从而可以很容易地一次性完成)来摆脱一些开发开销(例如填充一些电子表格)。另外,如果我们使用Maven和Ant之类的工具(该项目涉及Java和某些COTS产品),则可以简化构建和发布,从而减少人工错误和干预。 我设法说服了其他人,并准备投入精力来开发概念证明。但是“高级”开发人员并不愿意,可能是因为当前的流程使他变得更有价值。 我们如何在不增加团队摩擦的情况下应对这种情况?

7
机器学习应用于代码开发
我的背景是机械工程,所以请原谅我对此领域的无知。 我真的很喜欢编程和软件开发。另外,最近,我强烈推荐由斯坦福大学教授吴国安(Andrew Ng)教授的免费在线机器学习(ML)课程。链接到这里。 我听说这位教授说很难找到ML永远不会影响的领域。 题 所以我的问题是,迄今为止在将机器学习应用于代码开发方面进行了哪些研究?调试如何? 如果可能,请包括资源/资源/科学论文。 我没有运气搜索,因为经常搜索ML 和软件开发(或编程)最终导致ML应用程序的软件开发(或编程)的结果。

5
随着更具表现力的编程语言的发展,对软件设计规范的需求是否大大减少了?
对于许多IT人员(包括几年前的我自己),理想的软件开发过程是在编写一行代码之前,先创建带有许多UML图的详细设计文档。(这看起来像是瀑布模型的描述,但与敏捷相同,只是迭代次数较小。) 在过去的两三年中,我完全改变了主意。我仍然认为,带有相关测试用例的详细需求规范绝对是必不可少的。对于大型项目,在开始编写代码之前,我还需要概述总体体系结构。但是所有其余的都应该尽可能地用代码完成。在理想情况下,除了代码本身外,不应该对软件设计进行任何描述。 我是如何得出这个结论的?以下是一些参数: 反馈 用于编写文档或创建图表的工具几乎没有反馈。是的,有些建模工具可以对UML图进行一些一致性检查,但是它们是有限的,并且会产生大量开销。 没有反馈,很难识别和修复错误。 编写代码后,您将获得大量反馈,例如: 来自编译器的错误和警告 静态代码分析结果 单元测试 错误可以快速识别并解决。 一致性 为了确保代码与您的文档一致,您必须一次又一次地检查。如果经常进行更改,则很难使代码和文档保持同步。 重构 有许多强大的工具和技术可用于重构代码,而重构文本描述或图表通常很困难且容易出错。 进行这项工作有一个先决条件:代码必须足够容易阅读和理解。这可能无法用Assembler,Basic或Fortran来实现,但是现代语言(和库)更具表现力。 因此,如果我的论点是正确的,则应该有一个趋势,即越来越少的轻量级软件设计规范和文档。这种趋势是否有任何经验证据?

3
敏捷是RAD的变体吗?
维基百科说敏捷是一种“ RAD”,我猜是不正确的。据我所知,敏捷开发是因为RAD本身在90年代并没有那么成功(对于变更而言过于僵化)。还是我错了? (注:显然在Wikipedia上,有关敏捷软件开发的文章有所改进,只是将RAD列为敏捷的前身,而不是超集)。 本书来自Radical Project Management(Thomsett) “ ..新的开发风尚,例如RAD,敏捷,面向对象...” CISA认证信息系统审核员: ..意识到两个替代软件的开发。方法:敏捷和快速的应用程序开发 软件的敏捷管理: 敏捷方法主要源自RAD的轻量级方法。 软件评估最佳做法: SW的主要方法。开发。可以概括如下: 1.瀑布.. 4. RAD 5.敏捷 这个问题的重点是: 是RAD的敏捷类型还是独立的开发方法?


7
结对编程在工作场所有多普遍?
我一直对结对编程感兴趣,但是在12年的开发中,我从未在他们采用这种做法的地方工作过,因此我一直对人们的看法持怀疑态度。 我想知道这是因为金钱/时间(尖头的老板在同一台计算机上发现两个人正在使用相同的代码!!!!!!!!!!他们怎么敢!!)还是其他原因?


5
如何将敏捷引入使用刚性非敏捷方法的团队?
考虑一家通过非敏捷方法认证的公司,并以此为卖点向客户证明自己的责任。 您如何在不破坏整个系统的情况下逐步引入看板或Scrum并仍然使他们确信它仍然可以同样负责/可审计? 我知道这可能与“ 您将如何引入像Scrum这样的敏捷方法论 ”有关,但是在这里,我想知道如何规避/解决该公司以某种虚假借口强加某种方式管理SDLC的事实。进行审核的唯一途径。

9
您如何知道何时停止添加功能?
前一段时间,我编写了一个非常小的python脚本,该脚本定期检查xml feed中是否有新条目,并在出现时提醒用户注意新条目。我为自己编写了此代码,因此它本质上是一个基于控制台的程序,任何熟悉控制台界面的人都可以使用。 过了一会儿,我认为它可能对其他人有用,并开始整理它,清理输入内容,消除错误。我想到,因为我写了脚本,所以我知道如何有效,准确地使用它,而其他人却没有,所以我开始添加GUI。它从一个简单的菜单开始,然后扩展到具有界面和选项菜单的更完整的GUI。然后,我添加了存储的用户首选项,还添加了以前搜索的xml feed的存储,以加快重复搜索的速度。 我添加了日志记录以帮助在出现问题时调试应用程序,将应用程序升级到适用于我选择的平台的最新可用稳定python代码库,并改进了对话框功能。 我已经对错误进行了错误修正和注释,但是我仍然认为我可以做一些事情来改进应用程序,然后再将其提供给Alpha测试人员。与我最初的20-30行脚本相去甚远。从概念验证到可接受的使用程序,我只花了一个或两个小时的时间就花了10到20倍。(我仍然是菜鸟,东西花了我很长时间,但仍然....) 您怎么知道什么时候停止添加/调整/修复东西,让您的宝宝在户外露面?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.