Design each task in a problem-solving effort so that it is most fruitful and provides the most information or guidance
The first task would be to design software that can search different consumer sites for various products and store the price of these products and sites to memory.
The second task would be to make a website that utilizes the data from the first task and sorts the prices for the desired product and also gives links to the websites that sell the product.
The third task would be to optimize the software to search sites in less time and possibly give cheaper alternatives to the product the consumer is looking for.
Use various attributes of the final solution state to guide earlier decisions made along the solution path
Scalability
The final solution state should be able to handle a large volume of data and users. Therefore, earlier decisions should take scalability into account, such as the choice of programming language and database design. In this case, Python would be the optimal choice for said programming language. Of course, other alternatives are to be explored.
Usability/Customer Experience
The website should be easy to use and navigate for users. Earlier decisions should consider the user interface design and the user experience when using the website.
Efficiency
The software should be optimized to search sites in less time and provide cheaper alternatives to the product the consumer is looking for. Earlier decisions should take into account the algorithms and data structures used in the software and the optimization techniques implemented.
Data accuracy and consistency
The final solution state should ensure that the data stored and displayed on the website is accurate and consistent. Earlier decisions should consider data validation and cleansing techniques to ensure data accuracy and consistency.
Security
The website should be secure to protect user data and prevent hacking attempts. Earlier decisions should take into account security protocols such as SSL/TLS encryption, user authentication, and secure storage of user data.
Integration**
The final solution state should be able to integrate with different consumer sites and their APIs. Earlier decisions should consider the compatibility of the software with different sites and the availability of APIs to access data from those sites.
Cost-effectiveness
The final solution state should be cost-effective, taking into account the cost of development, maintenance, and hosting. Earlier decisions should consider cost-effective technologies and solutions that can achieve the desired functionality.
Define design goals and design specifications
Beginning with the first goal on the list of general design goals, it can be reasonably assumed that the safety of any proposed solution to the problem would pertain to protecting the information of the user. A software application does not pose any physical safety risk, but always provides the potential for a user's sensitive information to be stolen. It should be a goal of the solution to protect user data such as location. Moving on, any potential solution should have very little impact on the environment at all, as it can be expected to be a simple software solution with no need for any physical infrastructure, outside of a small server, or intense processing power. As for public acceptance, a solution for consumers to easily locate the best price on a specific product would not be met with controversy. Reliability should be one of the most important design goals to be focused on. First, it is important to ensure that the solution delivers accurate information to the consumer. It needs to avoid returning a result that is too outdated, or a result that is inaccurate due to insufficient data collection. Second, the solution also needs to be readily available to consumers, or in other words, have a constant uptime where the service is always available. The performance of the solution would involve two aspects: speed and accuracy. It would be ideal to maximize the speed at which the desired result is returned to the consumer. It is also ideal for the solution to accurately compare prices from all stores within the applicable area and to avoid missing any stores or misrepresenting any prices. Continuing, the ease of operation of the solution should be extremely high. It can be expected that operating the solution only requires the user to scan a barcode with their phone or enter the name of a product. Any solutions to this problem would be strictly software based so durability is not relevant. The solution should require the use of a smartphone with a camera as basic parts for full functionality. The minimum cost for the user would be nothing, as the solution could be presented as a free app and monetized through advertisements. The consumer should have no responsibility for maintaining the solution.
In regards to design specifications, the solution should encrypt user information such as passwords and location with encryption that fits the Advanced Encryption Standard (AES) so that user safety can be ensured. To ensure a reliable service the solution should be able to compare 100% of the product listings in an area for retailers which have a website and that prices used for comparison are gathered at runtime to ensure that they are accurate. It should also rely on servers to perform whatever processes are necessary to gather results so that the user does not have to rely on their own device which could cause various issues. To guarantee ideal performance of the solutions the servers should be of high enough specifications to near instantaneously perform any necessary processes and send the results over the internet to the consumer.
Eliminate paths that do not satisfy the desired design goals and/or specifications
A path that can be eliminated is a solution in which a script is run on the consumer's device to gather and compare prices in the area. This path can be eliminated because it would interfere with the design goal of being reliable. It can not be assumed that everyone's device would be able to run the necessary scripts and this is why servers should be used instead.
Another path that can be eliminated is one in which to identify an item the user must scan the barcode with their phone. Although an overwhelming majority of smartphones today include a camera, there is always a possibility that the camera is broken. In this scenario the user would be left without all the necessary standard parts and unable to utilize the solution. To avoid this problem, there could be an additional input option that allows the user to type in a product name or UPC code.