软件工程

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


5
监控C ++应用程序
我们正在实施新的集中监控解决方案(Zenoss)。使用SNMP和JMX可以很容易地将服务器,网络和Java程序整合在一起。 但是,问题是,在大型异构(Solaris x86,RHEL Linux,Windows)环境中监视和管理自定义C ++应用程序的最佳实践是什么? 我看到的可能性是: 网络SNMP 优点 每个服务器上的单个中央守护程序 知名标准 轻松集成到监控解决方案中 我们已经在服务器上运行了Net SNMP守护程序 缺点: 复杂的实现(MIB,Net SNMP库) 为C ++开发人员介绍的新技术 系统日志 优点 每个服务器上的单个中央守护程序 知名标准 未知集成到监视解决方案中(我知道它们可以基于文本发出警报,但是在发送遥测信息(如内存使用率,队列深度,线程容量等)时效果如何? 简单的实现 缺点: 可能的整合问题 C ++开发人员的一些新技术 如果我们切换监视供应商,可能会出现移植问题 可能涉及提出临时通信协议(或使用RFC5424结构化数据;我不知道Zenoss是否在没有自定义Zenpack编码的情况下支持该协议) 嵌入式JMX(嵌入JVM并使用JNI) 优点 Java和C ++的一致管理接口 知名标准 轻松集成到监控解决方案中 有点简单的实现(我们今天已经出于其他目的执行了此操作) 缺点: 复杂性(JNI,本机C ++和Java之间的转换层,基本上编写两次管理代码) 可能的稳定性问题 在每个进程中都需要一个JVM,使用更多的内存 JMX是C ++开发人员的新技术 每个进程都有自己的JMX端口(我们在每台计算机上运行很多进程) 本地JMX守护程序,进程连接到它 优点 每个服务器上的单个中央守护程序 Java和C ++的一致管理接口 …
10 java  c++ 

7
需要哪些计算机科学学科的人员来学习编译器入门课程?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 4年前关闭。 我不是计算机科学专业的本科生,并且是专业的网络开发人员(java,python,AS3等)。我每学期在当地大学修一门课程。我上学期参加了人工智能(包括逻辑,上下文无关语法,CYK解析,入门级NLP,马尔可夫链,HMM等)。 我计划在即将到来的semster中学习编译器入门课程,内容涵盖以下课程: 词法分析,语法分析,语义分析,运行时环境,中间表示,代码生成,寄存器分配,指令选择和调度,局部和全局代码优化简介,数据流分析 我的问题是,在学习这门课程之前,我是否应该了解计算机科学专业?如果是,那么请列出这些课程将是很棒的。

5
部署使用Microsoft新的LocalDB的应用程序需要什么?
我想知道什么新的LocalDB要在用户计算机上运行需要安装哪些Microsoft组件。 现在在CTP3中:SQL Server Express LocalDB LocalDB是SQL Server Express Edition的一种新的轻量级部署选项,具有较少的先决条件,并且安装非常迅速。对于需要嵌入式SQL Server数据库用于桌面应用程序或工具的开发人员而言,这是理想的选择。LocalDB具有与SQL Express相同的所有可编程性,但是它们与应用程序一起在进程内运行,而不是作为服务运行。它是SQL Server代码名“ Denali” CTP3下载的一部分。 以上是Microsoft网站CPT3中的新增功能 这听起来像是小型单用户桌面应用程序的理想SQL数据库。我试图找出我需要包含在安装中的内容。我想将其用作嵌入式数据库,但是我不知道是否需要安装任何Microsoft组件或确保以前已经安装了任何其他Microsoft组件。 有谁知道为了使此新LocalDB运行需要安装哪些Microsoft组件?是否有安装程序可以自动检测安装所需组件的存在?

6
我应该如何计划我的代码库?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 我目前正在从事一个项目,该项目的代码行数将超过5,000行,但我从未真正想到过这个设计。我应该使用什么方法来构造和组织代码?纸和笔?UML图?还有吗
10 architecture  uml 

2
如何在Java Swing中将模型与视图/控制器完全分离
是否有一组通用的设计指南,用于在Java Swing应用程序中将Model类与View / Controller类分开?我不太担心View / Controller对模型一无所知,反之亦然:我想将模型设计为对javax.swing中的任何东西都不了解。理想情况下,它应该具有一个简单的API,使其能够由诸如CLI的原始语言驱动。从广义上讲,它应该是一个“引擎”。 将GUI事件传递给模型并不难-动作执行者可以调用模型的API。但是,当模型进行自己的状态更改并需要反映回GUI时,该怎么办?这就是“听”的目的,但是即使“听”也不是完全消极的。它要求模型知道有关添加侦听器的信息。 让我思考的特定问题涉及文件队列。在GUI端DefaultListModel后面有一个JList,还有一些GUI东西可以从文件系统中选择文件并将它们添加到JList中。在模型方面,它希望将文件从此“队列”的底部拉出(导致它们从JList中消失)并以某种方式进行处理。实际上,已经编写了Model代码-当前它维护ArrayList<File>并公开一个公共add(File)方法。但是我对如何使我的模型与视图/控制器一起使用而不对模型进行一些特定于Swing的大量修改感到困惑。 我对Java和GUI编程都非常陌生,到目前为止一直都在进行“批处理”和“后端”编程-因此,我有兴趣在模型和UI之间保持严格的划分,如果可能的话被教学。
10 java  mvc  swing 

5
您如何在访谈中回答“解释项目的当前架构”问题?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我目前正在处理的应用程序有点庞大。15分钟左右无法解释。 上一次我最终绘制了一些类图以及它们之间的联系方式,但我可以看到面试官对答案不满意。 回答此问题时应重点突出哪些主要内容? 例如,如何管理会话,如何实现持久性是很少的事情。 还有哪些其他事情不容错过?

3
使球在TDD上滚动
我是一个开发团队的成员,该团队与许多其他团队一起维护和改进已使用了至少15年的应用程序。最初构建和设计TDD时闻所未闻。 该应用程序相当稳定,我们很少遇到显示错误,但是我们每周平均会发现大约一两个错误,这严重降低了服务质量。这些错误要花很长时间才能找到并修复,这在很大程度上是因为手指指向的,而我们仅有的测试是接口测试。因为在修复该错误之前浪费了很多时间,所以我和另一个开发人员计划提出测试驱动开发。即将进行新的大修,我们希望在新模块上完成几乎完整的单元测试,我们还计划建议为我们必须更改的任何遗留代码(例如,错误修复或功能实现)构建测试单元。 ),但不要花时间为尚未引起问题的代码开发测试用例。 对我来说,这似乎是合理的。本月,我们修复了一个错误,该错误花费了两周的时间,但是如果完成了单元测试,则可以在部署之前发现该错误。但是对于我们的经理们来说,他们好像要花更多的钱。 我如何说服我们的客户他们想花钱进行单元测试和测试驱动的开发?是否有任何研究表明单元测试的投资回报率?
10 unit-testing  tdd 

2
如果您只有SVN分支,是否应该打扰一下?
如果我们仅在Subversion中使用一个分支,我们是否还要打扰?我们不能只在行李箱上工作以加快速度吗? 这就是我们使用Subversion开发的方式: 有一个行李箱 我们建立了一个新的发展分支 我们在该分支上开发了一项新功能 完成功能后,将其合并到主干中,删除分支,并从主干中创建新的开发分支 当我们要发布到生产环境时,我们会在行李箱中制作一个标签。错误修正是在该标签的分支上进行的。然后,此错误修正将合并到主干中。 这就是为什么在功能完成后我们创建了一个新的开发分支的原因。这样,错误修正会尽快包含在我们的新代码中。 下图应阐明: 现在,感觉这不是最有效的工作方式。我们在提交之前在本地进行构建,这大约需要5-10分钟。您可以理解,等待时间很长。 开发分支的想法是主干始终可以发布。但这在我们的情况下已不再是真的。有时,一项功能几乎已经准备就绪,并且一些开发人员已经开始编写下一个功能(否则,他们将围坐在一个或两个开发人员完成并合并的位置)。 然后,功能部件1完成后,将其合并到主干中,但包含功能部件2的某些提交。 那么,由于我们只有一个分支,我们是否应该还要烦扰开发分支?我一直在阅读有关基于主干的开发和逐个分支的信息,但是我发现大多数文章都集中在逐个分支的部分。我的印象是,重大变化将涉及多个版本。这不是我们遇到的问题。 你怎么看?我们可以在行李箱上工作吗?最坏的情况是(我认为),我们将不得不在主干中做一个标签,并挑选需要的提交,因为某些提交/功能尚未准备好投入生产。
10 svn  branching  tagging 

7
敏捷和瀑布式流程的时间表中,代码重构和优化应该放在哪里?
在项目管理团队中似乎有一种说法,指出“有效”意味着应该认为它已100%完成。大多数程序员都知道情况并非总是如此。如果我正在尝试其他方法来使某项功能正常工作,那并不一定意味着我找到了最好的解决方案,或者在与其他开发人员一起审阅后不需要进行任何重新设计。我经常会做一些事情,退后一步,然后问自己在满足业务规则后我能做些什么。这个“我可以做得更好”的时间是否应该真正放在时间轴内的某个地方?我认为最好的方法是,一定程度上,代码总是比发现时更好(这可能意味着启动后重构)。然而,

6
严重影响性能的常见Javascript错误?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 在我参加的最近一次UI / UX MeetUp上,我在一个使用Javascript(jQuery)进行交互和UI的网站上提供了一些反馈-这是相当简单的动画和操作,但是在一台像样的计算机上的性能令人震惊。 它实际上使我想起了我遇到过的很多站点/程序,其中的某些操作绝对会破坏性能。它通常在Java几乎可以替代Flash的情况下(至少在这种情况下更为明显)。这与我使用的具有更多Javascript和功能但运行非常平稳的某些Web应用程序形成了鲜明的对比(IBM的COGNOS是我想不到的一个)。 我很想知道开发JS会导致网站性能下降的一些常见问题。

2
Automake-如何保持源代码树干净?
我有一个使用GNU自动工具构建自身的项目。我试图进行修改,以便自动工具在单独的目录中生成所有非版本控制文件,以便使源树中的临时文件保持清洁。任何人有任何想法如何做到这一点?
10 builds 

5
PreProd和Prod的环境应如何相似?
我最近刚参与一个项目,在发布期间,我们意识到它在生产环境中不起作用。它可以在所有其他环境中使用,但是因为我们有一个单独的发布团队,而且我们无法自己设置服务器和环境,所以我们无法查看它们上的配置。 我们怀疑Prod在其帐户或IIS设置中具有某些用户权限,因此我们现在在努力。 因此,我认为整件事对我来说都是一次学习经历,我不想再重复同一件事。我想问一下,这些环境应该有什么不同?我一直认为PreProd应该是与Prod环境相同的副本,使用相同数据库的副本,使用相同用户帐户的副本,应安装在相同服务器等上。 但是我应该走多远?如果网站是外部的,那么PreProd应该是外部的吗?如果网站具有不需要用户帐户或密码即可导航的组件怎么办?将它暴露给外界仍然可以吗?

2
在谈到非业务应用程序时,我应该使用“业务逻辑”一词吗?
假设程序的一部分不处理初始化,输入,输出。它只是指定应该做什么,允许什么或不允许什么。为此,我使用术语“业务逻辑”。但是应用程序与业务无关。 例如:一个游戏。假设有以下部分: 输入处理 碰撞检测,物理,玩家控制 渲染输出 AI-NPC如何达到指定的目标。 “业务逻辑”-玩家触摸某些对象时会发生什么。那里有什么类型的NPC,什么时候它们会做什么,“生活”,“弹药”,“等级”,“得分”的概念。 但这不是生意,只是游戏。维基百科尚不清楚。

2
元编程
我刚刚开始作为C ++开发人员的旅程,并且最近我正在研究一个称为元编程的主题。到目前为止,我已经阅读了很多有关该主题的信息,并且没有几个问题。 反射在c ++中的用法:可能吗?根据我的理解,反射是一种元编程技术,它具有操纵程序状态的能力,其操纵可以是内省的或内省的。 反射架构和元级别架构有什么区别?元编程体系结构属于哪一类? 元编程分为两个级别:元级别和基础级别。在我的理解中,被调查的目标程序或系统是基础级别,而将在被调查的系统上运行的元程序是元级别。我对么? 还通过提供一些有关在C ++中进行模板元编程的准则来帮助我。 您可以为我推荐一些可行的示例,让我亲自尝试一下这种编程技术吗?
10 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.