软件工程

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

2
如何对应用程序和UI代码进行单元测试?
我喜欢编写单元测试,并同意它们是测试代码,防止回归等的绝佳方法。但是,我发现自己无法编写它们,因为我日复一日地工作的绝大多数代码都是应用程序向用户显示UI的代码。是否有对应用程序代码进行单元测试的好方法?这里的最佳做法是什么? 我不是在寻找诸如框架之类的具体答案。而是,总的来说,您如何解决这个问题?

5
您如何决定自己的副业[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在任何给定的时间,我通常会对可以从事的周末/边际项目有很多想法。这些想法通常可以分为以下几类: 自我学习:学习新的语言/技术/框架 与工作相关:学习/做一些对您有帮助的工作 金钱:(您认为)可以赚钱的项目 娱乐/实用项目 这些只是我可以想到的粗略类别,并且可以有更多/其他分类方式。 我的问题是基于您的经验,是什么决定了要进行哪种项目的决定。除了项目类型外,哪些参数会影响此决策(时间,精力,金钱...)

7
设计器工具会降低编程体验吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我最近一直在浏览,特别是在一些可用的MS工具上,并且我注意到对设计器工具和向导的关注很大。不仅用于UI开发,而且还用于所有内容。 实体框架具有建模者 RIA Services具有DomainService向导 工作流让整个工作流设计师感到烦恼...(我不知道,还没有真正使用过它) 还有更多,但我想您会明白的。有很多设计器工具。使用其中一些,我发现: 它们使规定用例之外的事情复杂化 (即所有技术演示视频) 我最近一直在评估其中的一些技术,然后尝试与它们一起工作,最终不得不剖析设计师,建模者和向导为我所做的事情……否则,当我不得不尝试做时,我会迷失方向任何创造出来的东西。 最终情况是,我必须使用工具或对其输出进行足够的争用,以至于我自己不用工具就可以完成整个工作,并且对发生的事情有了更深刻的了解。我发现Silverlight设计器和RIA服务域服务向导特别激怒。 我发现自己在问:“如果我必须弄清楚它的内部工作原理或重写其输出的一半以使用它,该工具有什么用?” 他们没有那么快 这些工具的卖点是提高生产率,并且该点可能会随着时间的推移而改变,并且不一定适用于UI设计师(尽管在某些情况下它仍然适用->我正在为您提供Silverlight设计师) 。我发现我可以以比设计者中任何东西拖放,调整大小,移动快得多的速度破解某些代码。 UI妨碍了模型 也许这只是我一个人,但是当我使用类似UML设计工具的东西时,我最终花了更多的时间来布置所有内容,以使我的线条不会交叉,因此我可以在屏幕上看到所有内容,而不是对自己的模型进行建模正在努力实现。 他们没意思 我编码为生的一半原因是我享受它。单击复选框并选择组合框,然后修复出现的所有问题,这并不有趣。 我似乎并不孤单 社区似乎也不想要这些工具。目前,我能想到的最好的示例是Entity Framework Code-First。 所以我问: 设计工具是否真的提高了生产率? 他们是有趣的杀手吗? “社区” 实际上是在寻求更多的设计师工具,还是供应商只是以为我们是?

6
我应该专注于深入还是广泛[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我已经成为专业开发人员了半年多了,对这个世界真的没有大学感到惊讶。我在业余时间继续学习,但我想知道应该集中在哪里? 重点1)我公司使用的开发堆栈。我日常开发中最快的回报。#最深 焦点2)具有相同范例的不同语言。看看我是否可以概括我的知识和思维方式。 焦点3)不同的语言,不同的范式。扩大我的疆界,学习做事的新方法。#最广泛 如果有人有不同的关注点,请放在那里。

11
如何使用Microsoft堆栈过渡到工作?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我毕业于大学,获得计算机科学学位(BSc),并在此过程中完成了一些C,C ++,Java,Python和Oracle。我上大学时曾做过一些自由职业,毕业后就从事了一份全职工作,现在我已经从事了一年的全职工作。 PHP并不是我真正想做的,而且我认为,如果我走这条路的时间越长,它就会限制我的机会。它不是我每天都喜欢使用的语言,我想在一个规模较大的组织中工作,在这个组织中PHP似乎没有太多用处。 我想继续从事Web开发,Microsoft堆栈似乎有很多工作:C#,SQL Server和ASP.NET MVC。但是除了半个学期在Visual Studio中编写通用C ++外,我还没有Microsoft技术方面的经验。 我从哪里开始过渡到在Microsoft商店中找到工作?我应该关注哪些特定的证书,或者我应该参加的大学课程?雇主或招聘者在寻找什么? 除了在业余时间创建宠物项目外,我还能做什么?

7
选择(对吗?)技术和环境
我们是两个处于新的Web产品开发边缘的开发人员。 我们都是精益启动方法的拥护者,并且希望练习持续部署。 难题来了,我们都来自C#/ Windows背景,我们需要在以下两者之间做出决定: 坚持使用.NET和Windows,我们将不会浪费时间学习新技术,而是会全力以赴地进行开发。 切换到Ruby on Rails和Linux,后者在快速升级和广泛的开源支持方面享有盛誉。不利的一面是,我们将需要在学习Ruby,Rails和Linux上付出很多努力。 你会怎么做?我们还应考虑哪些其他因素?


6
如何与微观管理的项目经理打交道?
也许我只是天真,但是当我尝试破译一周内要完成的任务时,我无奈地认为,制定项目进度表的人需要接受一些补救培训基本项目管理。 例如,今天分配给我13个任务,最短的持续时间为.13天(Microsoft Project中的默认时间度量),最长的持续时间为.75天。我忍不住认为这是在不到10分钟的时间间隔内公然的微管理计划项目。 管理的效果在任务减少,资源分配在某些时间点超出容量两倍的情况下变得明显,并且花费更多的时间来完成任务并弄清楚下一步工作比实际工作要多。 我如何说服项目经理创建更长的任务并看到更大的图景?

4
先进的颠覆技术,我缺少什么?
大约9个月前,我开始使用SVN,至少可以说它已经改变了游戏规则。虽然,我仍然感到迷茫。我觉得我还需要利用很多东西来真正加强我的应用程序开发。 例如 我希望能够将任何易失性/重大更改隔离到某种“子存储库”或某些内容中。我发现重大更改妨碍了非常紧急的次要错误修复。如何推送一个简单的更新而不推送不完整或损坏的代码?

7
软件开发人员与商业客户之间的适当关系是什么?
IT专业人员是受企业或组织的IT资产信任的专家。作为值得信赖的专业人员,我们承担的责任超出了非IT客户可以理解或意识到的范围。因此,我认为IT专业人员与其内部/外部客户之间的正确关系更像是医生和患者之间的关系,而不是仆人和主人之间的关系。我对吗? 这是一个可以考虑的类比。患者坚持认为他的腿需要被截肢。他的医生不同意,但不能说服患者。医生应该为了让患者满意而截肢吗? 另一个比喻。客户希望土木工程师为不安全的设计搭建桥梁。即使工程师解释说这是不安全的,客户也不相信他。工程师是否仍应建造桥梁? 我认为这两个类比的正确答案是“否”。即使面对患者/客户的不赞成,医学专业人员和工程专业人员也应该处于信任状态,应该行使自己的判断力。当IT专业人员有资格做出决定而他的客户没有资格做出决定时,对IT专业人员也应该适用吗?

7
原型开发的第一阶段有多普遍?
在过去的几个学期中,我一直在学习一些软件设计课程,尽管我看到了很多形式化的好处,但我觉得它并没有告诉我有关程序本身的任何信息: 即使它讨论了程序可以做什么,也无法从用例规范中看出程序将如何运行。 即使需求文档可能包含质量需求,您也无法从需求文档中得知任何有关用户体验的信息。 时序图很好地描述了软件如何作为调用堆栈工作,但是非常有限,并且可以从整体上高度了解整个系统。 类图非常适合描述系统的构建方式,但是对帮助您确定软件的功能却毫无用处。 底线到底在哪里:程序的外观,操作方式以及所提供的经验?从中进行设计不是更有意义吗?弄清楚程序应该如何通过原型工作并努力实现它,这不是更好吗? 我知道我可能正遭受理论家教授工程学的困扰,但是我需要问,他们在行业中这样做吗?人们如何弄清楚该程序实际上是什么,而不是应该遵循的程序?人们制作了很多原型,还是他们大多使用UML之类的正式工具,而我只是还没有掌握使用它们的习惯?

2
递归资源的最佳RESTful URL结构是什么?
我正在为树状资源结构创建RESTfull服务,并且想知道最佳的URL结构是什么? 我有三个要求: 能够获得根资源的集合 能够获得个人资源 能够收集儿童资源 我目前的想法是: /rest/documents /rest/documents/{id} /rest/documents/{id}/documents 我还考虑过使用单数/复数形式来表示列表或单个元素,但是我知道我将拥有与单数相同的复数形式的资源,因此决定对此进行反对。 有人对以上有任何想法吗?还是有其他/更好的方式来构造这个?

5
在敏捷方法论中,后期有什么意义吗?
这来自对另一个问题(这个问题)的一些答案和评论。 我主要从事瀑布项目,虽然我从事过一些采用敏捷行为并且对敏捷有一定了解的特设项目,但我会说我从未从事过“适当的”敏捷项目。 。 我的问题是“后期”的概念在敏捷中是否有任何意义,如果是的话,那又是什么? 我的理由是,有了敏捷,您就没有前期计划,一开始就没有详细的要求。您可能有一个高水平的目标,并附带了一个概念上的日期,但两者都可能发生变化(可能会发生巨大变化),而且不确定。 因此,如果您直到交付和用户接受之前都不知道要交付什么,并且如果您没有下一个冲刺之外的时间表,那么您怎么会迟到呢?真的有意义吗? (显然,我知道冲刺可能会超车,但我所谈论的是超出此范围。) 只是要清楚一点,我(个人)对以下假设的假设感到满意:基于我已经看过并参与其中的事实,准时瀑布项目(甚至是相对较大的项目)是可能的,即使这些项目也不容易,也不常见但是它们是可能的。 这不是敲门敏捷,而是关于我的理解。我一直认为敏捷的好处与截止日期或预算无关(或者只是间接地),与范围无关-敏捷在交付之前更接近真正重要的内容,而不是项目团队认为重要的东西。看过任何东西。
10 agile  scheduling 

7
敏捷过程:应如何记录以及记录什么?
不久前,我工作的公司将开发项目外包给了第三方。他们在开发解决方案时采用了敏捷实践。但是,当要求提供文档时,他们只会说这是必需的,因为它已合并到Wiki或作为其冲刺的一部分。 他们确实在项目完成时离开了,除一个项目团队外,其他所有人都离开了。年度订阅到期后,该项目Wiki网站现在已关闭。 当他们离开时,他们掌握了与他们一起发展的大部分知识和理解。 所以我有两个主要问题; 这对于敏捷性来说是正常的,还是只是不想写它的借口? 在敏捷项目中记录开发需求,设计,关键决策和环境的文档的行业规范是什么?

2
在测试驱动的开发过程中,软件架构师的作用是什么?
据我了解,Test-Driven Development是关于编写测试以定义程序规范的(如果我错了,可以纠正我)。 如果有人负责编写软件的规范(包括公共API)(我们称他为Software Architect),这是否意味着Software Architect必须编写所有测试? 还是由软件架构师编写规范,然后将其交给开发人员编写测试依据? 还是通过允许所有开发人员编写自己的测试而使规范有机地增长,而忘记了拥有软件架构师?
10 architecture  tdd 

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.