Качествен програмен код

Едносеместриален изборен курс (0+3+3) за студенти от ФМИ на СУ

Преподавателски екип

Светлин Наков

Българска асоциация на разработчиците на софтуер (БАРС), председател, www.nakov.com, codecoursenakov.com

Мартин Кулов

CodeAttest, изпълнителен директор, martin.kulovcodeattest.com

Николай Манчев

BTS, ръководител на отдел „Консултанти”, nickmanchev.org

Георги Иванов

Sciant, ръководител на софтуерни проекти, george.ivanovsciant.com

Михаил Стойнов

Sciant, софтуерен разработчик, студент-консултант на Майкрософт за ФМИ, mihail.stoynovfmi.uni-sofia.bg

Ивайло Христов

софтуерен разработчик, ivaylo.hristovgmail.com

Анотация на курса

Целта на курса “Качествен програмен код” е да запознае аудиторията с принципите за изграждане на висококачествен програмен код в процеса на разработка на софтуер. Качеството на кода се разглежда в неговите най-съществени характеристики – коректност, леснота за четене и леснота за поддръжка. Обясняват се принципите за създаване на качествени класови йерархии, класове и подпрограми (методи). Дефинират се фундаменталните понятия „функционална независимост” и „свързаност на отговорностите” и влиянието им при изграждане на класове и подпрограми. Дават се препоръки за правилна работа с променливи и данни, както и насоки за правилното именуване на променливите и другите елементи на програмите. Дискутират се препоръки за организиране на логическите конструкции за управление. Обясняват се утвърдени методологии за откриване и отстраняване на грешки и оптимизиране на кода. Обръща се внимание на преработката на съществуващ код (refactoring). Дефинират се принципите за добро форматиране на кода. Въвежда се концепцията за „самодокументиращ се код” като стил на програмиране. Разглеждат се теми, свързани с работата в екип, управлението на софтуерни проекти и влиянието на някои психологически аспекти върху качеството на софтуера. Препоръките, техниките и практиките за изграждане на качествен програмен код, разглеждани в курса, са независими от езика за програмиране.

Course Description

The „High-quality programming code” course objective is to introduce the students to the principles of high-quality programming code construction during the software development process. The quality of the code is discussed in its most important characteristics – correctness, readability and maintainability. The principles of construction of high-quality class hierarchies, classes and subroutines (methods) are explained. Two fundamental concepts – “loose coupling” and “strong cohesion” are defined and their effect on the construction of classes and subroutines is discussed. Some advices for correctly dealing with the variables and data are given, as well as directions for correct naming of the variables and the rest elements of the program. Best practices for organization of the logical programming constructs are discussed. Some methodologies for testing, debugging and code optimization are explained. Attention is taken also to the “refactoring” as a technique for improving the existing code. The principles of good formatting of the code are defined and explained. The concept of “self-documenting code” as a programming style is introduced. Some topics related to team working, software project management and some psychological aspects of software development are also discussed. The techniques and practices for constructing high-quality programming code discussed in the course are independent of the programming languages.

Изисквания

-       Базови познания по обектно-ориентирано програмиране

-       Ползване на английски език

Изпити и оценки

По време на семестъра всеки студент ще трябва да положи 2 теста върху изучавания материал. Тестовете са задължителни и формират крайната оценка.

Учебна програма

1.    Уводни бележки

1.1.  Въведение в конструирането на програмен код

1.2.  Необходими предпоставки за създаване на качествен програмен код

2.    Дизайн на програмния код

2.1.  Дизайнът в процеса на разработка на софтуер

2.2.  Проектиране и работа с класове и класови йерархии

2.3.  Качествени подпрограми. Функционална независимост и свързаност на отговорностите

2.4.  Защитно програмиране. Assertions. Изключения

2.5.  Програмиране с псевдокод

3.    Променливи и данни

3.1.  Правилно използване на променливи

3.2.  Правилно именуване на променливите

3.3.  Работа с примитивни типове данни

3.4.  Работа със сложни типове данни

4.    Конструкции за управление

4.1.  Организиране на праволинейния код

4.2.  Използване на условни конструкции за управление

4.3.  Работа с конструкции за цикъл

4.4.  Необичайни конструкции за управление

4.5.  Методи, базирани на таблици

4.6.  Общи препоръки за конструкциите за управление

5.    Техники и принципи при разработката на кода

5.1.  Осигуряване на качеството на софтуера

5.2.  Съвместна разработка в екип

5.3.  Тестване на софтуера

5.4.  Методологии за дебъгване на кода

5.5.  Преработка на съществуващ код (refactoring)

5.6.  Оптимизация и настройка на кода

6.    Методология на разработката

6.1.  Влияние на размера на проекта върху разработката

6.2.  Управление на процеса на конструиране на кода

6.3.  Интеграция на софтуера

6.4.  Инструменти за разработка

7.    Други теми, свързани с качеството на кода

7.1.  Форматиране и стил на програмния код. Конвенции

7.2.  Самодокументиращ се код

7.3.  Психология на програмирането – влияние на личностния характер

7.4.  Други препоръки

Лекции

понеделник и четвъртък, 18-21 часа, зала 325 на ФМИ, СУ „Св. Климент Охридски”

Първа сбирка

21 февруари (понеделник), зала 325 на ФМИ

Литература

Code Complete, 2nd edition, Steve McConnell, Microsoft Press, 2004, ISBN 0735619670, http://www.cc2e.com/

За повече информация

Посетете сайта на курса: http://www.devbg.org/codecourse/