软件工程

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

6
UML类图是否足以设计JavaScript系统?
鉴于UML面向面向对象的更为经典的方法,它仍然可以以可靠的方式用于设计JavaScript系统吗? 我可以看到的一个具体问题是,实际上,类图是系统的结构化视图,而JavaScript是更多由行为驱动的,那么如何处理呢? 请记住,我在这里不是在谈论真实世界;这是我要实现的解决方案的模型。

5
错误跟踪礼节-尸体鉴定或重复?
我在一个开源项目的错误跟踪器中遇到了一个非常古老(超过2年)的功能请求问题,由于缺少进行请求的增强功能所需的工具,该项目被标记为“已解决(无法修复)”。自从确定以来经过的时间,已经开发了可以解决该问题的新工具,在此,我希望引起社区的注意。 但是,我不确定在这种情况下错误跟踪的普遍接受的礼节是什么。显然,如果系统明确声明不重复,并且会主动将新项目标记为重复(这与SE网站的做法大同小异),那么答案将是遵循系统所说的。但是,当系统没有明确说出这样的意思,或者新用户无法轻松找到具有系统偏好的地方时该怎么办呢?通常认为在重复或死法方面更佳吗?根据是错误还是功能请求而有所不同吗?

5
为什么Git用户说Subversion在本地没有所有源代码?
我只是继续阅读关于SO的内容,所以请原谅我,但是我读到的所有内容都表明,与Subversion相比,Git的一个主要优势是Git将所有源代码提供给本地开发人员,而无需在其中做任何事情。服务器。 由于我有限地使用SVN和TortoiseSVN,所以我拥有所有源代码,或者至少我以为自己做到了。例如,我有一个网站。我将其上传到SVN。我仍在本地运行我的网站,不是吗?如果有人提交了更改但我没有连接,则是否拥有Git都没有关系,直到我重新连接到服务器。 我不明白。除了这一点之外,我没有要求对另一种进行重新定义。
23 git  svn 

9
没有指导者的改善[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 尽管我认为自己经验不足,但还是以某种方式继续担任领导职位(在当前职位中,我是公司的技术总监,在前一个职位中,我是研发部负责人)。 我了解为什么会发生这种情况(我有一些特定的技能,并且使用了一些不常见的编程语言),我的问题是:我找不到导师... 我知道必须要学习一些东西,随着我多年来的工作,我注意到我正在慢慢学习越来越多的东西,但是我相信有一些方法可以使自己变得更快,而不仅仅是编码... 那么,当公司中没有其他人教我或让我阅读他们的代码时,我该如何改进?(甚至修复他们的代码...) 我认为我已经超越了书本,但远低于“大师”水平,所以我不知道在哪里可以学到更多。

9
多线程同步面试问题:给定m个线程,找到n个单词
有没有办法可以从具有多个线程而不是单个线程的解决方案中受益于此问题? 在一次采访中,我被要求使用多个线程解决问题。在我看来,多个线程毫无益处。 这是问题所在: 给您一个段落,其中包含n个单词,给您m个线程。您需要做的是,每个线程应打印一个单词并将控制权交给下一个线程,这样每个线程将继续打印一个单词,以防最后一个线程到来,它应调用第一个线程。重复打印,直到段落中所有单词都打印完为止。最后,所有线程都应正常退出。将使用哪种同步? 我强烈感到我们无法利用这里的线程,但相信面试官正在尝试评估我的同步技能。我是否在此问题中缺少使多个线程有价值的内容? 无需编写代码,只需提出一些想法即可。我将自己执行。

5
成功:/失败:阻止与完成:阻止
我在Objective-C中看到了两种常见的块模式。一个是一对成功:/失败:块,另一个是单个完成:块。 例如,假设我有一个任务将异步返回对象,而该任务可能会失败。第一种模式是-taskWithSuccess:(void (^)(id object))success failure:(void (^)(NSError *error))failure。第二种模式是-taskWithCompletion:(void (^)(id object, NSError *error))completion。 成功:/失败: [target taskWithSuccess:^(id object) { // W00t! I've got my object } failure:^(NSError *error) { // Oh noes! report the failure. }]; 完成: [target taskWithCompletion:^(id object, NSError *error) { if (object) { // W00t! I've got my object } …

11
为什么需要在实际的iPhone设备上测试我的iPhone应用程序
我为iPhone开发了一个应用程序,现在我希望在App Store上使用它。我的许多iOS极客朋友告诉我要在实际设备(例如iPhone)上对其进行测试。 因此,我想知道为什么尽管他们(苹果公司)提供了与我的设备几乎相同的“模拟器”,但为什么有必要在实际的iPhone设备上测试我的iPhone应用程序吗?
23 testing  iphone  ios 

7
单元测试中的代码质量?
在编写单元测试时,是否值得花费额外的时间使代码具有良好的质量和可读性? 在编写测试时,我经常会违反Demeter定律,以加快编写速度并避免使用太多变量。从技术上讲,单元测试不能直接重用-它们严格地与代码绑定,因此我看不出有什么理由要花很多时间在它们上面;他们只需要功能。

6
将动词与函数一起使用,将名词与类一起使用-接口如何?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 好的,我了解将动词与函数一起使用以及将名词与类一起使用的常规约定。界面呢?在提出接口名称时,有什么方法可能不太明显? 只是为了清楚起见,我并不是在说是否在名称前加上“ I”,还是要使用camelCase还是PascalCase。我想知道为接口找出清晰的语义名称的方法。 编辑 我正在沉迷于如何以最清晰的方式命名接口。我想它也只需要是一个名词,因为当我想到命名类时,我想到了它可以关联的最接近的“真实”世界对象。我想现实世界的接口是诸如键盘,鼠标,遥控器,ATM屏幕之类的东西。这些都是名词。无论如何,将对任何一种很好的方式来表达接口名称的见解表示赞赏。

4
“大数据”的定义是什么?
有一个吗? 我能找到的所有定义都描述了数据的大小,复杂性/多样性或速度。 维基百科的定义是我找到的唯一具有实际数字的定义 大数据量是一个不断变化的目标,从2012年开始,单个数据集中的数据量从几十TB到许多PB。 但是,这似乎与下一段引用的MIKE2.0定义相矛盾,该定义表示“大”数据可能很小,并且仅飞机上创建10GB传感器的3GB数据就可以认为是大数据。 IBM尽管说过: 大数据不仅仅是规模问题。 在定义中强调大小。 奥莱利也强调了 "volume, velocity and variety"这一点。尽管解释得很好,而且更深入,但该定义似乎是对其他定义的重新混编-当然,反之亦然。 我认为《计算机周刊》的文章标题很好地总结了许多文章“什么是大数据以及如何利用它来获得竞争优势”。 但是ZDNet 从2012年开始赢得以下大奖: “大数据”是从IT市场的高性能计算领域中冒出来的一个流行语...如果一个人坐在十个技术供应商的演讲中,可能会提出十五个左右的不同定义。当然,每个定义都倾向于支持该供应商的产品和服务的需求。想象一下。 基本上,“大数据”在某种程度上是“大”形状或形式。 什么是“大”?目前可量化吗? 如果“大”是无法量化的,那么是否存在不仅仅依赖于一般性的定义?

2
从JSON移至Protobuf。这值得么?
我们有可以提供XML或JSON(WCF)的REST Web服务。我在玩实现Protobufs的想法。为什么? 优点 减轻服务器负载。 较小的邮件大小-较少的流量。 现在切换比现在容易。 缺点 需要实施 很难对消息进行故障排除/嗅探以进行调试。 我可以在服务器上启用GZip,而JSON将消耗尽可能多的流量 您对此有何建议和/或经验?

7
客户有不切实际的期望时该怎么办?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 7年前关闭。 在过去的六个月中,我一直在客户站点上从事一个项目,因为他们需要数据保密并且不希望我们在自己的办公室工作。 当我独自出现在该客户站点时,被告知我需要在两个月内完成该项目。 由于客户不是一家软件公司,并且由于各种政策的限制,大约需要20到25天的时间才能让我在我的机器上安装Eclipse,Tomcat等东西的权利。即使延迟了环境设置,他们仍然希望我在两个月内完成该项目。 他们没有给我任何需求文件,但是由于我是在客户现场工作,我们过去经常定期开会讨论需求。 六个月后,申请仍未完成,每个人都在责怪我,但他们没有意识到我们添加的功能比前几次会议讨论的功能更多。 在此期间,我不得不重做很多事情,例如,将表单分成两部分;几周后,他们让我再次混淆这两种形式,以此类推。 应用程序的范围每天都在增加,但他们仍然认为这是一个为期两个月的项目,因此被推迟了。当我告诉他们范围扩大时,他们问为什么我一开始没有要求。 我已经每天工作11到12个小时,旅行3-4个小时,现在他们希望我也能在周六来。 我必须在这里做所有事情:进行需求,设计,代码和测试。 请告诉我在这种情况下该怎么办? 其他详细信息:我们确实提供了可交付成果的列表,但是随后他们在其中添加了一些说明,这些也很重要。他们还更改了一些可交付成果。他们甚至没有UAT服务器,而是通过IP地址在我的开发机器上进行测试。

10
雇主在自学的申请人中会寻找什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我是一名自学成才的程序员,即将进入就业市场。我想知道的是向雇主展示我的经验的最佳方法是什么? 雇主对我的编程经验有什么了解?雇主是想看看我编写的代码,还是想看看实际使用的软件?还是只在乎我的软件使用了多少/创造了多少收入?我应该写我的设计和编程风格吗? 我的背景:我最近刚从一所大学学习外语,那时候我才发现编程是我真正想要做的事情。目前,我是一名车库程序员,正在为客户开发用于商业用途的软件,同时继续自学,但我的目标是开始“适当的”工作和职业。另外,我目前住在芬兰,但我正在中国或日本找工作(我在国外学习时学习了两种语言)。
23 skills 


7
混淆/混淆面向公众的数据库ID真的是“最佳实践”吗?
我听说人们在互联网上到处都是演讲,这是使Web应用程序中面向公众的数据库ID晦涩难懂的最佳实践。我想它们主要是形式和网址的意思,但是我从没读过太多关于这个主题的文章。 编辑:当然,现在我问这个问题,我发现了一些有关该主题的资源: /programming/2374538/obscuring-database-ids /programming/1895685/should-i-obscure-primary-key-values http://joshua.schachter.org/2007/01/autoincrement.html 这些链接满足了我的一些好奇心,但是SO帖子的选票并不多,而且在这种情况下不一定围绕该主题展开,因此我不确定该怎么做,其中一些声称第三个链接是虚假的。我将保留我的其余帖子: 我了解模糊性和安全性之间的区别,以及两者如何协同工作,但是我无法想象为什么这样做是必要的。 这有什么道理吗,仅仅是偏执狂,还是完全虚假? 我可以想到实现此目标的方法,但是当然,这会增加应用程序代码的复杂性。在什么情况下有用?如果这是一些人经常做的,它怎么通常部署?散列标识符?还有吗 似乎需要大量额外的安全性才能完成大量工作。我并不是在寻找真正的解决方案,我只是想了解人们在现实世界中将如何/为什么这样做。 这是否真的被认为是“最佳实践”,还是仅仅是微不足道的微优化? 注意:我认为有些人可能会得出错误的主意:我并不是在建议难以猜测的id是唯一的安全机制,显然会有通常的访问检查。让我们假设它们已经就位,并且仅仅知道记录的ID或哈希ID不足以授予访问权限。

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.