软件工程

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

8
为什么某些开源库不提供二进制文件?
为什么某些开源库不提供二进制文件?我注意到一些项目属于第三方,后者维护软件的当前版本,尤其是Windows版本。 我问,因为这似乎是采用图书馆的障碍。对于开发人员来说,这是更多的工作,因为他必须设置环境来构建它。开发人员还必须担心他通过错误地构建库而引入了错误。 编辑:一些更新,以解决评论和答案。我删除了这些示例,因为它们不是讨论的中心。也将我的问题改写为“某些开放源代码库提供”,而不是“开放源代码库倾向于提供” ...没有意识到人们会对此表示冒犯。

11
如何在软件团队中培养内在动力[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 11个月前关闭。 杰夫·阿特伍德(Jeff Atwood)在亚马逊的《机械土耳其人》上的博客文章建议,它不应提供金钱上的奖励,而应提供内在动机,“动机是由对任务本身的兴趣或享受所驱动,并存在于个人内部,而不是依赖于任何外部压力。” 团队成员(经理,主管或开发人员)如何促进软件团队的内在动力? 编辑:请提供全面的答案。通过客观分析分享您的个人经验。 编辑2:为了促进富有成果的主题讨论,我们应该假定货币补偿对开发者而言是令人满意的。

3
您如何处理嵌入式系统中Scrum的非功能性工作?
我在嵌入式系统中有两个Scrum问题。首先,有许多任务要做,尤其是在早期阶段,这些任务是无法证明的。我们从开发板开始,没有操作系统,没有显示器,没有串行通讯,等等。我们没有六个冲刺的显示器。 前四个冲刺是: 获取RTOS和运行 创建编写网络和串行驱动程序的任务 编写按钮,通讯等中断例程 编写主要的数据库类和方法 编写串行调试菜单 这些任务大多数都不适合用户案例。实际上,进入整个系统的唯一接口是内置在sprint 3中的串行调试菜单,因此在sprint的末尾没有任何内容可以说明。甚至串行菜单也只供内部使用,而不是最终用户。尽管如此,我仍然想通过Scrum跟踪和管理这些开发活动。 我们最终写了“用户故事”这样的词组,例如“作为开发人员...”,我对此并不满意,但是在使用Target Process(www.targetprocess.com)时,没有积压的概念,任务或琐事。 其次,您如何处理发布和测试?对我们来说,这是真正的痛苦,因为测试人员没有硬件调试器,因此我们必须构建代码的闪存版本,并将其刻录到开发板上进行测试。测试人员在技术上不如开发人员那么敏锐,并且通常需要大量支持才能使它们在早期阶段正常工作(重置板子,连接串行通信等),甚至理解输出。 最后,关于完成的定义,只有在所有故事完成之前,冲刺才能完成。在测试人员验证之前,所有故事都是不完整的。无法避免“浪费”开发人员的时间给测试人员。换句话说,如果冲刺中的最后三个用户故事需要五天的时间进行测试,则必须在冲刺结束前五天对它们进行编码和单元测试。开发人员应该做什么?停止工作? 我正在开玩笑,但尝试遵守规则确实是一个问题。现在,我可以遵循规则了,但是我遇到的问题是,如果在测试之前无法将所有工作标记为已完成,它将使我的所有燃尽指标变糟。 我很想听听其他人如何处理这些情况。

15
真正的程序员使用调试器吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 如果有经验的程序员实际上曾经使用过调试器,以及在什么情况下使用过。尽管在回答这个问题时我曾说过“几个月”,但我的意思可能是“几年”,但实际上我并不使用调试器。因此,我要回答的具体问题是,作为经验丰富的程序员,您将在哪种情况下使用调试器?
15 debugging 

4
如何获得免费软件的免费艺术品?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 如此众多的自由软件项目都有精美的艺术品,尤其是网站,我不知道编码员在哪里遇到他们的艺术家。除了当地艺术专业的学校董事会之外,还有其他地方可以要求吗?我想到了IRC,但我担心实际上有人可能会问起那小而频繁的用户群。

3
货币互换:利弊是什么?
大多数敏捷 / XP理论家都拥护的一般想法似乎是,对应该定期交换。例如,每个程序员每天应该交换一次对。一半的人在一天开始时进行交换,一半的人在午餐后进行交换:由于会议,假期之类的外部因素,大多数人倾向于每周交换一次或两次交换时间,以便分配配对配置在整个团队中相当平均。 频繁调换的一个基本原理是,知识在团队中快速而均匀地传播,而不是将特定的技能和知识集中在特定的个人身上-这意味着如果人们离开公司或离开公司,工作就可以顺利进行。另一个原理是围绕结对编程本身的教条的一种推论,即每次有人交换您时,都会得到新的视线审查,因此它只能提高代码质量。 两种说法听起来都合理;从管理的角度来看,这听起来好像您在稳定性和质量上都得到了提高,而这种频繁的交换在我所研究的大多数Agile / XP书籍中几乎都是标准理论。 因此,当实际付诸实践时,人们实际上对从 程序员的观点? 经理的观点? 和 当某人从/交换到一对时,应如何确定?

8
为什么将程序代码和图形界面代码打包在不同的类中是最佳实践?
因此,我的老师告诉我,不要将程序代码和图形界面代码封装在同一类中,而要使其完全独立是非常重要的。我目前正在编写带有网格的iPhone游戏。对我来说,在同一个“网格”类中创建图形网格和技术代码更有意义。其他程序员会对此皱眉吗?保持图形界面和代码独立确实非常重要吗?如果不这样做会出现什么问题? 谢谢! 编辑:谢谢大家!我可以先编写项目,然后再复制代码以形成关注点分离设计吗?我知道这可能完全违背了这个目的,但是只是作为实践……所以下次我可以从头开始应用这种设计模式了吗?

3
“语言文化史”在平台中扮演什么样的角色?
我最近偶然发现了这个几年前的文章。它认为,围绕VB和C#的文化存在显着差异,而不是语言的实际差异,导致C#编码人员通常比VB编码人员更有才华。显然,这引起了很多火焰大战,而C#ers或VBers是哑巴的问题将永远无法回答。话虽如此,作者声称围绕特定平台的文化对团队的质量仍然有帮助。例如,即使目前Java开发应用程序的效率更高,但Google Go开发人员团队的平均水平似乎比Java开发人员团队更高,因为要学习Go,开发人员可能已经成为一个超级早期的采用者和一个前沿的黑客天才。简而言之,围绕一个平台或另一个平台的文化如何影响该平台上普通开发人员的质量(如果有的话)?

6
将函数式编程引入您的开发环境[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 这是一个漫长的故事,但我会尽力总结一下。我们是.NET商店,专门为各种不同类型的基金编写软件。例如,我们编写了健康索赔管理软件,养老金管理软件,401(k)软件和一些其他财务类型的东西。 现在,我们进入了一个新领域:衍生工具和定量分析类型的工作,这似乎非常令人兴奋。有人告诉我,在接下来的8到12个月中,这种情况将会下降。 现在,我已经学会了一些函数式编程,主要是通过这本书对各种语言的肤浅了解,但从未真正深入过它。现在,由于我们是.NET商店,所以我认为F#可能是一个不错的选择,因为我们可以潜在地利用某些.NET库和现有知识。 我的问题是,从哪里开始?我现在很难确定我是否应该使用Haskell,Erlang,Scala,F#等。它们似乎都很有趣且有能力,坦率地说,这可能是摆脱依赖Microsoft的好机会。 有人遇到过类似情况吗?如果是这样,那么您在过渡到功能方面的经验是什么?您选择了什么?为什么?我知道这是一个很大的问题,但是我不知道任何正在使用函数方法的开发人员,因此除了不断地谷歌搜索并在最佳函数式语言上到处发现火焰之战之外,我别无选择。

8
自我更新应用程序-哲学
这是一个哲学问题。 给定一个假想的桌面应用程序,并且希望提供自动更新(而不是强迫人们去网站,检查更新,下载更新,安装),这两种方法中的哪一种更“最佳实践”? 与iTunes一样,它会检查是否有新版本,并提示用户下载新版本。如果是这样,它将下载一个完整安装的可执行文件(在这种情况下,为Windows Installer文件(.msi)),该可执行文件将安装完整版本(而不仅仅是升级到以前的版本-如果在那里存在多个版本,将无法管理) 。假设是10.1.1版-无论是全新安装还是升级,都使用相同的文件。下载后,它指示用户关闭应用程序并自己运行安装文件。 与另一个版本类似,它检查新版本并提示用户下载它,但是它不仅为他们下载可执行文件并提示用户运行它,还为他们运行了它-关闭他们打开的程序,获取安装文件所需的安全性。 #2的问题:有关关闭程序的很多问题,因为该程序可以打开其他程序(Outlook和Excel),或者如果用户处于中间位置该怎么办。同样,在安全性方面,您需要本地管理员访问权限才能安装,如果没有安装该怎么办?在更高版本的Windows中,您不能仅覆盖此人的安全性。 #1的问题:有些人认为这对于最终用户而言将太困难,太费力。 我强烈希望使用#1,因为它将节省我的项目80-120小时,并且更易于实现和维护。但是,我们的人在各个方面都有强烈的感觉。 这种事情的最佳实践是什么?

5
我应该发布源代码来修复错误吗
我正在构建的应用程序中存在一个错误。我问了一个关于SO的问题,其中一个用户要求我发布或将所有代码发送给他,以便他可以查看。 我完全理解要求。这是有效且可以理解的。但是,我对是否应该存有疑问。显然,我给了他/她王国的钥匙,如果他/她会做出恶意的事情,我将没有任何追索权。 我还想补充一点,我的意思是不尊重提供帮助的用户。我只是在表达担忧。 我确实想修复我的错误,但不能保证此人可以修复它。 我应该发布完整的源代码并希望获得最好的结果吗?还是保留它并尝试自己解决? 你会怎么做?

6
优秀的API有什么共同点?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 出色的API使它们变得如此出色的原因是什么?我认为坚持“做一件事情,做好一件事情”的口号是一个好兆头,良好地映射到问题域很重要,但是出色的API有什么共同点?
15 api-design 

9
Web开发人员应该了解TCP / IP以及路由器如何管理请求吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我今天在重要站点上接受了职位面试,以担任开发人员职位。他们问了许多与编程语言有关的问题,我设法没有问题地回答了这些问题,但是随后,他们开始询问有关在我的PC上向Web服务器发出请求后如何发出TCP / IP请求的问题。我确实是在学生时代就收到这些内容的,但是我不太记得它们,因为我主要从事网络开发工作,我的问题是: 作为主要从事Web应用程序工作的软件开发人员,我是否需要具有TCP / IP的广泛知识以及路由器如何管理请求,或者这对我来说只是黑匣子知识?

5
什么时候在条件表达式中使用按位运算符合适?
首先,有一些背景知识:我是一名IT培训师,我想在我的10年级课程中介绍Java的布尔运算符。我的导师查看了我准备的工作表,并评论说我可以让他们只使用一个&或|。表示操作员,因为他们“做同样的事情”。 我知道&和&&之间的区别。 &是按位运算符,旨在在整数之间使用,以执行“位旋转”。 &&是旨在在布尔值之间使用的条件运算符。 为了证明这些运算符并不总是“做相同的事情”,我着手寻找一个示例,在该示例中,使用布尔值之间的按位运算会导致错误。我找到了这个例子 boolean bitwise; boolean conditional; int i=10, j=12; bitwise = (i<j) | ((i=3) > 5); // value of i after oper: 3 System.out.println(bitwise+ " "+ i); i=10; conditional = (i<j) || (i=3) > 5 ; // value of i after oper: 10 System.out.println(conditional+ " "+ i); …


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.