软件工程

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

11
时间估计出错时该怎么办?
假设您估计一个案件的时间为3天。在第二天中,您会注意到情况不断增长,并且弹出了新的方案,这些新方案在进行时间估算时并未计算在内。新的发现导致额外的2天(总共5天)。这是一个典型的问题,您作为开发人员迟早会遇到。 当您要通知项目负责人新的交货时间时,可以使用哪种策略? 通常您会得到一个问题,为什么?您如何激发新的交货时间? 事实是,在SDLC期间,许多项目没有花太多时间进行分析和设计。 编辑: 在非常复杂的项目中,无论您花费多少合理的时间进行分析与设计,由于业务规则过于复杂,总是会感到意外。但是,在这种情况下,我认为项目负责人必须意识到复杂性,并在出现意外情况时保持正确的态度。问题是如何应对那些不了解复杂性的项目负责人。

3
使用struct和std :: pair之间有什么区别?
我是经验有限的C ++程序员。 假设我想使用STL map存储和操作某些数据,我想知道这两种数据结构方法之间是否存在任何有意义的差异(在性能上): Choice 1: map<int, pair<string, bool> > Choice 2: struct Ente { string name; bool flag; } map<int, Ente> 具体来说,使用a struct而不是simple会产生任何开销pair吗?

2
Python运行时实际上是如何工作的?
我在理解a的概念时遇到了一些问题runtime library,尤其是Python 的概念。所以我写了一些hello world python程序,打算执行它,所以我写了python ./hello_world.py。 在我按下Enter键和在CPU上执行python代码所生成的机器代码之间,要执行什么步骤?以及这与Python运行时系统和/或库有什么关系?
26 python  runtime 


8
在IF语句中对多个条件进行单元测试
我有一大堆看起来像这样的代码: function bool PassesBusinessRules() { bool meetsBusinessRules = false; if (PassesBusinessRule1 && PassesBusinessRule2 && PassesBusinessRule3) { meetsBusinessRules= true; } return meetsBusinessRules; } 我相信针对此特定功能应进行四个单元测试。三项测试if语句中的每个条件,并确保其返回false。另一项确保该函数返回true的测试。 问题:实际上应该有十个单元测试吗?九个检查每个可能的故障路径。IE浏览器: 错误错误错误 错误错误正确 错误正确错误 对于每种可能的组合,依此类推。 我认为这太过分了,但是我团队中的其他一些成员却没有。我的看法是,如果BusinessRule1失败,那么它应该始终返回false,无论是首先检查还是最后检查都没有关系。

7
系统编程到底是什么?
我从不了解系统编程的含义。给出的通常定义是“ ...执行接近Os的操作或扩展Os的功能...”。 是否直接使用Windows API而不是使用某些库来说明文件I / O是否使其成为系统程序?正在编写Android OS系统编程吗?如果我写了一些东西会通过类似Android上的app之类的控制台公开linux内核,我是否在进行系统编程?如果我正在编写控制洗衣机的软件,是否正在编写系统程序? 我是编程的初学者,这使我无休止。请解释与“应用程序编程”的对比。

11
避免使用Postfix增量运算符
我已经读到由于性能原因(在某些情况下),我应该避免使用后缀增量运算符。 但这不影响代码的可读性吗?在我看来: for(int i = 0; i < 42; i++); /* i will never equal 42! */ 看起来比: for(int i = 0; i < 42; ++i); /* i will never equal 42! */ 但这可能只是出于习惯。诚然,我没有看到很多用处++i。 在这种情况下,性能是否牺牲了可读性?还是我只是盲目的,++i可读性比i++?

4
重构以更高的LOC结束是否有意义?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 去年关闭。 在某些情况下,比起更简洁的代码,更冗长的代码(如更逻辑的语句)更干净吗?

2
为什么FAT16不能存储超过2 GB?
我去查找FAT16信息的所有站点都声明性地声明它不能分配超过2 GB的空间。好。大。我相信你。但是,您如何得出这个结论(不仅仅是测试它)? 是否可以使用某种公式来确定FAT16系统可以容纳多少?

4
微服务和数据存储
我正在考虑将整体式REST API移至微服务体系结构,并且对数据存储有些困惑。如我所见,微服务的一些好处是: 水平可伸缩-我可以运行微服务的多个冗余副本以应对负载和/或服务器故障。 松散耦合-我可以更改微服务的内部实现而不必更改其他服务,并且我可以独立部署和更改它们等。 我的问题是数据存储。在我看来,有几种选择: 所有微服务共享一个数据库服务-这似乎完全消除了松耦合的任何好处。 每个微服务上的本地安装的数据库实例-我看不到横向扩展此方法的方法,因此我认为这不是一个选择。 每个微服务都有自己的数据库服务-这似乎是最有前途的,因为它保留了松散耦合和水平扩展的优势(使用冗余数据库副本和/或跨多个分片) 在我看来,第三种选择似乎是唯一的选择,但是对我来说,这似乎是难以置信的沉重负担,并且是一种过度设计的解决方案。如果我理解正确,那么对于具有4-5个微服务的简单应用程序,我将必须运行16-20台服务器-每个微服务两个实际的微服务实例(以防服务器故障,并且在不停机的情况下进行部署),以及每个微服务有两个数据库服务实例(如果发生服务器故障等)。 坦率地说,这似乎有些荒谬。要记住,一个现实的项目可能会提供4-5个以上的服务,而16-20个服务器运行一个简单的API,该不该?我是否缺少一些基本的概念来解释这一点? 回答时可能会有所帮助的一些事情: 我是该项目的唯一开发人员,并将在可预见的将来。 我正在使用Node.js和MongoDB,但是我对与语言无关的答案很感兴趣-一个答案甚至可能是我使用了错误的技术!

3
如何找到带有虫洞节点的最短路径?
这是我想通过代码执行的示例。我知道您可以使用跳转点搜索轻松地从绿色节点到红色节点,甚至A *也不会出现问题。但是,如何计算变形呢? 在图中,您可以看到,沿着蓝色路径,从绿色节点到红色节点仅需8步。蓝色路径会立即将您的位置从一个紫色节点移动到另一个紫色节点。花费2个动作的中间空间是您必须移动到的两个变形区域之间的一个点。 显然,走蓝色路径更快,因为您只需要(大约)移动一半到黄色路径,但是我该如何编程呢? 为了解决此问题,我们假设您可以使用图形周围有多个紫色“变形”,并且我们确切知道每个紫色点将变形到什么位置以及它们在图形上的位置。 有些紫色经线是双向的,而有些不是,这意味着,有时您只能从一侧进入经线,而在扭曲后不能返回。 我已经考虑了解决方案,但得出的结论是,我可以通过检查到每个变形点的距离(减去单向点)以及这些点之间的差以及与之接近的点来计算问题。 。 该程序必须弄清楚采用第二种经线比从第一条跳跃走更有益。因此,与其先移动6个点,然后进行变形,然后再步行剩余的8步(这比根本不使用经线要快),不如先移动6个点,然后再进行两次移动到第二个经线。 编辑:我意识到蓝色的路径实际上将采取12步,而不是8步,但问题仍然相同。


2
基于Cookie的认证,基于会话的认证,基于令牌的认证,基于声明的认证
我已经阅读了有关身份验证的内容,并对类型分类感到困惑。 让我们从基于Cookie的身份验证开始,如果我理解正确的话,关键是用户身份验证所需的所有数据都存储在cookie中。这是我的第一个困惑:我们可能会在Cookie中存储 会话ID,因此它成为基于会话的身份验证? 索赔,因此应将其称为基于索赔的身份验证吗? 我发现有些人甚至将JWT令牌存储在cookie中,但这似乎是自定义身份验证流的自定义实现... 现在,我们切换到基于声明的身份验证。主要元素是索赔,索赔的集合可以用作容器 Cookies(如上所述) 令牌(以JWT为例)。 另一方面,当我们谈论令牌时,它可能包含任何类型的信息...例如会话ID ... 那我错过了什么呢?人们为什么在谈论身份验证类型时不定义诸如Cookie-Session-based或Token-Claims-based身份验证之类的东西?


8
在数据库中存储地理地址/位置的通用方法是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 什么是地理地址/位置的正确格式,最适合地球上的任何地址?目前,我有: 国家 市 街 数 文本数据(为简单起见) 压缩 纬度/经度 但是我相信我可以改善它:一个国家或地区或地区之类的东西。或在新加坡或香港没有区域/地区/州。 可能没有街道,但道路,林荫大道或其他东西。许多建筑物可能是复合的。可能有地板。房间号。等等....

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.