Predictive Software Streaming via Usage Pattern Analysis
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software streaming platforms face inefficiencies due to user wait times for component downloads, as components are typically loaded only when requested, leading to suboptimal user experience.
Innovation Solution
Implementing a predictive streaming method that anticipates and downloads likely future software components based on historical usage patterns, using a model to determine the probability of component usage and employing idle resources to minimize wait times.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of energy
If components are downloaded only when requested (on-demand streaming), then bandwidth usage is optimized and device storage is minimized, but user wait time increases and user experience deteriorates
Solution Approach 1:
The system performs preliminary actions by predicting which software components will be needed next and downloading them in advance during idle periods. The prediction engine analyzes usage patterns to anticipate future component requests, and the system proactively transfers these components before actual user requests occur, thereby eliminating wait time while maintaining efficient bandwidth usage.
Solution Approach 2:
The system dynamically adjusts the downloading strategy based on real-time conditions. The prediction engine continuously learns from usage patterns and adapts its predictions, while the system balances predictive downloading with actual user requests, adjusting download priorities and timing based on current system state, network conditions, and user behavior patterns.
2Loss of time
If predictive downloading is implemented to reduce wait times, then user experience improves, but bandwidth resources are consumed more heavily and device storage requirements increase
Solution Approach 1:
The system applies partial action by downloading only the most likely predicted components rather than all possible components. The prediction engine ranks predicted components by probability, and the system selectively downloads top-priority predictions during idle periods, balancing the benefit of reduced wait times against the cost of bandwidth consumption.
Solution Approach 2:
The system uses idle processing time and idle bandwidth automatically to perform predictive downloading without requiring additional user actions or dedicated resources. The prediction engine and download manager operate autonomously during system idle periods, utilizing otherwise wasted resources to improve user experience.
3Adaptability or versatility
If software is divided into modular components for streaming, then flexibility and adaptability improve, but system complexity increases and component management becomes more difficult
Solution Approach 1:
The system segments software into modular components that can be independently streamed and executed. This segmentation enables flexible delivery of only needed components, supports predictive downloading of specific modules, and allows the system to manage and transfer individual components based on predictions and user requests.
Solution Approach 2:
The system introduces an intermediary layer (the streaming platform with prediction engine) that manages component delivery between the software source and the user device. This intermediary handles the complexity of component segmentation, prediction, scheduling, and transfer, shielding users from the underlying complexity while enabling modular software delivery.
Data Source
Figure 1
Figure 2~3
Figure 4
AI summary
A software streaming platform may be implemented that predictively chooses units of a program to download based on the value of downloading the unit. In one example, a program is divided into blocks. The sequence in which blocks of the program historically have been requested is analyzed in order to determine, for a given history, what block is the next most likely to be requested. Blocks then may be combined into chunks, where each chunk represents a chain of blocks that have a high likelihood of occurring in a sequence. A table is then constructed indicating, for a given chunk, the chunks that are most likely to follow the given chunk. Based on the likelihood table and various other considerations, the value of downloading particular chunks is determined, and the chunk with the highest expected value is downloaded.