Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 2 · Урок 9

Софтуерният проект. Качество на кода

Що е проект — цел, начало, край, екип. Жизнен цикъл: инициализиране, планиране, реализация, заключение. Правила за качествен код.

Основни правила и фази при разработване на проект

В часовете по информационни технологии вече сте се запознали с основните възможности на програми като текстообработка, електронни таблици и презентации. Сега предстои най-интересното — да използвате наученото извън отделните задачи: за решаване на проблеми от реалния живот.

Когато една задача изисква събиране, организация и представяне на данни, успешното ѝ решаване минава през определени технологични правила. Полезна рамка за организация на усилията при решаване на практически задачи от всички области на човешката дейност е проектът. При създаването на програми също е удобно това да се прави в рамките на проект.

Бележка

Много от нещата в този урок се отнасят за големи и сериозни проекти, разработвани от професионалисти. Но и в профилираните часове по информатика ще имате възможност в колектив със свои съученици да разработвате проекти — а в бъдеще ще се наложи да изпълнявате още много. Затова е добре отсега да свикнете с основните правила.

Що е проект?

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

Важни характеристики на всеки проект:

  • Полезен — решава проблем, представляващ интерес, и удовлетворява потребности. Резултатът може да е продукт (сграда, ново компютърно устройство, по-удобна операционна система) или услуга — действие, подпомагащо отделна личност или група хора.
  • Целесъобразен / уникален — резултатите, които ще бъдат получени, или не съществуват, или съществуват, но не са достъпни: не могат да се използват наготово, не могат да се купят, или купуването им не е оправдано икономически.
  • Работа в екип — реализира се от няколко изпълнители, които разпределят и координират работата си, така че проектът да се реализира в искания срок, обем и качество. За цялостното управление се определя ръководител на екипа. Освен професионална компетентност, успешният ръководител трябва да притежава и т.нар. меки умения: комуникативност, справяне с проблеми, разрешаване на конфликти, преговаряне, убеждаване. Важно е да планира задачите и отговорностите според личните качества и компетентност на всеки.
  • Дисциплина — в описанието на проекта са дадени изискванията към вида и качествата на резултатите и към процеса (в каква среда, с какви ресурси, в какъв срок). Неспазването на дисциплината може да доведе до невъзможност отделните части да се „сглобят" в очаквания краен резултат или до изпуснати срокове.

Жизнен цикъл на проект

Жизненият цикъл (ЖЦ) на проекта е периодът на съществуването му — последователност от фази, през които проектът преминава от започването до завършването си. Всяка фаза има определено начало, край, продължителност и набор от специфични дейности.

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

Жизнен цикълна проект1.инициализиращафаза2.планиращафаза3.реализиращафаза4.заключителнафаза
Фиг. 1 — Четирите фази на проектния жизнен цикъл (по учебника)
ФазаКакво се прави
1. ИнициализиращаФормулиране на целите, приоритетите, крайните срокове и рисковете на проекта
2. ПланиращаОпределяне на основните задачи и графика за изпълнението им
3. РеализиращаУправляемо и контролирано осъществяване на планираните действия
4. ЗаключителнаАнализиране на резултатите, обобщаване на придобитите знания и опит, планиране на следващи стъпки

Инициализиране

В резултат на възникнала потребност човек или група хора — за кратко възложител — решава да инициира проект, чиито резултати да задоволят нуждата. Възложителят описва задачата от своя гледна точка. Това описание може да не е много подробно и дори да е неприемливо от професионална гледна точка, защото често възложителят не е специалист в областта: хората, които искат да си построят жилищен блок, нямат нищо общо със строителството, а повечето потребители на програми не са програмисти.

С приготвеното описание възложителят търси хора, които са в състояние да разработят и изпълнят проекта — изпълнител. Не е изключено възложител и изпълнител да са едни и същи хора: колектив от специалисти, които виждат необходимост от определен продукт и сами се заемат с реализацията му.

Заданието на проекта

Със съвместните усилия на изпълнителя и възложителя се създава задание на проекта. То трябва да съдържа: кратка формулировка на задачата, целите, по-подробно описание на същността, очакваните резултати и изискванията. Част от изискванията се отнасят към процеса на разработване (инструментални средства, технологии, ресурси), а други — към очакваните резултати: обем, съдържание и качество на продуктите.

Проучва се осъществимостта на проекта — финансова, технологична, пазарна: дали могат да бъдат осигурени всички необходими ресурси и среда за успешна реализация. Само при положителен резултат от анализа се взема решение за започване. Определя се ръководител на проекта и се сформира екип.

Планиране

След като заданието е готово и проектът е стартирал, започва фазата на планиране. През нея, след внимателно проучване на заданието, ръководителят със съдействието на екипа и привлечени експерти трябва:

  • Да определи основните задачи, продължителността им и последователността, в която ще се изпълняват.
  • Да разпредели задачите между членовете на екипа в зависимост от компетентността им. Ако проектът е много голям, може да се раздели на няколко подпроекта — за всеки се определя работна група и отговорник.
  • Да състави подробен план-график за изпълнението, като за всяка задача се определят срок, вид, съдържание и качество на получаваните резултати.
  • Да състави индивидуални планове на членовете на екипа с отговорностите на всеки.

В зависимост от спецификата на проекта могат да се съставят и допълнителни планове — за управление на риска, за осигуряване на качеството, маркетингов план и др. По време на планирането може да се установят важни особености, които не са били посочени в заданието — тогава заданието се уточнява с възложителя.

Реализация и заключение

В реализиращата фаза екипът изпълнява планираните задачи, а ръководителят следи напредъка спрямо план-графика, координира работата и реагира при отклонения — закъснения, нови изисквания, технически проблеми. Контролът е постоянен: по-добре е проблемът да се открие рано, докато поправянето е евтино.

В заключителната фаза резултатите се предават на възложителя и се анализират: постигнати ли са целите, в срок ли, с какво качество. Натрупаните знания и опит се обобщават — какво работи добре, какво да се промени — и се планират следващи стъпки.

Качество на кода на софтуерния продукт

При софтуерните проекти важна част от качеството на резултата е качеството на кода. Кодът се чете многократно повече, отколкото се пише — от съотборници, от учителя, и от самия теб след месец. Ето основните правила:

Смислени имена

ЛошоДобре
Променливаint a, b, x2;int sum, count, maxGrade;
Методvoid Doit()void PrintReport()
Булеваbool flagbool isValid, hasErrors

Името трябва да казва какво съдържа променливата или какво прави методът — без да се налага да четеш кода им.

Форматиране и структура

  • Еднакви отстъпи (индентация) — те показват структурата на блоковете.
  • Празен ред между логически отделни части.
  • Един метод върши едно нещо; дълъг метод се разделя на по-малки.
  • Без повтарящ се код — повтореното се изважда в метод.

Коментари — кога и какви

// ЛОШО: коментар, който повтаря кода
i++;   // увеличаваме i с 1

// ДОБРЕ: коментар, който обяснява ЗАЩО
// Прескачаме първия ред — той съдържа заглавията на колоните
i++;

Добрият коментар обяснява защо кодът прави нещо, а не какво прави — това се вижда от самия код, ако имената са добри.

Проверка на входните данни

Качественият код не се доверява на входа: проверява дали числото е в очаквания диапазон, дали низът не е празен, дали файлът съществува — и реагира с ясно съобщение вместо да се срине.

Правилото на скаута

Остави кода по-чист, отколкото си го заварил. Всяко минаване през файла е възможност да подобриш име, да махнеш повторение, да добавиш липсваща проверка.

Какво трябва да запомниш

  • Проект = дейности с точно определени цел, начало и край, водещи до очаквани резултати в зададено време и ресурси.
  • Характеристики: полезен, уникален/целесъобразен, екипна работа, дисциплина.
  • ЖЦ на проекта: инициализиране → планиране → реализация → заключение.
  • Инициализиране: възложител + изпълнител → задание → анализ на осъществимостта → ръководител и екип.
  • Планиране: задачи и срокове, разпределение по компетентност, план-график, индивидуални планове.
  • Качествен код: смислени имена, чисто форматиране, коментари „защо", проверка на входа, без повторения.