软件工程

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

5
在开发之前对现代应用程序建模的标准是什么?
我正在处理我的第一个企业级应用程序,我希望我的团队在提取代码之前就对整个ASP.NET MVC C#应用程序进行建模。 更新:这并不是要对何时记录/建模应用程序进行哲学上的讨论。请仅提供有关“如何”文档/模型的答案。 事实是,我一直在这个部门中工作过,而且从未真正建模过应用程序。这样做的标准方法是什么?应该使用哪种类型的图表以及文档外观如何?链接到示例图和文档表示赞赏。 在搜索时,我可以在网上找到很多东西,但是我想看看是否存在关于如何执行此操作的现代共识。 提前致谢! 结束语 我不知道这是一个棘手的话题。谢谢所有能够抛弃明显争议并提供有用答案的人。至少可以说这是一个有趣的讨论:) 我发现的另一个有用链接是:https : //stackoverflow.com/questions/61487/do-you-use-uml-in-agile-development-practices/61519#61519

6
最终现场采访的“雇用”和诚实的“差不多”之间有什么区别?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 因此,我最近接受了Google和Amazon的现场采访,并收到有礼貌的拒​​绝信,让我知道我已经接近了,但对于他们正在寻找的技能并不完全正确。 我已经完成了所有面试的最后一轮(除了一些我从小无趣的职位中获得的一些实习机会),但到目前为止,一天中有5到8个面试给了我足够的时间我的错误加起来足以使我无法参加比赛。 我知道我至少在编码问题和其他一般技术问题上做得很好,尽管我在设计OOP之类的纸牌游戏或停车库方面做得很糟糕(但是我深陷于一个物体中,并用尽了我的全部时间, (虽然范围更广)和我的编码答案(尽管它们总体上是有效的)并没有遗漏一些错误/边缘情况(例如,输入节点实际上可以作为答案而不是需要区分的情况)。我也没问题说“我不知道”,但是也许我在闲逛,需要对我认为可以回答的问题说出来,但是不能给...一个清晰的答案。 那么,是什么因素使您从善而不是“ Hire”中脱颖而出? 您对所寻找的东西或已知的东西有什么建议吗?

3
您如何处理不断变化的数据库尺寸?
在过去大约两个月的时间里,我一直在寻找解决方案或实践来处理数据库中的发布管理。我正在寻找人们认为是处理此问题的最佳过程。 我们的数据库有3个环境: 发展历程 用户验收测试(UAT) 生产 问题是有时我们要对开发数据库中的某些内容进行更改,并需要进行部署,因此某些功能可能尚未准备好发布到UAT。 最近,我们开始使用Red Gate SQL Source控件存储所有实体(具有常规提交)。 我曾考虑过要基于变更集(例如,从变更集X到后端的所有内容现在都被推送到UAT),但这意味着人们只在将我们的代码部署到源代码管理中之前,才进行可能会造成混淆的部署(特别是因为人们健忘)。使用变更集方法的另一个问题是,如果存储过程中存在需要修复的错误,变更集编号最终将超出修订的最大变更集范围,因此,如果需要根据最大变更集重新创建数据库,我们将再次推出该错误。 关于流程有什么建议吗? 谢谢

4
将X编译器写入Y中的Z的一般规则
假设X是输入语言,Z是输出语言,则f是使用语言Y编写的编译器。 f = X -> Z 由于f只是一个程序,我认为Y可以是任何语言,对吗?这样我们就可以得到分别以Y1,Y2编写的编译器f1,f2。 f1 = f Y1 f2 = f Y2 g = Z -> M h = g . f # We get a compiler X -> M 以cpython编译器为例,X是Python,Z是Python VM代码,Y是C。 cpython = Python -> PythonVMCode C interpreter = PythonVMCode -> Nothing interpreter2 = PythonVMCode -> …

7
谁在S​​crum项目上使用UX?
好。假设您正在从事教科书Scrum项目。您有一个Scrum主管与产品负责人合作。接下来的冲刺是UI重-你的程序员开始构建屏幕的时候,你真的想有一些想法,他们打算什么样子。 谁来做线框图,何时做?产品负责人?有人支持产品负责人吗?Scrum高手?如果您有UX专家,他们是在冲刺开始后与编码人员一起工作,还是他们在故事卡和约束条件旁边预先提供了线框和模型,以指导和告知开发人员正在进行的工作? 我很确定我们需要一些UX帮助,但是我真的不确定在哪里应用它。 编辑:让我改一下这个问题。 您如何在敏捷项目中提供一致的高质量用户体验?

4
C ++问题中的OS开发
作为硕士项目,我正在设计一个简单的操作系统。它被设计为在x86体系结构上以16位实模式运行。理想情况下,我想使用C ++开发此OS,并且仅在必要时使用汇编。到目前为止,我有一个用汇编语言编写的引导加载程序,用于加载由C ++和asm混合而成的内核。我的问题是关于使用C ++的问题。到目前为止,它已经编译并可以运行,但是我还没有使用任何动态内存分配。 如果我使用的是C,则编写用于处理内存分配的malloc函数是有意义的,但是在C ++中,将使用new关键字。所以... “ new”在后台如何工作以分配内存,我将如何处理呢? 必然地... 尝试使用C ++来利用其更高级别的摘要是否有意义?还是使用它会更让人头疼,我应该坚持使用C吗? 如果您认为C ++不是一个好的选择,请提供理由。

4
命名类使人衰弱[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我不确定这是否是OCD特性,但是我发现有时我被完全阻塞,无法继续命名我认为要在外部使用的类(或函数或名称空间等)时所做的工作给定项目的 以API为例。或实用程序类库。 如果命名不完全正确(在我看来),我就是无法继续...我陷入了试图提供正确名称的困境。我尝试编写一些小应用程序,用它来查看名称,但似乎无济于事... 我知道这无关紧要,并且以任何编程思维为前提,假设您一开始就可以完美使用它……我只是对此感到无能为力…… 任何提示/想法将不胜感激...

8
在超快速的数据库中扫描十亿行
背景 本地数据库包含近13亿个唯一行。每行都与特定的纬度和经度(位置)间接相关。每行都有一个日期戳。 用例 问题如下: 用户设置开始/结束日期以及值的范围(例如100到105)。 系统将按位置分组与给定日期匹配的所有行。 系统执行确定在那些日期期间具有落入给定值范围的统计可能性的位置。 系统向用户显示所有匹配的位置。 这是速度和规模的问题。 题 您能想到哪一种最便宜的解决方案体系结构可使这种系统在五秒钟内为用户检索结果? 当前系统 当前环境是: PostgreSQL 8.4(可以升级;不能选择切换数据库) R和PL / R XFS文件 WD VelociRaptor 8 GB RAM(Corsair G.Skill; 1.3 GHz) 四核原装Intel 7(2.8 GHz) Ubuntu 10.10 可以接受硬件升级。 更新-数据库结构 表中的数十亿行类似于: id | taken | location_id | category | value1 | value2 | value3 id-主键 采取-分配给行的日期 …

5
如何保护自己免受专利起诉?
在此之前,我有一些软件创意可能会申请专利(但是,决定不采用其中的任何一种)。基本上,我不希望这些想法获得专利。我不在乎是否有人实施它们,我只是不想以后再被某个专利巨魔起诉,该专利巨魔为我5年前实施的想法申请了专利。 是否可以将您的想法发布到公共网站上,并使用穷人的专利技术来确保即使其他人对您的想法进行了专利保护,您也可以免受起诉,并且有可能使他们的专利无效?(假设改革法案没有通过) )
9 legal  patents 


4
“ Python简介”演讲要涵盖哪些内容?
我在一个专注于Web开发的学生团队中。我的队友对Python感兴趣,而且我是唯一一个了解Python的人,所以我被要求下周进行“ Python简介”演讲。 我想听听您的建议,以使谈话变得有趣,而不仅仅是一堆语法问题。 PS:我的队友熟悉PHP和.NET

3
选择一个JavaScript Asynch-Loader [关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我一直在研究各种异步资源加载器,但不确定使用哪一个。在我工作的地方,我们有不同的小组努力,他们的类模块可能使用不同版本的jQuery(等)。因此,嵌套的依赖关系也可能不同。我对此没有控制权,因此这意味着我需要动态加载可能使用同一库的替代版本的资源。 因此,这是我的要求: 异步加载JavaScript和CSS资源文件。 管理版本之间的依存关系顺序和嵌套依存关系。 检测资源是否已经加载。 必须允许跨域加载(CDN) (可选)允许我们卸载资源。 我一直在看: 卷曲 需求JS JavaScript的MVC 实验室 我可以通过将版本加载到适当命名的变量中并使用数组来跟踪已经加载的内容来伪造这些要求,但是(希望)有人已经发明了这个要求。 所以我的问题是: 您使用哪个?又为什么呢 还有其他我完全满足我要求的东西吗? 您觉得哪一个最有说服力且最容易使用?又为什么呢 更新: 对于那些感兴趣的人,我尝试了上面(以及更多)的所有AMD库。最后,我选择了RequireJS。整体上它更清洁,更容易...我很高兴能使用它。


3
如何在开源项目版本中管理数据库架构更改
我管理一些K-12学校和一些大学使用的开源PHP / MySQL Web应用程序。我也是该项目的唯一开发人员。虽然它过去只不过是我老板托管的应用程序的源代码下载,但在过去的一年中,我一直致力于将其变成一个“真正的”开源项目,其中包含文档,带编号的发行版,公共变更日志等。 我正在寻求改善升级过程,其中一个潜在的难题(尤其是对于IT专业人员匮乏的学校而言)是在两个发行版之间对数据库架构的更改。它们不经常发生或变化不大,但我希望您对此过程提出建议。 当前,我维护一个基本的SQL安装脚本,以在新安装中设置数据库。这包括当前版本的完整架构;全新安装不需要任何进一步的操作。版本之间发生的更改存储在upgrade-$releasever.sql脚本中,对于所有被跳过的版本,有必要增量运行所有升级脚本。 Shell脚本不合适,因为我们很多用户都在没有Shell访问权限的主机上运行。由于其他优先事项,不太可能实现基于PHP浏览器的复杂安装程序/升级脚本。但是,我想使用基于浏览器的PHP脚本来简化升级。关于如何处理的建议?

4
GAE是否具有能够托管数百万活跃用户使用的应用程序的基础架构?
我想知道下列GAE的限制,是否有可能通过在GAE上托管该应用来构建出色的社交应用(如Facebook)? 换句话说,GAE是否具有能够托管6亿活跃用户使用的应用程序的基础架构? 我从几个论坛/博客中提出的限制(如果发现任何不足,请随时添加到列表中): HTTP请求/响应 要求大小上限:32 MB 最大回应大小:32 MB 所有请求必须在30秒内响应,否则GAE会引发DeadlineExceededException 每个Cron作业必须在10分钟内执行 Cron作业无法利用Map Reduce 5秒钟后,到另一个站点的每个GET或POST中止。您可以将其配置为最多等待10秒。(中间服务器必须与Twitter和Facebook多次协作) 客户端无法通过FTP(仅HTTP和HTTPS)连接到GAE。 自定义域没有https。仅适用于your-app-id.appspot.com域。 如果大量用户涌入,则会出现“超出配额”错误 数据库 本地开发中的数据库行为与实际服务器中的行为不同。 GQL。没有其他的。 没有查询可以检索1000条以上的记录(如果您希望让客户拥有“一键脱机立即购买”按钮,那就很麻烦了) 如果您需要线性访问大量记录以执行操作,那么您就不走运了(Google的系统已大规模集群化) Memcache值的最大大小为1 MB。 无法进行简单的文字搜索 您无法加入2张桌子。 慢(您必须阅读有关如何使用继承来分离表的知识,以便可以在表中进行搜索,获取键然后获取其父键,以避免反序列化性能) “索引太多”运行时异常 实体在一个索引中最多可以具有5000个属性值 格式*的键名(以两个下划线开头和结尾)是保留的,应用程序不应使用。 密钥名称限制为500个字节(我猜是UTF-8编码的) 语言 python或java或Go(或使用JVM的语言,例如Groovy,Scala等) 服务器问题 没有静态IP(调用第三方API可能会有节流和配额问题) 每个应用程序限制为3000个文件 无法控制运行Web应用程序的OS或硬件

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.