软件工程

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

2
特许代码使用时应注意哪些问题?
我使用站点提供Web服务,最近我得到了将该服务特许权给另一家公司的建议。 当他们希望我的所有代码都在服务器上运行时,问题就来了。我了解他们的原因,但我想采取措施使我的PHP代码的核心保持隐藏和不变。我想采取措施,不要将我的代码转售给其他竞标者,也不要使用我的IP。 经过研究,我提出了一些解决方案,例如PHP加密,混淆或数据指纹识别。 我要问的是男子气概: 提供代码时应该注意什么? 我该如何防止他们理解我的代码并将其出售给他人?
9 php  sales 

6
向同事介绍新主题
我一直在尝试向同事介绍诸如单元测试,依赖项注入,控制反转等主题。我进行了小型讲座,演示,并在午餐和学习中建议了这些主题。接待通常是积极的,人们确实看到了这些主题的价值。 尽管它们似乎吸引了这些主题,但采用率仍然很低。当我与他们讨论时,答案通常是: 下次再试。我只是想把这个项目推销出去。 我觉得这是因为他们所看到的大多数只是演讲类型的演示,而他们没有任何动手经验。我该怎么做才能推动他们前进?如果他们不愿意,我不想“强迫”他们编写代码,因为这看起来像是“作业”,并且可能给他们留下不好的印象。 我们的项目通常不会花时间进行实验,因此人们倾向于回避新技术。这为开发人员在开发阶段尝试合并新事物留下了空间。 是否有任何有趣或有趣的练习(独奏或团队练习)使他们对这些主题有更多的动手经验?我希望找到可以使兴趣达到顶峰的东西,以便他们愿意安排一天的时间来完成一些整洁的事情,或者愿意达到足够的兴趣点,以便他们可以自己进行调查。

3
提出SVN的版本控制策略
我要全天候尝试为公司制定版本控制策略。我们目前使用的是SVN,但没有结构-我们基本上只有一个主干,并且只能使用它。最近,开发经理启动了另一个存储库,它充当我们的“标签”,但是由于它不是同一存储库的一部分,而是完全独立的存储库,因此必须与“ trunk”手动合并。实际上,只有一个文件夹,称为“ Dev”(在不同的日期实际上有不同的“ Dev”文件夹,但只有“ Dev”是主要文件夹),在此之下还有其他所有文件夹。所有其他项目。它根本不是按项目组织的,它没有分支/标签/树干或其他任何概念。最初设置的人(已久,当然)似乎根本不知道如何设置SVN,从那以后,没有人会因为担心破坏某些东西而费心地学习如何正确地做事。我们不使用任何类型的CI(不幸的是,也不使用自动化测试)。 首先,我们应该按项目分开吗?例如,我们有:两个ASP.NET网站(非Web应用程序,网站),一个Web服务,一个用于所有表脚本和存储过程的部署文件夹,两个用于外部项目的命令行客户端,这些客户端由网站和具有公用业务对象等的共享文件夹。这些应该是属于自己的带有分支/标签/树干设置的项目,还是应该像这样: dev/ branches/ tags/ trunk/ Site1/ Site2/ WebService/ SharedCode/ 并具有所有分支,并且所有内容都具有整个Dev文件夹的副本?由于我们经常遇到需要在共享代码库和至少一个(通常是两个)网站中进行更改的情况,因此这种方法可能更容易被吞噬。 其次,我们定期向开发服务器和实时服务器发布(按我们的说法)。从我读过的最好的处理方式来看,所有开发都进入了trunk /,分支是“临时的”,用于添加可能影响主干的新功能,而标签用于发布?因此,我们每个月都在推动,我正在开发一个全新的模块。我将分支主干,并将该分支用于我的代码,编写和测试它以及其他内容。模块完成后,我会将其合并回主干(并可能删除分支),而当我们准备进行部署时,我们将对其进行标记(比如说“ May2011”)。如果我们在发布后进行了错误修复,则将在May2011标签中对其进行修复,然后将其合并到主干中(这样,主干也将获得此修复),然后May2011会因修复而再次推出?这是标记的意图吗?


5
您是否可以通过学习其他语言范例来提高编程技能?
如果是这样,您能告诉我学习新的范式是如何改变您解决编程问题的方法的,即使问题出在另一范式/语言/技术中? 如果您能以一种特定的方式告诉我,我将不胜感激,通过学习Y(即Scheme / Prolog / Lisp)可以提高您的X(即JAVA / C#/ C ++)编程技能。 另外,您建议什么范例最有助于成为一名优秀的程序员? 我的经验只是结构化的-OOP,命令式-过程性的,并且在某种程度上是模板元编程,但是我的目标不是学习另一种语言,而是学习解决问题的不同方法。 谢谢!

3
什么时候使用RCP?
我喜欢使用Java和Swing编写小型GUI应用程序,类似于社交网站Tumblr的客户端 我应该使用Eclipse RCP还是Netbeans平台? 通过使用普通摆幅/ SWT中的任何一种,我可以获得什么好处? 与使用Swing或SWT开发的应用程序相比,RCP应用程序是否需要更多的依赖项?
9 java  gui 

8
对于“超级”站点,应该考虑哪些因素?
我公司正在考虑将其所有的第1层(即高端生产)应用程序和站点整合到一个包含所有内容的代码库中。 从理论上讲,它们的权限,设计和整体功能可以同质化并集中管理。 我无休止地担心这种方法,因为支撑每个应用程序的数据结构是非常不同的,业务规则是复杂的,并且对于每个应用程序都是唯一的,并且现有应用程序的整体代码库是极为不同的,并且非常被忽略。 编辑: 当前环境由三个ASP.Net 1.1站点和一个MVC2应用程序组成,这三个站点自首次编写以来就几乎没有任何真正的热爱(主要原因是公司中没有经验丰富的开发人员),而另一个MVC2应用程序在成为ASP.Net 1.1站点之前去年升级。我们只用C#编写。 该公司规模很小,只有大约50名员工。其中三个是实际的开发人员。管理(甚至是IT管理)除了具有IT项目的项目管理(因此具有一定的术语和业务影响知识)以外,没有任何IT背景或经验。 这些应用程序主要是在线服务,用于支持公司出售的产品。该公司不直接出售任何软件。 因此,用一个合理而具体且可以回答的问题来表述整个情况:在当前条件下(例如,旧代码库,复杂的业务系统和规则),有哪些令人信服的理由支持和反对将所有系统整合到一个总体解决方案中? )?

2
什么是进行轻量级体系结构评估的好方法?
我熟悉架构评估方法,例如技术架构权衡分析方法(ATAM)和面向业务的成本效益分析方法(CBAM)。但是,这些方法的规模相当大:它们规定了一些集思广益的会议,演示文稿,开发了许多描述折衷方案的方案等。尽管对于一定规模的项目很有用,但对于通常用于内部项目或桌面应用程序的项目却太大了由少数开发人员(或更少)开发的产品,即使它们很小,也有一些相当严格的质量约束(性能,可伸缩性,适应性)。 我过去使用的一种典型做法是让一名开发人员(或者如果一个团队有一个团队,则由架构师)提出应用程序的通用体系结构,然后与其他团队在白板上进行讨论,通常使用一些易于绘制和理解的伪UML表示法。这通常会导致反馈和体系结构上的某些迭代。但这往往过于非正式化,导致做出各种假设,这些假设后来可能变成错误的决定。 像ATAM方法通常迫使所有利益相关者深入思考的架构,直到每个人都至少在什么架构究竟同意导致讨论的。 有没有人有进行轻量级前期架构评估的经验?如果是这样,有什么好的做法?

6
CSS,JS和HTML的代码审查指南
我被要求为审查CSS,JS和HTML创建准则。我知道有针对JS的编码指南,但对HTML和CSS一无所知。要复习JS,我一定会遵循这些准则并提及它们。但是CSS和HTML呢?除了逻辑错误和缩进问题之外,在查看标记和CSS时是否还需要检查某些特定事项?


4
您如何处理Scrum中的相关故事?
在我目前工作的公司中,我们注意到有时有些故事是相互关联的(因为耦合太紧密)。这可能是因为它们属于相同的总体功能,或者它们是不同的功能,但是其中一些功能需要先完成才能继续下一个功能,依此类推。 在不停止迭代工作流程的情况下,如何处理这种情况?我们做错什么了吗?
9 scrum  stories 

1
当前证据是否支持采用规范数据模型中的上下文?
“规范”思想在软件中无处不在。诸如Canonical Model,Canonical Schema,Canonical Data Model等模式似乎在开发中一次又一次出现。 像许多开发人员一样,我经常不加批判地遵循传统的常识,即需要规范的模型,否则您将面对映射器和翻译器的组合爆炸。或者至少,我用来做,直到几年前,当我第一次读到了几分臭名昭著的不信任投票EF: 曾经支持追求规范数据模型的假设既没有也不可能包含一旦将想法付诸实践就会发现的因素。通过多年的反复试验,我们发现针对每个单独的上下文使用单独的模型(可能在其中使用规范的数据模型)是最简单的方法,也是成本最低的方法,并且可以带来更大的可维护性和可扩展性使用上下文模型的应用程序和端点,并且这种方法不会像规范模型那样鼓励软件熵。 这篇文章没有提供任何证据来支持其主张,但是确实让我质疑CDM方法足够长的时间以尝试替代方法,并且所产生的软件在字面上或形象上都没有爆炸。但这并不意味着要孤立很多。我本来可以很幸运。 因此,我想知道,是否对软件系统或体系结构中的规范模型与上下文模型的实际,长期影响进行了认真的研究? 或者,如果现在提出这个要求还为时过早,那么有没有任何开发人员/架构师撰写过有关从CDM切换到独立上下文模型(反之亦然)的个人经验的书,以及对生产率,复杂性或可靠性等方面的实际影响是什么? 那么在不同级别上的差异又如何呢?也就是说,在单个应用程序中使用同一模型与在应用程序系统或整个企业中使用模型之间的差异呢? (请只提供事实;欢迎战争故事,但不能no测。)

2
估计Scrum故事点的最佳方法是什么?
我喜欢计划扑克在任何项目开始时的工作方式,让您相互比较和讨论每个故事的细节。 我注意到的一个问题是,随着时间的流逝,随着您对问题领域的了解越来越多,您倾向于为每个故事投票更少的分数,即,一开始的故事价值为5或8该项目的价值现在可能值得3。 您如何以最佳方式避免或解决此问题?有更好的估算方法吗?故事应该始终保持不变,还是故事点减少?


3
特定语言的“经验”是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我是一名CS学生,目前正在寻找暑期实习的过程,特别是因为我想为Android和/或iOS开发应用程序。当查看各种机会的需求(任何软件开发机会,而不仅仅是我提到的那些机会)时,它将列出“ x,y,z ....的经验”。我的问题是:什么才算是使用特定语言或技术的经验?我感到很幸运,因为我有机会在大学学习中使用多种语言,从VB到MIPS汇编,一应俱全。但是,就个人而言,除了少数例外,我不会认为自己对我习惯于使用的大多数语言都足够了解,并被告知要在y日期之前对x进行编码。我可能知道该语言的基础知识, 要使用我现在遇到的特定示例:我感兴趣的实习工作列出了C和/或C ++的经验。我已经用C做过一些工作,我知道您能做和不能做的事,我拥有并阅读K&R,了解指针的工作原理,等等。但是我实际上并没有用C编写大量代码,已经写了一些简短的程序,并修改了一些其他程序,但是我从来没有写过足够大的东西来实际必须管理内存分配或提供一些抽象来产生所需的功能。因此,尽管我觉得自己有概念上的理解,但是我没有应用它。概念理解算作经验吗?我一直渴望学习和拓宽我的知识,但我也不想过分承诺(这似乎与您的承诺相反) 有什么想法吗?忠告?

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.