Challenge Overview
We have a large manufacture of telecommunication equipment that writes all their firmware in ANSI C. Over the years that have amassed large volumes of C code, some of which is used and some of which is not, yet it still contains useful code snippets. The problem they are facing is that we new developers come on board they a facing a sea of firmware that does not contain any documentation other than comments. They are looking to Topcoder and its team of brilliant community members to formulate some ideas on what they can do to reverse engineer some code documentation.
Of course, we know there is no magic wand that can instantly create detailed documentation based on static code files but we would like to understand what our options are. With that in mind, we are going to run this an exploratory subjective ideation challenge, which means two things: 1) There are very loose requirements and almost anything is fair game for your submission and 2.) The submission will be ranked against each other based on simply the value of the ideas.
Here are some more details on the challenge:
-The solution should look at C source code
-The reverse engineered document should contain details similar to a high-level design document like enumerating functions along with their interactions and parameters. As well as identifying finite state machine: events, states and actions relationships. Any ideal solution would be able to generate a visual diagram of the state machine or perhaps the functions themselves.
We are not looking to develop any code from scratch for this challenge but rather identify the building blocks that we can reuse to move the ball a little bit closer to the goal. And that goal is specifically is an auto-generated artifact that makes a new developer’s job of understanding the purpose and usage of router firmware source code. If you feel that machine learning is a good candidate please be descriptive and provide an example of the implementation or algorithm. There should be plenty of sources to train the algorithm.
Of course, we know there is no magic wand that can instantly create detailed documentation based on static code files but we would like to understand what our options are. With that in mind, we are going to run this an exploratory subjective ideation challenge, which means two things: 1) There are very loose requirements and almost anything is fair game for your submission and 2.) The submission will be ranked against each other based on simply the value of the ideas.
Here are some more details on the challenge:
-The solution should look at C source code
-The reverse engineered document should contain details similar to a high-level design document like enumerating functions along with their interactions and parameters. As well as identifying finite state machine: events, states and actions relationships. Any ideal solution would be able to generate a visual diagram of the state machine or perhaps the functions themselves.
We are not looking to develop any code from scratch for this challenge but rather identify the building blocks that we can reuse to move the ball a little bit closer to the goal. And that goal is specifically is an auto-generated artifact that makes a new developer’s job of understanding the purpose and usage of router firmware source code. If you feel that machine learning is a good candidate please be descriptive and provide an example of the implementation or algorithm. There should be plenty of sources to train the algorithm.