Новини високих технологій
» » Технічне завдання на розробку програмного забезпечення: стандарти і шаблони

Технічне завдання на розробку програмного забезпечення: стандарти і шаблони

4-09-2018, 12:25
1 820
Технології розробки програмного забезпечення (ПО) з'явилися разом з програмуванням. Стало традицією поєднання двох процедур: як написати алгоритм про те, «як писати програму» розробити цей проект, уточнивши по ходу справи перший алгоритм. Якщо програму «виконує» комп'ютер, технологію написання програм «виконує» людина. Для комп'ютера помилка в циклі виконання загрожує фатальними наслідками. Для людини процес виконання технології написання програм - це не цикл і не алгоритм, а спіраль розвитку знань і умінь формалізувати область застосування, сформулювати завдання і вирішити її.

Область застосування і мета в ній

Програмування в будь-якому контексті - це формалізація знань і вмінь розробника (колективу) у відносно точний алгоритм, записаний у форматі технічного завдання (ТЗ) на розробку програмного забезпечення (ПО) однієї або безлічі програм.


Область застосування завжди первинна. Завдання, яке належить вирішити, не стільки вторинна, скільки важко може бути встановленим і сама по собі є завданням. Зрозуміти, що потрібно зробити так, щоб зробити це швидко і точно, завжди складно. Всі спроби формалізувати процес і створити універсальний приклад технічного завдання на розробку програмного забезпечення завжди оберталися спіральним рухом до мети.
Формулювання завдання завжди уточнювалася, мета конкретизувалася, а необхідна функціональність часом визначалася роками. Побудувати космічний корабель, спроектувати житловий будинок або написати ТЗ на атомний підводний корабель - роки роботи навіть з урахуванням досвіду численних фахівців. Це зрозуміло всім. Суспільна свідомість насилу приходило до розуміння того, що написати програму (програмну систему) - це не менший, а часто набагато більш трудомісткий і складний процес.

Визначити простір рішень

Область застосування завжди «знає» що саме потрібно зробити, щоб змінити ситуацію на краще, але фахівець не відразу розуміє, як це коректно сформулювати і реалізувати.


Сучасне програмування пішло з локального варіанту в мережевий «розподілений» контекст. Суті це не змінило. Що взяти за основу C#, C/C++ або комплект інтернет-технологій HTML/CSS + jаvascript/PHP не має значення. Можна створити унікальне на асемблері для будь-якої області застосування, але це дуже трудомісткий процес роботи висококваліфікованих фахівців на рівні машинного коду. Програмне забезпечення - це втілення розумової діяльності фахівця в статичному, відчутному варіанті. Необхідна функціональність формалізується в логіку діалогу, алгоритми рішень та інтерфейс. Простір рішень - це необхідний функціонал, який описує ідею або забезпечення виконання спектру вимог, що поліпшують роботу користувача (замовника, споживача) в області застосування.
Технічне завдання на розробку програмного забезпечення в кінцевому підсумку - це логіка формалізації предметної області для постановки задачі, а також процедури опису, розробки, впровадження, супроводу, оновлення та умови припинення використання інформаційних систем, призначених для накопичення, зберігання і обробки даних за допомогою комп'ютерного обладнання.
Інформаційна система - узагальнене позначення окремої програми, комплексу програм, бази даних або унікального алгоритму. Завжди є щось на вході, на виході і треба побудувати те, що стоїть між входом і виходом - програмне забезпечення: формалізувати і реалізувати процедуру обробки інформації.

Учасники процесу та істотні умови

Замовник - фізична або юридична особа, зацікавлена в розробці інформаційної системи. Виконавець - фізична або юридична особа, здатна організувати процес і виготовити інформаційну систему. Розробник (колектив) - фахівець або група фахівців, наймана для виконання всіх або частини робіт.
Відносини при розробці інформаційної системи будуються на рівні Замовник - Виконавець: тільки письмова форма згідно чинного законодавства та укладеного договору. Виконавець - розробник: тільки письмова форма відповідно до власного загального керівництва або ГОСТ на технічне завдання на розробку програмного забезпечення. Жодних усних відносин не допускається (не заборонено, але не рекомендується), ніякої учасник процесу не може посилатися на домовленості, не підтверджені письмово. Замовник і Виконавець діють у межах чинного законодавства та укладеного договору до повного виконання зобов'язань. Розробник наймається на роботу Виконавцем по мірі необхідності для виконання конкретних функцій, завдань, етапів. Визначення компетенції і складу групи розробки - сфера інтересів і відповідальності Виконавця.

Особливості ТЗ на розробку ЗА

Гранична ясність! ТЗ - це строгий документ, який чітко визначає що і на якій підставі було формалізовано: вихідні дані; необхідні результати і вихідні дані; обґрунтування і перелік всіх алгоритмів, що підлягають реалізації. ТЗ - самодостатній документ: якщо виконати все, що в ньому написано то необхідна функціональність буде реалізована, а завдання - вирішена. Нічого стороннього, нічого суперечливого. Всі пункти технічного завдання на розробку програмного забезпечення взаємопов'язані, систематизовано і точно сформульовані.
Будь ТЗ на розробку (навіть самої непоказної програми) - динамічний документ. Не можна фіксувати його як щось непорушне. У програмуванні інтелект відображається як в дзеркалі. ТЗ - це процес спіралеподібного розвитку уявлень про області застосування і розв'язуваної задачі. Технічне завдання на розробку програмного забезпечення - це не олівець і аркуш паперу, а кулькова (чорнильна) ручка і пачка зіпсованої папери. Гідні поваги ті розробники, які при написанні ТЗ орієнтуються на збереження історії розвитку своїх уявлень про області застосування і розв'язуваної задачі.

Концептуальне уявлення про інформаційних системах

Технічне завдання на розробку програмного забезпечення як зразок концептуальних уявлень про алгоритм, програмі, інформаційної системи, бази даних, веб-ресурсі чи іншому виробі, працюючому на цифровому обчислювальному пристрої, орієнтується на мову програмування, але конкретизація та вибір мови - не принципові.

Все що розробляється (програмується) для управління цифровим обчислювальним пристроєм - це інформаційна система (алгоритм, програма або база даних). Інформаційна система - це: результат формалізації області застосування; постановка задачі для розробки алгоритму (системи алгоритмів); програмування (розробка); тестування (перевірка функціональності і наявності помилок); впровадження (адаптація до області застосування та доопрацювання); супроводження (обслуговування без зміни коду); оновлення (модернізація, створення нової версії); припинення експлуатації (юридична, технічна, планове). Інформаційна система - це послідовність трансформації розумової діяльності людини: загальне системне уявлення; формальний опис; конкретна розробка; система перевірки функціональності; система впровадження; система супроводу; система оновлення (модернізації); підстави та причини для припинення використання. Розроблення інформаційної системи виконує Виконавець силами власних або залучених фахівців. Авторське право і право власності у процесі роботи на результати етапів оформляється відповідно до законодавства та за домовленістю з замовником.

Розвиток ТЗ при розробці ПО

Використання колективу фахівців, заміна фахівців, час і логіка виконання робіт визначається Виконавцем. Функції Замовника закінчуються на етапі постановки завдання, до впровадження інформаційної системи і знову починаються після впровадження. Розробка здійснюється циклічно, але по спіралі: після тестування (ініціатива Виконавця); після впровадження (ініціатива Замовника); при об'єктивній необхідності оновлення. Розробка інформаційної системи орієнтується на результат розумової діяльності людини, який трансформується з концептуального опису області застосування в конкретний виріб.
Кожен етап трансформації будується таким чином, щоб максимально уникнути жорсткості кінцевих конструкцій, забезпечити динамічний уточнення кожного елемента цього, об'єкти, функції та ін. кінцевого виробу в процесі розробки. Розробка технічного завдання на створення програмного забезпечення і створена інформаційна система є статичними уявленнями про результати виконаної роботи, сприймаються як є, допущені неточності, помилки і вади конструкції не можуть бути підставою для обґрунтування або пред'явлення якого-небудь збитку.

Розвиток на базі вже створених рішень

ПО використовується у багатьох випадках в різних областях застосування давно і накопичений великий досвід. Фінанси, біржі, бухгалтерські рішення, електронний документообіг, верстати з числовим програмним управлінням і інші сфери. Написати технічне завдання на розробку програмного забезпечення С1 - приклад роботи, яка формалізується на підставі вже існуючого. Дуже характерно, що бухгалтерія 1С, заявлена розробниками як перша і єдина реалізація комплексного бухгалтерського була створена іншими колективами розробників в абсолютно інших програмних продуктах. Цілком очевидно, що існуючі бухгалтерські програми не ідеал і будуть розвинені існуючі та створені нові. Актуальність і реальна потреба в автоматизації виробництв і обробку інформації зробила технічне завдання на розробку програмного забезпечення АІС незалежним продуктом розумової діяльності фахівця.
На відміну від 1С, роботи з проектування ТЗ для АІС і власне самих автоматизованих інформаційних систем датуються початком 80-х років минулого століття, але проблем від цього не поменшало, а ідей стало набагато більше.

Розвиток і динаміка проти класики і статики

Будь-яка програма фіксує знання і вміння розробників (авторів). Замовники і керівники програмних проектів можуть вносити свою лепту в ТЗ і результуюче ЗА, але конкретні програмісти раніше переносять свої думки (знання та вміння) статичний програмний код. Навіть коли програма може динамічно адаптуватися до змін в області застосування, сучасні технології програмування не дають їй можливості вийти за межі уявлень програмістів, за межі виконаної реалізації (рішення) поставленого завдання.
Якщо обмеження сучасних інформаційних технологій визначити, як фундаментальний фактор, то процес створення ТЗ та результуючого ЗА виглядатиме як поступове нарощування функціоналу. Програмування - це не поодинокий факт: написано ТЗ, створене ЗА і процес завершено. Інший варіант: написано, зроблено, і почали все спочатку. Ідеально - не стільки писати програму і уточнювати, як саме це робити, а формувати колектив розробників програми і вдосконалювати свої знання і вміння.
Цікаво по темі
Зміст і використання JavaScript void
Зміст і використання JavaScript void
Відсутність значення і значення undefined - раритет найдавніших часів інформаційних технологій, але навіть в сучасному світі у них є місце і
Namespace PHP: приклад. Як використовувати простору імен в PHP?
Namespace PHP: приклад. Як використовувати простору імен в PHP?
Простір імен завжди існувало як частина алгоритму і завжди був «глобальним». В ході розробки великих проектів, коли створюється безліч файлів
Що таке парсинг: мета і логіка
Що таке парсинг: мета і логіка
Обробка інформації характеризується динамікою вихідних даних або необхідністю обробки даних з різних джерел за алгоритмами. В обох випадках
Конструкція PHP if else: прихована логіка
Конструкція PHP if else: прихована логіка
Умовний оператор - найдавніша конструкція синтаксису будь-якої мови програмування. Програми завжди щось порівнювали і «вирішували, що робити далі.