Предисловие

В этом году я второй раз был рецензентом дипломных работ. Я оцениваю дипломы, которые касаются разработки программного обеспечения. Второй раз я вижу работы и вижу в них одни и те же недочеты. Мне надоело говорить об одном и том же и я решил сформулировать некий набор пожеланий и требований. В данной статье я сформулирую перечень пожеланий, которые я надеюсь будут учтены в будущем и мною и теми, чьи дипломы мне предстоит прочесть и оценить.

Требования и пожелания

Оформление, стиль, содержание

Документ должен удовлетворять требованиям по оформлению. Обычно это СТП университета. Обычно с этим все хорошо, но пункт этот должен был быть в этом посте. Итак, содержание, заголовки, таблицы, списки, текст - всё должно подчиняться единым правилам оформления.

Документ должен быть законченным. Каждая глава должна быть законченной. Предложения лаконичными, емкими, однозначными. Перед сдачей документ должен быть вычитан на предмет неточностей, орфографических, смысловых ошибок. Приятно видеть краткие выводы и краткое описание дальнейших действий в конце каждой главы.

Содержанию должно включать главы, посвященные описанию предметной области, обзору и анализу существующих решений, используемых технологиях, используемых инструментах, ссылки на исходный код, схемы алгоритмов, диаграммы, результаты тестирования.

Исходный код

Исходный код должен удовлетворять тому, что пишут Стив Макконнелл "Совершенный код", Мартин Фаулер "Рефакторинг". Определитесь с code-style, организуйте код, следуйте принципам KISS, DRY и т.д. Никогда не называйте методы obrabotkaDannih(dannie), не надо.

Исходный код должен быть частью архитектуры, которая должна быть изложена в документе. Я имею в виду то, что не следует писать все в одном методе, классе или функции, или handler'e кнопки аля Button1_OnClick. Должен быть некий абстрактный уровень, сущности, которые передают друг другу данные, взаимодействуют между собой. Эти сущности должны иметь отношение к предметной области.

Не нужно печатать весь исходный код на бумажном носителе. Укажите ссылку на репозиторий, или куски кода, которые по вашему мнению представляют интерес для читателя и характеризуют вас как разработчика.

Тестирование

Было бы очень здорово, если бы вы использовали CI (continuous integration) и тесты. Это существенный плюс вашей работе. Если их нет, опишите тест-план. То, как вы тестировали ваше программное обеспечение, какие данные подавали на вход, какие результаты ожидали увидеть на выходе. Мне не достаточно ответа вроде "Ну мы запустили, проверили, работает. Руководитель принял программу".