пʼятницю, 8 лютого 2008 р.

Визначення складності програмного забезпечення

Ми визнаємо, що деякі програмні системи не є складними. Це є в основному додатки, що можуть бути забутими, які є специфіковані, сконструйовані та підтримуються однією особою, звичайно програмістом-любителем або професійним розробником, працюючим ізольовано. Це не каже ані те, що подібні системи незрілі або неелегантні, ані те, що ми принижуємо їхніх творців. Подібні системи прагнуть мати дуже обмежені цілі та дуже короткий життєвий проміжок. Ми можемо дозволити викинути їх геть та замінити їх цілковито новими програмами ніж намагатися знов використати, полагодити або розширити їхні можливості. Подібні додатки є загалом більш скучно ніж складно розробляти; відповідно, вивчення того, як їх проектувати, нас не цікавить.
Навпаки, ми набагато більше зацікавлені у викликах розробки того, що ми будемо називати промисловим програмним забезпеченням. Тут ми знайдемо додатки, що виявляють дуже багату множину поведінки, як, наприклад, в реактивних системах, що керують або керуються подіями фізичного світу, та для яких час та простір є скудними ресурсами; додатки, що підтримують цілісність сотень тисяч записів інформації коли дозволяються паралельні поновлення та запити; та системи для управління та контролю сутностями реального світу, подібні маршрутизації повітряного та залізничного руху. Програмні системи подібні цим прагнуть мати довгий життєвий проміжок та з часом багато користувачів стають залежними від їхнього належного функціонування. У світі промислового програмного забезпечення ми також знаходимо платформи, що спрощують створення предметно-направлених додатків, та програми, що імітують деякі аспекти інтелекту людини. Хоча подібні додатки в основному є результатом дослідження та розробки, вони є не менш складними, тому що вони є засобами та артефактами інкрементної та дослідницької розробки.
Відмінною характеристикою промислового програмного забезпечення є те, що для окремих розробників надзвичайно складно, якщо не неможливо, зрозуміти усі тонкощі його побудови. Кажучи простими словами, складність подібних систем перевищує місткість інтелекту людини. Нажаль, ця складність, про яку ми говоримо виглядає суттєвою складністю усіх великих програмних систем. Під сутністю ми розуміємо, що ми можемо оволодіти цією складністю, але ніколи не зможемо її позбутися.
[1]

Немає коментарів: