软件工程

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

15
如何说服牛仔程序员使用源代码控制?
更新 我在一个由4个人组成的小型开发团队中工作。他们都使用了源代码控制。他们中的大多数人不能忍受源代码管理,而是选择不使用它。我坚信源代码控制是专业发展的必要部分。有几个问题使得说服他们使用源代码管理非常困难: 该团队不习惯使用TFS。我进行了2次培训,但只分配了1个小时,这是不够的。 团队成员直接在服务器上修改代码。这样可以使代码不同步。要求比较只是为了确保您正在使用最新的代码。并出现复杂的合并问题 开发人员提供的时间估算不包括解决这些问题所需的时间。因此,如果我说诺诺,则需要花费10倍以上的时间...我必须不断地解释这些问题并冒险冒险,因为现在管理层可能会认为我“慢”了。 服务器上的物理文件超过100个文件以未知的方式有所不同。合并需要了解手头的项目,因此需要我无法获得的开发人员合作。 其他项目不同步。开发人员继续对源代码管理不信任,因此不使用源代码控制使问题更加复杂。 开发人员认为,使用源代码控制很浪费,因为合并容易出错并且很困难。这很难辩驳,因为当源代码控制被严重滥用而源代码控制被不断地绕开时,它确实容易出错。因此,证据在他们看来是“不言而喻”。 开发人员认为,绕过TFS直接修改服务器代码可以节省时间。这也很难争论。因为开始同步代码所需的合并非常耗时。乘以我们管理的10多个项目。 永久文件通常与Web项目存储在同一目录中。因此,发布(完全发布)会删除这些不在源代码管理中的文件。这也加剧了对源代码控制的不信任。因为“发布破坏了项目”。解决此问题(将存储的文件移出解决方案子文件夹)需要花费大量时间和调试时间,因为这些位置未在web.config中设置,并且通常存在于多个代码点中。 因此,文化会持续存在。不良做法会导致更多不良做法。不良的解决方案会驱使新的黑客“更正”更深层次,更耗时的问题。服务器,硬盘空间极难获得。然而,用户的期望正在上升。 在这种情况下可以做什么?


3
Google的存储库是什么样的?
我听说Google拥有一个巨大的私有(内部)所有代码存储库,其员工可以访问它,因此在开发事物时,他们不必重新发明轮子。我想了解更多! Google上有没有人可以更详细地描述它,或者您是否对此有所了解?我感兴趣的是主要了解它的组织方式以及它们如何使员工轻松找到必需的庞大代码库中的内容。

15
当事情不起作用时应对挫败感[关闭]
您曾经尝试实现一些简单的方法,但是由于某些奇怪的原因而无法正常工作。 因此,您尝试一个可能的解决方案,但其他方法不起作用。您一直在尝试不同的解决方法,但是每一次不同的方法都不起作用。 每次距离您更近一步,您也将比解决此问题更一步(或更多个步骤),而现在已经3个小时了,而这本来需要10分钟。而且仍然没有解决。 公司中没有人可以提供帮助,您将把拳头伸到屏幕上。 此时,您非常沮丧,无法再清楚地考虑问题了。此时您该怎么办?或者您可以采取什么措施来避免达到这一点?

19
编译器为何如此可靠?
我们每天都在使用编译器,就像它们的正确性一样,但是编译器也是程序,并且可能包含错误。我一直想知道这种可靠的鲁棒性。您是否曾经在编译器中遇到错误?这是什么,您如何意识到问题出在编译器本身? ...怎么做他们让编译器非常可靠?

1
软件开发经理的书面角色[关闭]
我们都知道软件开发经理的工作,但恐怕我们只是含糊其词。我们认为我们知道他在做什么,但是要准确列出他的工作范围有些困难。 您认为软件开发经理的作用是什么?
62 management 


11
您处理过空间强化了吗?
我非常渴望学习有关空间硬化的最佳实践。例如,我已经读到(尽管我再也找不到该文章了)火星漫游者的某些核心部分没有使用动态内存分配,实际上这是被禁止的。我还读到老式的核心内存在空间上可能更可取。 我当时在研究与Google Lunar Challenge相关的一些项目,想知道将代码登上月球甚至进入太空的感觉如何。我知道在这样恶劣的环境下,空间加固板可以提供一些理智,但是我想知道(作为C程序员)如果我要编写可以在空间中运行的东西,我该如何调整思维和代码? 我认为未来几年私人太空公司可能会显示出更多的增长,我真的希望至少对最佳实践有所了解。 如果辐射,冷或热轰击了一块对其绝缘造成破坏的电路板,该程序会怎样?我认为目标是将人类留在航天器内(就固定或交换东西而言),避免执行固定任务。 此外,如果董事会维护一些关键系统,则预警似乎至关重要。 一个人如何通过测试和反复试验获得经验(除非发射自己的个人卫星?)
62 c  memory 

1
如果我在MIT许可下的Github上创建一个项目,该如何处理所有权和版权声明?
如果我计划派生一个MIT项目并对其进行重大修改和重命名,我该如何处理主许可证文件上MIT许可证上方的版权声明。我会列出原始作者和我的公司,还是仅列出原始作者?我对作者的归属有哪些法律选择?我也打算在麻省理工学院获得我们的软件许可,并保持开源。

9
如何编写“好的”单元测试?
受此线程的触发,我(再次)正在考虑最终在项目中使用单元测试。那里的一些海报说“如果测试是好的,那么测试很酷”。我现在的问题是:什么是“好”测试? 在我的应用程序中,主要部分通常是某种数值分析,具体取决于大量观察到的数据,并得出可用于对这些数据进行建模的拟合函数。我发现很难为这些方法构建测试,因为可能的输入和结果的数量太大,无法仅对每种情况进行测试,而且这些方法本身通常很长,在不牺牲性能的情况下不易重构。我对这种方法的“良好”测试特别感兴趣。

3
单个线程如何在多个内核上运行?
我试图从高层次上理解单个线程如何跨多个内核运行。以下是我的最佳理解。我不认为这是正确的。 根据我对“ 超线程”的阅读,看来OS会组织所有线程的指令,使它们不会彼此等待。然后,CPU的前端通过向每个内核分配一个线程来进一步组织这些指令,并在任何打开周期之间分配来自每个线程的独立指令。 因此,如果只有一个线程,那么操作系统将不会进行任何优化。但是,CPU的前端将在每个内核之间分配独立的指令集。 根据https://stackoverflow.com/a/15936270,特定的编程语言可能会创建更多或更少的线程,但是在确定如何处理这些线程时这是无关紧要的。OS和CPU处理此问题,因此无论使用哪种编程语言,都会发生这种情况。 只是为了澄清一下,我要问的是在多个内核上运行一个线程,而不是在一个内核上运行多个线程。 我的摘要有什么问题?线程的指令在哪里以及如何划分到多个内核之间?编程语言重要吗?我知道这是一个广泛的主题;我希望对此有一个高层次的理解。

12
如何用敏捷方法开发出色的软件?
客户满意度的卡诺模型定义了不同类别的产品功能。其中有 必须具备的质量:如果未实施这些质量,则客户将不会接受该产品。 吸引人的品质(愉悦):客户通常一开始并不期望的功能,但被发现时会引起兴奋和愉悦。 有吸引力的品质显然具有很大的商业价值。当使用不到5.000欧元的菲亚特汽车可以满足所有必不可少的条件时,他们会让人们以500.000的价格购买法拉利。 但是,我知道所有敏捷过程都强烈赞成必须满足的要求。这些总是获得最高优先级。似乎甚至没有在敏捷中获得吸引人的品质的地方。 我相信敏捷流程在软件开发中非常有用。但是,如何将它们应用于创建令人愉悦的高质量软件产品,而不仅仅是满足勉强满足最低要求的最低要求? 附录:正如前两个答案所指出的那样,将必须满足的要求给予最高优先级确实是有意义的。但是我们(和客户)是否真的总是事先知道什么是必须满足的要求。我有几次这样的经验,即一开始就被高度重视的要求后来变得不那么重要了,即使不是毫无用处的。因此,我认为不应盲目地将注意力集中在必须满足的要求上。

7
为什么数据库的关系模型很重要?
我正在处理一个项目,在那里我将不得不与老板一起实现数据库。我们是一家很小的初创公司,因此工作环境非常个人化。 他以前曾给我提供过公司数据库之一,它完全违背了我在学校为RDBMS所教(和读到的)的知识。例如,这里有整个数据库由一个表组成(每个独立数据库)。这些表之一是20+列长,对于上下文,这是一个表中的一些列名: lngStoreID | vrStoreName | lngCompanyID | vrCompanyName | lngProductID | vrProductName 关键是,在他应该拥有保存实体数据(名称,大小,购买日期等)的单个表的情况下,他将所有数据都推入了每个数据库的一个大表中。 我想改进此设计,但是我不确定为什么正确归一化和分段的数据模型实际上可以改进此产品。虽然我熟悉大学的数据库设计并且知道如何进行设计,但是我不确定为什么它实际上可以改善数据库。 为什么好的关系模式可以改善数据库?

5
依赖注入:场注入与构造函数注入?
我知道这是一个热门辩论,关于最佳做法的观点会随着时间而改变。 我曾经在课堂上专门使用字段注入,直到开始在不同的博客(例如petrikainulainen和schauderhaft和fowler)上阅读有关构造函数注入的好处的信息。从那以后,我切换了方法,将构造函数注入用于必需的依赖项,将setter注入用于可选的依赖项。 但是,我最近与JMockit的作者(一个模拟框架)进行了辩论,在其中他认为构造函数和setter注入是不良做法,并表示JEE社区同意他的观点。 在当今世界上,是否有首选的注射方法?现场注入是首选吗? 在过去的几年中,从字段注入转换为构造函数注入后,我发现使用起来更加清晰了,但是我想知道是否应该重新审视我的观点。JMockit的作者(RogérioLiesenfeld)显然精通DI,因此鉴于他强烈反对构造函数/ setter注入,我感到有义务重新审视我的方法。

10
添加数据库索引是否过早优化?
今天,我的一位同事建议我们仔细检查应用程序中的所有查询并相应地添加索引。 我觉得这是过早的优化,因为我们的应用程序尚未发布。我建议我们上线后监视慢速查询,然后相应地添加索引。 在设计数据库时,一般的共识是什么?每次编写新查询时都应添加匹配的索引吗?还是只监视并查看进展情况更好?

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.