软件工程

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

2
记录编程语言:参考手册
我们正在寻找整个产品线的文档更新。的那部分包括参考手册用于编程语言用作系统的一部分。 在编写用于编程语言的参考手册时,为使该语言的新手拥有最大的可用性,最好的构造方法是什么? 记录每个关键字的关键方面是什么? 句法 描述 参数-如果适用 返回值-如果适用 用法示例? 还有其他我想念的吗? 概念(例如锁定策略,与性能相关的详细信息)是否也应在本参考手册中进行记录,或者是单独的文档? 这是供外部消费。我们已经有完整的文档集(请参阅:http : //www.rocketsoftware.com/u2/resources/technical-resources)。制定出我们应该做的事情与众不同-我已经有了我的想法,但是和往常一样,我尽量不要仅仅依靠我的观点。 受众:技术开发人员使用我们的数据库和工具来跨许多行业生产软件。


3
主方法是否应该仅由对象创建和方法调用组成?
我的一个朋友告诉我,最佳实践是main应命名Main包含main方法的类,而只包含方法。此外main方法应该只解析输入,创建其他对象和调用其他方法。本Main类和main方法,不应该做任何事情。基本上他在说包含main方法的类应该是这样的: public class Main { public static void main(String[] args) { //parse inputs //create other objects //call methods } } 这是最佳做法吗?

3
我应该将函数嵌套在允许我执行此操作的语言中还是应该避免使用它?
在JavaScript,PL / SQL和其他一些语言中,函数可以嵌套,即在另一个函数中声明。这可用于将大型功能分解为较小的部分,但将这些部分保留在较大功能的范围内。 function doTooMuch() { function doSomething () { ... } function doSomethingElse() { ... } function doYetAnotherThing() { ... } // doTooMuch body doSomething(); doSomethingElse(); doYetAnotherThing(); } 在某些情况下,当那些较小的函数不使用较大函数的局部变量时,可以很容易地将其更改为所有函数都未嵌套的版本。 function doSomething () { ... } function doSomethingElse() { ... } function doYetAnotherThing() { ... } function doTooMuch() { doSomething(); …

4
数据访问层中的业务对象
因此,我一直在通过TDD创建数据访问层,并且有些担心。我宁愿不走错误的道路,所以我想让你们看看我的想法是否符合干净的体系结构。 我的数据访问层(简称DAL)中的方法非常简单。它们与数据库中的存储过程一致(没有其他方法可以使数据库保持干净),并且它们包含与存储过程相同的参数。然后,他们仅连接到数据库,并返回查询结果。这是一个例子: public int DeleteRecord(int recordId) { recordId.RequireThat("recordId").NotZeroOrLess(); List<SqlParameter> parameters = new List<SqlParameter>(); parameters.Add(new SqlParameter { ParameterName = "@RecordId", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Input, Value = recordId}); return this.ExecuteNonQuery("DeleteRecord", parameters.ToArray()); } 这对于这种类型的方法非常有效,因为我对结果集没有做任何有意义的事情。我只想确保命令有效,所以我将返回非查询的结果,该查询只是受影响的行,并且我可以使用该数字来验证逻辑。 但是,在另一种DAL方法中,我想加载一条记录。我的加载过程将selects针对一堆表执行并返回a DataSet,但是我正在努力解决DAL是否应该使用来在方法内创建Business Objects的问题DataSet,或者我的Business Objects本身是否应该具有Load()获取该方法的方法的问题。DataSet然后从DAL开始,然后基本完成 通过DAL进行操作会导致业务对象中的逻辑更少(即使这只是选择逻辑,仍然是逻辑),但是会使DAL有点拥挤,使人感觉它确实在做它不应该做的事情。做。 你们有什么感想?

7
我们的敏捷版本无法正常工作。提示?
我在一个由4个开发人员组成的小组中工作。我们正在实施的Agile版本似乎每周又一周不断给我们带来同样的困难,我正在寻找可以帮助我们改善流程的建议。 背景: 我们通常进行2周的冲刺,而每次冲刺都容易低估我们的工作,并且由于进度落后,我们与经理发生了麻烦。 我们从开始每个冲刺开始,将任务经理为我们创建的故事分配出去。有时他也会抛出任务,我们会估算它们。我们不使用故事点。我们使用Urban Turtle软件来“管理我们的冲刺”,这实际上只是故事和任务以及相关的消耗。我们不打算在冲刺结束时发布版本。 发生的最常见问题是,我们计划在sprint的开头执行一项任务,只是发现它的范围要大得多,但是优先级仍然很高,因此我们需要在它上面花费更多的时间。第二个最常见的问题是我们当中的一个人遇到了技术问题,该问题减慢了燃烧的时间,造成了障碍。 提供给我们的唯一建议是更加主动地调整估计值,并在早上的站立训练中提供更新,以便我们可以调整所需的额外时间。 但是,我们的处理方式似乎存在根本性的错误。经理对项目的期望与对冲刺的期望之间可能存在脱节。因为我们正在根据项目计划进行这些sprint迭代,所以扩展sprint或推迟项目会破坏项目计划。因此,作为开发人员,我们被鼓励通过在必要时扩展估计值来执行敏捷,而且还要按时完成冲刺,这令人困惑。 这不是一个不常见的问题,所以我希望比那些聪明的人提出一个或两个建议,说明我们如何才能在每次冲刺时都不再遇到相同的问题。真令人沮丧
12 agile 

2
多个团队的Git工作流程
我们将开始使用Git(尚未使用它),我想定义工作流程。 我们在全球4个不同地点拥有4个团队,共同开发同一产品。每个团队都拥有产品代码的一部分,但是有时他们也必须更改其他团队所拥有的代码。 是否有针对这种环境的Git工作流程的建议? 我已经看过这篇文章,但是这里的方法是“我们尽可能少地创建其他分支”,并且我相信“为每个用户故事分支”方法更多。 另外,本文提出了一种不错的方法。 我想到的是拥有一个master分支,每个团队的一个永久分支,定期合并到master,以及每个用户故事的分支合并到这些团队的分支。有道理还是行不通?

3
OO C公共和私有功能的典型命名约定是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 简短问题 有一种典型的方式来命名OO C项目的“公共”和“私人”成员吗? 背景 我完全理解公共和私营成员没有真正在C语言中存在。但是,像大多数C程序员一样,我仍然将成员视为公共或私有成员,以维护OO设计。除了典型的面向对象的方法,我发现我的自我下面,让我更容易分辨哪些方法的模式(见下面的例子),意味着对外界VS私有成员可能有更少的检查/更有效等...是否存在针对此类问题的标准或最佳实践,或者下面的示例是解决此问题的好方法? 标题示例 #ifndef _MODULE_X_H_ #define _MODULE_X_H_ bool MOD_X_get_variable_x(void); void MOD_X_set_variable_x(bool); #endif /* _MODULE_X_H_ */ 范例来源 // Module Identifier: MOD_X #include "module_x.h" // Private prototypes static void mod_x_do_something_cool(void); static void mod_x_do_something_else_cool(void); // Private Variables static bool var_x; // Public Functions - Note the upper …

4
为什么我们需要编写头文件?
在您提出尖刻的评论之前,我知道-这是一个nooby问题。这是我第一次使用基于C的语言。 我是一名本科生,正在学习有关移动开发的计算机科学课程的目标C。我知道,在学术环境中,由于您正在构建较小的项目,在较小的团队中工作等,因此不需要很多现实世界的考虑。 但是我们的教授要求-并且XCode支持-每个.m实现文件的.h头文件。对我来说,这似乎是忙碌的工作。我必须确保将每个方法签名和实例变量都复制到另一个文件中。如果更改一个文件,则必须确保它与另一个文件一致。好像只是一堆小麻烦。 但我知道,必须有一些现实世界中使用的头文件。一个很好的答案将解决这两个问题: 对于不适合实现文件的头文件有什么用?目的是什么? 为什么我们作为程序员必须手动编写头文件?看来它们很容易自动生成。 提前致谢!

3
限制商业使用的软件许可,例如CC BY-NC-SA
我想根据“知识共享署名-非商业性-相同共享”许可(例如, 免费分发源代码和二进制文件。 程序的修改版必须在同一许可证下分发。应提供原始项目的归属。 限制任何商业用途。 但是,CC建议不要将其许可证用于软件。我可以申请这种软件许可证吗?如果有公共许可,情况会更好,但是据我所知,美国法律规定只有EULA才能限制所接收副本的使用?

5
RSpec和Cucumber真的值得吗?
我知道大多数RoR程序员都在测试成瘾者,并且我了解大型测试套件的优势,但是当我开始测试时,我从来没有得到如此大型的套件,而且我总是想知道“我是否以正确的方式进行测试?真的有效率吗?”。我经常处理集成测试,仅测试应用程序的行为方式。 首先,测试真的值得吗?我的意思是,花在编写测试上的时间真的值得吗? 然后,我使用RSpec,我最近发现了Cucumber,使用了一段时间,但我不知道编写所有这些步骤是否真的值得一试?我知道我可以重用步骤,但是我不知道这些步骤是否太完整:例如,我一直在使用a,Given I am logged in as (.+)但是我不知道是否必须在其定义中说,Given there's a user called $1因为如果创建了它就可以复制用户但这并不值得总是先走一步Given I am logged in as (.+)。很多代码可能很少有用。我猜每天测试的零件上都没有新的错误……与RSpec相比,Cucumber真的值得吗?

2
将单元测试添加到旧的普通C项目中
标题说明了一切。我公司正在将微控制器设备的旧固件项目重复使用,完全用纯C语言编写。 有些部分显然是错误的,需要更改,并且这些部分来自C#/ TDD背景,我不喜欢无测试地随机重构内容以确保功能保持不变的想法。此外,我已经看到,在很多情况下,通过微小的更改就引入了难以发现的错误(如果使用回归测试,我相信这是可以解决的)。为避免这些错误,需要格外小心:很难在代码周围跟踪大量的全局变量。 总结一下: 在重构之前,如何在现有的紧密耦合代码中添加单元测试? 您推荐什么工具?(重要性不高,但仍然很高兴知道) 我没有直接参与编写此代码(我的责任是一个可以通过多种方式与设备交互的应用程序),但是如果有可能使用它们时,如果抛弃了良好的编程原则,那将是很糟糕的。

3
您如何在OOP中进行班级设计?
当我尝试设计OO解决方案时,通常使用CRC建模,其中列出了类名(名词),它们的作用(动词)以及它们与其他类的协作方式。 关于此名词-动词方法,此博客有以下要说的话 ...This approach, which I will call “noun and verb,” is so limited I’ll dare to call it brain damaged.... 我的问题是,使用OO方法是否存在更好的建模技术?

11
我是否拥有自己制作的程序的版权?[关闭]
这个问题不太可能对将来的访客有所帮助;它仅与较小的地理区域,特定的时间段或格外狭窄的情况(通常不适用于Internet的全球受众)有关。要获得使该问题更广泛适用的帮助,请访问帮助中心。 8年前关闭。 我创建了一个软件包,可以帮助电气工程师进行现场常用的计算(具体来说是变电站)。我在自己的时间内创建了该程序包,没有被询问也没有指导。该软件包现已在我公司内部广泛使用,我打算在全国范围内分发。 我拥有版权吗?我的合同确实声明,所有产生的工作都是他们的,但这是在工作范围之外和我的“工作范围”之外。我的公司主要是土木和建筑公司,对创建程序没有影响。 来自评论:这是“在服务过程中,您将向公司披露在服务过程中或与服务相关的所有信息,公式,过程,发明或改进的信息,公式,过程,发明或改进。公司将签署任何必要的文件,以使公司无论是否仍在公司服务中都可获得专利保护。 UPDATE ::::::::::::::::刚刚收到的电子邮件 戴夫 如您所知,我们一直在追求您和您的专利律师在今年早些时候提出的要求,解释如下: ...一位专利律师,他曾建议我在创办公司之前,先就知识产权和版权所有权向{edacted}寻求官方澄清。实际上,他们将签署一份法律合同,规定所有IP和版权归我本人所有,以换取所有MUS工程师免费获得的{acted}副本。免费提供的优惠不适用于合作伙伴公司。 由于我们有义务与{redacted}以及与我们的雇主{redacted}一起审查我们的合同状况,所以此审查过程花费了比预期更长的时间。 但是,{edacted}愿意释放所有IP的版权,前提是我们继续为{redacted}工程师使用{redacted}工程师,并通过销售{redacted}许可获得的利润获得15%的特许权使用费。要商定的期限。 我很乐意在双方方便的时候与您讨论此建议,我们可以请您的法律顾问或我们的法律顾问起草一份知识产权转让协议。 亲切的问候, {已编辑}


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.