软件工程

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

4
使用面向方面的编程范例的优点和缺点是什么?
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 好了,这是一个问题:使用面向方面的编程范例的优缺点是什么? 到目前为止,我的优点和缺点: 优点: 补充面向对象。 模块化横切关注点,提高代码的可维护性和可理解性。 坏处: 不是最容易掌握的概念-没有OO记录得很好 OO在关注点分离方面走得足够远... 任何人都想挑战其中的任何一个/添加自己的吗? 非常感谢,J

8
对于“流利的开发人员英语”,最重要的理解概念是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 4月,我将向一组英语老师进行名为“英语2.0-了解开发人员的语言”的演讲,目的是在两个小时内为他们提供关键概念的快速背景知识,以便他们可以更好地了解开发人员博客和播客,并且在与开发人员交谈时能够提出更好的问题。 您认为最重要的概念是什么?开发人员认为这是理所当然但公众不熟悉的概念?这里有一些想法: 版本控制 抽象 发布/订阅 推与拉 调试 模块化 三层架构 类/对象 “意大利面代码”与OOP 抛出异常 众包 重构 云端 干-不要重复自己 客户端服务器 单元测试 设计师/开发人员

5
敏捷方法是否与让承包商担任员工兼容?
一方面,敏捷方法强调了一个紧密的团队,彼此负责,并接受项目的集体所有权。 另一方面,公司使用合同程序员,以便他们可以管理资金的高峰和低谷而无需解雇实际员工。如果资金短缺,则承包商是第一个离开的人,即使他们是团队中完全整合的成员(也没有员工)。公司还只喜欢在有限的时间内保留承包商。一些承包商可以作为正式雇员被雇用的可能性在某种程度上减轻了这种负担。 因此,我的问题是,拥有一个由员工和承包商组成的敏捷团队以及存在极大不同地位的根本矛盾吗? 编辑:答案表明,我可能没有表达我正面临的紧张局势,所以让我再拍一次。 我是固定员工。敏捷方法(至少在这里已实现)鼓励我将团队的所有成员(包括永久雇员和承包商)视为具有凝聚力的团队的平等成员。公司对承包商的态度鼓励我将它们视为消耗性资源,我们不应过度依赖这些资源。 我很好奇其他人如何解决了这种紧张关系。

10
比手写循环更喜欢算法?
您对以下哪项更具可读性?手写循环: for (std::vector<Foo>::const_iterator it = vec.begin(); it != vec.end(); ++it) { bar.process(*it); } 或算法调用: #include <algorithm> #include <functional> std::for_each(vec.begin(), vec.end(), std::bind1st(std::mem_fun_ref(&Bar::process), bar)); 我想知道是否std::for_each真的值得,因为这样一个简单的示例已经需要大量的代码。 您对此事有何看法?
10 c++  algorithms 

12
“ SELECT *”如何用英语阅读?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 前几天,一个朋友告诉我,在美国,他们说的SQL像squel一样,而不是es-qu-el。我很惊讶。我想知道谈话时如何读/读“ SELECT *”。 选择明星? 选择星号? 全选?
10 sql 

1
使用遗留代码时,单元测试生成器是否对您有所帮助?
我正在研究一个测试覆盖率非常低的小型C#(。NET 4.0,某些Silverlight)(约70kLOC,包括生成的)。该代码本身的工作方式是通过了用户接受性测试,但是它很脆弱,并且在某些方面没有很好的考虑。我想使用常见的疑问(NMock,NUnit,StatLight表示Silverlight位)在旧代码周围添加可靠的单元测试范围。 我通常的方法是开始进行项目,单元测试和重构,直到对代码状态感到满意为止。我过去已经做过很多次了,而且效果很好。 但是,这次我正在考虑使用测试生成器(尤其是Pex)创建测试框架,然后手动对其进行充实。 我的问题是:过去在遗留代码库上开始工作时是否使用过单元测试生成器?如果是,您会推荐它们吗? 我担心的是,生成的测试将错过代码库的语义细微差别,导致可怕的情况是出于覆盖率指标而进行测试,而不是清楚地表达代码中预期行为的测试。

12
在程序员的求职广告中发布高薪[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在程序员的招聘广告中发布高薪是否会鼓励强势的候选人而淘汰次要的候选人?薪水将相对于职位。 编辑:也许它不会改变您的应用程序,但是您是否有任何担忧,或者这会引发任何危险信号?这不会让他们看起来绝望吗?
10 hiring 

5
您如何更新版权声明?
所以现在是2011年,当我在进行中的项目进行编码时,该更新一些版权声明了。 例如。版权所有Widgets Ltd 2010到版权Widgets Ltd 2010、2011 我的问题是您何时更新版权声明? 第一次使用该文件时,是否会更改文件开头的通知? 由于模块是由多个可协同工作的文件组成的代码段,因此,当您更改该模块中的单个文件时,是否会更新该模块中的所有通知? 由于程序是一段代码(可能由许多模块组成),因此当您在该程序中更改单个文件时,是否会更新该程序中的所有通知? 还是您只是因为要开始编程和更新内容而经历并更改早晨咖啡的质量?
10 copyright 

5
选择正确的许可证
我在为自己的作品选择正确的许可证时遇到一些麻烦。 我有一些要求: 没有像GNU(L)GPL这样的copyleft,并允许在其他许可下进行重新分发 允许其他人重新分发您的(修改后的)作品,但防止其他人从我的作品中自由赚钱(如果他们愿意,他们需要询问/购买商业许可证) 与GNU(L)GPL兼容 对我的工作造成的任何损失不承担责任 现在,我根据BSD和CC Attribution-NonCommercial 3.0许可证编写了自己的小许可证,但是我不确定它是否会在法庭上举行。 版权<year> <版权所有者>。版权所有。 无论是否进行修改,都可以重新分发此作品 只要满足以下条件: 1.所有重新分发都必须将<copyrightholder>属性指定为原始 本作品的作者或许可人(但绝不暗示 他们认可您或您对作品的使用)。 2.所有重新分发必须用于非商业目的且免费 除非获得<版权所有者>的明确书面许可。 这项工作由<版权所有者>按 “原样”提供,并以任何明示或暗示的方式提供 免责声明。<版权所有人>对任何损坏概不负责 因使用本作品而产生的任何形式。 现在,您可以通过以下任一方式帮助我: 将我指向满足我要求的现有许可证 确认我的许可证没有重大缺陷,很可能会在法庭上举行 编辑: 您可以定义“与GNU(L)GPL兼容”吗? “与GNU(L)GPL兼容”是指能够在GNU(L)GPL项目中导入其下许可的所有代码,但不能(必然),反之亦然。 我使用了“非商业”一词,但我的意思是除非您购买了“商业”许可,否则要求索取(修改的)再分配资金是非法的。 编辑 所以基本上我是在问一些不可能的事情。为了我的重要性: 没有像GNU(L)GPL这样的copyleft,并允许在其他许可下进行重新分发 与GNU(L)GPL兼容 允许其他人重新分发您的(修改后的)作品,但防止其他人从我的作品中自由赚钱(如果他们愿意,他们需要询问/购买商业许可证) 第一个和第二个是完全兼容的,但是最后一个与第二个不兼容,并且开源与第一个不兼容。RAAH! 这是我将要使用的新许可证。10条线,快速拉紧并拧紧(从IANAL角度看)。 版权<year> <版权所有者>。版权所有。 如果存在以下情况,则允许在不加修改的情况下重新分发本作品: <版权所有人>被归为以下内容的原始作者或许可人: 这项工作,但绝不表示<版权所有人>认可 您或您对工作的使用。 这项工作由<版权所有者>按 “原样”提供,并以任何明示或暗示的方式提供 免责声明。<版权所有人>对任何损坏概不负责 因使用本作品而产生的任何形式。
10 licensing 

9
.NET产品组合的自动构建平台-最佳选择?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我参与维护相当大的.NET应用程序组合。该产品组合中还包括基于其他平台(本机C ++,ECLIPS Forms等)构建的旧应用程序。 我现在在NAnt上有一个复杂的构建框架,该框架管理所有这些应用程序的构建。构建框架使用NAnt做许多不同的事情: 从Subversion中提取代码,并在Subversion中创建标签 使用MSBuild for .NET或其他平台的编译器生成代码 窥探AssemblyInfo文件以增加版本号 删除某些不应包含在构建/发行版中的文件 将代码发布到部署文件夹 压缩代码以进行备份 部署Windows服务;启动和停止它们 等等。 其中大多数事情都可以单独使用NAnt来完成,但是我们确实为NAnt构建了一些扩展任务,以完成某些特定于我们环境的事情。同样,上述大多数过程在我们许多不同的应用程序构建脚本中都得到了通用和重用,因此我们不再重复逻辑。因此,它不是简单的NAnt代码,也不是简单的构建脚本。有数十个NAnt文件一起执行构建。 最近,由于以下几个原因,我对NAnt感到不满意:(1)它的语法太糟糕了-XML之上的编程语言真的很难维护;(2)该项目似乎已经死了;最近没有大量更新,似乎没有人真正掌舵。由于缺乏活动,尝试使其与.NET 4配合使用已引起一些痛苦。 因此,在没有所有这些背景的情况下,这是我的问题。鉴于我希望根据上面的列表完成一些工作,并且鉴于我主要是在.NET商店中,但我还需要构建非.NET项目,是否有我应该考虑的NAnt替代品切换到? 我所关注的东西包括Powershell(带有或不带有psake),MSBuild本身以及rake。这些都有优点和缺点。例如,MSBuild是否足够强大?我记得几年前使用过它,它似乎没有NAnt那样强大。我是否真的想让我的团队学习Ruby,以便使用rake进行构建?psake是否真的足够成熟,可以将我的投资组合固定在项目上?Powershell是否“太接近金属了”,而我最终不得不编写自己的类似于sake的构建库才能单独使用它? 还有其他我应该考虑的工具吗?如果您参与维护非常复杂的.NET产品组合,那么您将要使用哪种构建工具?您的团队目前使用什么?

10
与CS专业相比,雇主更喜欢软件工程吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 8年前关闭。 我在一所大学的研究生院里,这是最早拥有软件工程认证计划的大学之一。我的本科生是CS。一名雇主最近在我们的大学招聘并雇用了5个SE专业。他们都不是CS。雇主喜欢软件工程专业吗? 我之所以这样问,是因为我在研究生学习期间可以专注于许多不同的领域,并且确实想参加能够帮助我获得出色工作的课程。现在,我要么使用CUDA并为研究生项目并行化高级光线跟踪器,要么对增强现实中的非真实感渲染进行研究。追求这些将使我的日程安排很少。 如果我走软件工程路线,可能会研究面向数据的编程或软件设计的复杂性。 有时候我想当我40岁时回头看看是否会很重要?由于某种原因,我没有考虑。

12
如何向非技术人员解释OOP概念?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我经常尝试避免告诉别人我是程序员,因为大多数时候我都会向他们解释这到底意味着什么。当我告诉他们我使用Java编程时,他们经常问有关该语言以及它与x和y有何区别的一般性问题。我也不善于解释事物,因为1)我在该领域没有太多经验,并且2)我真的讨厌向非技术人员解释事物。 他们说,一旦您向其他人解释事物,您便真正理解了事物,在这种情况下,您将如何向非技术人员解释OOP术语和概念?

4
长时间休眠后如何提高我的数据结构技能
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 很久以前,我曾经对算法和数据结构非常满意。从那以后,我开始专业编程,然后去管理一个小团队,这完全使我在该领域的技术技能得到了体现。 我已经决定要再次成为一名开发人员,并为Google工作。问题是,我实在是太不习惯了,如果我现在要接受采访,我肯定会在10分钟内退缩。 您会为我推荐什么样的训练计划以使自己恢复健康?我已经在本周末开始了,回到了绝对的基础知识并实现了一些排序算法,链接列表和哈希表。接下来,我想我将通读其他基本数据结构和图形算法的整个课程材料。我想找到一套集中的实践练习,可以在相对较短的时间内完成,以处理旧的脑细胞。我知道这些东西-我只需要提醒自己我知道。
10 training 

3
INT_MIN-1是下溢还是上溢?
我似乎记得我在读 underflow意味着你有一个太小的大小不能在类型呈现了 overflow表示您的幅度太大,无法再以某种类型显示 但是,实际上,我认为使用这些术语是为了 underflow表示您的值太小,无法再以某种类型显示 overflow表示您的价值太大,无法再以某种类型显示 在这里使用的正确含义是什么?整数和浮点类型的术语定义是否有所不同?

3
开源,非商业许可证?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我想在以下情况下根据开放源代码许可证发布我的软件: 您被允许: 分享—复制,分发和传播作品 在您的应用程序中使用代码的修改版本 您不得: 发布代码的修改版本 在任何商业用途中使用代码 是否有适合我需求的软件许可证? (交叉邮寄:https ://stackoverflow.com/questions/4558546/opensource-noncommercial-license )
10 licensing 

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.