问题标签 [requirements]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
usability - 如何衡量规范要求文档中的“可用性”?
现在开始查看我去年的项目,因此我正在编写规范要求文档。现在,碰巧这个项目需要高度的“可用性”——我不知道这是否是正确的英文单词,但我的意思是它应该很容易从用户 PoV 中使用。现在 - 在我目前从事的所有项目中,可用性并不是一个真正重要的因素,所以我可以写一些乱七八糟的东西来解决它。虽然我总是问我们的老师他们会如何指定可用性的要求,但还没有人给我一个我觉得足够好的答案。
我们的老师一直鼓吹对项目的任何要求都应该是“可测试的”,但是您如何测试您的用户界面的可访问性?
假设我有一个实时应用程序正在运行。在这里说“一个条目应该在初始调用后不到 100 毫秒内被删除”并不难。但是要说“用户界面应该是 86% 直观”要困难得多。
我想这是一个难以破解的难题,但我肯定不会是世界上第一个想到这一点的人,更不用说遇到问题了。
user-interface - UI 驱动开发
UI 驱动开发的想法是否有意义?我们的大多数客户都喜欢以屏幕的形式表达他们的要求。例如,我想要一个屏幕来做这个和那个。有时他们甚至会自己决定屏幕的布局(这可能是因为今天的客户已经在他们的大部分任务中使用了软件应用程序)。
此外,这种需求收集方法似乎可以自动传达数据和相关行为。
你们有什么感想?
web-applications - 我应该在我的软件项目中使用形式化方法吗?
我们的客户希望我们构建一个基于 Web 的富 Internet 应用程序来收集软件需求。基本上,它是一个基于 Web 的案例工具,遵循特定流程从利益相关者那里获取需求。我是项目经理,我们仍处于项目的早期阶段。
我一直在考虑使用形式化方法来帮助我的客户和开发人员澄清对工具的要求。我所说的形式方法是指某种形式的建模,可能是基于数学的。我已经阅读并正在考虑的一些内容包括 Z ( http://en.wikipedia.org/wiki/Z_notation )、状态机、UML 2.0(可能带有OCL等扩展)、Petri 网和一些编码合同和前置条件和后置条件等级别的东西。还有什么我应该考虑的吗?
开发人员经验丰富,但根据所使用的形式,他们可能需要学习一些数学知识。
我正在尝试确定我是否值得在这个项目上使用形式化方法,如果是,在多大程度上。我知道“这取决于”,所以对我来说最有帮助的答案是是/否和支持论点。
如果你在这个项目中,你会使用正式的方法吗?
requirements - 内置投票系统的需求工具?
有没有内置投票系统的需求收集工具?使用分类效果不佳,因为土地法一直由最后审查的人说了算。这是解决项目需求阶段意见分歧的建议解决方案。 委员会设计是众所周知的反模式。有一个标准的“技巧”,可以将事物归类为美好的事物,并为其他人提供机会来认识到某些需求缺乏价值。不幸的是,允许民主决策过程的请求似乎太合理而无法拒绝。
security - 医疗应用的安全要求
我正在研究医疗应用程序的编码要求,但找不到任何有用/结构化的东西。基本上,我正在寻找带有安全要求列表的结构化(如果可能是 XML 文件)文档。例如他们应该使用什么样的加密,默认情况下应该禁用应用程序的哪些功能,应该存储哪些日志信息以及如何存储它等等。
当然,不同的应用程序和公司的要求可能会有所不同,我只需要一些一般信息,如果可能的话,对于美国。
asp.net-mvc - ASP.NET MVC 是否需要 IIS?
ASP.NET MVC 是否需要 IIS?我可以在没有安装 IIS 的客户端机器上开发一个使用新的 ASP.NET MVC 框架的应用程序吗?
testing - 在哪里可以找到好的测试用例模板/示例?
我正在尝试建立比现在更正式的要求和测试程序,但是我找不到所涉及文档的任何好的参考示例。
目前,在特性冻结后,测试人员在部署前“点击应用程序”,但是没有正式的规范需要测试什么。
首先,我正在考虑一个文档,它指定需要测试的每个功能,就像这样(编造这个):
- 用户登记表
- 国家下拉菜单(国家/地区是否正确从服务器获取?)
- 密码验证(是否遵守所有密码规则,如果密码太弱,是否会通知用户?)
- 感谢您的注册
...等等。这也可以作为客户在程序员开始编码之前作为需求的一部分签名的东西。功能列表完成后,我正在考虑将此列表作为电子表格中的第一列,其中还说明了该功能最后一次测试的时间,它是否有效,如果它不起作用,它是如何破坏的。这会给我一个文档测试人员可以在每个测试周期后填写,以便程序员有待办事项列表,其中包含哪些信息不起作用以及它何时中断。
其次,我正在为测试人员考虑测试用例,详细步骤如下:
- 加载用户注册表。
- (功能 1.1)检查国家下拉菜单。
- 国家下拉列表中是否填充了国家?
- 国家名称是否本地化?
- 每种语言的排序顺序是否正确?
- (功能 1.2)输入此密码:“a”、“bob”、“password”、“password123”、“password123#”。只应接受最后一个密码。
- 按“确定”。
- (功能 2)检查感谢信。
- 文本是否已本地化为每种支持的语言?
这将为测试人员提供具体的案例和清单,并列出需要注意的内容,并指出第一个文档中的功能。这也会给我一些东西来开始自动化测试过程(目前我们除了单元测试之外没有太多的测试自动化)。
我正在寻找一些其他人如何做到这一点的例子,而没有太多的文书工作。通常,测试人员应该能够在一两个小时内完成所有测试。我正在寻找一种简单的方法来让客户同意我们应该为下一个版本实现哪些功能,并让测试人员验证所有新功能都已实现并且所有现有功能都在工作,并将其报告给程序员。
这主要是内部测试材料,应该是几个 Word/Excel 文档。我试图将一个测试/错误修复周期保持在两天以内。我正在以其他方式(JIRA)跟踪编程时间、新功能的实现和客户票,这基本上是测试文档。这是我想到的生命周期:
- PM 列出功能。客户签字。(文档 1 已创建。)
- 创建测试用例。(文件 2。)
- 程序员实现功能。
- 测试人员根据测试用例测试功能。(并通过文档 1 报告错误。)
- 程序员修复错误。
- GOTO 4 直到所有错误都被修复。
- 内部测试结束;产品展示给客户。
有没有人指出可以在哪里找到一些带有测试用例的示例文档?此外,欢迎有关我上面概述的过程的所有提示。:)
project-management - 使用 Wiki 进行需求管理?
我一直在寻找用于开发功能规范的协作工具。我正在寻找以下能力:
- 让多个用户参与规范。
- 提供某种形式的可追溯性,如果需要,可以手动完成。
- 为用户提供添加评论和注释的能力。
- 上传和显示 Visio 文档
- 使用 Balsamiq Mockup 上传和显示模型屏幕。
我最初的印象是,使用 wiki 可能是完成这项任务的好工具。有没有人有使用 wiki 创建功能规范的经验?与需求管理工具相比,使用这样的工具有什么优缺点?
非常感谢您的意见!
requirements - Requirements testing
I've just finished the implementation of my software system and now I have to document whether it has satisfied its requirements. What sort of information should I include and how should I lay it out?
My initial functional and non-functional requirements was in a two-column table and looked something like this:
- FN-01 The system should allow users to send private messages to each other.
- NFN-03 The setup/configuration form should contain sensible default values for most fields.
c - 如何在不增加太多开销和复杂性的情况下使您的嵌入式 C 代码不受需求更改的影响?
在许多嵌入式应用程序中,需要在使代码非常高效或将代码与特定系统配置隔离以不受不断变化的需求影响之间进行权衡。
您通常采用哪种 C 结构来实现两全其美(灵活性和可重构性而不损失效率)?
如果您有时间,请继续阅读以了解我在说什么。
当我为安全气囊控制器开发嵌入式软件时,我们遇到的问题是,每次客户改变对特定要求的想法时,我们都必须更改代码的某些部分。例如,在开发过程中,触发安全气囊展开的条件和事件的组合每隔几周就会发生变化。我们讨厌如此频繁地更改那段代码。
当时,我参加了嵌入式系统会议,并听到了 Stephen Mellor 的精彩演讲,题为“应对不断变化的需求”。你可以在这里阅读这篇论文(他们让你注册,但它是免费的)。
这样做的主要思想是在代码中实现核心行为,但以数据的形式配置具体细节。您可以轻松更改数据,甚至可以在 EEPROM 或闪存的不同部分进行编程。
这个想法听起来很棒,可以解决我们的问题。我与我的同事分享了这一点,我们立即开始重新设计一些软件模块。
在我们的编码中尝试使用这个想法时,我们在实际实现中遇到了一些困难。对于受限的嵌入式系统,我们的代码结构变得非常繁重和复杂。
为了说明这一点,我将详细说明我上面提到的示例。我们没有使用一堆 if 语句来确定输入组合是否处于需要展开安全气囊的状态,而是改为使用一个大表。一些条件不是微不足道的,所以我们使用了很多函数指针来调用很多小辅助函数,这些函数以某种方式解决了一些条件。我们有几个间接级别,一切都变得难以理解。长话短说,我们最终使用了大量的内存、运行时和代码复杂性。调试这个东西也不是很简单。老板让我们把一些东西改回来,因为模块太重了(他也许是对的!)。
PS:SO中有一个类似的问题,但看起来重点不同。适应不断变化的业务需求?