软件工程

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

2
Web开发的替代模式?(非MVC)[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 最近,我一直在阅读有关MVC及其与网络不兼容的博客文章。我了解了RMR体系结构之类的替代模式。 我很好奇,除了MVC,人们还在网上使用其他哪些模式?另外,如果有实现该模式的框架,请发布其链接。

16
花费太多时间进行调试
昨天,我发布了一个Web项目的v1.0版本,该项目花费了大约6周的时间(即打开和关闭)。我没有记录我的时间,但是根据我的经验,我估计在编程的全部时间中,有一半用于调试。我估计大约要花15到20个小时进行调试,这对我来说是宝贵的时间,本来可以更好地花费在编写新代码或更早完成项目上。特别是对我要在5周内上大学一年级的新生也无济于事。 事实是,我花所有的时间进行调试感到很难过。花在调试上的所有时间使我意识到在开发项目时我犯了一些非常愚蠢的错误,这些错误花费了我非常长的时间来修复。 如何防止这种情况将来发生?我不想花费50%的时间进行调试,而宁愿花费10%的调试时间,其余时间编写新代码。我可以尝试哪些技巧来帮助我实现这一目标?

1
在开发过程中创建单元测试对开发时间以及维护活动所花费的时间有什么影响?
我是一名顾问,我将向客户现场的所有开发人员介绍单元测试。我的目标是确保所有新应用程序都应对所有创建的类进行单元测试。 客户端因修复其现有应用程序中的错误而存在高维护成本的问题。他们的应用程序的寿命介于5到15年之间,在此期间,他们不断添加新功能。我非常有信心,他们将从单元测试开始中受益匪浅。 我对单元测试对开发时间和成本的影响感兴趣: 作为开发过程的一部分,编写单元测试会增加多少时间? 通过良好的单元测试,可以节省多少维护活动(测试和调试)时间?

9
如果质量检查需要12周,我们是否应该放弃尝试敏捷?
我公司中的某人最近提出了对核心产品的更改,经理们认为这些更改应触发我认为我公司认为完整的质量检查周期(即,从头开始测试整个产品套件)。显然,我们的质量检查需要12周才能完成产品的完整质量检查周期。我的问题是我们正在尝试进行敏捷开发(尽管在我看来,这大多是半估的)。我们将完成一整套冲刺,然后发布,我想质量检查将永远花费那一次。问题是,如果我们的质量检查要花12周才能完成工作,我们是否就应该放弃尝试敏捷开发?在这种情况下尝试敏捷的意义何在?
24 agile  qa 


9
在代码中引用静态数据库数据的最佳方法?
许多应用程序都包含“静态数据”:这些数据在应用程序的生命周期中实际上并没有改变。例如,您可能有一个“销售区域”列表,该列表可能是在可预见的将来的固定列表。 在数据库表中找到此静态数据并不罕见(通常是因为您想在其他表的外键中引用它)。一个简单的示例表将具有一个ID(用作主键)和一个Description(描述)。例如,您的SalesArea表将具有(至少)一个SalesAreaId列和一个SalesAreaDescription列。 现在,在代码中,您可能不想将表的每一行都一样。例如,您可能想要在某些屏幕上设置默认的“销售区域”,为某些区域提供不同的数字,或限制用户在其他区域中可以执行的操作。 在代码中引用此静态数据的最佳方法是什么?为什么? 在代码中硬编码描述。需要时,使用它可以从数据库中查找SalesAreaId。 将ID硬编码在您的代码中。在需要时使用它来查找SalesAreaDescription。 为每种目的在表中添加一列,例如“ IsDefaultOnProductLaunchScreen”列,依此类推(可能有很多)。 还有别的 处理静态数据库数据时,我还应该考虑其他一些特殊因素吗?例如,给这些表起一个特殊的名字?

10
激励同事采用更好的编码实践?
在“ 处理我过时的同事”问题中,许多人讨论了与不愿将工作流与团队的工作流程整合在一起的同事打交道的策略。 我想,如果可能的话,学习一些策略来“教”一位不了解现代技术和工具的同事,并且可能有些冷漠。 我已经开始与一位程序员合作,直到最近,他一直在公司的不同部门进行相对隔离的工作。他具有丰富的领域知识,最重要的是,他展示出了很好的解决问题的能力,而这是许多候选人似乎所缺乏的。 但是,我看到的实际(C#)代码是对VB6天的回顾。程序结构,匈牙利符号,全局变量(的滥用static),没有接口,没有测试,不使用泛型,抛出System.Exception...您就会明白。 这个程序员比我年龄大一点,至少从第一印象来看,他并没有积极寻求积极的改变。我不会说要抗拒变革,因为我认为这很大程度上是有关如何提出主题的问题,我想做好准备。 程序员往往是固执的人,大肆宣传,建立撕碎的代码审查和严格执行的政策很可能不会产生我想要的最终结果。如果这是一个新员工,一个初级程序员,那么我不会三思而后行地采取“导师”的立场,但是我非常谨慎地将有经验的员工视为无知的新手(他不是-他只是没有与该领域的某些进步保持同步)。 我如何通过柔和的说服力和非实质性的激励措施以Dale Carnegie的方式提高开发人员的代码质量标准?在不造成对抗性情况的情况下,进行细微,渐进式变化的最佳策略是什么? 之前是否有其他人(尤其是首席开发人员)遇到过这种情况?哪些策略成功地激发了兴趣并创造了积极的群体动力?哪些策略没有成功,会更好地避免? 说明: 我真的觉得有些人是根据个人的感觉来回答的,而没有真正阅读问题的所有细节。请注意以下内容,这些内容本应暗示,但我现在要明确指出: 由于年龄的原因,这个同事只是我的“高级”。我从未说过他的头衔,势力范围或在该组织的任职年限超过我,而实际上,这些都不是真的。他是一名LOB程序员,已经被主要开发部门所吸引。而已。 我不是新员工,也​​不是初级程序员,也不是其他幼稚的白痴,他们都计划在一夜之间将公司转型。我基本上负责软件过程,但是正如许多作为“潜在客户”工作过的人所知道的那样,职责并不总是与组织结构图完全相关。 我不是在问别人如何走我的路,来死还是要高水。如果我愿意,我可以这样做,最终结果是这个人会变得不满和/或辞职。请尝试了解我正在寻找一种社交,合作的方式来推动变革。 提到“ ...全局变量...没有测试...抛出System.Exception”是为了证明问题不仅是表面的或美学的。可能适用于相对较小的CRUD应用程序的做法不一定适用于大型企业应用程序,实际上,到目前为止,没有代码实际通过了集成测试。 请尝试从表面上看待这个问题,接受我实际上知道我在说什么,然后回答我实际提出的问题或继续前进。 PS对那些提供建设性建议而不是与前提争论的人,我表示由衷的感谢。我希望将其保留一段时间,因为我希望能从现实生活中听到更多。

7
Python生产力VS Java生产力
在SO上,我遇到了一个问题,即哪种Java或Python最适合在Google AppEngine上开发。许多人吹嘘使用Python而不是Java可以提高生产率。关于Python与Java生产率的争论,我要说的一件事是,Java具有出色的IDE来加快开发速度,而Python由于其动态特性而在该领域确实缺乏。 因此,即使我更喜欢将Python用作语言,但我认为与Java相比,它不能显着提高生产率,特别是在使用新框架时。显然,如果它是Java vs Python,并且您可以使用的唯一编辑器是VIM,那么Python可以极大地提高您的生产率,但是当将IDE引入方程式时,它就不是那么明确了。 我认为Java的优点通常仅在语言水平上评估,并且常常基于过时的假设,但是Java在语言本身之外具有许多优点,例如JVM(经常受到批评,但潜力巨大),出色的IDE和工具,大量的第三种政党图书馆,平台等。 问题,Python /相关的动态语言是否真的可以带来经常提到的巨大的生产率提升?(考虑使用新框架并使用中型到大型应用程序)。

7
我的“代码示例”应该是什么样?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我刚刚接受了不错的电话面试(对于CakePHP相关职位,这并不是一个特别重要的问题)。面试官似乎对我的简历和个性印象深刻。但最后,他要求我通过电子邮件将我现有工作项目中的代码示例发送给他,“以检查您是否不是秘密地可怕的程序员,哈哈!” 我不太担心我的代码不能站立自己的两只脚,但是我非常是一名中级程序员,而不是专家。有什么明显的缺陷,我应该确保我的代码示例不他们统治我出去当场陷入,万一?其次,这可能是问题最难回答的部分,代码示例中的哪些功能会如此令人印象深刻,以至于它们立即使您更倾向于程序员? 欢迎所有想法或建议!

3
软件架构师,软件工程师和软件开发人员(程序员)之间有什么区别?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我正在阅读美国有线电视新闻网(CNN)上有关美国最高薪工作的文章。一个软件架构师被列为#1。一个软件工程师列为#9。和一个软件开发者(程序员)列在#35。我认为用程序员代替计算机科学家是正确的,对吧? 在此之前,我一直认为“软件工程师”是经验丰富的程序员和团队负责人的头衔。但是,“软件架构师”又适合什么地方呢?我阅读了CNN说明,但是它们并不能真正满足我的需求,因此我假设我可以从这里的优秀用户群中获得更详尽,经验更丰富的说明。 预先感谢您收到的所有回复。

11
在jQuery之前学习JavaScript有多必要?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 在我看来,当我查看JavaScript时,看起来好像不是我的茶。当我遇到jQuery时,我很喜欢它。一年后,我坐着看了15天的Nettuts + jQuery截屏视频,现在我相当有信心,如果不包括jQuery的库,我不会开发一个网站。 我从来没有感觉到这让我退缩,但是我的问题是,有一天会回来并咬我,这是因为我没有坚实的JavaScript基础,但是在踏入最优秀的JavaScript之一之前(如果不是最好的)框架?还有其他人采用这种方法吗?

8
Ruby还是Python?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 这个问题是非常主观和开放的。甚至听起来我应该自己研究并做出自己的决定。但是我想把它放在那里,并从别人那里得到一些想法。 长话短说-我对老鼠赛跑感到精疲力尽,今年参加了自费休假。这主要是为了摆脱公司的磨练和四处旅行,但是我也想尝试新技术并做一些自学项目,以跟上编程的速度,而且-我只是喜欢与他人打交道。编程,没有压力! 事情是这样的:我是一生的C / C ++ / Java程序员。自从我在整个编程生涯中一直使用这种语言家族以来,我有点bracket不休。因此,我想学习与该组在语法上没有紧密联系的语言。我基本上想寻找的是一种相对通用的语言,易于学习,具有一些不同于C ++ / Java的新概念,并且拥有一个良好的社区。第二个考虑因素是它具有良好的Web开发框架。第三,要考虑的是它并不完全是学术性的(请阅读:使用它在现实世界中有很多工作)。 我将其范围缩小到了Ruby或Python。我对Ruby的印象是它非常面向Web,它的唯一真正应用是作为服务器端脚本语言来做Web东西(主要是Ruby on Rails)。我对Python几乎没有任何印象,只是它似乎具有热情的支持者,并且似乎是一种相当通用的语言。 TL; DR并尽可能简洁地说:对于C ++ / Java的人来说,学习哪种新的编程观点会更好?哪个更开放,更通用并适用于更广泛的应用程序?目前,我倾向于Ruby,但在某种程度上来说,我担心它似乎只不过是服务器端网络语言而已。
24 learning  python  ruby 

7
TDD /测试过多的开销/维护负担?
因此,您已经多次从不真正了解测试价值的人那里听到过。刚开始时,我是敏捷和测试的追随者... 我最近在讨论有关在产品重写上执行TDD的问题,其中当前团队不进行任何级别的单元测试,并且可能从未听说过依赖注入技术或测试模式/设计等(我们什至不会继续清理代码)。 现在,我对产品的重写负全部责任,并被告知,以TDD的方式进行尝试,只会使它成为维护的噩梦,并且对于团队维护来说是不可能的。此外,由于它是一个前端应用程序(不是基于Web的),因此添加测试是没有意义的,因为业务驱动力发生了变化(通过更改当然意味着有所改进),这些测试将过时,其他开发人员将来的项目将无法维护它们,并且将成为它们修复等方面的负担。 我可以理解,在目前没有任何测试经验的团队中,TDD听起来并不好,但是在这种情况下,我的观点是我可以向周围的人教我的实践,但更进一步,我知道TDD会让您变得更好软件。即使我要使用TDD来生产软件,并抛弃所有测试以将其交给维护团队,与从一开始就完全不使用TDD相比,这肯定是更好的方法吗? 我被提到在一个从未听说过的团队的大多数项目中执行TDD时被击落。“接口”的想法和外观奇特的DI构造函数使他们望而却步。 在尝试出售TDD的简短对话中,有人可以帮助我吗?在屈服于公司/团队之前,我通常会有一个简短的辩论窗口。
24 testing  agile  tdd  bdd 

16
在大学的第一天,您会对一群软件工程专业的学生说些什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 下周五,我与一群软件工程学生进行了简短的演讲(​​30分钟),他们将就读与我所在的同一所大学。 一些背景: 这个地方是乌拉圭蒙得维的亚 大学是共和国大学(公立,免费大学) 软件工程计划需要5年的时间(如果您非常优秀并且不提早开始工作)。每年大约有800名新学生,每年大约80名毕业生。条件严酷,尤其是头两年。 他们中的大多数人可能不知道什么是软件工程或编程。 我的目标是以某种方式给他们一个领域的想法,并希望激励他们忍受前方的艰辛,最终成为成功的开发人员。 所以问题是:您会告诉这些人什么?
24 education 

6
在线用户名/句柄的专业性
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我过去曾经并且现在继续在许多Internet站点上使用句柄“ thanatos”,如果该句柄不可用(发生这种情况的时间约为50%),则使用“ deathanatos”。 “ Thanatos ”是希腊神的名字或死亡的化身(不要与黑社会的希腊神Hades混淆)。“ Dea”是一种自然的玩法,可以使手柄在已经采用首选手柄的情况下工作,而不必求助于数字并保持明显的发音。多年前我采用了手柄-当时,我正在阅读伊迪丝·汉密尔顿(Edith Hamilton)的《神话》(Mythology)和皮尔斯·安东尼(Piers Anthony)的《苍白的马》(On a Pale Horse),这两个都是我的最爱,而这个名字就是由此而来的。 当我创建手柄时,我还很年轻,并且非常重视在线时的隐私权,没有透露自己的名字。随着我成为一名能力更强的程序员,我开始想以FOSS许可等方式发布我的一些私人作品,有时也以我自己的名字发行。这已经开始将此句柄与我的真实姓名联系起来。在过去的几年里,随着我一直在寻找工作,我越来越意识到自己的“网络形象”。作为一名程序员,我的网络访问量超过平均水平,并且我开始怀疑:这个句柄名称是否专业?句柄名称在专业意义上重要吗?我应该“重塑品牌”吗?(虽然一个人显然想避免仇恨或其他令人反感的名字,但“死亡”(与我的名字联系在一起)之类的话题是否恰当?有什么可以被否定的呢?) 为了使这一点更加与程序员有关:程序员在线-很多-我们中的某些人(有些不是我们)倾向于将重点放在“网络存在”上。我认为,谨慎的程序员(或从事在线互动的职业中的任何人)会意识到他们的网络存在。尽管不仅仅限于程序员,无论好坏,它都是我们世界的一部分。

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.