Frequently Asked Questions on the assignment
Q: Do I have to complete both assignments A and B to take the grade?
A: No. You have to complete either assignment A or assignment B. However, for one given assignment, you have to complete all the points to get the maximal grade. Completing fewer steps of a given assignment will deliver a proportionally lower grade.
Q: OK, I got it, must complete one of the assignments. Which should I choose: A or B?
A: Depends what your skills are and what you like most. Assignment A focuses on using an existing tool to perform an in-depth analysis of a large system, and writing a detailed report about your findings. Choose this assignment if you are less interested/familiar with programming and development, but you are interested in using a state-of-the-art tool to analyze and understand a very complex, large, system. Assignment B focuses on developing a new tool (albeit from existing software components) to perform a dependency extraction and presentation. Choose this assignment if you find it very interesting to program a new tool, rather than using an existing one, and if you are pretty confident with software prototyping and development, and working with third-party software code.
Both assignments require you to take quite a number of decisions, but of different types. In Assignment A, you must decide on the ‘right’ analysis path in a complex, large, unknown software code base. In Assignment B, you should take design and development decisions for combining a number of software tools, and choosing the best visualization for presenting the results. In both cases, creativity and the will to explore the ‘unknown’ is, however, essential for success.
Q: OK, I chose assignment A (analysis of a large software repository). Which repository should I use? Can I choose my own repository, and if so, which are the criteria?
A: For a list of suggested repositories, see the SolidTA tutorial. You can however choose your own repository for completing the assignment, as long as it fulfills the following conditions:
- you can access this repository using one of the provides SolidTA tools. This limits the choice to SVN, Git, and TFS repositories. The source-code analysis plug-ins of SolidTA limit the choice of analyzable programming languages to C, C++, and C#.
- the repository is large enough to capture relevant software evolution trends. Practically, this means that the repository should have over 1000 files (of which a few hundred at least are source code), hundreds or more change moments (commits), and at least 10 developers (all showing significant activity). However, note these are minimal requirements. If in doubt, please mail the lecturer with a detailed description of the statistics of your repository.
Q: I am not very sure what is the required level-of-detail for a given step of one of the assignments. What should I do?
A: The short answer is: describe your solution in as much detail as possible. Document all your choices in text. When in doubt – explain what you see or choose, and why you made that choice. Illustrate your results, even if not perfect and/or complete, with (annotated) snapshots, following the style of the tool’s user manual (in case you follow assignment A). Illustrate the results of your own tool (in case you follow assignment B). When in doubt – write as much information as to make your choices and results clear. Verify your report’s clarity by letting your peer colleague read your material and vice versa.
It is hard to say what the average length of your assignment report should be – it all depends on your writing style, format, and size of captions, among other factors. An average suggested length may be anything between 25 and 40 pages – but again, this is a rough indication rather than a hard range.
Q: I cannot complete one of the points – or the results are not satisfactory. What should I do?
A: If there’s a technical problem, see next point. If you obtain some, but not all the desired, results, try to explain in text what the limitations of your findings are, why those limitations, and what could be a possible workaround. Do not let any point unanswered, even if only partially.
Q: I have some problems running SolidTA on this large repository! It takes ages to acquire the data, update the view, or compute some metrics.
A: Don’t worry. Read the SolidTA tutorial in detail. And most importantly - try all operations on not too large repositories or repository subdirectories!
For the impatient:
- perform the intended action on a smaller subset of the data. Running operations such as data updates from the repository; metric calculations; or even full-blown repository visualizations can be very slow, depending on your computer’s graphics performance, processor, memory, and Internet connection
- consider updating the entire dataset incrementally rather than all-in-one (read the manual for more details)
- if analyzing the entire repository fails, perform the analysis and get the snapshots on a smaller data subset
- if you really cannot get to connect to the repository and update your local cached copy of the data, perform the required analyses on the KDEOffice or Chromium pre-cached datasets which are provided with the software in this course. This operation should work with no problem, even if you do not have an Internet connection.
Q: I have been working on a step of assignment A or B. I am either stuck, or do not know if what I've done is correct or enough. What now?
A: This is precisely why the course enforces you to report what you have done so far every week. Send to the lecturer a clear report every week, describing
- what you have done so far
- where are the potential problems