Інженерна дисципліна
• Розробкаі побудова
– Структур (дороги, мости, аеропорти, ...)
– Машин (станки, автомобілі, ...)
– Пристроїв (телефони, камери, ...)
– Систем (електричних, комп’ютерних, ...)
– Матеріалів (металургійних, полімерних, ...)
– Процесів (хімічних, фізичних, ...)
13.
Вхід
• Ідея розробки
• Очікування замовника
• Технічні характеристики
• Обмеження
14.
Вихід
• Конструкторська документація(design)
• Технологічний контроль
– Формальний аналіз
• Передача дизайну робітникам
• Контроль виконання
• Контроль якості готового продукту
(тестування)
Програмна інженерія
• Конструкторськадокументація = код
• Технологічний контроль = рев’ю, аналіз
– Формальний аналіз – дуже дорого
• Передача дизайну робітникам = компіляція
• Контроль виконання = контроль компіляції
• Контроль якості готового продукту
(тестування)
17.
Роль робітника
Lots of complexity here
often even too much :)
Very cheap and fast
18.
Software Assurance
• Переваганадається тестуванню та відладці
• ВТЧ тому що це дешево і легко
• Формальні доведення правильності – ще
недостатньо розвинені
• Тестування стає частиною проектування
19.
Software is soft
•Будинок (міст, літак, станок, ...)
– Неможливо передати по мережі
– Неможливо клонувати
– Неможливо перевикористати його частини
• ПЗ можна постійно змінювати
Legacy software
• Довго експлуатується
• Продовжує експлуатуватись
• Задовільняє потреби замовника
• Але разом з тим
– Містить дефекти, не містить нових функцій
• Важко покращується
23.
Maintainable software
• Довго експлуатується
• Продовжує експлуатуватись
• Задовільняє потреби замовника
• Але разом з тим
– Містить дефекти, не містить нових функцій
• Легко покращується
Складність
• Розробка ПЗ– управління складністю
Tony Hoare:
There are two ways of constructing a software design:
One way is to make it so simple that there are
obviously no deficiencies,
and the other way is to make it so complicated that
there are no obvious deficiencies.
The first method is far more difficult.