软件工程

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

4
规则引擎的使用如何影响应用程序的设计,实现和性能?
我对规则引擎的能力感兴趣: 启动并迭代业务驱动逻辑 让“业务用户”而不是开发人员执行这些规则的实际修改 大致理解业务规则 另外,使用规则引擎是否会影响应用程序的质量? 如果要部署到一台计算机的安装程序,架构与使用数千台计算机的多层基于云的分布式架构,规则引擎的使用是否会发生变化?会有什么不同?

7
您是否曾经担心过自己更关心事物的构建方式而不是实际构建的事物?
作为程序员,我对自己的工具,其他人的代码,我的代码以及整个世界都有固有的烦恼。我一直想改善它。因此,我进行重构,以掌握最新技术。我尝试学习模式,尝试使用框架,以免重蹈覆辙。我可以写一份技术规格书,以我可以压入的图案数量来打动您的袜子。 但是,最近我觉得我对使用的工具了解更多,而不是如何实际实现成功的软件。 我觉得我缺乏人为因素技能,我认为要成为一名成功的软件工程师,不仅仅需要了解最酷的框架。我认为它也需要以下一些技能。 交互设计 用户体验 市场行销 我从与我一起工作的人和我从事过的伟大项目中学到了一些东西,但是我不觉得自己“拥有”这些技能。 我对吗?我应该尝试进一步发展这些技能,还是应该将这些技能留给从事这些职业的人使用? 您如何确保自己在做某事时不会太受束缚,并确保自己“使用户很棒”? 有谁知道从编程的角度学习这些技能的好资源?

7
有什么好书可以帮助非技术管理人员理解软件开发?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 如果您有一些非技术人员来管理您的软件开发团队,那么您是否希望他们读一本书以更好地了解流程? 例如,在大多数工作中,您可以很好地估计任务将花费多长时间。但是在开发过程中,重点是您必须解决问题,这需要花费未知的时间。这很难沟通。 您知道的任何信息都能很好地解释这一点吗?

2
如何销售/分发我的软件?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在研究一个个人项目(Windows桌面应用程序),并开始考虑尝试从该应用程序(而不是源代码)中赚钱。我不期望赚到十亿美元,但是谁知道呢?我所看到的最简单的方法是免费赠予并允许人们捐赠,但是我不确定它的运作方式或最简单/最佳的付款系统(Paypal)?如果我要出售它,那该怎么办?第三方分配?通过Paypal从我自己的网站上出售它并验证收据?为应用程序建立自己的“商店”? 本质上:您使用什么方法从个人项目中赚钱(捐赠,出售或其他?),您是如何进行的?提示? 感谢您的答复。

4
存储过程命名约定?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我们的一位资深开发人员表示,对于存储过程,应使用命名约定,并使用“ objectVerb”样式的命名方式,例如(“ MemberGetById”),而不是“ verbObject”类型的命名方式(“ GetMemberByID”)。该标准的理由是,所有相关的存储过程都将按对象而不是按操作分组在一起。 虽然我看到了这种命名方式的逻辑,但是这是我第一次看到以这种方式命名的存储过程。我对命名约定的看法是,该名称不能自然地读取,并且需要花费一些时间来确定单词在说什么以及该过程可以做什么。 您对此有何看法?命名存储过程的最常用方法是哪种?您使用或遵循的存储过程命名约定是哪种类型?

9
有关代码文档生产率收益/损失的研究
经过大量搜索,我未能回答与软件开发领域中已知的假设有关的基本问题: 什么是已知的: 对足够的代码文档(无论是Doxygen标记,Javadoc还是仅仅是大量注释)实施严格的政策,都会增加开发代码所需的时间。 但: 拥有详尽的文档(甚至API),可以在新手和经验丰富的开发人员添加功能或修复bug时带来生产率的提高(有人认为)。 问题: 保证此类文档所需的额外开发时间是否能被下游生产率的提高(从严格的经济意义上来说)所抵消? 我正在寻找案例研究或答案,可以带给他们客观的证据来支持得出的结论。 提前致谢!

4
如何发现未记录的功能?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我一直想知道您如何找到未公开/专用的 API? 例如Apple未公开的/私有的API,Play Station,Windows Phone 7,Win32内核,Windows API,隐藏的回调等... 黑客使用哪些工具来查找私有和未记录的功能? 在哪里可以读到人们深入研究私有API和反向工程技术的经验,这些经验揭示了API文档中通常解释的秘密? 谢谢, 阿

2
编译器应如何报告错误和警告?
我不打算在不久的将来编写编译器。仍然,我对编译器技术以及如何改进这些东西很感兴趣。 从编译语言开始,大多数编译器有两个错误级别:警告和错误,第一个是大多数情况下应修复的非致命性错误,以及表示大多数时间无法生成机器(或字节)的错误。输入的代码。 虽然,这是一个很弱的定义。在某些语言(例如Java)中,如果不使用该@SuppressWarning指令,就无法消除某些警告。而且,Java将某些非致命性问题视为错误(例如,由于我想知道的原因,Java中无法访问的代码会触发错误)。 C#没有相同的问题,但是确实有一些问题。似乎编译是在多个过程中进行的,并且过程失败会阻止进一步的过程继续执行。因此,通常会严重低估构建失败时获得的错误计数。在一次运行中,它可能表明您有两个错误,但是一旦解决它们,您可能会得到26个新错误。 深入研究C和C ++只是显示了Java和C#的编译诊断弱点的不良组合(尽管说Java和C#只是解决了一半的问题可能更准确)。有些警告确实应该是错误的(例如,当并非所有代码路径都返回一个值时),但它们仍然是警告,因为我想,当他们编写标准时,编译器技术还不足以使它们成为此类错误。强制检查。同样,编译器经常检查的内容超出标准所规定的范围,但仍将“标准”警告错误级别用于其他发现。通常,编译器不会立即报告他们可能发现的所有错误;可能需要一些编译才能删除所有这些编译器。更不用说C ++编译器喜欢吐出的隐秘错误, 现在添加了许多构建系统,它们可配置为在编译器发出警告时报告失败,我们只是得到了一个奇怪的组合:并非所有错误都是致命的,但有些警告应该;并非所有警告都是应有的,但有些警告已被明确地压制而没有进一步提及它们的存在;有时所有警告都会变成错误。 非编译语言仍然有糟糕的错误报告。在实际运行代码之前,不会报告Python中的Typos,而且您一次也不会真正引发多个错误,因为脚本在遇到一个错误后便会停止执行。 PHP本身具有许多或多或少的重要错误级别和异常。解析错误一次报告一次,警告通常非常严重,以至于中止您的脚本(但默认情况下不是),通知确实经常显示出严重的逻辑问题,某些错误确实还不足以阻止您的脚本,但仍然这样做,并且像往常一样,在PHP中还有一些很奇怪的东西(为什么我们要为不是真正致命的致命错误需要一个错误级别?E_RECOVERABLE_E_ERROR,我是在和您聊天)。 在我看来,我能想到的编译器错误报告的每个实现都被破坏了。真是太遗憾了,因为所有优秀的程序员都坚持认为正确处理错误非常重要,但却无法获得自己的工具来这样做。 您认为什么是报告编译器错误的正确方法?

4
Win32 API的演变
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 Windows 32 API是否随着时间的推移发生了很大变化?1998年查尔斯·佩佐尔德(Charles Petzold)的书“ Programming Windows,第5版”是否仍包含相关信息,或者其中大部分已过时/过时? Windows 32 API的最新新增功能(如果有)有哪些突出示例?
11 books  c  windows  api 

3
混合VB6 / .Net应用程序在现实世界中如何运行?
我正在维护VB6应用程序,我们正在研究如何迁移到.Net。我们正在考虑通过在COM可见.Net类中实现新功能并缓慢迁移现有功能来逐步进行此操作。我找到了一些有关如何做到这一点的有启发性的“ Hello World”示例,它在我们的App中运行良好。但是这些混合应用程序的实际行为如何?它们稳定,可维护吗?我们程序的特别之处在于,同一计算机上的更多用户将通过切换用户帐户来使用它。 编辑:VB6应用程序从USB连接读取数据并将其存储在Access数据库中。用户可以调用数据的各种视图。数据缓存在硬件设备中,因此读取数据时不会造成致命影响。 编辑2015年10月4日:后续行动:我们仍在逐步将现有VB6代码替换为.Net的过程中。首先,我们采用了数据访问例程,然后将业务逻辑以及当前的一种逻辑转换为WPF。我们确实确实重写了我们转换的每段代码(在VB.Net中),但是我们可以这样做很慢,同时可以改善功能。混合应用程序在过渡到Windows 8、8.1和10后仍然幸免于难。 编辑2018年3月9日:我们将在下个月发布完全转换的代码。混合应用程序将至少支持一年。它主要在高分辨率屏幕上显示问题,但在其他情况下则可以正常工作。坦白地说,由于VB6代码库存在兼容性问题,因此.Net Framework安装和依赖项安装(其中包括SQL Server LocalDb)损坏导致的支持头痛更多。

2
软件是否应该有一个“数据卫生”索引,以表明程序的清洁程度?不留下临时文件等
软件是否应该有一个“数据卫生”索引,以表明程序的清洁程度?不创建未使用的临时文件,注册表项,环境变量等。 例如,在Windows中的“用户”文件夹中查看,您将看到应用程序使用的所有工作空间文件。 例如,这使得很难知道什么需要备份以及什么可以在机器生成时丢弃。

1
您会推荐什么样的在线技术文档系统?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 目标是拥有一个在线文档系统,并具有以下主要要求: 将主要用作我们所有应用程序最终技术文档的中间阶段(尽管可能永远不会完成:)。通常按以下方式使用:有人遇到问题,我将其修复,并立即写下该修复程序。现在发生的事情变得无法控制:某人有问题,我解决了,我和某人都很高兴,但是两个月后,其他人也遇到了同样的问题,没有人记得修复的方法。 可从任何地方访问,在我们的apache服务器后面运行 用户/组管理,允许只读/读写/管理员访问 格式不是太重要:纯文本可以,但Wiki样式会更好 便宜或免费 我的一些想法: 只需在文件共享上或通过ssh提供文件即可(缺点:与Windows不太兼容,优点:简单,可以是任何文件类型) 将其保存在SCM中(如上svn / git,idem,但更易于访问和控制访问) Confluence:我们已经使用了Jira,Confluence是否值得?它如何与Jira集成? 还有什么吗 请不要对这些发表评论,或与其他系统分享您的经验。

2
编写LISP Web服务的策略/资源?
背景:我想用Common Lisp编写一些功能齐全的Web服务,因为愚人节对我公司其余的开发团队进行了恶作剧。 这有两部分:从MySQL读取信息/将信息写入MySQL数据库,以及通过HTTP接收/处理/响应请求。(实际上,还有第三部分,编写自动化测试,但是我的质量保证合作伙伴将负责该部分。) 经过一番谷歌搜索之后,我在这里找到了很好的资源(http://www.ymeme.com/creating-dynamic-websites-lisp-apache.html),但是我很惊讶似乎只有一个演练。是否有人认识其他人,或者谁可以分享在CLisp中编写Web服务的个人经验?
11 lisp 

3
保留版本控制提交历史记录与重构和文档
使用版本控制系统维护的提交历史记录几乎不需要花费任何费用。但是,在大型项目重构(或重组/清理)过程中,函数和类甚至命名空间将被移动;有时,几个文件将合并在一起,而其他文件将被拆分。这些更改通常会导致丢失一些文件的原始提交历史记录。 我个人认为,维护项目组织比保留源代码历史更为重要。优秀的项目组织可以合理地不断添加新功能,而源代码历史记录的价值似乎是可疑的。 此外,通过使用单元测试,可以快速确定回归问题。只要最新版本继续满足所有软件要求,我们是否真的需要保留源代码的历史记录? 我了解必须保留所有已发布的源代码,因为需要向客户提供支持,而无需他们执行主要版本升级。但是除此之外,保持源代码提交历史还有任何价值吗? 源代码提交历史记录是否在团队成员之间的通信中发挥任何作用?如果我们取消提交历史记录,而是依靠“源代码” +“单元测试代码”进行通信,该怎么办? 提交历史的存在是否使对有关该项目的重要信息的长期记录感到满意,例如重大的设计/需求变更以及推动这些变更的思路?


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.