Який хороший приклад ідеї розробки програмного забезпечення або методики, яка мала збій?


9

Зокрема, які приклади, де ідеї мас де просто неправильні. Чому люди заперлися на ідеї в першу чергу? І чому ідеї були відхилені? А може, ідеї ще живі і здорові, і якщо так, чому?

Наприклад, я можу описати CORBA (та інші подібні технології) як щось, що намагалося вирішити проблему зв'язку між компонентами програмного забезпечення. Багато хто вважав за необхідне визначити договори між різними компонентами. Зрештою, HTTP + JSON вирішив проблему для маси та інші різноманітні механізми RPC, такі як Thrift та Proto-bufs.


1
дивіться на програмування EXXXXXXXXXXXXXXXXTREEEEEEEEEEEEEEEEEE ...
аварійно

Не існує "ідей мас", просто ідеї, які стають популярними, і я не думаю, що будь-яка ідея, як зробити щось, що використовується досить довго, щоб стати масовою популярністю, може бути "просто неправильним", як це очевидно повинні вирішити деякі проблеми, або від нього негайно відмовляться всі, хто намагається.
Майкл Боргвардт

2
CORBA - це невдача .. вона все ще використовується
онон

@oenone, це невдача в тому сенсі, що вона не виконала своїх первісних обіцянок вирішити проблеми інтероперабельності в цілому, і тепер це ніша технологія.
Péter Török

HTTP JSON вирішив проблеми з WebServices, але насправді не з іншою областю програмного забезпечення!
сарат

Відповіді:


11

В основному, як і у світі поза комп'ютерами, ідеї та технології змагаються за увагу, важелі тощо. Деякі виграють, деякі програють; а дехто може здатися певним переможцем деякий час, а потім зникає в невідомості з появою наступної великої речі. Це може і не мати нічого спільного з тим, що було насправді тим краще. Свідк VHS проти Betamax, або пізніша війна між різними форматами DVD.

CORBA був величезним, незграбним і важким у використанні, але це було найкраще, що люди могли винайти на той час (зауважте, що він був розроблений ще до всесвітньої павутини - а HTTP, Java, XML, ... - стали широко відомими). І це був також класичний приклад дизайну від комітету , де вони набиваються в кожній ідеї, щоб задовольнити кожного, врешті-решт роблячи її марно роздутою (принаймні розглядається сьогоднішніми очима). Не кажучи вже про його ціну, яка з появою FOSS незабаром стала непомітною.

Зрештою, HTTP + JSON вирішив проблему для мас

Принаймні, для того, хто не бачив пари подібних «остаточних рішень», піднімаються і в кінцевому підсумку падають ... Добре пам’ятати, що в той час були подібні настрої щодо CORBA ;-)

Я вважаю, що цілком припустимо цитувати з "Піднесення та падіння CORBA" :

Історія CORBA така, яку обчислювальна індустрія бачилася багато разів, і, мабуть, ймовірно, що поточні зусилля середнього програмного забезпечення, зокрема веб-сервісів, відновлять подібну історію. [...]

Загалом, процес впровадження технологій OMG повинен розглядатися як основна причина падіння CORBA. Процес заохочує розробку комітетом і політичним маневруванням до того рівня, коли важко досягти технічної посередності, не кажучи вже про технічну досконалість. Більше того, додавання розрізнених рис призводить до поступового стирання архітектурного бачення. [...]

Демократичний процес, такий як OMG, однозначно не підходить для створення хорошого програмного забезпечення. Незважаючи на відомі процедурні проблеми, проте галузь вважає за краще покладатися на великі консорціуми для виробництва технологій. Веб-сервіси, поточна срібна куля проміжного програмного забезпечення, використовує процес, подібний до OMG, і, за багатьма рахунками, також страждає від міжусобиць, роздробленості, відсутності архітектурної узгодженості, проектування комітетом та особливостей. Мабуть, неминуче, що веб-сервіси прийматимуть історію, подібну до історії CORBA.


Тепер під іншим кутом зору: читаючи ваш термін "ідеї мас", я думав про зовсім інші речі, ніж CORBA або інші стандарти; це, як правило, ідеї однієї людини або малої групи. Я думав про сумнозвісні практики / точки зору, такі як "ковбойське кодування", "код і молиться", "це працює на моїй машині" і т. Д. Це справжні "ідеї мас" ІМХО, оскільки це майже будь-який новачок розробник інстинктивно починає писати код. І вони помиляються, оскільки не масштабують ані в просторі, ані в часі - таким чином не можна створювати великих, підтримуваних, розширюваних програм. Але я відчуваю, що, на жаль, це все-таки норма, а не виняток для людей, які намагаються працювати таким чином у професійних магазинах по всьому світу.

Іншою крайністю цього є багато ідей керівників та теоретиків про "правильний підхід" до розвитку ПЗ, що проявляється в таких методологіях, як М-М, РУП, Водоспад і т.д. правильний процес, і він почне автоматично виробляти якісне програмне забезпечення детерміновано, незалежно від того, хто насправді розробники. Зауважте, що в цю ж гру можна грати і методами Agile - це лише зміна міток. Будь-який менеджер, який вважає, що вибір (та збереження) правильних членів для його / її команди з розробки є менш важливим, ніж процес розробки, невдалий, залежно від того, який процес відбудеться. Однак ця віра в Process все ще здається переважаючою - можливо, його все ще викладають у школах управління?


Читаючи це посилання: шановний боже, CORBA, мабуть, був жахливим, якщо V1 EJB замінили його, тому що вони були простішими ...
Майкл Боргвардт

Продукт, який Мічі Хеннінг продовжував розробляти, усуває багато недоліків CORBA.
Blrfl

13

Частий приклад того, що люди пішли не так - модель водоспаду. Це схема стереотипної моделі водоспаду, яка також з’являється у статті Вінстона Ройса «Управління розвитком великих програмних систем» .

Модель водоспаду Вінстона Ройса

Після цього зображення додається цей текст:

Я вірю в цю концепцію, але реалізація, описана вище, є ризикованою і запрошує провал ... Фаза тестування, яка настає в кінці циклу розробки, є першою подією, для якої час, зберігання, введення / виведення, передачі тощо, - це досвід, який відрізняється від проаналізованого. Ці явища точно не піддаються аналізу. Наприклад, вони не є рішеннями стандартних часткових диференціальних рівнянь математичної фізики. Але якщо ці явища не зможуть задовольнити різні зовнішні обмеження, тоді потрібен незмінний капітальний дизайн. Простий восьмеричний пластир чи повтор якогось ізольованого коду не виправить подібних труднощів. Необхідні зміни в дизайні, ймовірно, будуть настільки руйнівними, що вимоги до програмного забезпечення, на яких ґрунтується дизайн, і які забезпечують обґрунтування всього, порушуються. Або вимоги повинні бути змінені, або необхідні суттєві зміни в дизайні. Насправді процес розробки повернувся до початку, і можна очікувати до 100-відсоткового перевиконання графіку та / або витрат.

Пізніше у статті Ройс представляє альтернативні моделі технологічних процесів, які передбачають ітерацію між поточною фазою та попередньою фазою та циклом між вимогами-аналізом-дизайном та іншим циклом між тестом-кодом-тестом. Він також визначає низку документів та протягом яких етапів вони повинні бути завершені, а також виступає за залучення замовника та численні водоспади в рамках кожної фази, щоб включити аналіз, тестування та використання всіх артефактів, що займаються. Насправді, те, що обговорює Ройс, можна вважати раннім підходом до спритних методів - хоча це все ще дуже орієнтоване на плани, але є основою для спритного руху.

Чому люди причаїлися до першого водоспаду, я не знаю. Я думаю, їм подобається ризикувати і запрошувати невдачі.


6
Люди причепилися до першого методу Водоспаду, оскільки це було б разюче подібне до того, яким буде проект цивільного будівництва, як будівництво 40-х поверхового хмарочоса. При будівництві хмарочоса вимоги та обмеження занадто болісно зрозумілі, щоб його не було, і нічого серйозного не зміниться на півдорозі. Аналіз та дизайн (архітектура) повинні бути повними та ретельними, не залишаючи місця для інтерпретації. Будівля повинна бути побудована для специфікацій, і, нарешті, інспектори повинні зайти та кваліфікувати готовий продукт. Програмне забезпечення майже ніколи не зрозуміло, чому модель водоспаду є невдалою.
maple_shaft

2
@maple_shaft Мені здається, що це цікаво, адже Вінстон Ройс був першим, хто обговорив використання цієї моделі в програмному проекті та створив схему, знайому сьогодні всім, проте люди не продовжували читати, щоб зрозуміти, чому він сказав, що це не повинно використовуватись у проекті програмного забезпечення. Якщо людина, яка вперше пише цю ідею, каже, що вона погана, і заявляє не тільки про те, чому, але як це зробити правильно, чому люди все-таки вирішать зав'язати її? Цікаво, чи це стосується перших програмних інженерів з математики та електротехніки. Чи працює цей підхід в ЕЕ?
Thomas Owens

1
Модель водоспаду не зовсім помилкова: вона правильно визначає загальні етапи розробки програмного проекту та впорядковує їх логічно. Що не вдається визнати, це той факт, що програмний проект може бути написаний ітераційно та модульно, і, таким чином, етапи описуваної моделі водоспаду можуть виконуватися в різних конфігураціях для окремих ітерацій та / або компонентів всієї системи.
tdammers

3
@Томас Оуенс: "Якщо людина, яка вперше пише цю ідею, каже, що це погано, і не тільки чому, але як це зробити правильно, чому люди все-таки вирішать зав'язати її?" Адам Сміт, батько сучасного капіталізму, написав свій маніфест про вільний і чистий ринок, але згодом у своїй книзі йде мова про те, наскільки небезпечною може бути концепція корпорацій та як вони підривають уряди впливати на ринки на свою користь. Зазвичай люди ігнорують частини концепції, яку вони або не розуміють, або йдуть проти своїх заздалегідь задуманих уявлень про те, що правильно.
maple_shaft

2
"Чому люди причепилися до першого водоспаду, я не знаю. Я думаю, їм подобається ризикувати і запрошувати невдачі". ІМХО - якраз навпаки. Люди взагалі люблять відчувати, що вони контролюють ситуацію, а діаграми процесу та розроблені методики надають їм почуття безпеки. Оскільки ці процеси та діаграми допомагали їм раніше у багатьох інших областях, вони припускають (помилково в цьому випадку), що це буде таким же чином і в розвитку SW ...
Péter Török

4

Автоматичне генерування коду з більш високого рівня абстракції або автоматичне програмування .

У статті Вікіпедії дещо бракує історичної інформації, але це мрія менеджерів з тих пір, як програмісти стали дорожчими за комп’ютери.

Після розробки мов вищого рівня, таких як Fortran та Cobol, прийшла розробка мов для спеціальних областей, таких як написання звітів. Easytrieve та SAS - це кілька прикладів.

Протягом 1980-х рр. Лють інструменти CASE . CASE розшифровується для комп'ютерної інженерії програмного забезпечення. Вважалося, що суворе застосування інженерних принципів прискорить розробку програмного забезпечення. Головною причиною цих інструментів, окрім витрат, був високий рівень стандартизації даних, необхідний для ефективної роботи інструментів.

Інтернет став відомим у 90-х роках. Типи програмування, які сприяв Інтернет, вибухнули. Програмісти повинні були обробляти ілюстрації, карти, фотографії та інші зображення, а також просту анімацію зі швидкістю, яку ніколи не бачили, за допомогою мало відомих методів. Кількість технологій виробництва цих об'єктів множилася. Мрії про автоматичне програмування згасали.

Аутсорсинг програмування на дешевіші місця - один з небагатьох методів, що залишилися для зниження витрат програміста. Проблеми з аутсорсингом включають проблеми зв'язку та специфікації.


1
Крім того, SQL та Visual Basic, обидва вони були рекламовані, щоб непрограмісти могли писати програми.
Шон Макміллан

2

Формальні методи

Колись було запропоновано, щоб програмне забезпечення могло бути доведено правильним. (Ідея полягає в тому, що тестування не може показати, що помилок немає, але докази зможуть.) На жаль, розробка доказу для програми має деякі основні недоліки:

  • Це складніше і забирає багато часу, ніж написання програми.
  • Він повинен охоплювати всю програму, тобто вам потрібні докази для будь-якої бібліотеки, ОС тощо.
  • Це не підтверджує відсутність помилок, оскільки ці помилки можуть бути викликані випадково.

Ця концепція була дуже популярною в 70-х роках.

Зв'язок: http://en.wikipedia.org/wiki/Formal_methods http://c2.com/cgi/wiki?ProofOfCorrectness http://c2.com/cgi/wiki?PractitionersRejectFormalMethods


3
Існує більше формальних методів, ніж просто доказ. Це варіюється від сильно математичних і теоретичних доказів використання, які ви згадуєте, до більш легких методів, які передбачають моделювання з використанням UML та OCL та створення формальної специфікації в Z. Так, введення будь-якого рівня формальних методів додає часу та витрат, але якщо ви будуєте програмне забезпечення, яке є в чомусь, що може вбивати або травмувати людей (починаючи від кардіостимулятора до літака до ракети), витрачаючи додатковий час і зусилля на те, щоб перевірити та перевірити, наскільки це можливо, може означати різницю між життям і смертю.
Томас Оуенс

@Thomas: Хороший момент. І формальні методи мають певне прийняття в проектах, де наступає смерть. Але вони, звичайно, не були срібною кулею для програмного забезпечення, що не потребує помилок.
Шон Макміллан

Абсолютно. Вони посідають своє місце в критичному для місії та життєво важливому програмному забезпеченні в різній мірі залежно від системи. Адже срібних куль немає.
Thomas Owens
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.