Заняття #0
  Вступ
ОРГАНІЗАЦІЙНІ ПИТАННЯ
Steve McConnell, Code Complete




              Link
Andrew Troelsen, Pro C#




         Link
Herbert Schildt,
C# 4.0: The Complete Reference




            Link
Коротко
•   Про мови
•   Про програмне забезпечення
•   Про мету ПЗ
•   Про засоби
ПРО МОВИ
Яку мову вивчати
Яку мову вивчати
• English
  – Код
  – Документація
  – Спілкування
  – Література, блоги, відео, конференції
  – Прийом на роботу
ПРО ПЗ
Інженерна дисципліна
• Розробка і побудова
  – Структур (дороги, мости, аеропорти, ...)
  – Машин (станки, автомобілі, ...)
  – Пристроїв (телефони, камери, ...)
  – Систем (електричних, комп’ютерних, ...)
  – Матеріалів (металургійних, полімерних, ...)
  – Процесів (хімічних, фізичних, ...)
Вхід
•   Ідея розробки
•   Очікування замовника
•   Технічні характеристики
•   Обмеження
Вихід
• Конструкторська документація (design)
• Технологічний контроль
  – Формальний аналіз
• Передача дизайну робітникам
• Контроль виконання
• Контроль якості готового продукту
  (тестування)
Роль робітника




Skills + Time + Money
Програмна інженерія
• Конструкторська документація = код
• Технологічний контроль = рев’ю, аналіз
  – Формальний аналіз – дуже дорого
• Передача дизайну робітникам = компіляція
• Контроль виконання = контроль компіляції
• Контроль якості готового продукту
  (тестування)
Роль робітника
        Lots of complexity here
          often even too much :)




          Very cheap and fast
Software Assurance
• Перевага надається тестуванню та відладці
• ВТЧ тому що це дешево і легко
• Формальні доведення правильності – ще
  недостатньо розвинені
• Тестування стає частиною проектування
Software is soft
• Будинок (міст, літак, станок, ...)
  – Неможливо передати по мережі
  – Неможливо клонувати
  – Неможливо перевикористати його частини
• ПЗ можна постійно змінювати
ПРО МЕТУ
Програмне забезпечення
• Успішне
  – Legacy (унаслідуване, застаріле)
  – Maintainable (легко підтримуване)
• Неуспішне
Legacy software
•   Довго експлуатується
•   Продовжує експлуатуватись
•   Задовільняє потреби замовника
•   Але разом з тим
    – Містить дефекти, не містить нових функцій 
• Важко покращується
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.
Складність
• Способи зменшення складності:
  – Підвищення IQ - ?
  – Декомпозиція
  – Абстрагування
  – Перевикористання
  –…
Magic?
•   There is no magic 
•   It may be complex, but it is NOT sorcery
•   Learn how things work
•   Reinvent the wheel
•   (in your spare time)
Запитання

#0 Вступна лекція

  • 1.
  • 2.
  • 3.
    Steve McConnell, CodeComplete Link
  • 4.
  • 5.
    Herbert Schildt, C# 4.0:The Complete Reference Link
  • 6.
    Коротко • Про мови • Про програмне забезпечення • Про мету ПЗ • Про засоби
  • 7.
  • 8.
  • 10.
    Яку мову вивчати •English – Код – Документація – Спілкування – Література, блоги, відео, конференції – Прийом на роботу
  • 11.
  • 12.
    Інженерна дисципліна • Розробкаі побудова – Структур (дороги, мости, аеропорти, ...) – Машин (станки, автомобілі, ...) – Пристроїв (телефони, камери, ...) – Систем (електричних, комп’ютерних, ...) – Матеріалів (металургійних, полімерних, ...) – Процесів (хімічних, фізичних, ...)
  • 13.
    Вхід • Ідея розробки • Очікування замовника • Технічні характеристики • Обмеження
  • 14.
    Вихід • Конструкторська документація(design) • Технологічний контроль – Формальний аналіз • Передача дизайну робітникам • Контроль виконання • Контроль якості готового продукту (тестування)
  • 15.
  • 16.
    Програмна інженерія • Конструкторськадокументація = код • Технологічний контроль = рев’ю, аналіз – Формальний аналіз – дуже дорого • Передача дизайну робітникам = компіляція • Контроль виконання = контроль компіляції • Контроль якості готового продукту (тестування)
  • 17.
    Роль робітника Lots of complexity here often even too much :) Very cheap and fast
  • 18.
    Software Assurance • Переваганадається тестуванню та відладці • ВТЧ тому що це дешево і легко • Формальні доведення правильності – ще недостатньо розвинені • Тестування стає частиною проектування
  • 19.
    Software is soft •Будинок (міст, літак, станок, ...) – Неможливо передати по мережі – Неможливо клонувати – Неможливо перевикористати його частини • ПЗ можна постійно змінювати
  • 20.
  • 21.
    Програмне забезпечення • Успішне – Legacy (унаслідуване, застаріле) – Maintainable (легко підтримуване) • Неуспішне
  • 22.
    Legacy software • Довго експлуатується • Продовжує експлуатуватись • Задовільняє потреби замовника • Але разом з тим – Містить дефекти, не містить нових функцій  • Важко покращується
  • 23.
    Maintainable software • Довго експлуатується • Продовжує експлуатуватись • Задовільняє потреби замовника • Але разом з тим – Містить дефекти, не містить нових функцій • Легко покращується
  • 24.
    Неуспішне ПЗ • Непередбачуванокороткий цикл життя • Не задовільняє потреб замовника • Якість не має значення
  • 25.
  • 26.
    Складність • Розробка ПЗ– управління складністю 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.
  • 27.
    Складність • Способи зменшенняскладності: – Підвищення IQ - ? – Декомпозиція – Абстрагування – Перевикористання –…
  • 28.
    Magic? • There is no magic  • It may be complex, but it is NOT sorcery • Learn how things work • Reinvent the wheel • (in your spare time)
  • 29.