软件工程

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

5
我们通常应该花多长时间编写用于新功能或错误修复的单元测试?
当我必须实施新功能或修复错误时,我通常尝试通过测试来重新创建情况。我有时花大约3个小时来准备夹具并编写测试。实际的功能实现或错误修复不到1小时即可完成。 与实际实现功能或修复错误相比,其他人花费至少3倍的时间编写测试吗?编写测试与编写代码所花费的时间可接受的比率是多少?

8
程序员/开发人员个人组织
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 在开发人员的工作中,您使用什么工具/方法/策略来保持井井有条?你能提供细节吗?

1
.NET应用程序的权限/正确的模型/模式
我需要实现灵活和简单(如果存在这种情况),并在可能的情况下同时利用内置方法 到目前为止,我已经实现了MembershipProvider和RoleProviders。这很酷,但是我下一步要去哪里? 我觉得我需要添加术语“特权”,而不是对应用程序内部的代码进行硬编码。用户将配置角色以将特权添加到角色,并将角色分配给用户。 听起来不错吗?除了将其添加到角色之外,我是否应该考虑在用户级别添加特权?我可能会,但我预想安装(混乱)和支持以下方面的问题。 如果我不这样做,则某些特定用户将需要较少的权限-管理员将不得不创建另一个角色,依此类推。 这样的系统有什么灵丹妙药吗?以及为什么Microsoft不只是会员资格和角色提供者而走得更远? 另一个想法:将角色保留为“特权”持有者并对其进行硬编码。然后,我可以使用所有可用的标记/属性等对应用程序内的那些角色进行编码-所有Microsoft。 添加新实体“组”并创建关系 用户数 用户组 团体 角色组 的角色 这样,我可以将角色收集到组中并将这些组分配给用户。听起来不错,并且与其他软件模式匹配。但是然后我真的不能在RoleProvider中实现诸如以下的功能: AddUsersToRoles RemoveUsersFromRoles 而且有些事情真的不再有意义了,因为它们将被硬编码 DeleteRole 创建角色

2
Web开发准备和整个项目工作流程
我是一个单独的Web开发项目(前端和后端)的程序员,我已经完成了几个项目,因此在这方面我还很新,我已经阅读并尝试了一些方法,并找到了解决之道关于他们。问题和我的描述都相当长,请耐心等待。 我要寻找的是: 1.准备/规划通常在开始开发之后,一旦您确切知道需要构建什么。 2.根据您的经验,请给我有关我当前正在遵循的过程的反馈/建议。 与我合作的客户通常都是初创公司,预算有限,因此我无法按小时/小时向他们收费(我认为这是大型公司通常按开发项目的人/小时向客户收费的方式)使用固定预算。 这是我目前正在遵循的过程: 1.评估项目的范围,并尝试了解他们在几次会议中要完成的工作。 2.给他们一个粗略的报价,概括地描述他们期望从项目中得到什么,我尝试具体说明功能,但是,我并没有花太多时间,因为我知道客户可能只是在询问报价,而未真正转换。 3.我遵循杰夫·阿特伍德关于付款和工作的建议: 15%的付款-开始任何工作之前先付款 在此阶段中,完成了最终网站的HTML 建模,并制作了一个流程图(带有yEd),该流程图尽可能详细地描述了该网站,并提供了一个文档,其中提及了流程图中没有的其他功能。这是通过进入项目的所有细节并最终确定适合的位以及在协议价格下无法完成的工作来完成的。因为没有在前面讨论细节,所以其中的某些部分或多或少地是关于它们实际得到什么的协商。因为这是一个固定预算的项目,所以需要有固定的要求,否则,随着添加更多功能,我的价格会不断下降。 还确定了配色方案,设计线框和设计PSD。 35%的付款 -开始开发 项目固定,开始开发。我将网站托管在服务器上,客户端可以在其中访问前端,但不能访问任何代码。 30%的付款 -将代码转移到客户端的服务器/为客户端提供服务器访问详细信息, 使网站正常运行。 20%的付款 -网站上线后的几个星期,所有错误已修复后。 问题: 1.一旦您确切地知道将要构建的内容,在开始编码之前会做什么样的计划? 2.根据您的经验,您会在整个过程的哪些部分有所不同?

2
GUI,BLL,DAL组织在项目中
我正在阅读有关应用程序层的内容,并希望在我的下一个项目(C#、. Net)中使用此设计。一些问题: 是否通过名称空间完成层分离?Project.BLL。什么,Project.DAL。什么 按层然后按组件(Project.BLL.Component1)或按组件再按层(Project.Component1.BLL)分离是否更合适 对于我的DAL,是否使用不同的类进一步组织了这一层?如果所有数据库调用都放在一个类中,则没有组织。用不同的类或名称空间将它们拆分会更好吗? DAL类通常是静态的吗?在每次调用其方法之一之前实例化DAL对象似乎很麻烦。 用这些层以正确的方式处理事务的任何其他技巧将不胜感激。

5
基本语言的基本功能?DSL建议?
我终于开始理解创建解释器和编译器背后的复杂性。在达到这一点之前,我已经构建了TinyBasic,1964(Dartmouth)Basic的多个版本,并对这些语言进行了自己的扩展。最近的项目是一个我称为Open Source Basic的项目,因为我认为该语言没有其他会引起人们兴趣的功能。为了能够打开语言的源代码并了解如何完成某些复杂的事情(如何完成扫描,解析,解释和编译) 首先将Open Source Basic解释为基于堆栈的语言。然后,将基于该堆栈的语言立即进行解释和执行,或者将其转换为CLR可执行文件。 我的问题全部归结为: 基于Basic的语言的基本特征/构造是什么?我已经有了这些基本构造:赋值,表达式,变量,一些函数(Random,ToUpper,ToLower),循环(for和do-while / until),If(块和单行)其他决策,基于控制台的输入(输入),输出(打印)和子例程(尚无参数)。 当我“完成”将基本结构添加到我的语言中时,应该如何分支?进入哪个域?换句话说,一旦我使所有通用构造都起作用,我的开源基础语言应该朝哪个方向发展? 感谢您的时间, 多米尼克


3
如何将文件传输到生产环境?
我们是一个小组,开始在具有现有代码库的相当大的网站上工作。我们有一个测试和一个生产服务器。 我们的想法是建立一个测试库,其中有许多开发人员可以推送访问;还有一个只有少数人可以推送的有福的存储库。祝福的仓库应该总是稳定的,代表最新的生产版本。 如何自动将文件传输到生产环境?对生产文件进行版本控制是否很糟糕?这样,推送到有福的存储库将意味着部署。但是,当发生合并冲突时会发生什么?生产服务器会在解决之前中断吗?
9 git  workflows 

2
RESTful参考表示-语义链接与URI
我们正在设计一个RESTful API,以打开客户的帐户信息。我们的表示形式包含对与当前资源相关的其他资源的引用。这来自我们在公共API和已发布的资料中可以找到的许多最佳实践。表示形式可以是XML或JSON。 例如,对于帐户资源,我们将引用该帐户的地址,对于分页列表资源,我们将引用第一,下一页和上一页。 该API首先使用<link title="" rel="" href="" />O'Reilly书中所述的语义链接进行设计,并由Netflix和Google在API中使用。当我们的质量检查工程师编写自动化套件时,他们在反序列化链接时遇到了问题。现在,我们建议使用更简单的uri字符串元素,这些元素已在Facebook和Twitter中用于API。 此后,我们的质量检查工程师已经解决了其反序列化问题,但是我仍然担心当前API规范与语义链接的易用性。我们的API主要将由我们的客户和一些第三方合作伙伴使用,而我们之所以选择REST,是因为以前的XML-RPC API对我们的消费者来说太难了。 tl; dr; 题: 实施了语义链接表示的任何人都遇到过困难的消费者问题吗? 更新(6/21):我已经决定保留语义链接,并希望混淆是一个边缘案例。一旦一些消费者使用了该API,我将尽量记住用我们的经验来回答这个问题。 编辑:添加示例 语义帐户JSON: { "username": "paul", "links": [ { "title": "addresses", "rel": "related", "href": "http://example.com/account/paul/addresses" }, { "title": "history", "rel": "related", "href": "http://example.com/account/paul/history" } ] } 语义帐户XML: <account> <username>paul</username> <link title="addresses" rel="related" href="http://example.com/account/paul/addresses" /> <link title="history" …
9 rest  semantics 

2
大型水银储存库是否遭受“推动种族”的困扰?
阅读一些“为什么DVCS更好”回答了有关Programmers.SE的几个问题。他们似乎都说,总的来说,DVCS更好,因为您没有大型项目中的提交竞赛,即IE提交,已经过时了,所以更新,提交,再次过时,提交,仍然过时等。 DVCS通过推送的概念限制了这一点。但是,在大型项目中,会不会有一场“推动竞赛”,尤其是在一天结束时?我知道在Git中这可以通过对所有事物的不断分支来弥补,但是在Mercurial中,您不需要分支,而是创建一个新的头部。 我看到的问题 用户尝试推送 过时(如果本地存储库过时,Mercurial不会让您推送),因此您可以拉并合并本地更改 用户尝试再次推送,但是当他们合并其他推送时,他们又过时了 再次拉并合并 仍然过时 重复 听起来有点熟? 这是非常大且受欢迎的水银回购的实际问题吗?当每个人都在最后一天努力工作时,在公司内部怎么办?
9 mercurial  dvcs 

2
针对iOS,Android和Web进行专业开发-见解
这不是关于如何开发所有这三种的真正问题,我知道各种跨平台的方法等等。但是我更想从开发人员的角度了解,基本开发iOS,Android和Web应用程序有多困难? 我目前是移动/网络开发人员的第一份工作。我已经开发了我的第一个iPhone / iPad应用程序,现在我必须开发适用于Android的应用程序,因为我尝试的Web版本的性能无法达到所需的水平,并且Web数据库似乎并没有取得成功。但是我不确定在记住所有api等方面是否擅长开发这3种。我不会说我对编程语言有疑问,只是如何在各种平台上使用api。另外,我在业余时间看的所有其他语言,就像我正在精简自己一样。 一个人开发ios,android和web应用程序是否可行?我是否应该考虑将其减少到iOS和基于Web的应用程序? 我自己开发所有东西,所以没有人讨论什么是最好的解决方案,而我只是在努力锻炼。 那么有没有跨平台开发人员呢?公司在不同平台上有不同的团队吗? 任何见解只会帮助我团结一致。希望这个问题有意义。
9 android  web  mobile  ios 

7
应如何通过团队分配能力?
看完这个,我看到对于在具有不同能力的一组开发人员(又称几乎所有团队)中如何构建敏捷团队似乎存在很多分歧。是否应该将所有最好的开发人员放在自己的团队中,并给予最高优先级的工作?这几乎可以确保完成最重要的任务。同时,您剩下的地方是“不够完美”的团队,他们承担着技术债务,即使只是在低优先级任务上。另一方面,分布均匀的团队可以使落后的开发人员更好一些,但有可能挫败最沉重的打击者。另外,如果您将一堆好的设计模式与一堆糟糕的反模式混合在一起,那么您最终可能会得到一堆反模式。
9 agile  team  teamwork 

3
将jQuery包含在jQuery插件中可以吗?
包含jQuery库的jQuery插件文件问题今天在stackoverflow上出现,我强烈建议不要在插件中包含jQuery。 我在这方面并没有得到别人的任何支持。实际上,包含jQuery的支持更多。可以吗?还是有充分的理由不这样做?我认为这是一个非常糟糕的主意,因为我认为应该由开发人员决定使用哪个版本的jQuery。
9 jquery  plugins 

5
我用一种语言编程已经很多年了。这是职业自杀吗?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 8年前关闭。 我多年来一直使用相同的面向对象编程语言进行编程(基于Windows)。问题在于这种特定语言不是很流行,不是职位发布等中需求最热的一种。 我应该担心吗?Java雇主会理解我是一名程序员,并且可以在一两周之内掌握任何一种语言,还是会给人一种印象,因为我没有专业地使用他们的特定语言进行编程,所以我只是不合格? PS。就学习而言,我确实在家中玩各种技术。但是在工作中,我几乎都坚持使用相同的语言。

7
我可以将“用户故事”用于流程改进任务吗?
我们目前使用JIRA来跟踪我们的开发工作。我的管理层希望将所有内容格式化并归类为“用户故事”,包括与非软件开发相关的任务。例如: “作为测试经理,我可以仅使用自动测试而不进行手动测试来对应用程序进行测试,以便可以尽可能高效地测试应用程序吗? 验收标准:1.将50个现有的手动测试转换为全自动测试。2.测试必须在不到1小时的时间内执行” 如果要在支持软件开发过程的工作中使用“用户故事”,而不是由程序员来做,并且不会直接产生可交付的代码,那么我想从社区中了解。还是应该对它进行不同的处理/分类(例如,在JIRA中)? 2011年6月7日更新-措辞更正的问题集中在“用户故事”一词。
9 agile  stories 

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.