The primary system model used to mimic the usage of this program and the associated server and database load would be stochastic.
Most likely we would model a poisson " batch" input. This means that with an exponential distribution of new companies being added onto the new system, large batches of new code would need to be indexed at a time. This could be handled in software like omnet++ or matlab. Additionally, we would need to determine the total number of servers available for this task. Most likely, each customer would be allocated a single server for their use, which would subsequently be partitioned according to project and access rights. This would distribute the load nicely. Additionally, single users would likely share a region wide server which may expereince a small amount of delay depending on how much code in being pushed at a time. Overall the system should resemble a RAM management system. Requests would come in and be partitioned into their own contiguous sections determined by required memory allocation, then, individual threads would process each task, and overflow would be sent into a buffer.
The model for our product would be deterministic. With the same inputs we expect the same outputs.
This product wold act as an "in IDE" search engine for source code. This would allow developers instant access to available code and documentation written by their entire team. For example, should John right a really good system for handling user authentication in September 2015 for a project which never launched due to market constraints, Sasha will not need to spend hours rewriting this system in 2020. Better yet, he won't need to distract Josh from his work as well. He would be able to search for user authentication systems and be able to seamless pull that code into the project he is currently working on.
The user would make a query to a search bar, the GraphQL API would be used to format and send this request to an Elasticsearch server, the Elasticsearch server would perform a fuzzy search on the inputted terms and return the appropriate output,