开发软件项目的构思
This time, we're going to dive in the ups and downs of IoT development with a step-by-step tutorial. Real-life example, no theoretical "maybes", and lots of experience included. Quick references to related articles as a bonus.
这次,我们将通过分步教程深入探讨物联网开发的起伏。 真实的例子,没有理论上的“可能性”,并且包括很多经验。 快速参考相关文章作为奖励。
Original article — How to create a startup: IoT project from idea to production
原始文章— 如何创建创业公司:从构思到生产的物联网项目
概述: (Overview:)
- Shape idea into set of goals 将想法转变为目标
- Find potential users 寻找潜在用户
- Find development team 寻找开发团队
- Prepare technical specification 准备技术规格
- Design the product 设计产品
- Create a prototype 创建一个原型
- Start software development 开始软件开发
- Create 3D model 建立3D模型
- Start beta testing 开始Beta测试
- Launch MVP 启动MVP
- Start production 开始生产
开始之前 (Before we start)
It's high time for industrial revolution #4, and you shouldn't miss this opportunity. What is the right way to take part in this wave? Since we already wrote a basic article about making idea become a real product, this time we decided to write a guide that you can use to achieve results on each step and get thorough understanding of the process. So, let's begin!
现在是第四次工业革命的时候了,您不应该错过这个机会。 参加这一浪潮的正确方法是什么? 由于我们已经写了一篇有关使创意成为真正的产品的基本文章,因此这次我们决定编写一份指南,您可以使用该指南来实现每个步骤的结果并全面了解过程。 所以,让我们开始吧!
将想法转变为目标 (Shape idea into set of goals)
First things first, you should clearly understand and define your goal and divide it into subgoals prior to any development.\ Your project requirements should include the following information:
首先,您应该清楚地理解和定义目标,并在进行任何开发之前将其划分为子目标。\您的项目需求应包括以下信息:
What is your perfect final product?\
您理想的最终产品是什么? \
Describe it as detailed as possible. What do you plan to achieve with this product? On this stage, write everything that can be applied, you'll update and refine the document later many times.
尽可能详细地描述它。 您打算用该产品实现什么? 在此阶段,编写所有可以应用的内容,稍后将多次更新和完善文档。
What are the main features?\
主要特点是什么? \
Write down a list of main reasons people will want to use your product for. Why this functionality is essential and required for success?
写下人们希望使用您的产品的主要原因。 为什么此功能对于成功必不可少且必不可少?
What is your first product version?\
您的第一个产品版本是什么? \
Plan what the minimum viable product (MVP) will comprise so that you can start selling and collect feedback.
计划最低可行产品(MVP)的组成,以便您可以开始销售并收集反馈。
Keep in mind that your project requirements should contain both technical and business-related parts of the system. Where, why, and how the end users will use your product? Defining clear and sufficient project requirements is critical as explains the team what they should create and why. Otherwise, you are in a risk list to fail the deadlines.
请记住,您的项目需求应包含系统的技术和业务相关部分。 最终用户将在哪里,为什么以及如何使用您的产品? 定义清晰,足够的项目需求至关重要,因为可以解释团队应该创建什么以及为什么创建。 否则, 您将处于风险列表中,无法按时完成任务。
See our project description template for reference. While creating unique template for all kinds of projects is definitely not possible, we hope the samples we give in our articles will be useful for you.
请参阅我们的项目描述模板以供参考。 虽然绝对不可能为各种项目创建唯一的模板,但我们希望我们在文章中提供的示例对您有用。
To better understand specifics of IoT development, check our article with a short overview of existing solutions and nuances.
为了更好地了解IoT开发的细节,请查看我们的文章,并简要概述现有解决方案和细微差别 。
![](https://i-blog.csdnimg.cn/blog_migrate/d4b8d6706b081e80daca3c128d13b7a2.png)
第一步 (First steps)
After your project description is ready, you can share it with your team and discuss all the details. Update the document if you find reasonable feedback.
准备好项目描述后,您可以与团队共享并讨论所有详细信息。 如果找到合理的反馈,请更新文档。
寻找潜在用户 (Find potential users)
If you have prospective customers before you start the development, that means your system is in demand. Also, you can start beta testing right when the initial version of the system is ready. Moreover, early customers will help you make sales right from the start.\ Still, you can look for potential customers while development is in progress.
如果在开始开发之前有潜在的客户,则意味着您的系统是有需求的。 此外,您可以在系统的初始版本准备就绪时立即开始Beta测试。 此外,早期客户将帮助您从一开始就进行销售。\尽管如此,您仍可以在开发过程中寻找潜在客户。
寻找开发团队 (Find development team)
Here are the most common approaches:
以下是最常见的方法:
Outsource the development\
外包开发\
If you think that outsourcing will not bring you success, check
如果您认为外包不会给您带来成功,请检查
Since you're reading this article, the easiest way is to contact us.
由于您正在阅读本文,因此最简单的方法是与我们联系 。
- Ask your friends or just google the pro IoT development company. 询问您的朋友或只是谷歌搜索专业的物联网开发公司。
In this case, before interview and negotiations, read how to learn if the outsourcing team is overcharging you.\ Conclusion: Professional outsourced team saves you time and costs as well as provides impersonal and useful feedback. Messy team will get you nowhere.
在这种情况下,在面试和谈判之前,请阅读如何了解外包团队是否向您收取了过多费用。 \ 结论:专业的外包团队可以节省您的时间和成本,并提供非个人化和有用的反馈。 凌乱的团队将无济于事。
2. Gather your own team
2.聚集自己的团队
This alternative seems really nice, but be aware of pitfalls:
这种选择看起来确实不错,但是要注意一些陷阱:
- Gathering full-fledged team takes time (and office space). 聚集成熟的团队需要时间(和办公室空间)。
- You need to pay taxes, sick leaves, vacations for each member. 您需要为每个成员交税,请假,休假。
- You need to constantly motivate them, plan and monitor their work or hire more staff for that purpose. 您需要不断激励他们,计划和监控他们的工作,或为此目的雇用更多员工。
Conclusion: you'll have much less time for evolving your business. But you'll have an in-house team.
结论 :您的业务发展时间将大大减少。 但是您将拥有一个内部团队。
准备技术规格 (Prepare technical specification)
After finding the team that will implement technical part, start working on technical project specification. Project description explains the "whats" of your product. Now you have to get down to "hows".
找到要实施技术部分的团队后,开始研究技术项目规范。 项目说明解释了产品的“内容”。 现在,您必须开始研究“方法”。
Don't underestimate the value of such document. While it may look like wasting time (it's not), it saves you time, money, and nerves in the long run. Particularly, you'll notice you didn't define about stuff like interaction, each page's content, etc., and what tools you'll need for their implementation.
不要小看这种文件的价值。 虽然看起来很浪费时间(不是这样),但从长远来看,它可以节省您的时间,金钱和神经。 特别是,您会注意到您没有定义诸如交互,每个页面的内容等内容,以及实现它们所需的工具。
Go through the document carefully to make sure you missed nothing. It will be a lot cheaper and faster to define the scope from the start, then change it in the process. Yet, the specification may be updated further after preparing the design (that's okay, it will crystallize the budget and timeline more).\ You can find template for project technical description here — Project Technical description template
请仔细阅读文档,以确保您没有遗漏任何内容。 从一开始就定义范围,然后在此过程中进行更改会便宜得多,也更快。 但是,在准备设计之后,可能会进一步更新规范(没关系,它将使预算和时间表更加明确)。\您可以在此处找到用于项目技术说明的模板 — 项目技术说明模板
设计产品 (Design the product)
So now, when you fully understand what needs to be done for your product, visualize it. Taking both intended use and technical specifics into account, design your hardware and applications, and include them into project description and specification.
因此,现在,当您完全了解产品需要做什么时,就可以将其可视化。 考虑到预期用途和技术细节,设计您的硬件和应用程序,并将其包括在项目描述和规范中。
Design will also reveal many things you missed while describing. This way your budgeting will be better and better. We've drilled down the example budgeting of IoT projects works, you can check it out here — How much does it cost to create IoT solution?
设计还将揭示您在描述时错过的许多事情。 这样,您的预算将越来越好。 我们已经深入研究了IoT项目预算的示例工作,您可以在此处查看- 创建IoT解决方案需要多少费用?
Back on the design track, here's a visualisations:
回到设计轨道,这里是可视化效果:
硬件设计 (Hardware design)
The device design is important, because it answers the following questions:
设备设计很重要,因为它回答了以下问题:
Commercial:
商业:
- Will consumers find it appealing and want to buy it for their home/office or as a present? 消费者会觉得它有吸引力吗,并希望将其作为家庭/办公室或礼物购买?
- What color, shape, and overall look should it have to be attractive? 它必须具有什么颜色,形状和整体外观?
- How to make production easy and cost-effective? 如何使生产容易且具有成本效益?
Technical:
技术:
- Will there be any limitations in terms of size, shape, materials? 在尺寸,形状,材料方面是否会有任何限制?
- Will it be durable and usable in the intended environment? 在预期的环境中是否持久耐用?
- Will all required mechanical parts fit in this device? 所有所需的机械零件都可以安装在该设备中吗?
![](https://i-blog.csdnimg.cn/blog_migrate/f1318b1efec91e8a3377861b0a13c38f.png)
软件设计 (Software design)
The design of your software, be it a mobile, web, or desktop application, literally defines how users will perceive your product. Make it as easy to use and intuitive as possible (even if the functionality behind it is super complex). Here's our example:
您的软件设计(无论是移动应用程序,Web应用程序还是桌面应用程序)从字面上定义了用户如何看待您的产品。 使它尽可能易于使用和直观(即使其背后的功能非常复杂)。 这是我们的示例:
![](https://i-blog.csdnimg.cn/blog_migrate/ad116563de9049d07fec3e7611d40722.png)
原型和测试概念 (Prototype and test concepts)
Awesome, with design in place, both you and your team have a vision of how the product should look like, and that's one of the most important things. Yet, you may not have a complete understanding of the flow: how the users can interact with both software and hardware part of your product.
很棒,有了适当的设计,您和您的团队都对产品的外观有一个愿景,这是最重要的事情之一。 但是,您可能对流程没有完全的了解:用户如何与产品的软件和硬件部分进行交互。
To identify any inconveniences/redundancies prior to development and production, it's better to spend a little time and create a prototype.\ For application prototype, you may use:
为了在开发和生产之前确定任何不便/冗余,最好花一些时间来创建原型。\对于应用程序原型,您可以使用:
Please check our sample here.
请在这里检查我们的样品。
https://www.adobe.com/products/xd.html\
https://www.adobe.com/products/xd.html \
One of the best tools to test the UX of your app.
测试应用程序用户体验的最佳工具之一。
For hardware prototype, create draft device that contains basic functions and proves feasibility of your idea. Neither size and weight, nor the look matter now as you only explore functionality. Your main goal now is verifying that system reads data from sensors and loads it on MQTT broker (or any other IoT data transfer protocol like WebSocket, HTTP REST, or CoAP that you're using). Here is an example of our prototype:
对于硬件原型,创建包含基本功能并证明您的想法可行的草图设备。 尺寸和重量,外观都不重要,因为您仅探索功能。 现在,您的主要目标是验证系统是否从传感器读取数据并将其加载到MQTT代理(或您正在使用的任何其他IoT数据传输协议,例如WebSocket,HTTP REST或CoAP)。 这是我们的原型的一个例子:
![](https://i-blog.csdnimg.cn/blog_migrate/0b2c4a49da8d44c7f1ce3343aecb2fc3.png)
Using this prototype, we understood that we needed better implementation for setup button, so we updated the design and started establishing the easiest connection flow. First, for connecting, users had to press and hold this button to turn the device into setup mode and connecting to Wi-Fi hotspot. But later we further enhanced and simplified the flow using Bluetooth.
使用该原型,我们了解到我们需要更好地设置按钮,因此我们更新了设计并开始建立最简单的连接流程。 首先,要进行连接,用户必须按住此按钮才能将设备设置为设置模式并连接到Wi-Fi热点。 但是后来我们使用蓝牙进一步增强和简化了流程。
At this point, app and device prototypes are not connected as we tested if the concepts work fine (and as we expected). We verified the transfer of data to MQTT broker on the hardware, and clicked each screen to understand if both look and feel of the app are appealing and intuitive.\ With this information at hand, we can move on to the software development stage.
在这一点上,由于我们测试了这些概念是否运行良好(并且符合我们的预期),因此尚未连接应用程序和设备原型。 我们验证了将数据传输到硬件上的MQTT代理的过程,然后单击每个屏幕以了解该应用程序的外观和风格是否具有吸引力和直观性。\掌握了这些信息,我们便可以进入软件开发阶段。
Awesome! With all preparations done, we can proceed to the development. Next two stages may be done in any sequence or simultaneously because they are independent.
太棒了! 完成所有准备工作后,我们便可以进行开发。 由于后两个阶段是独立的,因此它们可以按任何顺序或同时进行。
软件开发 (Software development)
We wrote tons of articles about the development specifics already, so here we'll outline what is a must for successful work:
我们已经写了很多关于开发细节的文章,因此在这里我们将概述成功工作的必要条件:
- Clearly plan deadlines. We don't want the development to take forever, do we? 明确计划截止日期。 我们不希望发展永远长久,对吗?
- Specify use cases for testing. We want to cover all scenarios and verify everything works fine. 指定测试用例。 我们希望涵盖所有情况并验证一切正常。
- Create backlog of tasks. Let's remove duplicates and make sure we implement all the necessary. 创建任务积压。 让我们删除重复项,并确保我们实现了所有必要的功能。
- Plan first sprint. The more detailed and thorough is our start, the clearer we see what we'll need to do next. 计划第一个冲刺。 我们的起点越详细和透彻,我们就会清楚地知道下一步需要做什么。
Learn more about our development process:
了解有关我们开发过程的更多信息:
Apart from the development, we should never forget testing. While it might be possible to become new IBM without QA team, here's what we think about testing: The importance of automated testing on complex projects.
除了开发,我们永远都不应忘记测试。 尽管没有QA团队就可能成为新的IBM,但我们对测试的看法是: 对复杂项目进行自动化测试的重要性。
建立3D模型 (Create 3D model)
With both tech description and all specifications for each hardware component, you can start working on 3D model of your hardware for an MVP solution. We designed and printed it on 3D printer.
借助每个硬件组件的技术说明和所有规范,您可以开始为MVP解决方案开发硬件的3D模型。 我们设计并将其打印在3D打印机上。
![](https://i-blog.csdnimg.cn/blog_migrate/971b1c4a61fc71b5cd0b756d84208d70.png)
To check if device really looks and feels the way we expect, we printed the model on our 3D printer.
为了检查设备是否真的像我们期望的那样,我们在3D打印机上打印了模型。
And here's the printing result:
这是打印结果:
![](https://i-blog.csdnimg.cn/blog_migrate/0144ca23c517f7049f154f8753e8bb17.png)
It still doesn't have a production look, but the size and functionality are correct, and we can check if that's what we expected.
它仍然没有生产外观,但是大小和功能都是正确的,我们可以检查是否正是我们所期望的。
开始Beta测试 (Start beta testing)
Our MVP is ready, let's start testing it on the first clients.\ First of all, we decided to start testing the product in our office. We installed 7 devices in 7 rooms (3 meeting rooms, kitchen, and 3 workrooms).
我们的MVP已经准备就绪,让我们开始在第一个客户上对其进行测试。\首先,我们决定开始在我们的办公室中测试产品。 我们在7个房间(3个会议室,厨房和3个工作室)中安装了7台设备。
Everyone in our company installed application and started using it. Moreover, to get diverse feedback from a variety of people, we gave the products to our friends and partner companies.\ The main goal of beta testing is to determine any issues we missed previously, learn if there is enough functionality and if the right functionality was selected for the first version.
我们公司中的每个人都安装了应用程序并开始使用它。 此外,为了从各种各样的人那里获得不同的反馈,我们将产品提供给了我们的朋友和合作伙伴公司。被选为第一个版本。
启动MVP (Launch MVP)
First things first, what is and MVP and why do we need and MVP? You can find the answers in our article MVP: preventing commercial products from risks
首先,什么是MVP,为什么我们需要MVP? 您可以在我们的MVP文章中找到答案:防止商业产品面临风险
Minimum viable product is a version that contains only the main and the most important functionality. For this exact functionality people want to use the product and recommend it to others. So and ordered printing of our 3D models at a professional production with high-quality 3D printers, so they have attractive boxes. In most cases, people care about the look, and even if they say they need functionality only, they still want nice-looking things:
最低可行产品是仅包含主要功能和最重要功能的版本。 为了获得这种确切的功能,人们希望使用该产品并将其推荐给其他人。 因此,以高质量的3D打印机在专业生产中订购了3D模型的打印,因此它们具有精美的盒子。 在大多数情况下,人们会在乎外观,即使他们说只需要功能,他们仍然想要漂亮的东西:
![](https://i-blog.csdnimg.cn/blog_migrate/49bcd9bf011b8c64ab44ecac1bd84ebd.png)
Both the functionality you select and the appearance are crucial for successful marketing of MVP. To support our sales campaign and expand knowledge about our product, we've also developed a landing page https://ubreez.com/.
选择的功能和外观对于成功营销MVP都是至关重要的。 为了支持我们的销售活动并扩展有关我们产品的知识,我们还开发了一个登陆页面https://ubreez.com/。
准备,设定,生产 (Ready, set, production)
After getting feedback from beta testers, we found few issues that should be improved. Since that was our main goal for beta testing, we were glad to see it gone well. So, we enhanced the product and ordered a large amount of devices at professional production. We don't assemble the devices in our office, because that's not our speciality and we won't do it as effective as any professional factory. So, the goal is reached, and it's time to start making sales.\ You can check the applications at:\ App Store\ Play Market
在获得Beta测试人员的反馈后,我们发现几乎没有需要改进的问题。 由于这是我们进行Beta版测试的主要目标,因此我们很高兴看到它进展顺利。 因此,我们增强了产品质量,并在专业生产中订购了大量设备。 我们不会在办公室中组装设备,因为这不是我们的专长,我们不会像任何专业工厂那样有效地进行组装。 因此,达到了目标,是时候开始进行销售了。\您可以在以下位置检查应用程序:\ App Store \ Play Market
结束? 当然不! (The end? Definitely not! )
Our product is developed, it's successful, and we grow each second. Is that the end? Of course not, I dare even say that it's just a beginning.\ When you launch the product, what's next? Learn at "Is there life after app release?"
我们的产品已经开发成功,并且每秒钟都在增长。 结束了吗? 当然不是,我什至不敢说这只是一个开始。\当您推出该产品时,下一步是什么? 在“ 应用发布后还有生命吗? ”中学习
Thanks for reading!\ Leave comments and subscribe to our blog, there's a lot of new good stuff coming soon.
感谢您的阅读!\留下评论并订阅我们的博客,很快就会有很多新的好东西。
开发软件项目的构思