软件工程

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

2
我可以将Google Code存储库的克隆迁移到Github吗?
我想创建一个Google Code存储库的克隆,由于国家/地区限制,我无法下载该克隆,并且我希望将该克隆迁移到Github中,我可以毫无问题地使用它。 问题是我有一个Github帐户,我可以浏览GoogleCode,但是我不能带我的TortoiseHg来克隆仓库,因为我来自古巴,而且我得到一个漂亮的Google页面,说我不能进入Google代码。 我猜你知道我如何浏览 :) 我想将商品库导入到我的Github存储库中,我的问题是: 可能吗? 我该怎么做?
10 git  github  mercurial 

5
学习编程时面向未来的自我[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 3年前关闭。 如果您愿意,我想以“面向未来”的方式学习编程。尽管Windows主导了台式机操作系统市场(目前而言),但显然在学习其语言/框架/ API方面还是有很多价值的,依此类推-随着新设备的出现或Windows自身的发展,这种情况可能会发生变化。友好的Windows 8预览看起来不太吸引人...)。 我是否正确地认为,对于后端逻辑/低级编程等具有扎实的C / C ++知识,再结合用于Java的Java等极易移植的语言,将是软件开发的良好基础在大多数系统上将证明有用吗?-我说的是台式PC,平板电脑,电话。
10 java  c++  c  portability 

3
关于类型别名/同义词的想法?
我将尽最大努力以不会导致语言冲突或语言清单的方式来构架此问题,因为我认为对此问题可能会有很好的技术答案。 不同的语言在不同程度上支持类型别名。C#允许在每个代码文件的开头声明类型别名,并且它们仅在整个文件中有效。像ML / Haskell这样的语言使用类型别名的次数可能与使用类型定义的次数一样多。C / C ++有点像狂野的西部,typedef并且#define经常与别名类型互换使用。 类型别名的优点不会引起太多争议: 可以方便地定义由语言自然描述的复合类型,例如type Coordinate = float * float或type String = [Char]。 长名可以缩写:using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute。 在像ML或Haskell这样的语言中,函数参数通常没有名称,类型别名提供了类似自我文档的形式。 不利之处在于:别名会大量增加,从而使阅读和理解代码或学习平台变得困难。Win32 API就是一个很好的例子,包括它DWORD = int,它HINSTANCE = HANDLE = void*和它的LPHANDLE = HANDLE FAR*等等。在所有这些情况下,区分HANDLE和void指针还是DWORD和整数等几乎没有任何意义。 抛开哲学上的争论,即国王是否应该给予臣民完全的自由,让他们自己负责,或者是否应该干预所有可疑的行为,是否有一种快乐的媒介可以允许类型混叠的好处,而减轻滥用风险? 例如,长名称问题可以通过良好的自动完成功能来解决。例如,Visual Studio 2010将允许您键入DSBA,以便将Intellisense引用到System.Diagnostics.DebuggerStepBoundaryAttribute。还有其他功能可以更安全地提供类型别名的其他好处吗?

4
通过持续集成来保持不断增长的多样化代码库
我需要有关连续集成设置的概念和设计的帮助。 我们当前的CI设置使用buildbot。当我开始设计它时,我继承了一个定制的CI构建器(不是严格地说,因为我一年前参与了它的设计),该构建器经过定制可在一夜之间一次运行整个构建。一段时间后,我们认为这还不够,并开始探索不同的CI框架,最终选择了buildbot。我过渡到buildbot的目标之一(除了享受所有额外的乐趣)是要克服我们定制的夜间构建器的某些不足之处。 幽默一下,让我解释一下我继承的东西。我公司的代码库是将近150个独特的c ++ Windows应用程序,每个应用程序都依赖于十几个内部库中的一个或多个(以及许多第三方库)。其中一些库是相互依赖的,并且具有依赖的应用程序(尽管它们彼此无关)必须使用该库的相同内部版本来构建。这些应用程序和库中的一半被认为是“旧版”且不可移植,必须使用IBM编译器的几种不同配置(我已经为其编写了独特的子类Compile)构建,而另一半则使用Visual Studio构建。ShellCommands,因为不支持VSS)。 我们最初的每晚构建器只是简单地收集了所有内容的来源,并按一定顺序构建了东西。没有办法只构建一个应用程序,选择版本或对事物进行分组。它将启动虚拟机来构建许多应用程序。它不是很健壮,也不是可分发的。它不是非常可扩展的。我希望能够克服buildbot中的所有这些限制。 我最初执行此操作的方式是为我们要构建的每个应用程序创建条目(它们全部包含150个),然后创建可以将各种应用程序构建为组的触发调度程序,然后将这些组包含在整个夜间构建调度程序下。它们可以在专用的从属服务器上运行(不再需要虚拟机),如果我愿意,我可以简单地添加新的从属服务器。现在,如果我们要按计划进行完整构建,只需单击一下即可,但是如果需要,我们也可以只构建一个应用程序。 但是,这种方法有四个缺点。一种是源代码树的复杂依赖关系网。为了简化配置维护,所有构建器都是从大型词典生成的。检索依赖关系的方式并非十分稳健(即,在我的构建目标字典中删除某些内容)。第二个原因是每个构建都有15到21个构建步骤,这很难在Web界面中浏览和查看,并且由于有大约150列,因此需要永久加载(从30秒到几分钟)。第三,我们不再能够自动发现构建目标(尽管,尽管我的一位同事为此而烦恼,但我最初并不认为这对我们有什么帮助)。最后, 现在,转向新开发,我们开始使用g ++和subversion(请注意,不要移植旧的存储库-只是为了新的东西)。另外,我们也开始进行更多的单元测试(“更多”可能会给出错误的图片……更像是任何东西),以及集成测试(使用python)。我很难弄清楚如何将它们适合我的现有配置。 那么,我在哪里从哲学上错了?我怎样才能最好地继续前进(使用buildbot-这是我有许可证可以解决的唯一难题),以便实际上可以维护我的配置?如何解决设计中的某些弱点?对于大型(可能是过度)复杂代码库的CI策略,真正起作用的是什么? 编辑: 我以为我解释了我的问题,但显然我还不够清楚。我不是在寻求有关更改CI平台的建议。它不会发生,答案表明那将不会被接受。我想知道的是其他人如何使用CI管理复杂的代码库。我有十几种平方的不同产品,而且我的依赖项随风而散,它们都是不同的。这就是我想知道的处理方法。

6
软件成本估算
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我在工作场所(一所大学)见过,大多数学生都使用COCOMO进行最终文凭工作的软件估算成本。我的猜测是,这种估算成本的方法有些陈旧(COCOMO于1981年成立),因此我的问题是: How do you estimate costs in your software? 我看过类似的东西: 费用=(每小时工作量+估计的空闲时间)* HourlyRate 那不是我想要的,我正在寻找一个正确的(科学地)定义的成本模型 编辑我已经找到了一些相关的问题: 有哪些软件成本估算方法和模型? 您如何估算开发软件需求的成本?

7
FreeBASIC有多成熟?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我的一个朋友正在考虑在关键的生产环境中使用FreeBASIC。他们目前使用GWBasic,并且希望向更现代的语言过渡。我只是担心该软件中可能存在未检测到的错误。我看到他们的版本号是0.22.0,这表明它还不太成熟。我也阅读了此讨论,但无法得出结论。同样,在它们的Sourceforge页面上,也没有迹象表明它是Alpha还是Beta(无论如何这都不是一个很好的指标)。是否有人对成熟度有自己的经验,如何判断成熟度的想法,或者是否知道在关键的生产环境中使用FreeBASIC的公司?
10 basic 

5
如何实际应用我正在学习的JavaScript [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我是前端程序员。我擅长设计,html,css和jquery,但我想学习javascript胜过一切。我参加了几门课程,在线阅读了书籍和教程,觉得我对核心原理(变量,逻辑等)有了很好的了解。 这是我发现与网上所有其他“学习js的最佳方法是什么”问题不同的地方。 我似乎无法做的就是将其实际应用。从了解点点滴滴到弄清它们如何协同工作成为一个程序,我无法接受。 用js获取实际应用知识的最佳方法是什么?我认为成为学徒或接受辅导将是最好的选择,但是您经常不会听说这种事情。

9
是否有使用Mysql或PostgreSQL的大型银行?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为最大规模的银行使用Oracle。但是,没有证据表明他们真正使用Oracle而不是Mysql或PostgreSQL,没人知道这个秘密。 知道他们真正使用了什么吗?我可以使用Mysql建立一个可以进行数百万笔交易的ATM /银行系统吗?我可以使用PostgreSQL吗?还是只能使用Oracle?

3
代码格式:在类文件中基于调用层次结构布置函数?
鲍勃·马丁(Bob Martin)的“干净代码”的建议让我挠头。 到目前为止,我或多或少都遵守.Net指南,该指南按类型(属性,ctor,函数)和可见性(公共/保护/私有)对类成员进行分组。提示一开始似乎很麻烦..但是“可能有用”。我个人遇到过我喜欢这种布局的情况-当您处于正确的呼叫链中时,更容易进行深入研究。 提示背后的想法听起来不错,但其他情况(如“让我看看此类的公共界面”)可能会变得更糟。鲍勃叔叔也许是依靠小类和IDE对查看类型的支持... 有人试过很长时间了吗? 更新:好像是一个代码片段 class SomeType() { /// fields, ctors, et. all public void Method1() { // calls HelperMethod1 and HelperMethod2 } private void HelperMethod1 { // calls HelperMethod3 } private void HelperMethod3 {} private void HelperMethod2 {} public void Method2 () { // and so on... } …

10
授予雇主授权书以获取您的发明[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 对于软件公司来说,要求授权书以确保他们在您受雇为程序员的过程中就您所发明的任何东西获得专利是正常/公正吗? 更新: 就我而言,我回去了老板。他们告诉我,他们对使用我的发明不感兴趣,这些发明与公司时间内未利用公司资源发明的领域无关。 该公司鼓励开源贡献,并且不会在这方面进行干预。 我进一步检查了合同,并在法律上对“发明”一词进行了定义,它指出,本协议中的发明仅是在公司时间内利用公司资源开发的发明。 授权委托书使公司可以确保他们可能希望获得专利的任何发明都能获得我的签名(或者在我缺席的情况下,具有同等效力)。

4
将您以前的知识产权带给您的雇主
假设我有空在签订合同或被A公司雇用之前已经开发了库X。 然后,我与公司A签订了合同,开始工作。很明显,库X将非常有用,并为公司节省了大量时间和金钱。 在将此代码引入公司方面,这方面的行业标准做法是什么?是否可以将库X许可给公司A?


7
Scrum高估和重新计划
我们正处在第一个Sprint的中间,而我们的曙光已经来临:我们估计过高! 我们为这2周的迭代计划了114个理想小时,在第一周结束时,我们完成了整个Sprint。我们现在干什么?《书》说,我们应该而且我们将从积压中得到下一个优先事项。但是,如何将它们添加到燃尽图中?我们是否重新编写它来说明这些故事,就好像它们从一开始就在那儿一样?还是在我们开始研究它们的那天简单地将它们的估计值添加到y轴(显示90o角跳)? 欢迎任何反馈!
10 scrum  planning 

2
单一责任和自定义数据类型
在过去的几个月中,我一直要求SE和其他网站上的人员给我一些有关我的代码的建设性批评。一件事几乎每次都会弹出,我仍然不同意这个建议。:P我想在这里讨论它,也许事情对我来说会变得更加清楚。 它与单一责任原则(SRP)有关。基本上,我有一个数据类,Font它不仅包含用于处理数据的函数,而且还用于加载数据。有人告诉我这两个应该分开,加载函数应该放在工厂类中。我认为这是对SRP的误解。 我字体类的片段 class Font { public: bool isLoaded() const; void loadFromFile(const std::string& file); void loadFromMemory(const void* buffer, std::size_t size); void free(); void some(); void another(); }; 建议设计 class Font { public: void some(); void another(); }; class FontFactory { public: virtual std::unique_ptr<Font> createFromFile(...) = 0; virtual std::unique_ptr<Font> createFromMemory(...) = …

5
代码文档:公共与非公共?
我就是那些思维定式的人,他们所写的代码应该是不言自明的,并且应该像书一样阅读。 但是,在开发供他人使用的库代码时,我尝试将尽可能多的文档放在头文件中;这就提出了一个问题:非公开的记录方法是否值得?他们不会直接使用它们,实际上,它们不能。同时,如果我分发原始代码(尽管很不情愿),那些非公共方法将是可见的,可能需要解释。 只是寻找您在旅途中看到或使用的一些标准和做法。

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.