软件工程

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


3
用Javascript应该测试什么?
在工作中,我们刚刚开始使用基于Javascript的大量应用程序(实际上仍在使用Coffeescript,但仍在使用),我一直在使用JsTestDriver和fabric来实现自动化测试系统。 我们从来没有用这么多的Javascript编写任何东西,所以到目前为止,我们从未进行过任何Javascript测试。我不确定在单元测试中到底应该测试什么。我们已经为各种事物编写了JQuery插件,因此很明显,应该使用JsTestDriver尽可能多地验证它们的正确性,但是我们团队中的其他所有人似乎都认为我们也应该测试页面级Javascript。 我认为我们不应该将页面级Javascript作为单元测试进行测试,而应该使用Selenium之类的系统来验证一切是否按预期进行。我这样做的主要理由是,目前确保页面级Javascript测试通过JsTestDriver失败,因为它们正在尝试访问DOM上可能不存在的元素。 那么,应该使用Javascript对哪些内容进行单元测试?

8
许可单元测试是否有意义?
我想知道(不)在主要由单元测试组成的测试代码上放一个许可证是否有任何好处/风险?你怎么看? 我对(L)GPL,Apache,MIT和BSD下的许可特别感兴趣。 编辑:假设非测试代码已经根据某种许可证发布,但是测试代码尚未发布,因此问题是是否发布它,以及是否发布相同的许可证。

1
在开源项目中使用库存图像
我已经开始了一个开源项目,非常想有一个可爱又吸引人的图标来标记该项目。我的困境是,我几乎没有设计用于此类项目的矢量图形的经验。为了弥补这一点,我想我可以从其中一种图片服务(快门等)购买图形。 我的项目从Gherkin语言文件生成HTML文档,我的意图是在每页的页脚使用此图标,以实现“由...产生的输出”。 我的问题是,如果我在其中使用此图形,它将对我的许可软件产生什么影响。我将根据Apache v2许可证发布该软件。

2
将有界背包问题转换为0/1背包问题
我遇到了一个目标是使用动态编程(而不是其他方法)的问题。有一段距离要跨越,并且有一组不同长度的电缆。准确跨越距离所需的最少电缆数量是多少? 在我看来,这似乎是一个背包问题,但是由于可能存在特定长度的倍数,因此这是一个有限制的背包问题,而不是0/1背包问题。(将每个项目的价值视为其权重。)采用幼稚的方法(而不关心搜索空间的扩展),我用来将有界背包问题转换为0/1背包问题的方法很简单将倍数分解为单数并应用著名的动态规划算法。不幸的是,这导致次优的结果。 例如,给定的电缆: 1 x 10ft, 1 x 7ft, 1 x 6ft, 5 x 3ft, 6 x 2ft, 7 x 1ft 如果目标跨度为13英尺,则DP算法将选择7 + 6来跨越该距离。一个贪婪的算法本来会选择10 + 3,但是这对于最少数量的电缆来说是一个平手。尝试跨度15英尺时会出现问题。DP算法最终选择6 + 3 + 3 + 3来获得4条电缆,而贪婪算法只为3条电缆正确地选择了10 + 3 + 2。 无论如何,对转换限制为0/1的光进行一些扫描,似乎是众所周知的将多个项目转换为{p,2p,4p ...}的方法。我的问题是,如果p + 2p + 4p的总和不等于多个项目的数量,此转换如何工作。例如:我有5条3ft电缆。我不能很好地添加{3,2x3,4x3},因为3 + 2x3 + 4x3> 5x3。我应该改为添加{3,4x3}吗? [我目前正在尝试处理“俄勒冈步道背包问题”论文,但目前看来,这里使用的方法不是动态编程。
12 algorithms 

5
替代HTML帮助
当前,我们使用一个名为AsciiDoc的系统,该系统使我们可以使用简单的文本标记创建文档。由此,我们可以生成多种输出格式。我们仅使用pdf输出和chm输出格式。 我想知道是否有chm替代品?我正在寻找的是可以离线使用我们的软件的东西(这很重要,因为我们的很多用户都位于非常遥远的地方)。它应该有一个索引(它可以像带有超链接术语的html页面一样简单),应该是可搜索的,并且它应该具有一种允许从代码中调用特定条目的机制(类似于上下文相关的帮助)。 在这种情况下,针对PDF的两件事是: 上下文相关帮助不是一种选择 通常文件比较大 PDF比上下文相关帮助更适合打印文档 我想要的是使用html。html的唯一问题是,我似乎无法弄清楚如何自动提供关键字搜索(除了浏览器的ctrl + f功能外,我希望更明显)。我似乎也找不到自动生成关键字的超链接索引的方法。由于有section标签,因此上下文相关的帮助将非常简单-我可以简单地将我感兴趣的页面和部分的url传递给默认浏览器,并且该页面应加载到正确的部分。 我的要求听起来像chm一样糟糕-确实如此。我根据chm建模了需求。我不喜欢chm的唯一原因是因为代码使用mapids等与之交互的方式。我宁愿使用存储纯文本列表(为我自动生成)的方式,我的代码可以使用该列表访问文档的上下文相关部分。 我正在构想一个脚本,该脚本将遍历html输出文件并生成一个索引页面,该页面仅包含找到的关键字列表。显然,应该有单词排他机制来忽略诸如“ the”,“ it”,“ is”等单词。这部分将相对容易编写。第二部分将需要某种脚本来将关键字数据库及其在html文本中的位置放在一起。我认为这将是棘手的部分,同时在浏览器中提供搜索机制。 关于替代方案的任何想法将不胜感激。我很想使用托管在某处Web服务器上的Wiki或一组静态html页面,但是我们有一个关键的离线使用要求。只是将html放在本地驱动器上并不能满足我们所需的搜索要求。 编辑: 我设计了采矿业使用的软件。许多地雷都很偏远,无法以任何有意义的方式访问互联网。pdf或html或chm没什么问题(除了它变老了)。如果我可以在正确的位置显示pdf文件(即上下文相关帮助),则可以使用它。我几乎想写自己的东西-基本上它将是便携式Wiki。说到这一点,如果您建议使用便携式Wiki,则必须考虑最终用户,他们可能没有使用此类工具的经验。它必须完全简单。那是chm的美丽,与之合作很痛苦,但最终用户喜欢它。

8
真正的KISS解决方案有多“简单”?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我承认:大多数时候我都存在“保持简单和简短”的问题,因为尝试根据我读过的书,听说过的设计模式等使它变得如此热情-一种热情来自感觉到我在实现完美的正确道路上。 另一方面,是的,这有时会给我最后期限带来压力。 但是,每当我对自己说:“下次再简单一点,你就是愚蠢的!” 我觉得很难在下次出现时使其变得“简单”,因为它开始变得怪异……并且在一点之后变得不舒服。 然后我开始判断我对“简单”的理解... SIMPLE是否意味着它太短了,但是它很难维护和扩展? SIMPLE是否意味着打破许多OOP原则? SIMPLE是否意味着作弊? SIMPLE是否意味着只保留截止日期而没有交易?等等 其实是什么 问题是:可以根据KISS原理写出SIMPLE的确切定义吗?-如果有。 谢谢!

2
WCF / SOA-为什么要为简单请求创建参数对象
我们公司正在启动一个相当大的SOA计划。我们正在做很多正确的事情:良好的沟通;在适当的地方购买工具的钱;并且我们已经引进了一些优秀的专业知识来帮助我们过渡。 我们正在尝试制定可以作为一个整体遵循的标准,其中一项提议的标准使我颇为困扰: 我们已经在模式上进行了标准化,其中每个操作都需要一个请求对象并返回一个响应对象。 我意识到这对于许多人来说或多或少是一种标准方法,但是我在问我为什么要打扰?(我对所接受的智慧不是很好,我需要一些理由)。 我将提供的大多数服务是简单的组织元数据检索。例如,找到特定用户的安全策略。这需要一个用户ID,无其他要求。该标准告诉我,我应该将此请求包装在一个对象中,并将返回的策略包装在一个响应对象中。 查看合同产生的WSDL会加剧我的不安。WCF自动生成请求和响应消息,甚至包装请求/响应对象。 我完全理解,如果您要发出复杂的请求,那么就需要一个复杂的输入对象。即使服务不涉及,那也是您要做的。 我的问题是为什么在以下情况下我应该自动包装请求和响应: 它使简单服务的表现力降低 无论如何,您都会为复杂的服务而做 WCF无论如何都会创建请求/响应消息 我发现以下论点支持这种方法: 它通过允许将可选参数放入请求对象中来支持版本控制。 过去,我做了很多的COM,我认为这几乎是版本控制的反模式。对于某些事情,我想它会有所帮助,但我希望它会有所帮助,无论如何您已经有一个参数对象。 它允许将常见数据和行为隔离到基类 这个给我带来一些分量。 它使人们远离RPC样式的行为而转向消息传递的行为 我已经在Microsoft网站上阅读了此内容,并从我们的专家那里听到了,但是我仍然不清楚它们的含义或价值所在。看起来自然的界面是否使人们倾向于忘记他们正在调用远程服务? 我正在考虑重构大约300种方法的签名,因此这是不小的痛苦。我非常喜欢实现的一致性,因此我愿意承担痛苦,这将有助于知道最终所有这些都是值得的。
12 soa  wcf 


2
独自开发多年后适应团队环境
作为Web开发人员,我有将近5年的经验,并且觉得自己现在应该是中级人员,但是当我走路时,我觉得我仍然很“初级”。 我想这就是问题所在:在我的职业生涯的大部分时间里,我很少得到更高级的开发人员的任何实际指导,并且对开发团队的经验为零,所以我不得不通过许多解决方案来破解自己的道路,并尽一切努力切段,晒干。实际上,作为唯一负责编写或维护代码的人,没有时间可以浪费。因此,我对实际的软件开发过程没有正式的了解,最终意识到编码只是过程的一小部分。 我非常喜欢与具有丰富经验的开发人员团队一起工作,但恐怕要尝试调整开发过程所需的知识库会非常艰难。作为一个程序员,大部分时间都是自己的职业生涯,我该怎么做才能“融入”与更大(至少5个)经验丰富的团队合作的工作? 编辑:为此,我还没有通过“大人物”公司给出的许多技术测试,这些公司在其软件和开发人员上蒸蒸日上。总的来说,我并不是说要像Google那样,而是在地理区域内相当成功。
12 teamwork 

8
如果老板总是推迟有关需求和总体设计的重大决定怎么办?
当开始一个新项目时,我的老板总是避免做出固定的决定。他通常在说:好吧,就开始写点东西,并尽可能通用。当您完成后,我们将看看我们如何继续。他的论点基本上是您永远不知道和“敏捷开发”。 为了使问题尽可能笼统:如果老板不喜欢做决定,您会怎么做? 只是坚持并编写可能在几周后进行大量重构和部分重写的代码?还是继续讨论直到老板做出至少一些决定?这或多或少是我目前的策略。因为这就像物理定律,所以在某些时候需要交付一些东西。要么是因为老板的老板想看到结果,要么是因为某些时候东西变得荒谬。 我还发现老板几乎批评了所有事情。甚至是基于他自己的建议...

5
如果Scrum成员中途离开该怎么办?
由于一名Scrum成员的健康状况,他不得不离开团队。 我的问题是,我是否需要重新开始冲刺计划会议?或更改燃尽图?还是要求所有团队成员硬着头皮做额外的工作以实现目标? 谢谢

24
是否存在“何时”声明?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 是否有可以处理“何时”案件的语言或语言功能?也就是说,只要某个条件变为真,无论在任何范围或上下文中,都可以指定执行额外的代码? 请注意,这与simple有所不同if,后者必须在特定范围内并明确编写。该when子句几乎类似于if在其后的程序执行中适用于所有情况的。

7
分配给项目的人员数量与缺陷数量之间确实存在关系吗?
这是一本关于SLIM和软件评估的培训手册的引文: 还要注意,工作量和缺陷之间存在关联。这意味着,给定规模的项目分配给的人越多,缺陷就会越多。 工作量是项目的人事时间(人年,人月)。缺陷数是在生命周期中任何时候检测到的缺陷数。大小定义为组成项目的用例,功能点或SLOC。 假定过程良好且有能力的工程师,这似乎违反直觉。例如,拥有更多的人意味着更多地关注所有工件(需求规格,设计,代码,测试)。除了拥有更多的眼睛之外,我的直觉还表明,在使用适当质量技术的项目中,努力与缺陷之间几乎没有关系。 除了关于Putnam模型的文件(SLIM使用该文件)之外,我找不到任何文档,这些文档表明缺陷与工作量或缺陷与项目人数之间的任何已知关系。这是已知的关系吗?“更多的人=更多的缺陷”这一说法是否成立?

2
Brodal队列的伪代码
我正在尝试查找有关Brodal堆的更多资源。我发现的只是Brodal-Okasaki堆的haskell实现,但是我认为它们是倾斜堆,这是正确的吗?此外,我在Haskell是文盲,所以没有太大帮助。有没有人(或知道)用伪代码,C,C ++,Python实现的Brodal队列实现? 如果上述假设是错误的,也请纠正。

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.