Тема 1. Вступ до конструювання програмного забезпечення (КПЗ). Місце КПЗ в життєвому циклі програмної системи
Розробка програмного забезпечення (ПЗ) – це складний процес, в який входить багато складових. В загальному випадку це:
· визначення проблеми;
· вироблення вимог;
· створення плану конструювання;
· розробка архітектури ПЗ, або високорівневе проектування;
· детальне проектування;
· кодування і відлагодження;
· блочне тестування;
· інтеграційне тестування;
· інтеграція;
· тестування системи;
· корегувальне супроводження.
Термін конструювання програмного забезпечення (software construction) описує детальне створення робочої програмної системи за допомогою комбінації кодування, верифікації (перевірки), модульного тестування (unit testing), інтеграційного тестування та відлагодження.
На рис.1 показано місце конструювання як частину кроків серед процесів, що проходять при побудові ПЗ.
Рис.1. Конструювання серед процесів побудови ПЗ
Процеси конструювання зображені всередині сірого еліпсу. Головними компонентами конструювання є кодування та відлагодження, однак воно включає і детальне проектування, блочне тестування, інтеграційне тестування та інші процеси.
Іноді конструювання називають "кодуванням" або "програмуванням". Кодування в даному випадку видається не найкращим терміном, оскільки воно має на увазі механічну трансляцію розробленого плану в команди мови програмування, тоді як конструювання є зовсім не механічним процесом і часто пов’язане з творчістю та аналізом. Сенс слів "конструювання" та "програмування" досить близький.
Дана область знань пов'язана з іншими областями. Найбільш сильний зв'язок існує з проектуванням (Software Design) і тестуванням (Software Testing). Причиною цього є те, що сам по собі процес конструювання програмного забезпечення зачіпає важливі аспекти діяльності з проектування й тестування. Крім того, конструювання відштовхується від результатів проектування, а тестування (у будь-якій своїй формі) передбачає роботу з результатами конструювання. Досить складно визначити межі між проектуванням, конструюванням і тестуванням, тому що всі вони пов'язані в єдиний комплекс процесів життєвого циклу і, в залежності від обраної моделі життєвого циклу і застосовуваних методів (методології), таке розділення може мати різний вигляд.
Хоча ряд операцій з проектування детального дизайну може відбуватися до стадії конструювання, великий обсяг такого роду проектних робіт відбувається паралельно з конструюванням або як його частина. Це є сутність зв'язку з областю знань "Проектування програмного забезпечення".
У свою чергу, протягом всієї діяльності з конструювання, інженери використовують модульне і інтеграційне тестування. Таким чином пов'язана дана галузь знань з "Тестуванням програмного забезпечення".
У процесі конструювання звичайно створюється більша частина активів програмного проекту - конфігураційних елементів (configuration items). Тому в реальних проектах просто неможливо розглядати діяльність по конструюванню у відриві від галузі знань "конфігураційного управління" (Software Configuration Management).
Оскільки конструювання неможливе без використання відповідного інструментарію і, ймовірно, дана діяльність є найбільш інструментально-насиченою, важливу роль у конструюванні грає область знань "Інструменти і методи програмної інженерії" (Software Engineering Tools and Methods).
Безумовно, питання забезпечення якості значимі для всіх галузей знань і етапів життєвого циклу. У той же час, код є основним результуючим елементом програмного проекту. Таким чином, явно напрошується і присутній зв'язок обговорюваних питань з областю знань "Якість програмного забезпечення" (Software Quality).
З пов'язаних дисциплін програмної інженерії (Related Disciplines of Software Engineering) найбільш тісний і природний зв'язок даної галузі знань існує з комп'ютерними науками (computer science). Саме в них, звичайно, розглядаються питання побудови та використання алгоритмів і практик кодування. Нарешті, конструювання стосується і управління проектами (project management), причому, в тій мірі, наскільки діяльність з управління конструюванням важлива для досягнення результатів конструювання.
Далі наведено деякі конкретні задачі, що виникають в процесі розробки ПЗ, пов’язані з конструюванням:
· перевірка виконання умов, необхідних для успішного конструювання;
· визначення способів подальшого тестування коду;
· проектування та написання класів та методів;
· створення та присвоєння імен змінних та іменованих констант;
· вибір управляючих структур та організації блоків команд;
· блочне тестування, інтеграційне тестування і відлагодження власного коду;
· взаємний огляд коду та низькорівневих програмних структур членами групи;
· "шліфування" коду шляхом його ретельного форматування та коментування;
· інтеграція програмних компонентів, створених окремо;
· оптимізація коду, яка направлена на підвищення його швидкодії і зниження міри використання ресурсів.
З іншого боку, з видів діяльності, що проходять в процесі розробки ПЗ, до конструювання не відносяться: керування процесом розробки, виробки вимог, розробка високорівневої архітектури програми, проектування інтерфейсу користувача, тестування системи і її супроводження – для кожного з цих пунктів є своя наука.
Рис.2. Область знань "Конструювання програмного забезпечення"