易于使用的人工智能_需求分析:如何使用这种易于启动的方法+一个案例研究...

易于使用的人工智能

by Turgay Çelik

由TurgayÇelik

需求分析:如何使用这种易于启动的方法+一个案例研究 (Requirement Analysis: how to use this startup-friendly approach + a case study)

In our previous blog posts, we explained why we decided to develop the Badges App and how we evaluated the feasibility of our idea at OpsGenie:

在之前的博客文章中,我们解释了为什么决定开发Badges App以及我们如何在OpsGenie中 评估我们的想法的可行性 :

Since we found that our idea is worth developing, the next step is analyzing the requirements.

由于我们发现我们的想法值得发展,因此下一步是分析需求。

Requirement analysis — a very well studied area of software engineering — is the process of determining user expectations for a product, or briefly defining the product scope. There are tons of available resources on requirements analysis methodologies, characteristics of good requirements and tracing requirements. Instead of repeating the literature, we are going to summarize the critical points in a startup thinking way.

需求分析是一个非常深入的软件工程领域,是确定用户对产品的期望或简要定义产品范围的过程。 关于需求分析方法,良好需求的特征和跟踪需求,有大量可用资源。 与其重复文献,不如以一种新的思维方式来总结关键点。

We know, startup guys generally don’t like terms like “process”, “proof of concept”, “requirements”, “scope”, “schedule”, “design”, “documentation” or “maintainability”. Generally they are impatient and they just want to code and release. We accept that agility is vital in our world and we have to try, fail and recover fast. But benefiting from the heritage of the software world will help us on the way to success. The key point is keeping it agile.

我们知道,刚开始的家伙通常不喜欢“过程”,“概念证明”,“需求”,“范围”,“计划”,“设计”,“文档”或“可维护性”之类的术语。 通常,他们不耐烦,只想编码和发布。 我们接受敏捷性对我们的世界至关重要,我们必须尝试,失败和快速恢复。 但是受益于软件世界的遗产将帮助我们迈向成功之路。 关键是保持敏捷。

Following a process is not an objective, it is a tool that helps us achieve our goals. So, let’s see how we can adopt classical approaches to our world in the context of requirements management.

遵循流程不是目标,而是帮助我们实现目标的工具。 因此,让我们看看如何在需求管理的背景下对我们的世界采用经典方法。

The Project Management Triangle is a model of the constraints of software management. Despite the fact that it is an old concept from the 1950's, I think it is still relevant.

项目管理三角形是软件管理约束的模型。 尽管它是1950年代的旧概念,但我认为它仍然有意义。

In summary, project management triangle says that the quality of work is constrained by the project’s budget, deadlines and features. There is a trade-off among these three constraints to achieve the necessary project quality. So we can say that software development is a multi-objective optimization problem.

总而言之,项目管理三角表示工作质量受到项目预算期限功能的限制 。 为了获得必要的项目质量,需要在这三个约束之间进行权衡。 因此可以说软件开发是一个多目标优化问题 。

We don’t like to constrain ourselves by classical approaches, so let’s adapt the old Project Management Triangle to the new startup world. Recall the Startup Success Factors that we mentioned at Feasibility Analysis post.

我们不喜欢用经典的方法来约束自己,所以让我们将旧的项目管理三角形适应新的创业世界。 回想一下我们在可行性分析后提到的启动成功因素。

Here is how we map these success factors to the classical project management triangle:

这是我们将这些成功因素映射到经典项目管理三角的方法:

As shown in the table above, all startup success factors relate to various project management triangle constraints. Since these three constraints are in a trade-off, we can say that keeping the scope neat is vital for the success of a startup.

如上表所示,所有启动成功因素都与各种项目管理三角约束有关。 由于这三个约束是折衷的,所以可以说保持范围整洁对于启动成功至关重要。

To define a neat scope, we have to perform a good requirement analysis before starting the development. Please note that this does not mean we are going to perform a fully detailed requirement analysis just like defined in waterfall process. We are going to do it in agile way.

为了定义一个整洁的范围,我们必须在开始开发之前进行良好的需求分析。 请注意,这并不意味着我们将像瀑布过程中定义的那样执行全面详细的需求分析。 我们将以敏捷的方式做到这一点。

需求分析技巧 (Tips for Requirement Analysis)

In this section, we will provide important tips that you should keep in mind:

在本节中,我们将提供您应该记住的重要提示:

深入检查替代/同类产品 (Inspect Alternative/Similar Products In Depth)

As always, don’t reinvent the wheel. Check what others do to meet your objectives. Even you may end up realizing that your product does not seem to have business impact that you were thinking before.

与往常一样,不要重新发明轮子。 检查其他人为实现您的目标所做的事情。 甚至您可能最终也意识到,您的产品似乎并没有像您以前想的那样对业务产生影响。

This is a good sign to pivot your idea. It may seem like a failure, but remember, we have to fail as fast as possible.

这是改变您的想法的好兆头。 这似乎是一个失败,但请记住, 我们必须尽快失败

记录您的要求 (Document your requirements)

You don’t have to use a requirements management tool such as IBM Rational DOORS. But a short, bulleted requirements document will help negotiate with the stakeholders.

您不必使用诸如IBM Rational DOORS之类的需求管理工具。 但是,简短的项目符号需求文档将有助于与利益相关者进行谈判。

让您的(潜在)客户保持联系 (Keep Your (Potential) Customers In the Loop)

I think this is one of the most important things about requirements development. A capability that you think that is killer may not make sense to the customers.

我认为这是需求开发中最重要的事情之一。 您认为致命的功能对客户而言可能没有意义。

To keep your potential customers in the loop, you have to follow an iterative approach. You can do this by shipping an initial version of your product — Minimum Viable Product (MVP) — and evolving it according to customer feedback.

为了使您的潜在客户保持联系,您必须采用迭代方法。 为此,您可以交付产品的初始版本-最低可行产品(MVP)-并根据客户反馈对其进行改进。

For example, Amazon Web Services team utilizes this approach frequently. They ship a service with minimum capabilities and evolve it based on customer feedback.

例如,Amazon Web Services团队经常使用此方法。 他们以最低的功能交付服务,并根据客户的反馈进行发展。

Another approach is to develop mock applications that just provide a dummy user interface (UI) to help potential customer to understand the product features and give feedback. You can use products like InvisionApp to produce these mocks.

另一种方法是开发仅提供虚拟用户界面(UI)的模拟应用程序,以帮助潜在客户了解产品功能并提供反馈。 您可以使用InvisionApp之类的产品来生成这些模拟。

需求管理是一个连续的过程 (Requirements Management is a Continuous Process)

You don’t have to spend months for requirements analysis at the beginning of a project, and please don’t — it is not the agile way.

在项目开始时,您不必花费数月的时间进行需求分析,请不要这样做-这不是敏捷方法。

At the beginning, your objective is to define boundaries of the system, negotiate with the team and other stakeholders, and prepare the definition of the Minimum Viable Product. The requirements should be detailed or can even evolve during iterations of development.

首先,您的目标是定义系统的边界,与团队和其他利益相关者进行谈判并准备最小可行产品的定义。 需求应该是详尽的,甚至可以在开发的迭代过程中不断发展。

分组您的要求 (Group your requirements)

After you create a list all of your requirements, group them (divide and conquer) to form sets of related features. Grouping requirements to feature groups will ease your life during development phase and even it can help you to define bounded contexts, microservice architectures, and so on.

创建所有需求列表之后,将它们分组(分而治之)以形成一组相关功能。 将需求分组到功能组将简化您在开发阶段的工作,甚至可以帮助您定义有限的上下文 ,微服务体系结构等。

考虑UX (Think About UX)

It is not necessary to say that User Experience (UX) is a very important factor in the success of a product anymore; today it is so obvious. But we have to still remind that User Experience is not just about fancy User Interfaces.

不必说用户体验(UX)成为产品成功的一个非常重要的因素; 今天是如此明显。 但是,我们仍然必须提醒用户体验不仅仅是花哨的用户界面。

As the name implies, it is all about the “experience” and it is hard to improve a system’s UX after it is developed.

顾名思义,这一切都与“体验”有关,开发系统后很难改进其用户体验。

Think about UX starting from requirements analysis, it could even be a motivation during the feasibility analysis phase to develop a new product if available alternatives in the market lack good UX.

从需求分析开始考虑用户体验,如果市场上的可用替代品缺乏好的用户体验,那么甚至可能是在可行性分析阶段开发新产品的动机。

User Experience affects the business requirements. For example, if you are developing an e-commerce application, designing a fast responding customer support system is about improving the User Experience.

用户体验会影响业务需求。 例如,如果您正在开发电子商务应用程序,那么设计一个快速响应的客户支持系统就是要改善用户体验。

尽可能不了解实施技术 (Be Agnostic of Implementation Technologies As Much As Possible)

Of course this is not applicable if you are developing an infrastructure or a library for a specific technology :)

当然,如果您正在为特定技术开发基础结构或库,则此方法不适用:)

Don’t fall into “If all you have is a hammer, everything looks like a nail” trap. Find new tools and utilities instead of limiting product capabilities to the technologies that you are familiar with or that you enjoy playing with.

不要陷入“如果只有锤子,一切看起来都像钉子”陷阱。 查找新的工具和实用程序,而不是将产品功能限制为您熟悉或喜欢使用的技术。

In enterprise companies, requirements analysis is generally performed by non-software engineers who are generally known as business analysts or systems engineers. This separation has some disadvantages, especially in terms of transferring requirements to development teams, but I think it also has some advantages.

在企业公司中,需求分析通常由通常称为业务分析师或系统工程师的非软件工程师执行。 这种分离有一些缺点,特别是在将需求转移到开发团队方面,但我认为它也有一些优点。

In my opinion, the biggest advantage of independent analysis teams is that they are agnostic of the technologies that will be used during development.

在我看来,独立分析团队的最大优势是他们对将在开发过程中使用的技术不可知。

But in the startup world, most probably as a team member (or even as a founder), you have to wear multiple hats: analyst, developer, hiring manager, or even more interesting roles that you were not imagining when you get in this path. So, if you are wearing the analyst hat at the moment, try to be agnostic of the technologies that you are planning to use during implementation.

但是在创业世界中,很可能作为团队成员(甚至是创始人),您必须戴上多个帽子:分析师,开发人员,招聘经理,或者甚至更有趣的角色,而当您走上这条路时。 因此,如果您现在戴着分析员的帽子,请不要理会计划在实施过程中使用的技术。

We consistently hear expressions like “but Spring Framework does not support …” and “This causes a lot of work on the front-end” during requirement analysis.

在需求分析过程中,我们始终听到诸如“但Spring Framework不支持…”和“这在前端导致大量工作”之类的表达。

Considering these kind of limitations at the start degrades the quality of the end product. Let’s define the ultimate capability and evolve it during development if necessary.

一开始考虑这些限制会降低最终产品的质量。 让我们定义最终功能,并在必要时在开发过程中对其进行发展。

Ultimate capability is the final goal to reach, you can implement a more simple form of it when you start and evolve it in future versions. But knowing the point that we want to reach will help us to define our vision for the growth of the product.

最终功能是最终的目标,您可以在开始并在将来的版本中进行扩展时,以更简单的形式实现它。 但是,知道我们要达到的目标将有助于我们确定产品增长的愿景。

For example, think about “pinch-to-zoom” capability of mobile phones. It seems like a trivial capability but it was a revolution when Steve Jobs first demonstrated it. If the designers of iPhone didn’t think out-of-the-box and stuck to the available technologies and methods, we would not have this great functionality today. We know that it is an exaggerated example, but the main point is, don’t let the technology you would like to use limit you, you can move to other technologies if this will help you to create a niche product.

例如,考虑一下手机的“缩小缩放”功能。 这看似微不足道的功能,但这是史蒂夫·乔布斯(Steve Jobs)首次展示它时的一次革命。 如果iPhone的设计师没有开箱即用的想法,而是坚持使用可用的技术和方法,那么今天我们就不会拥有如此强大的功能。 我们知道这是一个夸张的示例,但要点是,不要让您想使用的技术限制您,可以使用其他技术来帮助您创建利基产品。

徽章应用程序的需求分析 (Requirements Analysis for Badges App)

We performed requirements analysis according to the practices that we summarized above:

我们根据上面总结的实践进行了需求分析:

  • We defined an initial set of requirements

    我们定义了一组初始要求
  • We shared the requirements with our initial customer — The OpsGenie team — and updated the requirements according to the team’s comments.

    我们与最初的客户OpsGenie团队共享了需求,并根据团队的评论更新了需求。
  • At OpsGenie, we use Atlassian’s JIRA for issue tracking. To track the requirements, we created an issue with “New Feature” type for each requirement in JIRA.

    在OpsGenie,我们使用Atlassian的JIRA进行问题跟踪。 为了跟踪需求,我们为JIRA中的每个需求创建了一个“新功能”类型的问题。
  • We grouped related requirements with JIRA Epics. Some of our epics are User Operations, Group Operations, Badge Operations, Endorsement and 3rd Party Tool Integration.

    我们将相关需求与JIRA Epics进行了分组。 我们的一些史诗是用户操作,组操作,徽章操作,背书和第三方工具集成。

  • In further steps of development, we created detailed issues for daily tasks, as Agile practices recommend. We linked each task with one or more requirements to keep traceability of development activities with requirements.

    在进一步的开发步骤中,我们按照敏捷实践的建议为日常任务创建了详细的问题。 我们将每个任务与一个或多个需求相关联,以保持开发活动与需求的可追溯性。
  • Each epic contains a set of requirements (such as a New Feature), Development Tasks, and Bugs.

    每个史诗都包含一组要求(例如新功能),开发任务和错误。

Want to follow our Badges app, or better, recommend new features and help us refine it? Join Badges App community!

想要关注我们的徽章应用,或者更好地推荐新功能并帮助我们完善它? 加入徽章应用社区!

Further reading:

进一步阅读:

Badges App: OpsGenie’s Response to Skill Tracking and Management ChallengesAs we see skill tracking and management as a crucial task for the healthy growth of our company, we invested in a…engineering.opsgenie.comHow Did We Decide That Our New Product Idea Is Feasible?So, we have a new product idea, and we think that it’d be “useful,” “great” and further, “It will make the world a…engineering.opsgenie.com

徽章应用程序:OpsGenie对技能跟踪和管理挑战的React当 我们将技能跟踪和管理视为公司健康成长的关键任务时,我们投资了…… engineering.opsgenie.com 我们如何决定我们的新产品理念是可行? 因此,我们有一个新的产品构想,我们认为这将是“有用的”,“伟大的”,并且进一步说,“它将使世界成为……工程。opsgenie.com

翻译自: https://www.freecodecamp.org/news/how-to-analyze-the-requirements-of-a-new-product-a-startup-friendly-approach-and-a-case-study-833970e5c36c/

易于使用的人工智能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java writeboolean_Java DataOutputStream writeBoolean()方法(带示例)

DataOutputStream类writeBoolean()方法writeBoolean()方法在java.io包中可用。writeBoolean()方法用于将给定的布尔字节写入基本输出流,因此成功执行后写入的变量计数器为1。writeBoolean()方法是一种非静态方法,只能通过类对象访问,如果尝试…

【BZOJ4300】—绝世好题(二进制dp)

传送门 考虑到只需要bi&bi−1̸0b_i\&b_{i-1} \not0bi​&bi−1​̸​0 由于&\&&,我们考虑二进制下只需要一位不为0就可以了f[i]f[i]f[i]表示当前数下,第iii位不为0的最优长度 那就是需要枚举当前这个数所有位就…

爱立信与中国联通成功完成国内首个LTE三载波聚合大规模部署测试

近日,爱立信与中国联通网络技术研究院、联通四川省公司、联通成都市分公司、Qualcomm Incorporated子公司Qualcomm Technologies, Inc.合作成功实现了国内首个三载波聚合大规模部署和运行测试,下行单用户峰值速率达到375Mbps。该项目充分验证了载波聚合大…

七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...

七牛服务器入门教程by Dmitri Zimine由Dmitri Zimine 使用无服务器,StepFunction和StackStorm Exchange构建社区注册应用 (Building a community sign-up app with Serverless, StepFunctions, and StackStorm Exchange) Build a real-world serverless applicatio…

devexpress java_DevExpress使用心得一:换肤

最近要用到界面控件DevExpress。一句话:很好很强大,比起VS自带的winform界面,种类和花样要多了不少。然而,强力的功能带来了庞大的信息量,所以我打算通过一些小模块来和大家一起对它进行探讨和研究。今天先研究一下它的…

《低功耗蓝牙开发权威指南》——第3章低功耗蓝牙的体系结构

本节书摘来自华章社区《低功耗蓝牙开发权威指南》一书中的第3章低功耗蓝牙的体系结构,作者 (英)Robin Heydon,更多章节内容可以访问云栖社区“华章社区”公众号查看 第3章低功耗蓝牙的体系结构专注简单是我一直以来信奉的价值观。…

[福建集训2011][LOJ10111]相框

这题主要还是分类讨论欧拉回路 首先对于导线一端没有东西的新建一个节点 由于原图不一定连通所以需要用到并查集判断有多少个连通块 将一条导线连接的两个焊点连接 然后先对于只有一个连通块考虑 1.如果一个焊点是孤立点 它对于导线无影响跳过 2.如果一个焊点度数大于2 它必须被…

TJpgDec—轻量级JPEG解码器

TJpgDec—轻量级JPEG解码器 本文由乌合之众lym瞎编,欢迎转载blog.cnblogs.net/oloroso 下文中解码一词皆由decompression/decompress翻译而来。 TJpgDec是一个为小型嵌入式系统高度优化的创建JPEG图像的解码模块。它工作时占用的内存非常低,以便它可以集…

帮助中心 开源_对开源的贡献帮助我获得了Microsoft的实习机会。 这就是它可以为您提供帮助的方式。

帮助中心 开源“Accomplished X by implementing Y which led to Z.” “通过实现导致Z的Y来完成X。” When I interviewed for software engineering internships this past fall, my open source contributions helped me stand out from the crowd.去年秋天,当我…

java 操作窗口_java selenium (十二) 操作弹出窗口

public static void testMultipleWindowsTitle(WebDriver driver) throws Exception{String url"E:\\StashFolder\\huoli_28hotmail.com\\Stash\\Tank-MoneyProject\\Selenium Webdriver\\AllUIElement.html";driver.get(url);// 获取当前窗口的句柄String parentWin…

1970“变种”bug连WiFi热点iOS设备会变砖?

据悉,该漏洞和此前“1970”的bug有关系,但不完全一样。 威锋网讯,你还记得将 iOS 设备系统时间调至 1970.1.1 会让设备变砖的 bug 么?尽管苹果在 iOS 9.3 中已经将这个 bug 修复,但据安全研究员指出,他们发…

Centos7 安装python3.7.2

下载python3.7.2源码 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz 下载完后对压缩包解压缩 tar -xf Python-3.6.3.tgz 进入解压缩完后的文件夹: cd Python-3.7.2 配置(需要加上--with-ssl,不然pip不能安装相关函数库,pyt…

华为 9

package NiukeBrush; import java.util.Iterator; //排序与查重 import java.util.LinkedHashSet; import java.util.Scanner; import java.util.Set;//改进做法 public class Huawei9next {public static void main(String[] args) {// TODO Auto-generated method stub//键盘…

印刷点阵字体_印刷术如何确定可读性:衬线与无衬线,以及如何组合字体。

印刷点阵字体by Harshita Arora通过Harshita Arora For digital design, it’s important to know and understand how to use and how to combine different fonts. There’s a font for every mood!对于数字设计,重要的是了解和理解如何使用以及如何组合不同的字…

java中setattribute_浅谈Java web 中request的setAttribute()用法

在两个JSP代码片中有这样两端程序:JSP1代码String [] testnew String[2];test[0]"1";test[1]"2";request.setAttribute("test",test) ;response.sendRedirect("jsp2.jsp");JSP2代码String test[](String[])request.getAttr…

基础拾遗------webservice详解

基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗------接口详解 基础拾遗------泛型详解 基础拾遗-----依赖注入 基础拾遗-----数据注解与验证 基础拾遗-----mongoDB操作 基础…

南京打造大数据创新孵化平台

9月9日上午,南京微软云暨移动应用孵化平台在南京开发区新港高新园揭牌运营,项目创业大赛同步启动。 据悉,南京微软云暨移动应用孵化平台将打造以“云物大智”产业为核心的创新创业孵化平台。平台代理总经理童雪松介绍,平台汇集了强…

react控制组件中元素_React Interview问题:浏览器,组件或元素中呈现了什么?

react控制组件中元素by Samer Buna通过Samer Buna React Interview问题:浏览器,组件或元素中呈现了什么? (React Interview Question: What gets rendered in the browser, a component or an element?) **技巧问题** (** Trick Question *…

java gc时自动收dump_Full GC分析:设置Java VM参数实现在Full GC前后自动生成Dump

本文讲解了如何设置JavaVM参数实现在FullGC前后自动生成Dump。共有三个VM参数需要设置:HeapDumpBeforeFullGC 实现在Full GC前dump。HeapDumpBeforeFullGC 实现在Full GC后dump。HeapDumpPath 设置Dump保存的路径设置这些参数的方法,这里总结了四种&…

jquery插件dataTables自增序号。

dataTables官网提供了一种方式,使用后没有达到预期效果(js报错),没有深究原因。如果需要,可以按照下面的方式来。 1 $(#dataList).dataTable({2 "language": {3 "sProcessing&…