Questions tagged «development-methodologies»

2
如何管理和估计从客户那里收到的非结构化需求
在项目投标阶段的很多时候,我从各种来源(电子邮件,Word文档,excel)以非常非结构化的格式从潜在客户那里收到软件系统的要求。通常是一群来自客户方面的“产品开发”人员针对他们所遇到的业务问题提出这些“建议的解决方案”。尽管他们是业务领域的专家,但很多时候他们没有正确的解决方案。 这导致 相同需求的多个版本 将两个需求混为一谈 稍后有几个版本的需求,再将合并在一起的需求分离出来,每个需求都包含一些新增加的内容 您如何处理这些需求,并在开始开发之前将它们分类为正确的用例?从第一次构思到将其具体化为合适的用例,我们可以使用哪些工具来跟踪特定需求的历史?根据这样收到的需求来估算工作是一场噩梦,最终导致在正确理解需求并正确估算针对需求的工作时犯了错​​误。 一旦我们赢得了该项目,客户就可以对他们的要求进行更多的考虑,并能够正确地阐明它。在这种情况下,发生的事情是某些功能被丢弃,某些功能得到增强,某些功能又有了新的转变。从根本上讲,这可以使赢得项目之前所做的某些工作项估计无效。我很想知道是否有任何系统可以构建具有特定需求的树,以及每个分支如何导致不同的估算。 有任何技巧,工具和技巧可以使此活动更易于管理吗?我只是想从比我在需求管理和工作量估算方面更有经验的人那里获得一些见解。

7
如果/ else阻止如何将真值表变为最小
如何获取真值表并将其转换为压缩的if块? 例如,假设我有一个真值表,其中A和B是条件,而x,y和z是可能的动作: A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 如果阻塞,则可以转换为以下内容: if(A) { if(B) { do(x) } else { do(y) } } else { do(z) } 这是一个简单的示例,但是我经常遇到几种情况,这些情况以不同的方式组合在一起会产生不同的输出,并且很难找出最紧凑,最优雅的方式在if块中表示其逻辑。

6
当数百名开发人员正在开发一个解决方案时的开发方法?
我们是一个由大约200名开发人员组成的组织,他们正在不断开发单个产品(使用版本控制Git),并计划在某个日期发布该产品。 由于开发人员数量众多,我们正在尝试创建“跨职能”团队,每个团队中约有10个开发人员,因此组织中大约有20个开发团队。 由于我们希望在主存储库中保持产品的连续“高标准”(意味着当开发人员进行拉动时,产品至少应是可编译的,等等),因此我们想使用某种质量保证。 我不太确定如何表达这个问题,但是我想知道是否可以为如此大量开发单个产品的开发人员提供一些开发方法的建议。 我们认为,范围的一端是允许每个开发人员直接提交到主存储库,但是我们担心由于开发人员/提交的数量过多,“主存储库”可能一直处于崩溃状态,这是由于我们不能为每次提交都提供苛刻的“质量门”。 频谱的另一端可能像是树或金字塔结构(我们认为是Linus Torvalds / Linux做到了),其中“主存储库”仅具有三个拉取源,这三个仅具有少数受信任的拉取源,依此类推但是,我们认为,采用这样的结构,为了进入“主存储库”,更改需要爬很长的链。另外,如果发生合并冲突,问题将落在“原始开发人员”之外的其他开发人员上。 陈述了所有这些背景信息和意见后,我们如何才能学习和阅读针对众多开发人员的推荐开发方法?大型组织(Microsoft,Facebook,Ubuntu等)如何组织其发展?

5
开发人员使用复杂JavaScript UI的方法
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我试图了解围绕复杂的客户端JavaScript开发的不同方法和最佳实践的前景。 我不确定用什么来标记此类应用程序,也许是沉重的AJAX或RIA(但不能像Flash / Silverlight这样的插件)。我指的是具有以下特征的Web应用程序: 在JavaScript中模拟丰富/本地桌面UX 使用服务器作为数据API(JSON / Html-Templates),包含客户端JS中的大多数/所有行为。 这与使用Web服务器进行UI呈现相反,后者以页面刷新模型生成所有HTML。 一些例子是: Google文件/ Gmail 迈德迈斯特 关键跟踪器 随着我们逐步进入HTML5,我可以看到这种带有大量JavaScript的RIA开发风格变得越来越普遍和竞争所必需。 问题:那么,围绕这些大量的JS开发进行管理的通用方法是什么? 随着应用功能的增加,客户端代码非常复杂。使用原始JS在多个团队之间扩展开发工作时遇到了问题(或者,我听到了,并且完全可以相信)。 Google通过构建可从高级语言(Java)编译为JS的GWT来解决此问题,它依靠高级语言具有的现有开发基础结构(Eclipse,强类型,重构工具)以及抽象的浏览器兼容性和开发人员无法解决的其他问题。 还有其他工具,例如用于C#的Script#,其功能也类似。所有这些使JS更加具有IL(中间语言)的作用。即。“您再也不会真正用这种'低级语言'来写作了。” 但是,这种“编译为JS”并不是唯一的方法。尚不清楚GWT是占主导地位的方法...或确实会成为它。 人们在使用富客户端JavaScript做什么?一些定向问题: 大多数商店都在手工制作JS(在jQuery等类似的库上面)吗? 还是有许多不同的方法,没有明确的最佳实践? 大多数商店是否都在避免RIA规模开发,而转向更简单的开发人员服务器端/页面重绘模型?如果是这样,这会持续吗? 编译为JS可能是一种新兴的未来趋势吗?还是这是错误的方向? 他们如何管理客户端JS的复杂性和重构? 跨团队模块化和分配工作? 客户端模式(例如MVC / MVP等)的应用,实施和测试。 那么,在我们这个庞大的JavaScript和HTML5未来中,新兴趋势是什么? 谢谢!

17
为什么我们都还没有进行模型驱动的开发?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我是模型驱动开发的忠实拥护者,我认为它有可能提高生产率,质量和可预测性。当查看MetaEdit时,结果是惊人的。荷兰的Mendix成长非常迅速,并取得了不错的成绩。 我也知道有很多问题 生成器,模板和框架的版本控制 不适用于模型驱动开发的项目(重复次数不足) 更高的风险(当第一个项目失败时,您得到的结果要少于传统开发中得到的结果) 等等 但是,这些问题似乎仍然可以解决,其收益应超过所需的努力。 问题:您认为哪些最大的问题使您甚至没有考虑模型驱动的开发? 我想将这些答案不仅用于我自己的理解,而且还可以用作我计划编写的一系列内部文章的可能来源。

5
对于单独的程序员,最佳/众所周知的软件开发实践的最小子集是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 很长一段时间以来,我一直是一个孤独的程序员。通常我会读有关的文章和帖子 版本控制系统 持续集成/交付 开发方法:Scrum,瀑布,V模型,敏捷,XP等。 软件项目管理 但是几乎所有人似乎都专注于TEAMS。我不是团队,那么对于一个程序员来说,最小的实践集是什么?请考虑以下条件: 我与其他人的代码没有冲突。 我不需要维护文件/目录树,我的开发环境只关心版本控制(基于图像的开发)。 没有正式的要求,我的用户不知道他们想要什么,他们对此表示满意。 唯一可能对发布版本或文档感兴趣的人是我,基本上客户希望获得结果,而不关心软件方法等 我的观点是,我不想花太多时间和精力在与客户需求没有直接关系的任何事情上。有什么建议吗?

6
如今,游戏开发使用了哪些技术?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 每当我在在线论坛上问有关游戏开发的问题时,我总是会得到一些建议,例如学习画线算法,位级图像处理和视频解压缩等。 但是,以《战神3》之类的游戏为例,我很难相信可以使用如此低级的技术来开发这些游戏。 此类游戏的绝对威力无视任何可理解的(对我而言)编程方法。 除了游戏硬件,现在确实是个怪物。因此,有理由认为开发人员将在更高的抽象水平上工作。 游戏行业中最新的开发方法是什么?一个由30-35个开发人员组成的团队(其中大多数是管理和市场营销人员)如何能够制作出令人难以置信的游戏? 如果问题看起来太笼统,您能否解释《战神3》的体系结构?或者您将如何制作克隆?我认为应该客观地负责。

6
Waterfall软件开发方法仍然可行吗?
根据我的经验,似乎瀑布模型已被证明过于僵化且对需求变化不敏感,因此在现代软件开发领域中不被视为可行的方法。更加敏捷,迭代的方法的发展和经过证明的往绩似乎表明,没有理由为什么任何人都应该遵循从项目开始到产品交付几乎没有改变的刚性过程。 在时间,成本和质量方面,瀑布式开发方法对于提供软件系统是否仍然可行?

4
敏捷方法论中站起来的目的是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我曾经在瀑布方法中工作,现在我在一个遵循敏捷方法的团队中工作。看来他们做错了。例如,我们每天进行25分钟以上的站立训练,这确实很烦人。此外,我觉得自己比起其他任何事情都可以向管理层证明自己的薪水。 我有这种感觉吗?这通常是站立式的吗?

7
将压倒性代码分解为可管理块的最佳方法?
一旦大型项目达到一定程度的复杂性,我就会变得不知所措。一旦到达项目中的某个特定点,我的进度就会缓慢地爬行,并且发现自己不断地追踪自己的步骤并理清各种混乱。 由于我的这个弱点,我真的很擅长重构。而且我总是尝试将对象分解为更小,更易于管理的对象。这种弱点也可能导致我过多地注意正确设计事物。 我知道如果我可以将问题分解为较小的问题,那么我将能够顺利完成任务。想到的一种策略是测试驱动的开发。我还可以做些什么?

2
Scrum在国防承包方面有什么好处吗?
昨天在水冷却器上听到了这样的消息:“ Scrum在国防承包中没有地位。” 在某种程度上,我倾向于不同意我认为Scrum可以针对多种情况进行定制,并且我可以看到防御就是其中之一。这在我的同事(我们中的许多人从事国防承包工作)中引发了一场激烈的辩论,赞成/反对相当平均。 要提出一个适当的问题:有人在国防承包情况下成功使用(或有过使用Scrum的经验)吗?什么有效,什么无效,以及您对香草Scrum做了哪些修改(如果有)?

5
如何克服结构不良的软件开发模型?
我刚加入公司,现在正在从事工作。由于GIS软件开发领域的技术人才有限,而且由于我是其中之一,因此我被直接聘为项目经理。 我非常熟悉Java和GIS,并且我对基于位置的服务进行了自发性的研究,但没有进行项目管理和结构化软件开发。我是地质学专业的毕业后一年,而在前一年,我在大学里担任学者。 多亏了我在工作中的兴趣,出现了一个机会,最终我也被任命为公司的商务智能部门的负责人。公司相信我。我本人研究了数据仓库和BI概念,并成功地将GIS与BI相结合。 另外,我目前正在与两个开发人员一起使用C#WPF中的BI工具,在其中我有时也扮演开发人员的角色(我很喜欢)。 我非常努力地通过敏捷项目管理来采用良好的软件开发方法,但是这种方法并不是很成功。同样,尽管我相信就产品而言设计良好的代码,但由于我的首席执行官(直接在我之上)缺乏技术知识,所以我通常没有足够的时间来做。由于我们也缺乏整体上对特定编码语言的专业知识(例如,与Java相对的WPF),因此所花费的时间大大增加了。也没有适当的版本控制系统。 我对事物的运行方式非常无聊,因为它不是结构化的,我发现大部分时间都在思考如何使事物结构化。我希望你们有良好的专业经验,能够帮助我克服这种情况。

1
什么是基于“火车”的发展?
我在开发方法学中遇到了另一个新名词,但我一直找不到它的定义。具体来说,它称为“基于火车的开发”。 这是我看到这个词的一些例子。 本周早些时候,我请我们的工程主管和发布经理将Windows Metro版本的Firefox下线。(约翰娜·南丁格尔) https://blog.mozilla.org/futurereleases/2014/03/14/metro/ 从Mozilla的职业网站上: 具有使用敏捷开发方法论和基于培训的开发/ QA团队的经验。 我听说过“火车”,而不仅仅是Mozilla。但是我还没有在网上找到关于它的任何好的信息。 当我搜索“基于火车的软件开发”时,我在搜索结果中发现的信息很少。我能挖掘出的最能使火车与货车分开的地方是,“火车”是根据时间表定期释放。但是似乎“培训”是一种具体的质量检查设置。 那么,什么是“基于培训的开发”?

4
哪些软件开发方法可以视为基础
我正在写一份涉及软件开发方法论的小型研究论文。我一直在研究所有可用的方法论,并且想知道在所有方法论中,是否有任何方法为其他方法论奠定了基础? 例如,查看以下方法: 敏捷,原型设计,洁净室,迭代,RAD,RUP,螺旋,瀑布,XP,精益,Scrum,V模型,TDD。 我们可以说: 原型,迭代,螺旋和瀑布是其他的“基础”吗? 还是没有“基础”之类的东西,每种方法都有自己独特的历史吗? 我当然想在我的研究论文中描述所有方法论,但是我根本没有时间这样做,这就是为什么我想知道哪些方法论可以看作代表。

3
在底层组件上进行TDD是个好主意吗?
我正在考虑编写低级驱动程序或OS组件/内核。 该osdev.org人们似乎认为重要的位没有有意义的可测试这种方式,但我看过一些讨论,有人认为是不同的。我环顾四周,但未能在低级组件上找到任何TDD的实际示例。 这是人们实际上在做的事情,还是人们在理论上谈论的事情,因为在实践中没有好的方法?

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.