软件工程

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

3
非功能性需求和质量属性之间有什么区别?
我试图了解非功能性需求和质量属性之间的区别。它们是一样的吗? 您可以在ISO9126标准中找到一组质量属性。 我知道每个系统都是由一组功能需求定义的,并且每个需求都有一个或多个相关的质量属性。例如,假设您具有描述系统登录功能的要求。您可以将安全性和性能属性与该需求相关联。 如果我说系统不能花费超过1秒的时间来响应,那是在说约束。 那么,非功能性需求的概念在哪里出现呢?它们是由用户定义的吗?如何识别它们?

8
复杂点无回报。你怎么称呼
作为软件开发人员,我的主要任务之一是控制复杂性。 但是,在某些项目中,有时候复杂度级别变得如此之高,以至于达到某种“无回报”的地步。超过这一刻,您将永远不会比需要从头重写所有内容的时间更短地将项目恢复到可接受的复杂度。 这个时刻在程序员方言中是否有名字(类似于戈德温巨魔定律)? - 编辑 - 对不起,如果我不清楚。我认为这个“时刻”没有正式名称,或者不是一个严肃的指标。我正在考虑xkcd中“鲍尔默峰”的精神。

1
“扁平化”是什么意思?
如果我有一棵树,会直观地暗示“变平” 获取树中所有项目的列表,从左到右遍历? 如果我有一个链表,会直观地暗示 从此开始获取所有物品的清单 例如,一个链表将由一个聚集其内部异常的异常组成。为异常命名一个方法“ flattenInnerExceptions”是否公平,希望它会返回一系列异常,最外层的异常优先,最后内层的异常-最后?
13 naming 

6
我如何成为一个更加自治和自给自足的程序员?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 阻碍我成为杰出开发者的最大因素是我对他人的依赖。我觉得我问了太多问题,因为我担心破坏一切并使所有人退缩的后果。因此,我对提出这么多问题持谨慎态度,以至于在问了很多问题之后我基本上就能得到答案。我已经意识到这很糟糕,但我想阻止它。部分原因是有时我根本不了解代码(这是我从未使用过的分支,还是它是全新的产品),但我想减少对其他人的依赖。首先,这些问题不是关于通用模式或语言的问题:通常,我的问题围绕我们在公司中如何进行编码以及如何使事物在我们的生态系统中工作而围绕。我希望能够随身携带规格,而不必觉得我需要在每一步获得帮助。这正常吗?您是否经历过这个过程,如果是这样,您是如何克服它的?

9
程序员的纯数学与应用数学[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为数学很容易,因为我总是觉得这门课很容易。不过,计算机科学是我的第二爱。如果有选择,我宁愿主修数学。由于通常只有大学本科学历的职业根本没有吸引力,所以我在作为软件开发人员的日子里会很满足。 我的问题是:未来的程序员将从哪个数学学科中受益?应用数学还是纯数学? 我喜欢自学,我有信心可以教自己成为一名优秀的程序员,但我仍然打算成为CS的未成年人!

6
在开始编码之前,软件产品应定义得如何?
我想知道人们在开始实际编写代码之前通常对软件产品的定义有多好,以及它对他们的效果如何?我指的是定义用例,分析风险,绘制类图等。 我知道,对最终产品将在将来能够避免的风险有足够的了解是一个好主意,但是,也不能将产品定义得太好以致于难以适应,这一点也很重要。更改。 其他更具体的问题可能是: 通常在开发之前的计划阶段花费项目时间的百分之几? 在开始编写代码之前,您是否想满足某些可衡量的标准?或者仅仅是胆量? 您是在开始编写代码之前就绘制了所有类的图,还是主要是希望从一开始就创建一个动态设计,以期望事情会发生变化? 您愿意分享的任何经验都将非常棒!

7
完成任务后,您还会忘记代码吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我是一名新程序员,想问问高级程序员(在现实世界中有一定经验的程序员)。 我做我的工作,编码后,我的项目完成了,但老实说,我不记得代码,类和框架的名称及其属性。 有时,甚至我怀疑自己做了这个吗? 这对所有程序员都是正常的吗?或者我是最不记得代码和类/属性名称的最愚蠢的程序员? 编辑: 我认为许多程序员在这里误解了我的意思。我说过我忘记了框架名称,类名称,属性名称,但是一旦我再次开始使用它,便开始记住自己的代码。我的问题是您还记得语法和类/属性等名称吗?

5
遗传程序设计
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 最近,我在浏览Reddit时遇到了一个链接到“ JavaScript遗传算法”示例的帖子。我对遗传算法和编程的概念非常着迷,但是即使经过了谷歌搜索,我仍然感到有些困惑。它是如何工作的? 我想这些词汇对我来说比什么都使我更困惑。我希望能看到一些简短的例子,也许还有一些解释。只是基因编程的概念以及我如何在项目中实现它,为什么?

2
静态是不好的,但是工厂模式呢?
我正在进行TDD项目,所以我尝试尽可能地坚持与这种开发相关的良好实践。其中之一是尽可能避免静态和全局。 我面临着这个问题:我有一个对象“文章”,可以将其链接到“选项”(附加的“微型文章”)。 我无法弄清楚如何拥有一种不会产生反效果或产生过多查询的好的方法,因为我将处于一种一切都分离的情况下,我基本上将需要对每个对象进行一次查询。 从我的实际角度来看,我看到3个选项: 1)构建内部文章: class Article { //[...] public function getArrOption(){ //Build an array of Options instance. //return an array of Options. } } 优点:直截了当 const:可维护性:article对象现在包含Option对象的构建逻辑。这可能会导致代码重复。 2)使用optionFactory class Article { //[...] public function getArrOption(){ return OptionFactory::buildFromArticleId($this->getId()); } } 优点:构建逻辑并非超出Article类 const:我违反了“静态很难模拟”的规则,这使得我的Article类很难测试。 3)分离所有逻辑。 //Build the array of Option instance in a …
13 php  tdd  static-access 

6
SCRUM如何管理团队成员共享的环境?
好吧,问题本身就说明了。在我的工作场所中,会发生这些情况,而且,许多敏捷著作都提倡在同一工作场所工作,并专注于当前项目,以加快工作速度。 也许我对这个话题的了解不够,也许不是那么严格,但这就是为什么我想知道敏捷在此类情况下的建议。 有人吗

7
程序员可能有什么原因想要关闭超线程?
我公司刚刚购买了新计算机来代替旧的2GB Windows XP计算机。我们团队中的某人注意到他们禁用了超线程,并告诉所有人重新启动并打开它。在禁用超线程的计算机上进行编程有好处吗?
13 hardware 

4
在PHP的魔术方法的上下文中,“ trigger_error”与“ throw Exception”
我正在与一位同事trigger_error就魔术方法上下文中的正确用法(如果有)进行辩论。首先,我认为除了这种情况外,trigger_error应该避免这种情况。 说我们有一类的方法 foo() class A { public function foo() { echo 'bar'; } } 现在说我们想提供完全相同的接口,但是使用魔术方法来捕获所有方法调用 class B { public function __call($method, $args) { switch (strtolower($method)) { case 'foo': echo 'bar'; break; } } } $a = new A; $b = new B; $a->foo(); //bar $b->foo(); //bar 这两个类的响应方式相同,foo()但在调用无效方法时有所不同。 $a->doesntexist(); //Error $b->doesntexist(); …

7
确定何时使用数据库的最佳方法是什么?
我开始使用PHP和MySQL进行网络开发的编程生涯。我已经习惯了使用db来存储大多数动态数据以及一些设置/参数数据。有时会有很多数据,而其他时候表中的条目会很少。在我看来,这似乎很自然,据我所知,这或多或少是Web开发中可接受的方法。(如果我错了,请纠正我...) 我现在正在研究桌面应用程序,我的自然倾向是再次利用数据库来存储大量信息,这些信息将通过使用该应用程序而生成。 但是,据我所知,我看不到应用程序(我使用的)经常使用db。 [编辑:自那以来,有人指出这是一个错误的假设,因为许多应用程序确实使用嵌入程序本身的轻量级数据库。] 这是什么原因?在什么时候使用数据库是合适的?关于这件事有什么标准吗?还有什么原因不使用数据库来开发桌面应用程序呢?

10
管理工作任务的有效方法?(记录/记住/确定优先级)[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我正在寻找有关有效方法的建议,这些方法可用于记录,记住工作中的任务并确定其优先级。其中许多任务属于一个主要项目,但对于独立计划也存在。这些任务本身涵盖了从开发到文档再到讨论的所有内容,具有不同的优先级,并且截止日期从即刻到几个月不等。 从历史上看,我使用记事本来跟踪这些任务,在项目旁边有一个星号,指示需要完成该操作,并在完成时带有一个复选标记。但是,随着我获得更多的责任和更多的事情要管理: 确保我已完成所有工作变得更加困难(因为有些事情会在5页内丢失) 很难记住接下来要做的最重要的事情 跟踪任务之间的依赖关系变得更加困难 有没有人发现使他们的任务更易于管理的方法?我考虑过添加一些元数据来跟踪最重要的内容和依赖项,或者可能切换到可以自动执行此操作的应用程序(如果存在这种情况)。任何地方都可以访问的东西绝对是一个加号。

7
javascript Eval功能的“不当使用”是什么构成的?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 评估是一个有争议的语言功能。道格拉斯·克罗克福德(Douglas Crockford)坚决反对。我想知道Eval会带来什么具体风险。根据这个问题,Improper use of eval opens up your code for injection attacks。 使用Eval命令有哪些不当使用,它们会打开哪些安全漏洞?
13 javascript 

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.