软件工程

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

11
在商业软件产品中使用开源代码的智慧
我正在我的ASP.NET Web应用程序(特别是dapper)中使用一些开源代码。管理不是狂热者,因为开源以前被视为一种困扰我们的风险。显然,以前的开发人员在开源组件出现故障之后不得不重写东西。 优点似乎是: 它为我做了很多事情,否则会涉及很多样板代码或Microsoft推荐的但较慢的解决方案(实体框架)。 缺点: 它非常复杂,以至于如果它突然在生产中失败,我将很难修复它。但是,它在比我的流量更高的站点上使用,因此我认为它最终不会成为项目的高风险部分。 这有什么共识?在我的项目中使用自己不了解/理解的开源代码是否明智?

5
单元测试程序代码有效吗?
在当前的项目中,希望将单元测试纳入我们的开发周期,以避免似乎不断渗入我们的代码中的错误数量。问题在于,意大利面条代码的程序化程度为95%,我从来没有使用过单元测试(我所有的单元测试经验都使用过OOP代码) 因此,我的问题简而言之是用我们当前的代码库进行单元测试,还是建议将其推迟到将应用程序迁移到适当的OOP框架后才是明智的选择? PS:当我尝试将这个问题的样式与语言无关时,我认为说明所涉及的应用程序使用PHP和javascript将有助于提供更具体的答案,从而可以回答该问题,因为从经验来看,此类应用程序大多会发生这种情况。

2
在公司站点中发现安全漏洞时该怎么办
我在公司的一个面向公众的站点中发现了一个重大安全漏洞。这是我们第一个从Intranet网站转换而来的面向公众的网站。我把这个问题交给了我的老板,他们基本上不予理,,说要重新构造站点以使其安全,需要大量的工作。 这确实让我感到困扰,我已经考虑过利用该漏洞来表明如果真正的黑客入侵,可能会发生的后果。这可能不是最好的主意,因为如果没有更糟的效果,这些效果可能会使我丧命。 我可以做些什么来向管理层表明情况的严重性?
13 security  ethics 

3
从WCF到Java Webservices的互操作似乎出奇的问题。有什么好的资源吗?
在最近的项目中,我们基于.Net的开发团队的任务是与全球各地基于Java的Web服务进行集成,我们确实遇到了很多令人惊讶的事情(当然,我们再也不会感到惊讶了)因为WCF生成的XML不被Java服务接受。 似乎也没有太多关于此主题的信息,我们从Yaron Nave出色的WCF博客http://webservices20.blogspot.com以及MSDN WCF论坛http:上 获得了一些不错的技巧。//social.msdn.microsoft.com/Forums/zh-CN/wcf/threads。 这里有没有人真的感觉到自己对此有所了解,并且知道有关该主题的权威资源?对书籍,博客或任何网站上的提示感兴趣。 编辑: 我对设置此线程上可接受的答案感到 不满意,因为两个最佳答案中的每一个都有一些价值:1.我们可能最终会做更多的HTTP Webrequest实现,而不是与WCF对抗。 2.但是WCF Express Interop Bindings 1.0也是一个非常明智的技巧。
13 java  wcf 

8
您是否开始将Swing项目迁移到JavaFX [关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我有一个4年的项目,它是用Swing + SwingX编写的。目前,它还活着并且还在踢。 但是,随着更多与GUI相关的功能请求(例如,可排序的树表)的出现,我开始感到难以完成请求。尤其是因为SwingX项目周围没有任何活跃的开发,因此尤其如此。 另外,我几乎找不到任何不错的,但是积极维护/开发/发展的GUI Java框架。 我想知道,Swing开发人员是否有同样的感觉?您是否已开始将Swing项目迁移到更加活跃的已开发GUI框架(如JavaFX)?
13 java  swing  javafx 


7
单例,抽象类和接口的作用是什么?
我正在学习C ++中的OOP,即使我知道这3个概念的定义,我也无法真正意识到何时或如何使用它。 让我们以此类为例: class Person{ private: string name; int age; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (string parameter){this->name=parameter;} void set_age (int parameter){this->age=parameter;} string get_name (){return this->name;} int get_age (){return this->age;} }; 1. 单身人士 类的限制如何只有一个对象起作用? CAN你设计一个类,将有只有 2个实例?也许3? 何时 /建议何时使用单例?这是好习惯吗? 2. 抽象类 据我所知,如果只有一个纯虚函数,则该类将变为抽象。因此,添加 virtual void print ()=0; 会做到的,对吧? 为什么需要一个不需要其对象的类? …

4
如何处理我认为已修复的错误,但我不确定
有些错误很难重现,很少发生,而且似乎是随机的。可能会发生,我找到了可能的原因,进行了修复,测试了程序,并且无法重现该错误。但是,由于不可能可靠地重现该错误并且它很少发生,因此如何在Bugtracker中指出呢?常见的做法是什么? 如果我将设置status为固定,并将设置solution为固定,则意味着完全固定了,不是吗? 是否通常将“ status固定”和“ solution打开” 设置为向测试人员表明“它可能是固定的,但需要更多注意以确保”? 编辑:大多数(如果不是全部)错误跟踪程序都具有两个用于错误状态的属性,也许名称不相同。通过status我的意思是新的,分配,固定,封闭等,并通过solution我的意思是开放的(新),固定的,无法解决的,不可重复的,重复的,而不是一个错误,等等。

1
在Github上进行分叉时,如何保持与GPL兼容?
我最近在Github上创建了一个项目,并对它进行了一些修改,将它们推回到派生的存储库中,并要求原始开发人员进行更改。(我认为这是对Github进行贡献的首选方式。)该项目已获得GPLv3许可。 我是对代码进行更改的作者和版权所有者。只要我遵守原始作者设置的许可,我也可以发布修改后的代码(即原始代码和我的更改的组合-通过将更改推送到我的分支中来完成)。 现在,我遇到了GPL中的以下要求。 该作品必须带有明显的声明,说明您对其进行了修改,并给出了相关的日期。 在法律允许我将更改推送到Github之前,似乎需要进行一些超出实际编码的工作。这项工作需要什么?我如何遵守上述要求?(我是否在修改后的源文件中添加了其他版权声明?我是否创建了Contributors文件并添加了我自己的文件?还是这些提交表明我的所有权是足够的事实?)分支受GPL保护的项目时是否还有其他陷阱?
13 licensing  gpl  github 

9
显示网站的注册用户数
我正在构建类似于《黑手党战争》的在线游戏。我当时想在首页上显示注册用户的数量,但后来我想到: “如果新用户看到注册用户总数为5怎么办?!” :D 这对于我仍在增长的游戏来说太尴尬了。然后另一个想法来自: “为什么我不显示500呢?!” ;) 没有人会知道实际上是否有500个用户注册到我的网站,除非他们当然开始实际玩游戏并与其他玩家互动。 但是,我只是觉得这是不道德的。如果这会对我的网站产生负面宣传该怎么办?! 我应该伪造这个号码您有什么看法?还是应该老实显示?还是应该等到拥有1000个真实帐户后才开始显示数字? 最重要的是这合法吗?:D

4
我的同事不了解他的工作。该怎么办?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我花了3天的时间在我的同事制作的一个库中调试了一个非常模糊的错误,该错误很少发生。毕竟,我发现此错误是由于对没有任何锁的对象的跨线程访问而发生的。实际上,这并不是此类错误,以前也有类似的错误。他只是运行单元测试,并且如果发生故障则将锁定。而且,如果一切顺利,嗯,那么他的代码就是完美的。看来他对线程安全性一无所知。我100%肯定还有许多尚未出现的类似错误。看来PM也不了解线程内容。 问题是,他在公司工作的时间比我多。无论如何,我不能只说“这个人在这个领域没有能力”,因为这总是显示您是“坏团队成员”,等等。

3
一种方法会使另一种方法超载,还是两种方法都“超载”
如果我创建此方法 public void foo() 然后我创建一个像这样的重载版本 public void foo( string bar ) 我们是说第二个函数重载了第一个函数,还是两个方法都同样“重载了”? 这意味着(我认为),存在一个基本类型的函数,该函数正在被另一个函数重载(有点像继承,但不是真的)。 假设一种方法可以“超载另一种”,那么即使这只是一个词,也将暗示诸如“ overloader”和“ overloadie”之类的术语。但这根本感觉不对,尤其是因为您可能会有多个重载。 当我想记下创建重载方法的过程并且想要最正确的记下来方法时,我遇到了这个问题。 例子: 我超载 foo 我重载foo用foo( string bar ) 我正在创建一个重载方法 我正在使foo超载 是的,这让我思考,我不确定该怎么做。在线上有成百上千的函数重载的描述,即使不是成千上万的描述,但是乍一看,我找不到任何解决方法。

3
分层架构中的验证和授权
我知道您在思考(或大喊大叫),“不是另一个问题,它要求验证在分层体系结构中属于什么?!?” 好吧,是的,但是希望这会在这个问题上有所不同。 我坚信验证的形式多种多样,是基于上下文的,并且在体系结构的每个级别都有所不同。这是后期的基础-有助于确定应在每个层中执行哪种类型的验证。另外,经常出现的一个问题是授权检查在哪里。 示例场景来自餐饮业务的应用程序。白天,司机可能会不定期地将卡车上载到现场的任何多余现金上交办公室。该应用程序允许用户通过收集驾驶员的ID和金额来记录“现金下降”。这是一些基本代码来说明涉及的层: public class CashDropApi // This is in the Service Facade Layer { [WebInvoke(Method = "POST")] public void AddCashDrop(NewCashDropContract contract) { // 1 Service.AddCashDrop(contract.Amount, contract.DriverId); } } public class CashDropService // This is the Application Service in the Domain Layer { public void AddCashDrop(Decimal amount, Int32 driverId) …

6
是否有一个案例研究可以令人信服地证明干净的代码可以改善开发?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 10个月前关闭。 我是程序员的第一份实际工作,我看到的只是“ Big Ball of Mud”代码(也没有有用的注释),但是我喜欢编写干净的代码,这对我来说很难编码办法。 我正在寻找一些研究案例,这些案例中使用干净的代码(这里看到了什么是干净的代码)改善了开发和可维护性。

9
如果不练习,您的编程知识会减少吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我是新手程序员。我学习诸如C,C ++,Python和Java之类的语言(主要侧重于C ++)。我就是您所说的“年轻且经验不足”的人,我承认这是因为我无可否认。 作为一名学生,除编程外,我还有许多其他问题。我会尽可能多地练习编程,尤其是因为我的老师给我的练习比课堂上的其余课程要多(这是一个很低的水平),所以我经常花数周时间做其他事情,例如学校项目或体育运动,或者旅行,除了编程。 但是不要误会我的意思,我喜欢编程。我喜欢构建功能代码,只需按一下按钮就可以观看程序的运行,并学到很多东西。问题是,我根本没有太多时间。 现在,直接问一个问题:您的编程知识会随着时间的流逝而减少,而您却没有练习吗?您可能会问“您的意思是多少时间?”。我并不是说要花费特定的时间,但是作为参考,您可以以两个月甚至一年为例。 就知识而言,我指的是从语法到语言功能的所有内容。

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.