Develop Apps Faster with Ready Software Libraries
使用现成的软件库更快地开发应用程序
Tuesday March 22, 2022 by Peter Schneider | Comments
2022年3月22日星期二彼得·施耐德 | 评论
As a Product Manager, I'm constantly thinking about value. The benefit of a feature is often apparent, but how to measure it in Dollars, Yen, and Euros?
作为一名产品经理,我一直在思考价值。功能的好处通常是显而易见的,但如何用美元、日元和欧元来衡量呢?
We've been recently working on a Value Analysis Tool for our customers. It's straightforward to calculate the value of cost savings for relative process improvements, waste reduction, and other enhancements where one shaves off 10% or 30% of the current expenses. Measuring the monetary value of user experience and employee satisfaction improvements is significantly more difficult, if not impossible, in the short term, even though they are of utmost importance in the long term. Hence, we built the analysis model using only tangible benefits with a direct, undebatable influence. Once we made some example analysis in the Value Analysis Tool, we noticed that one kind of improvement impacts the business case the most:
我们最近一直在为客户开发价值分析工具。计算相对流程改进、减少浪费和其他改进的成本节约价值很简单,因为这样可以减少10%或30%的当前开支。从短期来看,衡量用户体验和员工满意度改善的金钱价值即使不是不可能,也要困难得多,即使从长期来看,这些都是至关重要的。因此,我们仅使用具有直接、不可抗拒影响的有形利益构建分析模型。在价值分析工具中进行了一些示例分析后,我们注意到一种改进对商业案例的影响最大:
Image: Screen capture of Qt’s Value Analysis Tool for a small team
图:为一个小团队拍摄的Qt价值分析工具的屏幕截图
Things that customers do not need to do at all dominate the expected monetary benefits. Things like not having to develop basic software functionality from scratch drive the business case dramatically. This shouldn’t have come as a surprise but seeing it in financial terms changes one’s perception: Reducing expenses by 30% through process improvement is one thing. Not doing some things is an all-different ballgame.
顾客根本不需要做的事情支配着预期的金钱利益。诸如不必从头开始开发基本软件功能之类的事情极大地推动了商业案例。这本不应该让人感到意外,但从财务角度来看,这会改变人们的看法:通过流程改进将费用减少30%是一回事。有些事情不做完全是另一回事。
I’ll focus here on the second biggest driver of the ROI calculation: the value of standard software functionality and APIs that every application needs. Let’s look at this benefit based on a hypothetical example application.
这里我将重点介绍ROI计算的第二大驱动因素:每个应用程序所需的标准软件功能和API的价值。让我们基于一个假设的示例应用程序来看看这个好处。
What Basic Software Functionality does a High-Performance App Need?
高性能应用程序需要哪些基本软件功能?
A typical application developed with Qt is one that runs on both desktop and mobile devices. A typical application is often also one that needs more than the average processing power and, therefore, benefits from being written with C++ to optimize the user experience. My hypothetical mobile application is a photo enhancement application. That would need a lot of computing power for the image rendering. The application could take photos and modify the weather in the image using an Artificial Intelligence-powered image filter. Imagine if you could turn a photo you took in rainy weather into a sunny day!
使用Qt开发的典型应用程序是在桌面机和移动设备上运行的应用程序。一个典型的应用程序通常也是一个需要比平均处理能力更多的应用程序,因此,受益于用C++编写来优化用户体验。我假设的移动应用程序是一个照片增强应用程序。这将需要大量的图像渲染计算能力。该应用程序可以使用人工智能驱动的图像过滤器拍照并修改图像中的天气。想象一下,如果你能把雨天拍的照片变成晴天!
Photo: Example of AI-powered Image-to-Image Translation Algorithm from rainy to sunny weather, Licensed under the CC BY-NC-SA 4.0 license, Copyright 2018 NVIDIA
照片:人工智能驱动的图像到图像转换算法示例,从雨天到晴天,根据CC BY-NC-SA 4.0许可证获得许可,版权2018 NVIDIA
If we would develop this app, we could code all features from scratch to make it truly unique. We could also not reinvent the wheel, deliver the product faster, and reuse software functionality others have already developed. So, what basic functionality do we need, and what functionality could Qt's and other open-source software contribute? Here are three examples:
如果我们开发这个应用程序,我们可以从头开始编写所有功能,使其真正独一无二。我们也不能重新发明轮子,更快地交付产品,并重用其他人已经开发的软件功能。那么,我们需要什么样的基本功能,Qt和其他开源软件能提供什么样的功能呢?以下是三个例子:
User Interface and Interaction Components
用户界面和交互组件
My photo editing app would naturally have an image gallery, a camera UI, and a photo editor UI. That would mean I would need a basic UI canvas and means to navigate between the different UI elements. Furthermore, I would need basic UI controls like a button to take a photo, a slider to adjust the strength of the weather effect, and a spinner while the AI effect is applied for the first time.
我的照片编辑应用程序自然会有一个图像库、一个摄像头用户界面和一个照片编辑器用户界面。这意味着我需要一个基本的UI画布,以及在不同UI元素之间导航的方法。此外,我还需要一些基本的UI控件,比如拍摄照片的按钮、调整天气效果强度的滑块,以及首次应用AI效果时的微调器。
The Qt software development platform offers such UI elements in the Qt framework. The so-called Qt Quick Controls module, for example, includes a basic UI canvas and various means of navigation.
Qt软件开发平台在Qt框架中提供了这样的UI元素。例如,所谓的Qt Quick Controls模块包括一个基本的UI画布和各种导航方式。
Image: Example of UI controls of the Qt Quick Controls module
图:Qt Quick Controls模块的UI控件示例
The Qt framework also includes buttons, sliders, and spinners in the Qt Quick Controls module. These can follow my style or look and feel like native Android and iOS apps. Using these would speed up my UI development dramatically.
Qt框架还包括Qt Quick Controls模块中的按钮、滑块和微调器。这些应用可以遵循我的风格,也可以看起来像原生的Android和iOS应用。使用这些将大大加快我的UI开发速度。
Camera Features
摄像头功能
My app needs a camera interface to take photos. It should work at least on Android and iOS smartphones, but it would be nice if it also works on Windows 11 and macOS hardware. I would need to be able to take photos, and control the flash, exposure, and other standard camera settings. I would need to develop software that accesses the camera APIs of each operating system. This would take quite some time to develop when starting with no sample software.
我的应用程序需要摄像头接口才能拍照。它至少可以在安卓和iOS智能手机上运行,但如果它也能在Windows 11和macOS硬件上运行,那就太好了。我需要能够拍照,并控制闪光灯、曝光和其他标准相机设置。我需要开发能够访问每个操作系统的摄像头API的软件。在没有示例软件的情况下,这将需要相当长的时间来开发。
If I use a software development framework like Qt, I could use a multimedia module that already does all these things. And even better, I would need to do this only once because a cross-platform framework like Qt hides all the operating system-specific APIs. I only need to worry about embedding the camera features once.
如果我使用像Qt这样的软件开发框架,我可以使用一个已经完成所有这些事情的多媒体模块。更好的是,我只需要做一次,因为像Qt这样的跨平台框架隐藏了所有操作系统特定的API。我只需要担心嵌入相机功能一次。
Image-to-Image Adaptation AI Algorithm
图像到图像自适应人工智能算法
The magic of my new app would be in the AI algorithm. The AI adaptation algorithm could modify the image to display another weather such as sunny or snowy. Usually, I would build this functionality myself because its part of my apps differentiation. Alternatively, I could try to tap into an open-source algorithm done by people wiser than myself.
我的新应用程序的魔力在于人工智能算法。人工智能自适应算法可以修改图像以显示另一种天气,如晴天或下雪。通常,我会自己构建这个功能,因为这是我应用程序的一部分。或者,我可以尝试利用比我聪明的人所做的开源算法。
For my photo editing app, I might use an image-to-image translation algorithm sponsored by Nvidia. It is licensed under the Creative Commons 4.0 license. So, my app only would need to be able to connect to these Python-based software components. Using this ready open-source software delivers a lot of value to my hypothetical project, however it makes it easier to copy my app.
对于我的照片编辑应用程序,我可能会使用Nvidia赞助的图像到图像转换算法。它是根据知识共享4.0许可证授权的。因此,我的应用程序只需要能够连接到这些基于Python的软件组件。使用这个现成的开源软件为我假设的项目带来了很多价值,但它使复制我的应用程序变得更容易。
The Cost of Being Unique
独一无二的代价
Every marketing strategy pamphlet will tell you that your product needs to be differentiated. You will always need to think about which parts of your product need to be unique and which can be the same as the competition. Using ready software for hygiene features can save a tremendous amount of money and time in app development.
每一本营销策略小册子都会告诉你,你的产品需要与众不同。你总是需要考虑产品的哪些部分需要独特,哪些部分可以与竞争对手相同。在应用程序开发过程中,使用现成的功能软件可以节省大量的资金和时间。
App developers should look for development kits that offer a wide selection of ready software libraries, not only for the Minimum Viable Product but also for potential future enhancements.
应用程序开发人员应该寻找能够提供多种现成软件库的开发工具包,不仅是用于最低可行的产品,而且还用于未来的潜在增强功能。
If you want to know more about the value of Qt's software components for your app development, then do not hesitate to contact us.
如果您想了解更多关于Qt软件组件在应用程序开发中的价值,请随时联系我们。