Questions tagged «engineering»

软件工程(SE)是在软件的设计,开发,操作和维护以及对这些方法的研究中采用系统,规范,可量化的方法的应用;即工程学在软件中的应用。

14
是否有任何技术原因导致在编程中默认日期格式为YYYYMMDD而不是其他格式?
有什么工程上的原因为什么会这样?在RDBMS的情况下,我想知道它与性能有关,因为“ YEAR”比“ MONTH”更具体,例如:您只有2000年,而每年都有“ January”,这样可以更轻松,更快捷地按年份过滤/排序某些内容,这就是为什么年份第一的原因。 但是我不知道这真的有道理吗?有什么理由吗?

9
编程中的内存管理是否已成为无关紧要的问题?
背景信息 我重新访问了一个我很久没去过的古老(但很棒)的网站-Alioth Language Shootout(http://benchmarksgame.alioth.debian.org/)。 几年前,我开始使用C / C ++进行编程,但是由于参与的项目中的语言限制,从那时起,我几乎一直只在Java中工作。我不记得这些数字,而是想大致了解一下Java的状况。在资源使用方面与C / C ++背道而驰。 该执行时间仍然比较好,与Java在表现最差的4倍比C / C ++慢,但平均约(或以下)2倍。由于Java本身实现的性质,这不足为奇,并且它的性能时间实际上比我预期的要短。 真正的难题是内存分配 -最糟糕的是,Java分配了: 内存比C高52倍 比C ++高25倍。 52倍的内存...绝对令人讨厌,对吗?...还是?内存现在相对便宜。 问题: 如果我们不是在对工作内存(即嵌入式系统等)有严格限制的目标平台上说话,那么今天选择通用语言时是否应该考虑内存使用情况? 我之所以提出这样的要求,部分原因是因为我正在考虑迁移到Scala作为我的主要语言。我非常喜欢它的功能方面,但是从内存上看,它比Java还要昂贵。但是,由于内存似乎正在以每年更快,更便宜和更丰富的方式(似乎越来越难找到没有至少4GB DDR3 RAM的家用笔记本电脑),因此可以不争辩说资源管理正在变得越来越多与(可能需要昂贵的实现方式)高级语言功能无关,后者可以更快地构建更具可读性的解决方案?


2
如何管理和估计从客户那里收到的非结构化需求
在项目投标阶段的很多时候,我从各种来源(电子邮件,Word文档,excel)以非常非结构化的格式从潜在客户那里收到软件系统的要求。通常是一群来自客户方面的“产品开发”人员针对他们所遇到的业务问题提出这些“建议的解决方案”。尽管他们是业务领域的专家,但很多时候他们没有正确的解决方案。 这导致 相同需求的多个版本 将两个需求混为一谈 稍后有几个版本的需求,再将合并在一起的需求分离出来,每个需求都包含一些新增加的内容 您如何处理这些需求,并在开始开发之前将它们分类为正确的用例?从第一次构思到将其具体化为合适的用例,我们可以使用哪些工具来跟踪特定需求的历史?根据这样收到的需求来估算工作是一场噩梦,最终导致在正确理解需求并正确估算针对需求的工作时犯了错​​误。 一旦我们赢得了该项目,客户就可以对他们的要求进行更多的考虑,并能够正确地阐明它。在这种情况下,发生的事情是某些功能被丢弃,某些功能得到增强,某些功能又有了新的转变。从根本上讲,这可以使赢得项目之前所做的某些工作项估计无效。我很想知道是否有任何系统可以构建具有特定需求的树,以及每个分支如何导致不同的估算。 有任何技巧,工具和技巧可以使此活动更易于管理吗?我只是想从比我在需求管理和工作量估算方面更有经验的人那里获得一些见解。

3
软件工程和计算机科学专业应该分开吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 几十年来,成为计算机开发人员的公认程度是“计算机科学”。关于该学位是否真的为学生开发软件做好了准备, 我们已经有几个 问题。 在过去的八年左右的时间里,一些学校开始提供编程方面的多个不同专业。使用我学校的课程: 计算机科学,从第一年的一些入门编程课程开始,然后侧重于理论计算机科学,算法和一些OS知识。大多数班级都涉及几个较小的项目和作业,这些作业和作业都是单独或成对完成的。 软件工程从相同的入门编程课程开始,进行了几类理论,然后涉及软件开发实践(测试,过程方法,软件度量,需求收集)和软件设计(分布式系统设计,信息系统设计) ,实时/嵌入式设计,子系统设计等) 不同的学校做的方式不同,因此以上只是我所熟悉的真实示例。我要问的是:是否需要编程方面的专业?

1
有人可以解释V模型的过程吗?为什么与瀑布模型不同?
似乎V模型只是瀑布模型,其瀑布的下半部分向上弯曲以形成V。我不知道它如何添加任何新内容。 从图中,我也不了解流程。有指向各个方向的箭头,我不明白首先要做什么。我们是否从左上方跟随V,向下到底部中心,然后再回到右上方?还是我们降低V,在物品降低之前先做所有升高的事情? 互联网对此模型缺乏足够的解释。如果有人可以用真正的StackExchange形式解释它,那就太好了:)

3
REST API版本控制。每个API都有自己的版本
在URL中指定REST API的版本是很普遍的,特别是在路径的开头,例如: POST /api/v1/accounts GET /api/v1/accounts/details 但是,我还没有看到将版本与每个API关联的任何设计。换句话说,我们分别维护每个API的版本。即: POST /api/accounts/v2 GET /api/accounts/details/v3 使用这种方法,当需要中断更改时,我们可以增加特定API的API版本,而无需增加整个API的版本。 使用此样式而不是通用样式有什么弊端?

2
有人做过CSDP认证吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在寻找一些认证,这些认证可以潜在地增强我作为软件工程师的知识和市场价值。IEEE的认证软件开发专家(CSDP)引起了我的注意。当我在网上寻找任何使用它的用户体验时,我找不到任何实质性的东西。似乎不太受欢迎。我当然没有听说过我的组织或朋友圈中有做过这项工作的人。 我想从社区成员那里了解是否有人进行了此项认证及其经历。认证在知识方面有用吗?它增加了简历的重量(而不是重量!)?
15 engineering  csdp 

3
什么是测试中的开发人员?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我最近正在与一名招聘人员交谈,该人员希望将我安排在一家公司中担任Test Developer的职位。从本质上讲,他听起来像一个职位,您可以摆弄新的编程技术,测试软件中的错误和改进,但是不必担心标准截止日期。您将在工作中变得很有创造力。 但是这种描述对我来说还是有点模糊。我从事Web开发已经有很多年了,主要是使用PHP。所以我想知道社区中的其他人是否更多地了解这些职位通常需要做什么。 我知道这可能不是适合该论坛的主题,但是这是我在Stack Exchange中可以找到的最合适的东西,如果没有关闭,我将不胜感激,因为在这里实际上没有其他地方可以询问它了。 。 我已经尝试过Google搜索,但是那里没有很多信息。那么测试中的开发人员到底是什么?

7
我可以在没有工程师的情况下申请“软件工程师”职位吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 我来自某个国家/地区,在该国家/地区中,“工程师”或“工程”一词的使用受到严格的法规管制。这意味着您必须拥有工程学学位并通过考试才能加入工程师专业协会才能使用该头衔。我对全球行业中使用的“软件工程师”一词有些困惑。 我读了关于软件工程师维基百科页面和链接部有关术语的使用,它提供了深入的讨论页面。但是我的问题更具体。 知道我没有工程学学位(但是,我想认为我生产的是功能齐全,设计良好的软件!),当我看到某跨国公司的软件工程师的职位时,我是否适合申请?我应该以某种方式强调我没有工程学学位吗?

11
信息技术真的在工程吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 在旅行时,我遇到了一位坐在我旁边的数学家。他在讨论中说:“ ... 没有什么比IT工程更像编程了。” 真正的工程是架构,电气和机械。 这让我思考,我感到困惑。我的大脑的百分之一也同意,因为在印度陆军中,工程兵团没有像计算机工程这样的学科。他们不认为编程是工程学。这是几年前我听到的,我不知道印度军队现在的想法。 您对此有何看法?

2
如何真正找出面向对象设计中必须要做的事情?
首先免责声明:我真的不知道这个问题是否适合该网站,但是我仍然发现它不仅对我而且对其他初学者都是一个相关的问题。如果可以改善问题以使其适合此处,请指出int注释。如果不合适,也让我知道,如果可能的话,让我知道可以在哪里讨论,因为我没有找到任何好的论坛。 我在2009年学习PHP时就学会了编程。2012年晚些时候,我转到了C#和.NET。无论如何,编码不是问题,写下算法不是我的问题。我的实际问题是要知道必须编码什么才能达到要求,必须在哪里编码。 网络上提供的大多数课程都讨论了如何 -如何用某种语言编写代码,如何使用一些API集等。这不是我的意思。 这些年来,我读了很多有关一堆东西的信息:面向对象的分析和设计,设计模式,领域驱动的设计等等。例如,我了解SOLID原则,DDD的一些主要思想,例如聘请领域专家的必要性,开发无处不在的语言等。我敢说我的理论背景至少合理。 但是,当谈到练习时,我觉得自己是一场灾难。前一段时间,我需要继续开发已经由其他人开发的金融系统。这就是用C#和WinForms开发的那种“旧系统”。这是我第一次选择一个具有实际领域复杂性,业务规则等等的项目。 我承认,当我大多数时候收到要求时,我认为“这到底是怎么做的?” -我什至不知道如何开始着手研究需求以弄清楚必须做什么。我认为我的主要困惑是我必须编写什么代码,什么类,接口以及每条逻辑的去向,每件事必须在哪个类上。问题是我不知道从哪里开始。 大多数时候,经过很多思考,我最终想到了一些主意,但是我却永远不知道如何判断我的主意是否正确。 我的意思是我不认为这是一种理论上的不足,因为我说我已经阅读了有关软件体系结构和面向对象的一堆建议,但对确定实践中必须做的工作并没有多大帮助。 所以,我怎么能学会真正 做到面向对象的设计?我要学习的是:给定的需求知道如何开始在一个过程中进行工作,从而找出必须完成的工作以及每个代码所属的位置。我还如何学习判断我的想法是否正确? 我相信在这里不可能完全解释这一点作为答案。但是,我所寻找的可能是根据网站样式而定的答案,只是给出概述并指出一些参考资料(书籍,在线课程等),这些参考资料可用于扩展思想并真正学习这些知识。

6
要使软件工程成为正规专业,需要改变什么?
与其他专业(例如会计,法律,医学等)不同,软件工程没有专业范围的认证。 我非常了解旨在作为专业知识和经验证明的众多技术和方法学特定认证,但是没有公共软件工程学会/理事机构设置(并有权进行法律评估)公认的专业标准。 我知道软件是一门充满活力的野兽-它既是艺术,又是科学-但我想知道软件工程是否有潜力成为正规专业。 要发生什么需要改变,这甚至是一件好事吗? (如果有人知道对该主题进行正式研究,我将不胜感激。) 更新资料 我同意以下关于软件工程当前认证水平的许多优点。我还发现有些国家将软件工程视为一种职业,而其他国家却没有,这很有趣。 但是,“正式职业”一词似乎以及它在软件工程中的应用似乎有点笼罩。我认为软件工程的关键问题-而不是成熟的职业-的主要原因是,如果您是一位认证的软件工程师,并且-例如-您为电梯编写的某些软件发生故障并导致人员死亡,您的认证和/或正式专业机构的成员资格不会被撤销。 当然,您的公司可能被起诉数以百万计,您个人可能会丢掉您的工作并获得不好的推荐,但一般而言,由于您被该公司雇用,您个人受到有限责任盾的保护。换句话说,据我所知,没有适当的法律评估/执行(不同于其他正式职业及其执政协会),其职责是一旦您产生了巨大的负担就正式禁止您进行交易。 我很喜欢这样一个答案,即软件工程(按现状)是一种精英,不需要正式的职业,这是一件不可改变的好事。同时,我认为我们需要对任务关键型软件的软件工程师与其他/非关键型软件的开发人员进行明确区分。 对于那些在关键任务软件上工作过或曾经工作的人-是否要承担个人责任?如果软件工程师犯了代价高昂的错误,是否肯定需要正式的回应?

1
是否有关于注释源代码对软件质量,可维护性和开发人员生产力的影响的经验研究?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 6年前关闭。 我主张对源代码进行评论并记录软件产品。根据我的个人经验和观察,在必须开发软件或维护软件的过程中,对经过严格注释的源代码进行的工作以不同的方式帮助了我。 但是,还有一个阵营说评论最终毫无价值,或者其价值值得怀疑。许多不加评论的编码支持者认为: 如果一段代码写得很好,那是自我解释,因此不需要注释 如果一段代码不是不言自明的,则对其进行重构并使其变得不言自明,以便它不需要任何注释 您的测试套件就是您的实时文档 随着时间的流逝,代码和注释不同步,这成为令人头疼的另一个原因 敏捷表示工作代码比大量文档更重要,因此我们可以放心地忽略编写注释 对我来说,这只是教条。再次,我个人的观察是,由才华横溢,经验丰富的开发人员团队编写的软件最终最终会产生大量不言自明的代码。 同样,Java API,Cocoa API,Android API等表明,如果您要编写和维护高质量的文档,则可以实现。 综上所述,基于个人信念的有关文档优缺点的讨论以及对源代码的评论通常不会以良好的结局而无法得出令人满意的结论。 因此,我正在寻找有关软件文档(尤其是注释源代码)对其质量和可维护性及其对团队生产力的影响的影响的学术论文和实证研究。 您是否偶然发现了此类文章?如果有的话,结果如何?

4
如何最好地让那些无所事事的非技术经理束手无策,并且仍然能提供出色的工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 7年前关闭。 这个问题可能被认为是主观的(我得到了警告)并且已经结束,但是由于我需要一些很好的建议/经验,因此我将冒险。 我看了在下面“关于”页面的Fog Creek软件,该公司认为乔尔Spolsky的成立,是CEO: 早在2000年,Fog Creek的创始人Joel Spolsky和Michael Pryor一直在寻找一个工作场所,那里程序员有体面的工作条件,并有机会做出色的工作,而不会感到烦恼,非技术经理无法进入方式。每个高科技公司都声称他们想要优秀的程序员,但他们不会把钱花在嘴上。 它从物理环境开始(数十个小房间被塞进一个嘈杂的黑暗房间,销售人员在电话里大喊大叫,使开发人员无法集中精力)。但这远不止于此。经理们对变更感到恐惧,他们将任何新想法视作一种被隔离的奇异病毒。拿破仑复杂的初级管理人员坚持认为事情必须按照自己的方式做,否则您将被解雇。公司家具警察在任何人将电影海报贴在小隔间里时都感到痛苦不已。杂乱无章的事情如此猖that,以至于即使有好的主意,也不可能用它们来制造产品。缺乏经验的经理人实行即时运行管理,就如何做事情发出严厉命令,而又不会四处寻找他们的法令的滑稽结果。 最糟糕的是,负责的MBA类型认为编码是一种支持功能,基本上是一种花哨的键入形式。 一个钝真相关于当今大多数大型软件公司的!不幸的是,并不是每个开发人员都像Joel Spolsky 一样gutsy(或者lucky,我可以说吗?)!所以我的问题是: 如何最好地与此类经理合作,让他们远离困境,同时仍能完成出色的工作?

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.