软件工程

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

3
在仅用于现代Webkit的Web应用程序中使用jQuery是否有意义?
我最近正在为Android(2.3+)和iOS(4+)开发一些移动Web应用程序。他们的浏览器支持大部分ECMAScript5,该功能非常强大,我想尽可能使用语言功能,仅在需要时才使用jQuery。 事实证明,我使用jQuery的唯一目的是为其提供一个较短的替代方法document.querySelectorAll。也可以摆脱它。 如果只需要支持现代WebKit浏览器,那么摆脱jQuery(和其他通用库)是否是一个好主意?毕竟,它们是一个间接层。 (到目前为止,这些应用程序不必进行AJAX调用,我想这将变得很丑陋。但是为此保留jQuery是否值得?)

13
队列的一些简单好例子是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我正在教CS2(Java and data structures),在教队列时要使用好的示例方面有些困难。我使用它们的两个主要应用程序是multithreaded消息传递(但是MT编程不在本课程的范围之内),并且BFS-style algorithms(并且我将在本学期的晚些时候再介绍图形)。 我也想避免人为的例子。我想到的大多数事情,如果实际上是要以单线程方式解决它们,我只会使用列表而不是队列。我倾向于仅在处理和发现被交错(例如,搜索)时或在其他特殊情况下使用队列,例如长度受限的缓冲区(例如,维护最后N个项目)。在实际的范围内,我正在尝试教我的学生好的方法,以实际的方式实际执行程序,而不仅仅是展示功能的玩具。 有什么好的,简单的算法建议或队列应用建议可以用作示例,但至少需要其他先验知识吗?

1
关于CMMI疗效的任何经验证据吗?
我想知道是否有任何研究可以检验面向CMMI的组织中软件项目的有效性。例如,与非CMMI组织相比,CMMI组织是否更有可能按时和/或按预算完成项目? CMMI代表“能力成熟度模型集成”。它是由卡耐基梅隆大学(SEI-CMU)的软件工程学院开发的。 这不是认证,但是有许多公司会“评估”您的组织到CMMI的各个级别,例如2级和3级。(我相信CMMI 1级是一种动物性的,霍布斯式的免费的,没有人向往换句话说,即使您以前从未听说过CMMI,每个人都至少处于CMMI 1级。) 我绝对不是专家,但是我相信可以在不同的工作范围内评估组织的CMMI级别:即服务交付,软件开发,愚弄等。我的问题集中在软件开发评估上:是一个组织被评估为CMMI X级的软件项目比没有被评估为CMMI X级的组织更有可能按时,按预算完成软件项目? 但是,由于缺乏有关面向软件的CMMI的可靠数据,我对CMMI评估对其他活动的影响也很感兴趣。 我最初问这个问题是因为我已经看到了许多有关软件的研究(例如,《神话人月》中的论文涉及大量的经验研究,麦康奈尔的《代码大全》也是如此),所以我知道有些组织在进行软件开发的经验研究。 。

4
匿名函数与单独的命名函数在jQuery中进行初始化
假设我们有一些代码,用于在页面加载时初始化事物,看起来像这样: function initStuff() { ...} ... $(document).ready(initStuff); 仅从代码段的第三行调用initStuff函数。再也不。因此通常人们将其放入这样的匿名回调中: $(document).ready(function() { //Body of initStuff }); 将函数放在代码中的专用位置并不能真正帮助提高可读性,因为调用ready()可以使这很明显是初始化代码。 还有其他理由更喜欢另一个吗?

4
在Scrum团队中让多个角色的人可以吗?
我正在评估一些敏捷风格的方法,以可能向我的团队介绍。使用Scrum,是否可以让同一个人扮演多个角色?我们有一个由四个开发人员和一个网页设计师组成的小组。我们实际上没有领导(我要担任这个职位),质量检查测试人员或业务分析师,我们所有的开发任务都来自CIO。自动化测试被视为浪费时间,一切都集中在速度而不是质量上。 首席信息官将提出一个开发任务(无论是功能还是错误),然后将其交给开发人员(而不是整个团队,个人,通常是私下或出乎意料的),然后有望完成。CIO并没有收集超出最初想法的要求(这在以前已经使我们很痛苦,因为我们将实施某些措施只是为了发现最终用户都无法使用该功能,因为没有咨询过他们甚至没有得到有关此功能的信息。在开发它之前,我们会惊慌地被告知要还原更改),但需要对我们所做的一切发表意见/予以批准。 首先,首先要考虑引入Scrum风格来引入一些标准和实践吗?从阅读的角度来看,Scrum似乎更多地依赖于信任和沟通,并且更多地关注项目管理而不是开发,这是我们完全没有的,因为我们目前没有任何项目管理的表象。 其次,如果它可以工作,那么对于某人来说,让我自己充当ScrumMaster和开发人员,是否不合理?还是让开发人员同时担任产品负责人(尽管很有可能这将是CIO,而不是开发人员)?我意识到Scrum Master和产品负责人应该是不同的人,但同时我认为我们没有任何人具有产品负责人的素质(可能会变成“我需要所有这些故事,我不关心如何完成交易”和/或任何冻结都会立即冻结)。 在我看来,我可能需要选择并选择Scrum / XP / Lean来弥补当前的工作方式,因为这种心态很难改变。例如,结对编程永远无法实现(这很浪费(如果浪费,如果您需要两个人,则只能完成一半的任务)),TDD很难卖,但欢迎周期短。
9 agile  scrum 

2
为什么JavaBean规范中的访问器方法成为Java开发的标准?
的JavaBeans技术规范描述了一种JavaBean作为 Java Bean是可重用的软件组件,可以在构建器工具中直观地对其进行操作。 由于编写的大多数代码行似乎与在构建器工具中进行可视化处理无关,因此,为什么JavaBean规范成为编写面向对象代码的“方式”? 我想在整个代码中放弃使用传统的getter / setter,而在整个代码中都支持Fluent接口,不仅在生成器中,而且还要担心这样做,因为这样做传统上不是用Java编写面向对象代码的方式。
9 java  history 

8
C#foreach的改进?
我经常在编程过程中遇到这种情况,我想在foreach中有一个循环计数索引,并且必须创建一个整数,使用它,递增等。如果引入一个关键字是foreach内部的循环计数?它也可以在其他循环中使用。 这是否与关键字的使用背道而驰,因为编译器将不允许该关键字在循环结构中的任何地方使用?
9 c#  loops 

3
dvcs-“克隆到分支”是常见的工作流程吗?
我最近正在与一位同事讨论dvc,因为我们的办公室开始考虑从TFS切换(我们是一家MS商店)。在此过程中,我感到非常困惑,因为他说尽管他使用Mercurial,但他没有听说过“分支”或“结帐”命令,这些术语对他来说并不陌生。在想知道他可能不了解它们并解释了dvcs分支如何在您的本地文件上“就地”工作之后,他感到非常困惑。 他解释说,类似于TFS的工作原理,当他想创建一个“分支”时,可以通过克隆来完成,因此他拥有回购协议的完整副本。这对我来说确实很奇怪,但是我必须承认的好处是,由于文件是分开的,因此您可以同时查看或处理两个分支。 在搜索此站点以查看是否有人问过这个问题之前,我看到有评论说许多在线资源都在推广这种“从分支到分支”的方法,这使发布者感到沮丧。这实际上在dvcs社区中很常见吗?这样做的利弊是什么?我永远都不会这样做,因为我不需要一次看到多个分支,切换速度很快,而且我不需要所有克隆都填满我的磁盘。

3
您如何在代码之外跟踪复杂的业务规则?
我有兴趣看看其他人是如何做到的。尤其是在多个不同的客户端使用具有稍微不同的业务规则的相同软件库的情况下。您使用哪种实践来记录一切应该如何工作或业务规则。 基本上,这样一来,当团队中有新开发人员时,便可以轻松地查看事物的工作原理,因为使某些东西没有错误和使某些东西正常工作之间显然存在区别。 拥有资源而不是每次遇到有关如何处理某事的问题时都必须让架构师或BSA参与对话,这真是太好了。

3
量化源代码和软件产品的价格
想要改善这篇文章吗?提供此问题的详细答案,包括引文和为什么答案正确的解释。答案不够详细的答案可能会被编辑或删除。 我要承担一个项目。这需要我编写代​​码,并且要编写大量代码。客户的要求是在项目结束时交付所有源代码。 我的问题是:如何量化源代码和软件产品的价格?是否有任何衡量指标的指标?我如何量化软件产品? 额外信息:该应用程序必须在任何操作系统上的任何位置运行,包括平板电脑(iPad,Galaxy标签等),智能手机(iPhone,Android手机等)以及网络上。 (现在,想象一下这将是多少代码)。

1
故事点的估计单位是多少?
我正在阅读有关一个团队的案例研究,该团队根据完成任务所需的努力来估算任务或“故事要点”。 这些“故事点”的估计单位是什么?我认为“故事点”的概念源于一个称为“敏捷开发”的过程。
9 agile 

2
ARC下的属性:始终还是仅公开?
在不到两年前,阅读了Robert McNally谦虚的文章“代码指令:Objective-C编码的最佳实践”之后,我采用了对我的Objective-C类的几乎每个数据成员使用属性的做法( (截至2012年5月的第三条诫命)。McNally列出了这样做的原因(我的重点): 属性强制执行访问限制(例如只读) 属性强制执行内存管理策略(强,弱) 属性提供了透明实现自定义setter和getter的机会。 具有自定义setter或getter的属性可用于强制执行线程安全策略。 使用单一方法访问实例变量可提高代码的可读性。 我将大多数属性都归为私有类别,因此编号1和4通常不是我遇到的问题。参数3和5更加“柔和”,并且使用正确的工具和其他一致性,它们可能会成为问题。最后,对我而言,这些论点中最具影响力的是数字2,内存管理。从那时起,我一直在这样做。 @property (nonatomic, strong) id object; // Properties became my friends. 在我的最后几个项目中,我转而使用ARC,这使我怀疑为几乎所有内容创建属性仍然是个好主意还是有点多余。ARC为我负责内存管理Objective-C对象的管理,strong如果您声明ivars ,则对于大多数成员而言,它可以正常工作。无论如何,在ARC之前和之后,您都必须手动管理C类型,并且这些weak属性大部分是公共属性。 当然,对于需要从类外部访问的任何内容,我仍然使用属性,但是这些属性仅是少数几个属性,而大多数数据成员在实现标头下被列为ivars。 @implementation GTWeekViewController { UILongPressGestureRecognizer *_pressRecognizer; GTPagingGestureRecognizer *_pagingRecognizer; UITapGestureRecognizer *_tapRecognizer; } 作为一个实验,我更加严格地执行了此操作,并且从所有属性移开属性都有一些不错的积极副作用。 数据成员代码要求(@property/ @synthesize)缩小为ivar声明。 我的大部分self.something参考资料都整理到_something。 可以轻松地区分哪些数据成员是私有的(无效)和哪些数据成员是公共的(属性)。 最后,“感觉”起来更像是苹果打算将其用于房地产的目的,但这是主观的猜测。 关于一个问题:我正在慢慢地向黑暗面发展,使用越来越少的属性来支持实现错误。您能否为我提供一些理由,说明为什么我应该坚持对所有内容都使用属性,或者证实我当前的思路,为什么我应该仅在需要的地方使用更多的ivars和更少的属性?双方最有说服力的答案都会得到我的认可。 编辑:麦克纳利(McNally)在推特上说:“我认为坚持使用房地产的主要理由是:一种做所有事情的方法,那就是做所有事情(包括KVC / KVO)。”

3
阿丽亚娜5号航班501的历史影响是什么?
阿丽亚娜5型火箭发射的在她的处女航(经过37秒解体飞行501)通常被称为一个历史上最昂贵的软件错误1: 欧洲航天局花了10年时间和70亿美元,生产出了Ariane 5,这是一种巨型火箭,每次发射时都能将一对三吨重的卫星投向轨道,旨在使欧洲在商业航天领域具有压倒一切的优势。 去年6月首次航行不到一分钟,炸弹就爆炸了,在法属圭亚那的红树林沼泽中散落着炽热的瓦砾,这是一个小型计算机程序,试图将64位数字填充到16位空间中。 一个错误,一个崩溃。在计算机科学史册中记录的所有粗心代码行中,这一行可能是最具有毁灭性的高效代码。通过与火箭专家的访谈以及为航天局准备的分析,出现了从算术错误到彻底销毁的明确道路。 Flight 501的故障和随后的调查对安全关键系统和软件测试的研究产生了哪些重大变化? 我不是在寻找错误本身的解释,而是在从错误调查启发或直接与之相关的研究方面解释错误的历史影响。例如,本文得出以下结论: 我们使用静态分析来: 检查变量的初始化, 提供共享变量潜在数据访问冲突的详尽列表, 从Ada语义中详尽列出潜在的运行时错误。 据我们所知,这是首次使用基于布尔和基于非布尔的静态分析技术来验证工业程序。 同样,本文(pdf)指出: 基于抽象解释的静态程序分析已用于对Ariane 5启动器和ARD的嵌入式ADA软件进行静态分析。静态程序分析器旨在自动检测运行时错误(例如标量和浮点溢出),数组索引错误,被零除和相关算术异常,未初始​​化的变量,共享数据结构等。分析仪能够自动发现Ariane 501的飞行错误。嵌入式安全关键软件(例如航空软件)的静态分析非常有前途。 对于这一事件对软件测试方法和工具的影响,我将进行详尽的解释。 1这笔70亿美元的数字很可能是阿丽亚娜5号项目的总成本,维基百科报道,这次失败造成的损失超过3.7亿美元。失败仍然是一个相当昂贵的失败,但远不及70亿美元的数字。
9 testing  history  bug 

5
学习编程打孔卡[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我一生中想尝试用打孔卡编程。我怎样才能做到这一点? 我30岁左右,并且完全在PC时代成长,在带有屏幕和键盘的计算机上编程。我想体验我父亲和祖父过去的工作方式。我想象不再制造硬件(可能还有卡本身)。有没有大学或博物馆的打卡机运行正常?我在波士顿,但我愿意旅行去做。 我问了MetaFilter,然后得到了一些混杂的答案(还有很多“不,不要这样做”的说法)。我确实得到了罗德岛逆向计算协会的指点,但是我尚未收到对他们发来的电子邮件的回复。
9 learning 

5
公司在开发时如何隐藏网站?
我是新来的人,也是刚入职的19岁新PHP开发人员,所以我不确定这是如何工作的。许多公司在开发其网站时都会隐藏其网站,以免被索引。从搜索引擎隐藏html5 / css和php / mysql的方法有哪些?如果我没看错,这些是技巧: 离线开发:使用本地存储呈现html / css;不知道PHP / mysql将如何工作。 使用.htaccess阻止访问 使用VPN阻止访问。

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.