(cross post from Reddit, where apparently the software development industry is flawless)<p>I need to propose a term research project involving some aspect of software development, but I need help finding ideas relevant to the industry. The ideal suggestion should be:<p>Not incredibly difficult to implement (think ~a month full time work for an undergrad)<p>1. Interesting :D<p>2. Directly involve code (e.g. analyzing source code, injecting bytecode, optimizing some artefact based on static analysis, etc.)<p>So far I've had three ideas:<p>1. Automated feature toggle lifecycles. Since the idea seems to boil down to 'implement branching in code', why not use some of the work done in semantic merging to accept patches, but gate (and remove it, at a later date) it with a feature toggle automatically?<p>2. Better log compression by examining paths + encoding. Since logs generated by a single thread should only appear in specific orders, with specific values, one should be able to compress the data down to some integer representing the combination of messages and a fixed size array of the data itself.<p>3. Finding code that might lead to a bug by analyzing the structure of runtime data. Contrast what 'sort' of data (e.g. infer invariants [1], quantify distributions, etc.) gets pushed through a function during unit tests (aka. what you think should be executed) and during functional tests + manual QA passes + beta environments (aka. what everyone thinks should be executed) to a production environment (aka. what does execute). The intent would be to highlight uncommon data patterns in the hopes that they would lead to the discovery of a bug.<p>Any thoughts? :)<p>[1]: https://homes.cs.washington.edu/~mernst/pubs/daikon-tool-scp2007.pdf