
- •Лекція 1. Вступ до програмної інженерії
- •Лекція 2. Поняття процесу проектування програмних продуктів
- •Лекція 3.Вдосконалення процесу проектування пз
- •Лекція 4. Життєвий цикл пз
- •Лекція 5. Методології і технології проектування пс
- •Лекція 6. Екстремальне програмування
- •Замовник
- •Розробник
- •Лекція 7. Робочий продукт, дисципліна зобов'язань
- •Лекція 8. Управління вимогами
- •Лекція 9. Структурний підхід до проектування пс
- •Лекція 10. Об’єктно-орієнтований аналіз і проектування програмних систем
- •Приклад діаграми класів
- •Лекція 11. Ооап. Діаграмма станів (statechart diagram)
- •Лекція 12. Диаграма деяльності (activity diagram)
- •Лекція 14. Управління програмним проектом
- •Як добитися консенсусу?
- •Лекція 14. Якість програмного забезпечення та методи його контролю
- •Для кожного процесу потрібно мати плани розвитку процесу, що складаються як мінімум з наступних розділів.
- •Лекція 15. Вимірюваня і оцінка складності програм
- •Лекція 16: Стандарти iso, sw-cmm. Case-технології
- •Лекція 17. Перспективні методи розробки пз. Scrum
Лекція 7. Робочий продукт, дисципліна зобов'язань
Робочий продукт
Однією з істотних умов для керованості промислового процесу є наявність окремо оформлених результатів роботи – як в остаточному постачанні так і проміжних. Ці окремі результати у складі загальних результатів робіт допомагають ідентифікувати, планувати і оцінювати різні частини результату Проміжні результати допомагають менеджерам різних рівнів відстежувати процес втілення проекту, замовник дістає можливість ознайомитися з результатами задовго до закінчення проекту. Більш того, самі учасники проекту в своїй щоденній роботі отримують простий і ефективний спосіб обміну робочою інформацією – обмін результатами.
Таким результатом є робочий продукт (work product) – будь-який артефакт, проведений в процесі розробки ПО, наприклад, файл або набір файлів, документи, складові частини продукту, сервіси, процеси, специфікації, рахунки і так далі
Рис. 7.1.
Ключова різниця між робочим продуктом і компонентой ПО полягає в тому, що перший необов'язково матеріальний і відчутний (not to be engineered), хоча може бути таким. Нематеріальний робочий продукт – це, як правило, деякий налагоджений процес – промисловий процес виробництва якої-небудь продукції, учбовий процес в університеті (на факультеті, на кафедрі) і так далі
Важливо відзначити, що робочий продукт зовсім не обов'язково є складовою частиною підсумкового постачання. Наприклад, налагоджений процес тестування системи не поставляється замовникові разом з самою системою. Уміння управляти проектами (не тільки в області програмування) багато в чому пов'язане з мистецтвом визначати потрібні робочі продукти, наполягати на їх створенні і в їх термінах вести приймання проміжних етапів роботи, організовувати синхронізацію різних робочих груп і окремих фахівців.
Багато методологій включають опис специфічних робочих продуктів, використовуваних в процесі, – CMMI, MSF, RUP і ін. Наприклад, в MSF це програмний код, діаграми додатків і класів (application diagrams і class diagrams), план ітерацій (iteration plan), модульний тест (unit test) і ін. Для кожного з них точно описаний зміст, відповідальні за розробку, місце в процесі і ін. аспекти.
Остановимся чуть детальнее на промежуточных рабочих продуктах. Компонента ПО, созданная в проекте одним разработчиком и предоставленная для использования другому разработчику, оказывается рабочим продуктом. Ее надо минимально протестрировать, поправить имена интерфейсных классов и методов, быть может, убрать лишнее, не имеющее отношение к функциональности данной компоненты, разделить public и private, и т.д. То есть проделать некоторую дополнительную работу, которую, быть может, разработчик и не стал делать, если бы продолжал использовать компоненту только сам. Объем этих дополнительных работ существенно возрастает, если компонента должна быть представлена для использования в разработке, например, в другой центр разработки (например, иностранным партнерам, что является частой ситуацией в оффшорной разработке). Итак, изготовление хороших промежуточных рабочих продуктов очень важно для успешности проекта, но требует дополнительной работы от их авторов. Работать одному, не предоставляя рабочих продуктов – легче и для многих предпочтительнее. Но работа в команде требует накладных издержек, в том числе и в виде трат на создание промежуточных рабочих продуктов. Конечно, качество этих продуктов и трудозатраты на их изготовление сильно варьируются в зависимости от ситуации, но тут важно понимать сам принцип.
Отже, підсумуємо, що проміжний робочий продукт повинен обов'язково мати ясну мету і конкретних користувачів, щоб мінімізувати накладні витрати на його створення.
Рис. 7.2.
Дисципліна зобов'язань
У основі розділення обов'язків в бізнесі і промисловому виробництві, корпоративних правил і норм лежить певна ділова етика, форма відносин – дисципліна зобов'язань. Вона широко використовується на практиці і є одній з можливих форм соціального взаємовідношення між людьми. Привнесло в бізнес і промисловість інших моделей людських відносин – сімейних, сексуальних, дружніх і так далі часто наносить справам серйозну утрату, породжує конфліктність, знижує ефективність.
Основою цієї форми відносин є зобов'язання, які:
даються добровільно;
не даються легко – робота, ресурси, розклад повинні бути ретельно враховані;
між сторонами включає те, що буде зроблене, ким і в які терміни;
відкрито і публічно сформульовані (тобто це не "таємне знання").
Крім того:
відповідальна сторона прагне виконати зобов'язання, навіть якщо потрібна допомога;
до настання deadline, як тільки стає очевидно, що робота не може бути закінчена в строк, обговорюються нові зобов'язання.
Відзначимо, що дисципліна зобов'язань не є якимсь зведенням правив, законів, вона відрізняється також від корпоративної культури. Це – певний груповий психічний феномен, що існує в товаристві сучасних людей. Приведені вище пункти не є вичерпним описом цього феномена, але лише проявляють і позначають його, так би мовити, викликають потрібні спогади.
Дисципліна зобов'язань, не дивлячись на очевидність, деколи, не просто реалізується на практиці, наприклад, в творчих областях людської діяльності, в області навчання і так далі Існують окремі люди, яким ця дисципліна внутрішньо чужа незалежно від їх роду діяльності.
З іншого боку, люди, що освоїли цю дисципліну, часто прагнуть застосовувати її в інших сферах життя і людських відносин, що виявляється не завжди виправданим. Підкреслимо, що дана дисципліна є далеко не єдиною моделлю відносин між людьми. Як приклад можна розглянути відносини в сім'ї або дружбу, що, з очевидністю, не можуть бути виражені дисципліною зобов'язань. Так, замість точності і пунктуальності в цих відносинах важливе емоційно-плотське співпереживання, без якого вони неможливі.
Дисципліні зобов'язань приділяється багато уваги в рамках MSF, оскільки там в моделі команди немає лідера, начальника. Ця дисципліна реалізована також в Scrum: Scrum-команда має багато свобод, і через це – велику відповідальність. Регламентуються також правила дій, коли зобов'язання не можуть бути виконані такою командою.