软件工程

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

4
解释模型视图控制器
我在开发动态网站方面的经验主要限于Java Servlet。我已经使用Tomcat开发了各种Java servlet,并且我毫不犹豫地说我对这项技术以及前端的客户端HTML / CSS / Javascript相当精通。 当我想到“动态网站”时,我认为:用户请求带有查询字符串的URL,服务器接收查询,然后继续动态输出HTML以响应查询。这通常涉及与数据库的通信,以便获取请求的数据以进行显示。这基本上doGet是Java方法背后的思想HttpServlet。 但是,这些天来,我越来越多地听到有关诸如Django和Ruby on Rails之类的较新框架的信息,它们都利用了“模型视图控制器”架构。我已经阅读了许多 解释MVC的文章,但是我很难真正理解其好处。我知道一般的想法是将业务逻辑与UI逻辑分开,但是我看不出这与普通的Web编程有什么真正的不同。从本质上讲,Web编程迫使您将业务逻辑(后端服务器端编程)与UI编程(客户端HTML或Javascript)分开,因为两者存在于完全不同的编程领域。 问题: MVC在Java servlet之类的东西上提供了什么?更重要的是, MVC到底是什么?与使用Java servlet(甚至是Java servlet)甚至更传统的方法来开发动态网站时,MVC有何不同?像CGI这样的旧版本?如果可能,在解释MVC时,请提供一个示例,说明如何将MVC应用于Web开发过程以及它如何带来好处。

9
网站的动态和静态类型语言[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 该语句表明,静态类型语言不适用于网站: 我将与建立网站进行对比。呈现网页时,通常您会在网页上交互许多组件。您在这里有按钮,在那儿有小部件,网页上有数十个小部件,网站上可能有数十个或数百个动态的网页。对于具有如此大的表面积的系统,使用静态类型的语言实际上是不灵活的。当我想交互地按动按钮而不是什么时,我可能会发现很难在Scala中编程并使用它渲染网页。如果整个系统必须是连贯的,就像整个系统必须进行类型检查一样,只是为了能够左右移动按钮,我认为这确实是不灵活的。 资料来源:http : //www.infoq.com/interviews/kallen-scala-twitter 它是否正确?为什么或者为什么不?

5
如何向开发人员报告错误?程序员寻求受过错误报告的教育
我希望获得有关如何对公司的其他部门进行有关如何提交正确的错误报告的教育的提示和建议。目前,我们获得的门票如下: 当我单击此链接时,我得到一个404。(它们包括404s的页面,而不是导致它的页面) 有时右列会流入按钮列。(无屏幕截图或其他信息) 更改xxx似乎正常。(EOM) 有没有人有一个错误提交过程/表单来指导用户提交尽可能多的信息?

9
如何提高我的代码阅读技能
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 好吧,标题中有一个问题-如何提高我的代码阅读技能。 就编译时间和整个系统的测试时间而言,我目前正在开发的软件/硬件环境相当慢。该系统非常旧/复杂,因此将其拆分为几个较小的,更易于管理的子项目在不久的将来是不可行的。 我已经意识到真正阻碍开发进度的是我的代码阅读技能。如何提高我的代码阅读技能,以便甚至在我按下“执行编译”键之前,甚至在启动调试器之前,都可以发现代码中的大多数错误和问题?
13 learning  skills 

7
自学语言的最佳地点在哪里?
我一点都不懂任何编程语言。我将自学自我,需要知道最好的去处,以便可以从最基本的层次上学习。在哪里开始学习语言的好地方?哪种语言最适合先学习?首先学习Ruby是愚蠢的吗? 在这里,我遇到一个人,他说如果先学习一些高级语言,可能会让您“懒惰”。像Ruby一样。 对于我的母语,我丈夫建议我学习Ruby(出于他个人的兴趣)。但是,我需要一些关于如何入门和应该首先学习哪种语言的独立建议。我最终将学习Ruby,然后学习Rails。 四个月前,我丈夫下令编写目标C的文本,因为他认为自己会接受。我翻了翻,显然是从比我所在的地方先进的地方开始。 我已经涉猎了Ruby教程,但我不明白。我得到的是我得到的,但是我不明白是什么导致了那件事。我需要首先了解所有规则。然后,我查找了计算机语言,并盯着研究二进制代码,这很有帮助,但并不是我想要的起点。我一生中没有足够的时间(和四个孩子一起)回去。如果我要去学校,那会有所不同。 欢迎您提供任何建议。
13 ruby 

5
Android是语言还是框架/平台?
我知道Android在有限的Java SDK中使用Java语言,而Google声称它不是Java。但是说Android是一种编程语言是否正确?还是更恰当地说Android是Java框架?还是两者都是真的?
13 android 

6
从一个废弃的开源项目继承一个新的开源项目的正确/礼貌的方法是什么?
我的团队只是试图与code.google.com上一个旧的开源项目中的一些人联系。我们告诉他们,我们希望加入他们的项目并致力于该项目(至少是该项目的某个分支),但是没人响应我们。我们尝试了所有人,所有者和提交者;没有人以任何方式活跃,也没有人回答。 但是我们有一些代码要提交,我们真的很想继续该项目的工作。因此,我们需要创建一个新项目。我们为它想出了一个名称,该名称与我们要继承的项目的名称接近但不重复。我们应该如何进行第一次提交,提交消息应该是什么?我们是否应该仅将其代码复制到我们的存储库中,并加上诸如“我们继承了此代码,我们在某类许可下就在这里找到了它……现在我们将其升级为此严格程度更高的许可...”?还是我们应该只使用他们的代码作为第一次提交,并进行更新,说“我们继承自……我们进行了如此多的更改……”?

3
如何找到合约Android系统?
两年前,在Win32和SymbianOS上工作了15年以上之后,我决定集中精力开发Android。我在2009年的大部分时间里都在认真学习新平台,这似乎是一个很好的战略决策:Android随处可见。 但是,似乎很难找到Android开发工作。我感到na的感觉是,一定有一些网站,秘密社团或劳工交流使我难以捉摸。 这是怎么回事?如果您是Android承包商,您是如何找到当前工作的?

20
每个计算机科学专业的学生应该教什么编程语言?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 应该根据您的要求,在大学里为每位计算机科学专业的学生教授什么语言(或类的语言(如范式),再加上该类的推荐语言)?激励你的答案;为什么用这种语言?一个人将有什么用?它教什么概念(比X语言更好)? 注意/说明:这个问题是关于计算机科学的,重点是软件工程,而不是纯粹的计算机科学。重点仍然是计算机科学教育,而不是软件工程教育。

6
寻求程序设计的博士科学家的职业建议?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 我基本上是一个自学成才的程序员。实际上,我最初是在生物物理学研究生院学习的一半左右就开始编程的,即使我认为我做了一些非常出色的工作,但我从未作为一个拥有超过一两个人的“严肃”开发团队的一员来工作。其他开发人员(我会毫不犹豫地称他们为软件开发专业人士,因为他们是专业人士)。 在完成博士学位之后,我一直专注于编程,正式是一名博士后,但非正式地担任人员研究程序员。那时,我还曾在Google接受过两次采访,但没有实际报价。由于它是我扎下了一些根,也许无论如何都无法承担这份工作。房屋+妻子有高薪的工作,等等。大约三年了,我的诚实评估是我学到了很多东西,但是我确实需要更多的同龄人来维持或加速我的成长。问题是,每当我看时,大多数工作清单都具有看起来不可能的宏伟要求,因此我不愿申请。那,或者工作/项目似乎非常沉闷。 我怀疑大多数人在评估他们需要多长时间才能适应时才比我现实得多,或者他们不在乎。我担心的是,我没有资格从事任何有趣的,薪水丰厚的开发人员工作。IE:我相信我可以在几周的工作后完全切换回C ++模式(我每天大多使用C,Python,C#),但是我并没有列出自己在CV上“精通C ++”,也没有申请对于“需要”这种知识的工作。我确实认为自己是一场非常不错的比赛,但并没有引起任何回应。 我怀疑以下是我的应用程序/ CV的潜在问题,我希望获得反馈: 我没有CS学位。我的学士学位是生物化学和分子生物学,我的博士学位是生物物理学。我上了本科和研究生级别的算法课程,并完全杀死了他们,但是我不知道如何有效地将其转换为我的简历(获得A +和同班其他人吸烟之间的区别)。 我有博士学位,但不在CS中。我一直在争论是否应将其从我的简历中删除,无论是否将那些年份中的至少某些年份列为某种“程序设计”,都会产生误导的工作(从很多方面来说是这样)。 我认为有时“自学成才”的程序员会有很强的污名。我当然是其中之一。我什至意识到其中一些污名带有一丝道理,但我确实确实想成为团队的资产。我如何传达自己的意见,即使我已经从事大约8年的自我指导工作,我仍然可以在需要时接受游行指令?我会这么直接说吗? 我应该在整个过程中变得更加谨慎吗?轶事:我有一个朋友申请了职位,他完全completely毁了自己的资格,超越了第一次淘汰。与他联系时,他对自己的实际资格更为诚实和坦率,他仍然设法被邀请参加几次面试,甚至获得了一些邀请。他的球比我的大。

5
消息和方法之间的区别?
在Objective C中,您具有将消息发送到其他对象的概念,并且,这与以C#和Java这样的语言进行的方法调用非常相似。 但是,细微的差别到底是什么?在考虑我的代码时,我应该如何考虑消息传递? 注意:在这里,我只是一名C#/ Java开发人员,试图了解有关Objective C的一些概念。
13 methods 


8
您如何处理复杂性跳跃?
似乎很少见,但经常遇到的经验是,有时您正在从事一个项目,突然间突然出现一些意外情况,在工作中投入了大量的扳手,并极大地提高了复杂性。 例如,我正在开发一个与其他各种机器上的SOAP服务通信的应用程序。我提出了一个效果很好的原型,然后继续开发常规前端,并以一种不错,相当简单且易于遵循的方式来启动和运行所有东西。直到我们开始在更广泛的网络上进行测试,突然页面开始超时,因为连接的延迟和在远程计算机上执行计算所需的时间导致对Soap服务的请求超时后,它才开始工作。事实证明,我们需要更改架构以将请求转出到自己的线程上并缓存返回的数据,以便可以在后台逐步更新它,而不是根据请求逐个执行计算。 这种情况的细节不是太重要-确实不是一个很好的例子,因为它是可以预见的,并且为这种环境编写过很多此类应用的人可能已经预料到了-除了它说明了一种方式可以从简单的前提和模型开始,然后突然将复杂性升级到项目的开发中。 您有什么策略来应对这些类型的功能更改,这些功能更改的出现通常是环境因素而不是规格更改的结果,而在开发过程的后期或测试的结果是?在避免过早优化/ YAGNI /过度设计设计解决方案的风险之间,如何设计解决方案来缓解可能(但不一定是)可能的问题,而不是开发一个可能更有效但又没有针对此问题准备更简单的解决方案,这两者之间如何平衡?一切可能的事情? 编辑:疯狂的埃迪的答案包括“您吸纳它并找到实现新复杂性的最便宜的方法。” 这让我想到了问题中隐含的东西,但我没有具体提出。 一旦遇到困难,就可以进行必要的更改。您是否执行了使项目尽可能接近进度但可能会影响可维护性的事情,还是回到了体系结构并在更详细的级别上对其进行了重新设计,该级别可能更易于维护,但会在开发过程中推迟一切?

7
吸引非程序员(例如设计师)使用版本控制的简便方法?
使团队参与开发,Web开发或其他过程中使用版本控制的一些主要方法是什么? 我拒绝没有它的工作,这意味着参与该项目的任何人也必须使用它。这只是个好习惯。 像Tower这样的GUI有所帮助,但是它的概念要么激怒(“不是我的工作!”,有点怯,),要么胆怯,或者直接不使用它(改用FTP,绕开了诸如开发,部署之类的版本控制) )。 编辑:我应该澄清一点,我不仅仅是指图像/ PSD。

8
为什么我的IDE不进行后台编译/构建?
今天,我在相当复杂的计算机上进行开发,它具有多个内核,SSD驱动器以及其他功能。尽管如此,大多数时候我在对计算机进行编程时总是无所事事。当我最多需要编译和运行/部署一个稍微复杂的项目时,它仍然需要花费几秒钟的时间。为什么?现在我们越来越生活在“即时时代”中,为什么我不能在Visual Studio中按F5并立即启动/部署应用程序? 几秒钟听起来可能还不错,但仍然是认知上的磨擦和时间的累加,坦率地说,这使编程变得不那么有趣了。那么,如何立即编译呢? 好吧,人们倾向于在不同的程序集中编辑文件,如果Visual Studio / IDE不断进行编译/构建我可能适当修改的所有内容,该怎么办。如果他们想真正进步,可以按班级编译。编译可能无法正常工作,但随后它可能会默默地不执行任何操作(将错误消息添加到错误窗口除外)。 当然,今天的计算机可以为这个任务指定一个或两个核心,并且如果有人发现它很烦人,可以选择禁用它。我知道可能存在上千个技术问题,并且需要解决一些奇特的影子复制,以使其无缝和实用,但这肯定会使编程更加无缝。 有什么实际的原因导致这种情况不可能发生?不断编写二进制文件的损耗会太大吗?程序集在部署/运行之前是否无法保存在内存中?

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.