Чи можуть обіцяти TDD та Agile створити оптимальне рішення? (Або навіть "гарне" рішення?)
Не зовсім. Але це не їх призначення.
Ці методи просто забезпечують "безпечний перехід" з одного стану в інший, визнаючи, що зміни є трудомісткими, складними та ризикованими. І суть обох практик полягає в тому, щоб програма та код були життєздатними та довели, що вони швидше та регулярніше відповідають вимогам.
... [TDD] протистоїть розробці програмного забезпечення, що дозволяє додавати програмне забезпечення, яке не доведено, щоб відповідати вимогам ... Кент Бек, якому приписують розробку або «повторне розкриття» техніки, заявив у 2003 році, що TDD заохочує просте проектує і вселяє впевненість. ( Вікіпедія )
TDD фокусується на тому, щоб кожен "фрагмент" коду відповідав вимогам. Зокрема, це допомагає забезпечити, щоб код відповідав раніше існуючим вимогам, на відміну від дозволу на те, щоб вимоги визначалися поганим кодуванням. Але, це не обіцяє, що реалізація в будь-якому випадку є "оптимальною".
Що стосується Agile процесів:
Робоче програмне забезпечення є основним показником прогресу ... Наприкінці кожної ітерації зацікавлені сторони та представник замовника переглядають прогрес та переоцінюють пріоритети з метою оптимізації рентабельності інвестицій ( Вікіпедія )
Спритність не шукає оптимального рішення ; просто робоче рішення - з метою оптимізації рентабельності інвестицій . Це обіцяє робоче рішення швидше , ніж пізніше ; не є "оптимальним".
Але це добре, адже питання неправильне.
Оптимали в розробці програмного забезпечення - нечіткі, рухомі цілі. Вимоги, як правило, в нормі і пронизані секретами, які тільки з'являються, на ваш стурбованість, в конференц-залі, повному ваших начальників. А "властивість архітектури та кодування рішення" оцінюється розділеними та суб'єктивними думками ваших колег та ваших управлінських сюзеренів - ніхто з яких насправді нічого не може знати про хороше програмне забезпечення.
У принаймні, TDD і Agile практики визнають труднощі і спробувати оптимізують дві речі , які є об'єктивними і вимірними: . Робоча v Чи не Робоча і рано V Пізніше ..
І навіть якщо ми «працюємо» і «швидше» як об'єктивні показники, ваша здатність оптимізувати їх в першу чергу залежить від майстерності та досвіду команди.
До речей, які ви могли б розтлумачити, як зусилля виробляють оптимальні рішення, включають такі речі, як:
тощо.
Чи справді кожна з цих речей виробляє оптимальні рішення, було б ще одним великим питанням!