软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

6
如何有效实施开发人员时间的80/20规则?
我是一家实施80/20规则的银行的开发人员。您有80%的时间在分配的项目上工作,有20%的时间在您感兴趣的事情上工作。但是,我不太确定该怎么做。我希望其他人可以向我提供有关如何操作的建议。 我的问题是,当我真正进入“区域”时,我所能想到的只是手头的任务。如果这是20%的水平,那么我要做的最后一件事就是停下来走,失去动力,然后再继续执行我的主要项目。 我想在某件事上工作4天,在别的事情上工作1天吗?还是4周1周? 我知道这取决于公司,但是我希望对整个行业的实现方式有所了解。

3
Blackboard Pattern的现代Java实现?
“实用程序程序员”中详细介绍了Blackboard Pattern的 Java现代实用应用程序吗?是否有任何特定的库试图协助实现这一概念?在当前的软件社区(尤其是Java)中,对此模式的普遍共识是什么? 尽管这个想法很有趣,但我觉得这本书的这一部分可能已经过时了。 如果您不熟悉此概念,请访问:http : //flylib.com/books/en/1.315.1.55/1/
11 java 

3
有关在编程中使用“移植”一词的问题
我目前正在修改为UNIX系统编写的C ++代码,以便可以通过从Visual Studio进行编译来工作。我必须更改一些内置函数的名称,并且必须更改动态数组的定义方式。 我的问题是,我可以说是将代码从UNIX“移植”到Windows / Visual Studio,还是仅在从一种编程语言更改为另一种编程语言(从C ++移植到Java)时才使用“移植”?

5
编写可测试代码与避免投机性
我今天早上在看一些博客文章,偶然发现了这一篇: 如果唯一实现Customer接口的类是CustomerImpl,那么您实际上就没有多态性和可替代性,因为实际上在运行时没有什么可以替代。这是假的普遍性。 这对我来说很有意义,因为实现接口会增加复杂性,而且,如果只有一种实现,则可能会争辩说它会增加不必要的复杂性。编写比需要的抽象要抽象得多的代码通常被认为是被称为“投机性一般性”的代码气味(在文章中也提到了)。 但是,如果我遵循TDD,那么如果没有这种推测性的普遍性(无论是接口实现形式还是我们的其他多态选项),就无法(轻松)创建测试双打,从而使类可继承且其方法是虚拟的。 那么,我们如何协调这种权衡呢?以投机性方式推广测试/ TDD是否值得?如果您使用的是测试双打,是否将这些视为第二种实现方式,从而使普遍性不再具有推测性?您是否应该考虑一个更重的模拟框架,该框架可以模拟具体的协作者(例如,C#世界中的Moles与Moq)?或者,您应该使用具体的类进行测试,并编写什么可以被视为“集成”测试,直到您的设计自然需要多态性之前? 我很想阅读其他人对此事的看法-预先感谢您的意见。

6
如何编写HTML,CSS和JavaScript,以使后端开发人员的工作更轻松?
从设计师那里获得设计时,我将其作为PSD(Photoshop)文件获得。我一直期望适当的层和文件夹名称,基本上是干净且托管的PSD。通过这种设计,我开发了HTML,CSS和JavaScript,并将其交付给后端开发人员。为了使他们易于理解,我 编写语义代码, 将JavaScript和CSS保存在外部文件中, 在HTML,CSS和JS文件中添加有用的注释, 使用CSS精灵(尽管开发人员不喜欢它), 使用HTML5样板, 将jQuery用于JavaScript, 尽可能尝试使用新的HTML5标签和CSS3,以及 发送了一个包含HTML,CSS,JS和图像的Zip文件。 我希望,如果需要对布局进行一些小的更改,则开发人员可以处理。 我想从后端开发人员和其他CSS忍者那里听到,在文件的组织和标记方面,还有更多人可以做些什么,以使与后端系统(例如,后端技术,PHP,.NET)的集成更容易,Ruby等)。不同的客户端使用不同的系统。
11 javascript  html  css  jquery 

6
需要使我的代码对团队中的其他程序员更具可读性
我正在delphi中工作一个项目,并且正在为该应用程序创建安装程序,主要包括三个部分。 PostgreSQL安装/卸载 myapplication(使用nsi创建myapplication的安装程序)安装/卸载。 通过脚本(批处理文件)在Postgres中创建表。 一切正常运行,但是如果出现故障,我创建了一个LogToFileger,它将在过程的每个步骤中记录LogToFile, 如下所示 LogToFileToFile.LogToFile('[DatabaseInstallation] : [ACTION]:Postgres installation started'); 函数LogToFileToFile.LogToFile()This将内容写入文件。这工作得很好,但是问题是这使代码混乱了,因为它变得很难读取代码,因为一个ca只能LogToFileToFile.LogToFile()在代码中到处看到函数调用。 一个例子 if Not FileExists(SystemDrive+'\FileName.txt') then begin if CopyFile(PChar(FilePathBase+'FileName.txt'), PChar(SystemDrive+'\FileName.txt'), False) then LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ done') else LogToFileToFile.LogToFile('[DatabaseInstallation] : copying FileName.txt to '+SystemDrive+'\ Failed'); end; if Not FileExists(SystemDrive+'\SecondFileName.txt') then begin if CopyFile(PChar(FilePathBase+'SecondFileName.txt'), PChar('c:\SecondFileName.txt'), False) then LogToFileToFile.LogToFile('[DatabaseInstallation] …

1
可以进行迭代文档开发,并且可以提供有效的文档吗?
我有一个大学项目,我不会马上开始,但是已经考虑了很长时间。我了解大学的项目开发与行业不一样(我目前是实习生),所以我现在要指出的情况对于实际的软件开发人员而言似乎有些荒谬。^^' 该项目本身要求我们记录很多工作。因此,除了交付涉及某些标记的代码外,我们还必须交付文档,包括: 需求分析文件 项目计划 用例,对象和动态模型以及验收测试的计划清单 测试过程的文档以及测试的成功程度 其他一些时间使用的讨论和分析,等等。 这些可交付成果将以以下方式交付: RAD第一 随后是项目计划,用例,模型和测试(大约3周后) 最后,是实际程序的文档,测试过程等。+实际程序本身(大约5周后) 因此,据我了解,这实际上是针对该项目的瀑布式方法。唯一的问题(在我看来)是这是一个大学项目,在项目周的学期末,学生已经有足够的压力来尝试开发项目。我真的不想在学期末对所有内容进行编码/开发/测试,那时我将要面对的其他评估工作都令人感到恐慌。 我至少想尝试执行某种迭代的开发周期,这意味着我们可以及早开始编码/原型设计,拥有一个连续的开发周期,而该周期并不专注于在最后一刻做所有事情,也没有太多压力学期末完成这个项目。现在是我的实际问题: 我可以以某种方式调和必须以快速,迭代/原型开发周期提供所有这些文档吗? 是否有策略以迭代方式生成文档? 我问这个问题并期望它在大学中可行是完全不合理的吗? 另外,我知道这个问题是非常本地化的,所以我想问一下我在行业方面问过的同样的问题,以及每个团队敏捷过程面临的许多此类问题是否有所不同或公司。 无论如何,对这有多长时间感到抱歉,如果您已经读完了所有内容,谢谢!如果您能抽出宝贵的时间来回答,我将不胜感激!谢谢!

3
使用Scala和LWJGL的简化游戏的函数式编程方法
我是一名Java命令程序员,我想了解如何基于功能性编程设计原则(特别是引用透明性)生成简单版本的Space Invaders。但是,每当我尝试考虑一种设计时,我都会迷失在极端可变性的泥潭中,而这种可变性是函数式编程纯粹主义者所避免的。 为了学习函数式编程,我决定尝试使用LWJGL在Scala中创建一个非常简单的2D交互式游戏Space Invader(注意缺少复数形式)。以下是基本游戏的要求: 用户在屏幕底部分别通过“ A”和“ D”键向左和向右移动 用户发射的子弹由空格键直接向上发射,两次射击之间的最小间隔为0.5秒 两次射击之间的随机时间为0.5到1.5秒,直接发射外星飞弹 在原始游戏中故意遗漏的是WxH外星人,可降解的防御屏障x3,屏幕顶部的高速飞碟船。 好的,现在到实际的问题域。对我来说,所有确定性部分都是显而易见的。那些不确定的部分似乎阻碍了我思考方法的能力。确定性部分是子弹一旦存在的轨迹,外星人的连续运动以及由于击中玩家的船或外星人(或两者)而引起的爆炸。对我来说,不确定的部分正在处理用户输入流,处理用于确定外来子弹射击的随机值以及处理输出(图形和声音)。 这些年来,我可以做(并且已经做过很多)这类游戏。但是,所有这些都来自命令式范式。而且LWJGL甚至提供了一个非常简单的Java版的“太空侵略者”(我开始使用Scala作为Java(不带分号)将其迁移到Scala)。 以下是围绕该领域讨论的一些链接,似乎没有一个人以Java / Imperative编程人员会理解的方式直接处理这些想法: 纯功能复古游戏,第1部分,詹姆斯·海格(James Hague) 类似的堆栈溢出帖子 Clojure / Lisp游戏 Haskell游戏堆栈溢出 Yampa(在Haskell中)功能响应式编程 It appears that there are some ideas in the Clojure/Lisp and Haskell games (with source). Unfortunately, I am not able to read/interpret the code into mental models …

4
防止代码库变慢的方法
我们正在开发中等大小的C ++代码库(10Mloc),通过我们的优化工作,它逐渐变得越来越慢。 该代码库是一组库,我们将它们组合起来以使其起作用。当开发出这些库如何通信的通用框架时,便会着重于性能,后来,当添加更多部分时,通用框架并没有太大变化。在需要时以及随着我们的硬件发展而进行了优化。这使得昂贵的早期决定只有在很久以后才显现出来。现在我们处于进一步优化的代价更高的位置,因为它们需要重写代码库的大部分内容。我们发现自己逼近了不希望有的局部最小值,因为我们知道原则上代码应该能够更快地运行。 是否有任何成功的方法论可以帮助您确定将代码库的发展转向全球最佳执行解决方案的过程,而这些过程又不容易被轻松的优化机会所混淆? 编辑 要回答我们当前如何配置的问题: 实际上,只有两种不同的情况可以使用此代码,这两种情况都令人尴尬地是并行的。使用大量输入的平均值和更详细的运行时间(指令成本,分支错误预测和缓存问题)对挂钟时间进行平均,即可进行性能分析。由于我们仅在极其同类的计算机(由数千个相同的计算机组成的集群)上运行,因此效果很好。由于通常我们大部分时间都在使所有机器繁忙,因此运行速度更快,这意味着我们可以查看其他新内容。问题当然是,当出现新的输入变化时,由于我们删除了其他用例中最明显的微效率问题,因此它们可能会受到后来者的惩罚,从而可能缩小“最佳运行”方案的数量。
11 c++  optimization 

6
质量检查应该属于开发部门吗?
我为一家拥有产品开发部门很长时间的小公司工作。但是,我们还没有一个质量检查/测试小组。 我们希望添加一个测试小组,但正在努力确定将其最好地放在公司的组织结构中的位置。具体来说,我们将聘用一个“首席测试员”职位。应该将它们作为产品开发部门的一部分,还是作为新部门?他们应该在其他地方吗? 我们公司的结构大致如下: 首席执行官 首席技术官 产品开发总监 客户服务总监 开发者 副总裁运营 网络工程师 销售/销售工程师 主席 控制者

3
对于需要大量RAM的应用程序选择C ++还是Java?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我正在考虑的科学应用程序大多受处理器限制,并且堆使用量很大(至少几个GB)。在一年中的任何其他时间,我都会很高兴地使用C ++,但是在这种情况下,我想知道,与Java压缩收集器的优势相比,C ++内存管理器的自然碎片是否会成为一个严重的问题。 有人可以指出与此相关的真实示例吗?
11 java  c++  memory  big-data 

4
CPU如何执行代码行?
我试图真正理解高级语言如何准确地转换为机器代码,然后由cpu执行。 我知道该代码已编译为机器代码,这是CPU可以使用的低级代码。如果我有作业说明,请说: x = x + 5; y = x - 3; CPU是否一次执行每一行?因此,它将首先执行x = x + 5; 指令,然后CPU将执行的下一条指令是y = x-3; 我实际上是想了解执行过程以及我编写的代码实际上是如何由CPU执行的。

1
谁是配置管理器?
如您所见,我想向社区成员询问有关Configuration Manager的角色。我不是问什么是配置管理,只要它曾经被问过就可以。我需要知道的是: 您认为Configuration Manager应该在您的团队中执行哪些任务? Configuration Manager的主要职责是什么? Configuration Manager的次要/辅助职责是什么? Configuration Manager是否需要负责项目/公司的开发流程,还是应该告诉他该怎么做? Configuration Manager,Build Manager,Release Manager,Deployment Engineer,CI Engineer角色之间有什么关系?它们不是都一样吗-配置管理? 也许术语配置管理是多余的,而技术/团队负责人应该代替所有相关工作? 如果您可以分享自己的看法和经验,那将是非常不错的。

6
为发行版选择正确的分支策略
从新项目的新开发团队开始,我们必须为源存储库(例如Microsoft Team Foundation Server 2010)定义分支策略。关于是否要...我们进行了激烈的讨论。 一。有一个Release分支,我们可以从中进行生产构建,然后在实际发布某些内容时添加Label 要么 乙。每个投入生产的新版本都有一个新的Release分支(例如,版本1、2、3等) 选项A看起来很简单,但是我们不确定从长远来看是否会导致问题。选项B似乎只是创建了许多长期存在的分支,并且随着时间的推移不断积累。 有人有任何经验可以帮助我们做出决定吗?具体来说,我想听听任何一种选择的痛点所在。随时提供有关TFS和/或发布管理含义的特定经验。

2
估计不完整的故事该怎么办?
我是一个相对较新的开发团队的成员Scrum,假设在sprint结束时,一些大的故事是由PO决定in progress还是不是accepted。 首先,这些用户故事会发生什么?您是否只是将它们带入下一个冲刺? 如果是这样,是否应该重新估计它们?在我看来,这些用户故事上剩下的工作可能很少或很多?如果没有,为什么不呢? 编辑:在我的特定情况下,故事没有完成是因为存在几天的障碍,而不是因为用户故事被低估了。对于可能对您有用的人,我们正在使用VersionOne
11 agile  scrum 

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.