软件工程

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

3
当程序员谈论“数据结构”时,它们指的是什么?
当程序员谈论“数据结构”时,他们只是在谈论诸如列表,树,哈希,图等的抽象数据类型吗? 还是该术语包括任何保存数据的结构,例如复合类型(类对象,结构,枚举等)和原始类型(布尔,整数,字符等)? 我只听说过程序员使用该术语来引用复杂的数据结构或抽象的数据类型,但是提供数据结构列表的Wikipedia文章在定义中同时包括了复合类型和原始类型,这并不是我所期望的(甚至虽然确实有道理)。 当环顾四周网上我看到,是指在编程意义上的术语“数据结构”为仅指抽象数据类型的其它地方,比如从计算机科学的州立大学石溪分校的系本次讲座哪些状态 数据结构是特定抽象数据类型的实际实现。 或这本有关数据结构的Wikibook,它在诸如此类的句子中使用该术语: 由于数据结构是更高级别的抽象,因此它们向我们提供了对数据组的操作,例如将项目添加到列表中或查找队列中优先级最高的项目 那么,为什么我在使用术语“数据结构”时只听到程序员指的是复杂的数据结构或抽象的数据类型?程序员对术语的定义是否与字典定义不同?

6
开发和质量检查之间的延迟时间更长的代价
在我目前的职位上,质量检查已成为瓶颈。不幸的是,当前版本中没有保留功能,因此QA可以完成测试。这意味着开发人员继续进行开发后,可能需要2-3周才能对已完成开发的功能进行测试。随着开发人员加快质量检查的进度,这个时间差距只会越来越大。 我一直翻阅我的Code Complete副本,寻找“ Hard Data”片段,该片段表明修复缺陷的时间越长,其成倍增长。有人能指出我一些支持该概念的研究吗?我试图说服质量保证瓶颈比他们想象的要昂贵得多。

5
DelayQueue在现实世界中的使用
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 DelayQueue在现实世界中的用途是什么,它旨在解决哪些常见问题?

2
Spring配置文件放在哪里?
我想将Spring框架集成到我的项目中,尤其是集成到服务器端。 因此,我不想将其放在war文件的WEB-INF文件夹中。 我是否应该将applicationContext.xml放入每个层中(意味着每个项目都被划分为不同的项目?(服务,域和DAO)) 有什么好的做法?
18 java  soa  spring 


7
如何提高对学生的可维护性的培训?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 可维护性是专业软件开发的主要利益。确实,维护几乎始终是软件生命周期中最长的部分,因为维护从项目发布一直持续到基本上结束。 此外,维护中的项目占项目总数的绝大多数。根据http://www.vlegaci.com/298/interesting-statistics-%E2%80%93-numbers-of-programmers-in-maintenance-vs-development/,维护项目的比例约为2 / 3。 我最近遇到了一个问题,那个家伙发现他的工作主要是维护工作,对此感到非常惊讶。然后,我决定在法国软件开发专业人员社区的主要站点(http://www.developpez.com/)上进行讨论(法语)。讨论的标题是“学生是否对专业软件开发的现实进行了足够的培训?” 并且主要是关于可维护性。有人指出,至少在法国,人们没有足够的准备面对两方面的维护: 维护现有代码 制定可维护的代码 我在这里的问题与该讨论相呼应,旨在寻找一种教授维护性的好方法。 我们如何教授可维护性? 您会建议哪种运动? 如果您在可维护性方面受过良好的培训,那么您选择了哪种课程? [编辑]经过一些误会,我认为我必须澄清我的问题。作为项目负责人和软件开发人员,我经常与受训人员或应届毕业生一起工作。我曾经刚毕业。问题是学生通常不熟悉诸如SOLID之类的原理,这些原理会增加项目的可维护性。我们常常最终在使项目发展方面遇到重大困难(可维护性低)。我在这里寻找的是一个成功的关于可维护性的重要性以及如何针对此特定点编写更好的代码的成功教学的具体学术示例。或可能提出的改善学生训练方式的建议。

8
C和C ++之间是否有语言?
我真的很喜欢C的简单和透明的性质:当我编写C代码时,我不受“泄漏抽象”的束缚,并且几乎总能对我正在生成的程序集做出精明的猜测。我也喜欢C的简单,熟悉的语法。 但是,C没有C ++提供的这些简单,有用的东西,例如类,简化的非字符串处理等。我知道可以使用跳转表之类的东西在C中实现,但这有时有点麻烦,并且出于各种原因也不是很安全的类型。 不过,我不喜欢过分强调C ++中的对象,并且我对“ new”运算符等不屑一顾。例如,C ++似乎有太多的障碍,无法用作系统编程语言。 在小部件和小工具的规模上是否存在介于C和C ++之间的语言? 免责声明:我的意思是纯粹是事实问题。我不想激怒您,因为我不同意您的观点,即C {,++}足以胜任我计划的一切。
18 c++  c 


3
Javascript开发人员的认证?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 我正在寻找在javascript开发领域中扎实但又快节奏的入门。 我想到以下主题: Javascript高级概念,OOP jQuery,jQuery-UI,jQuery-Mobile bone.js node.js BDD和/或TDD http://www.codelesson.com的课程似乎很有希望。 存在/可以推荐哪些Javascript开发人员证书? 您还能推荐哪些其他供应商?

6
当其他人迅速提交代码库时,我该如何重构它?
我在一个私有项目中,该项目最终将成为开源项目。我们有一些团队成员,他们具有足够的技术来构建应用程序,但没有专门的开发人员来编写干净/美丽的代码,最重要的是长期可维护的代码。 我已经着手重构代码库,但这有点笨拙,因为与我不经常接触的另一个国家/地区的团队中的某人可能会更新此完全独立的内容。 我知道一种解决方案是快速沟通或采用更好的PM实践,但我们还不算大。我只想清理代码并将其很好地合并到他已更新的内容中。使用分支机构是否合适?尽力而为?还有吗

13
Windows Services的实际用途是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 4年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我是使用Windows Services的新手。尽管我已经学会了在VS2010中创建Windows服务,但是我想知道一些使用Windows服务的实用方法? 我在考虑当前上下文的情况下尝试了谷歌搜索,只是找到了有关如何创建Windows服务的更多教程。 编辑赏金优惠: 所有的答案都很好,但我一直在寻找Windows服务及其含义的更多实际示例?这将帮助开发人员知道何时将其与案例研究一起使用是合适的。

4
如何确定项目所需的程序员数量
您如何知道一个特定项目需要多少个程序员才能成功? 我所服务的公司为客户公司履行订单。我们编写了一个内部仓库管理系统,该系统处理基于位置的库存管理,订单处理,提货单生成,开发票,货运审核和报告(可能有50个报告)。它还具有条形码扫描功能和客户端门户以及许多其他较小的功能。它还包括一个完整的员工时钟。它与Quickbooks,UPS和FedEx集成。它处理至少50个客户端的工作,这些客户端的功能略有不同。例如,我们从客户发送的文件中导入订单,但是每个客户发送不同的文件格式(csv,excel,平面文件和Web服务),因此我们有十几种订单转换方法设置。出口是同一回事。 该项目非常复杂,并且每天都有超过25万行代码的代码在不断增加。这大约是250,000行VB.NET代码,6,200行Ruby代码以及大约5,000行PHP。它还具有一个包含约200个表的MySQL数据库。 由于需求的不断变化和数十个客户的不同需求,代码本身的质量从极差的代码到相对较好的代码都有很大的不同。 当前,该项目只有一个程序员-我自己。我目前还为75人左右的公司提供所有产品支持。这包括故障排除和设置新客户端以及所需的任何新功能。另外,我们正在尝试将整个内容重写为100%基于Ruby on Rails。我们希望在明年左右将整个系统推向市场,以供其他公司使用。 目前,我们只有一名程序员,但我认为这还不够。对于这个规模的项目应该有多少个程序员,或者我们应该如何确定该问题的答案,没有人有任何建议吗?特别是考虑到管理层希望产品在明年之前达到商业质量?

8
与字符串耦合比与类方法耦合更“松散”吗?
我正在使用Swing在Java中启动一个学校小组项目。这是数据库桌面应用程序上的简单GUI。 教授给了我们去年项目的代码,以便我们了解他的工作方式。我最初的印象是代码要复杂得多,但是我想程序员在查看他们不仅编写的代码时经常会想到这一点。 我希望找到他的系统好坏的原因。(我问教授,他说我稍后再看为什么会更好,这让我不满意。) 基本上,为了避免他的可持久对象,模型(业务逻辑)和视图之间的任何耦合,所有操作都由字符串完成。存储在数据库中的可持久对象是字符串的哈希表,模型和视图彼此“订阅”,为它们所订阅的“事件”提供字符串键。 触发事件后,视图或模型会向所有订阅者发送字符串,这些订阅者将决定对该事件采取何种措施。例如,在一种视图动作侦听器方法中(我相信这只是在可持久对象上设置了bikeMakeField): else if(evt.getSource() == bicycleMakeField) { myRegistry.updateSubscribers("BicycleMake", bicycleMakeField.getText()); } 该调用最终到达Vehicle模型中的此方法: public void stateChangeRequest(String key, Object value) { ... bunch of else ifs ... else if (key.equals("BicycleMake") == true) { ... do stuff ... 这位教授说,这种处理方式比让视图简单地在业务逻辑对象上调用方法更具可扩展性和可维护性。他说,视图和模型之间没有耦合,因为它们不知道彼此的存在。 我认为这是一种较差的耦合,因为视图和模型必须使用相同的字符串才能工作。如果删除视图或模型,或在字符串中输入错误,则不会出现编译错误。这也使代码比我认为的要长得多。 我想和他讨论这个问题,但是他利用他的行业经验来反驳我这个经验不足的学生可能提出的任何论点。我缺少他的方法有什么优势吗? 为了明确起见,我想比较上面的方法,同时将视图与模型明显耦合。例如,您可以将车辆模型对象传递到视图,然后更改车辆的“制造”,请执行以下操作: vehicle.make = bicycleMakeField.getText(); 这将把目前仅用于将车辆的品牌设置在一个地方的15条代码减少为一条可读代码。(由于这种操作在整个应用程序中进行了数百次,因此我认为这将是可读性和安全性的巨大胜利。) 更新资料 我的团队负责人和我重组了框架,采用了我们希望使用静态类型进行编码的方式,并告知了教授,最后给了他一个演示。只要我们不向他求助,他是否足够慷慨地允许我们使用我们的框架,以及是否可以让我们其余的团队保持最新状态-这对我们来说似乎很公平。
18 java  coupling 

5
解析器组合器是否将单独的解析和词法传递为良好实践?
当我开始使用解析器组合器时,我的第一个反应是从感觉上像是在解析和词法化之间的人为区别中解放出来。突然所有的一切都只是解析! 但是,我最近在codereview.stackexchange上发现了此帖子,说明有人在恢复这种区别。起初我以为这对他们很愚蠢,但是后来Parsec中存在支持这种行为的功能这一事实使我开始质疑自己。 在解析器组合器中对已经词法化的流进行解析有什么优点/缺点?


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.