Zlaté kladivo
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 4. dubna 2022; kontroly vyžadují
4 úpravy .
Zlaté kladivo ( angl. Golden hammer ) je anti- vzor designu, který spočívá v použití všude stejného řešení, včetně umělého přizpůsobení podmínek, požadavků, omezení problému danému řešení [1] .
Také známý jako : Zákon nástroje , Maslowovo kladivo , kladívko . Může se objevit jak na manažerské úrovni [2] , tak na úrovni vývojářů [3] , podstata toho se nemění.
Podstata antivzorce
Zlaté kladivo - důvěra v naprostou univerzálnost jakéhokoli řešení a aplikaci tohoto řešení (například jednoho z návrhových vzorů v programování) na jakýkoli úkol. Sklon používat "zlaté kladivo" nezávisí na zkušenostech specialisty.
Faktory přispívající ke vzniku „zlatého kladiva“ [4] :
- vývojový tým má tendenci používat známé technologie;
- vývojový tým nezná jiné vývojové technologie;
- přechod na jinou technologii je spojen s určitým rizikem;
- známá technologie zjednodušuje plánování a hodnocení vývoje;
- politické důvody, zejména velké investice již zaměřené na propagaci produktu nebo technologie [3] ;
- důvěru ve vlastnosti vlastního produktu, které nejsou dostupné z jiných produktů v odvětví [3] .
Následky jsou:
- neoptimální řešení (i když to zvenku vypadá "hezky");
- zbytečné komplikace nebo nepřijatelné zjednodušení systému.
Známky a důsledky vzhledu zlatého kladiva [3] :
- identické nástroje a technologie se používají pro obrovské množství koncepčně různorodých produktů;
- řešení mají špatný výkon, škálovatelnost atd. ve srovnání s jinými řešeními v oboru;
- architekturu systému nejlépe popisuje konkrétní produkt, balíček aplikací nebo sada nástrojů dodavatele;
- Vývojáři při diskusích o požadavcích s analytiky a koncovými uživateli obhajují požadavky, které lze upravit pomocí určitých nástrojů nebo odstranit z oblastí, kde neplatí.
- vývojáři se izolují od průmyslu. Prokazují nedostatek znalostí a zkušeností s alternativními přístupy;
- existující produkty diktují design a architekturu systému;
- veškerý nový vývoj je do značné míry založen na produktu nebo technologii konkrétního dodavatele.
Příklad: Některé webové společnosti nadále používají a udržují vlastní cachovací systémy navzdory dostupnosti alternativ s otevřeným zdrojovým kódem [4] .
Způsoby, jak se vypořádat se zlatým kladivem
Způsoby, jak zabránit:
- Analýza dostupnosti alternativních řešení, hledání a porovnávání dalších způsobů řešení problému. Například vývojáři softwaru musí držet krok se současnými technologickými trendy. To platí jak přímo pro vývojáře softwaru, tak pro management. Dobrým způsobem, jak udržet výměnu znalostí o technických inovacích, je praxe pořádání diskusních setkání, kde se budou diskutovat nové technologie (vzory, vznikající standardy, nové produkty) [3] .
- Prototypování , porovnávání různých způsobů řešení daného problému, vytvářením prototypů.
Identifikační metody - chybějící soubor řešení pro různé úkoly manažera a výskyt obtíží při vzniku nových problémových situací svědčí o vzniku „zlatého kladívka“ na manažerské úrovni [5] . K identifikaci kladiva na vývojářské úrovni byste měli použít code review ( angl. Code review ) – sledování kódu v průběhu plnění úkolu a identifikace neoptimálních nebo často opakovaných řešení, analyzování a porovnávání jejich alternativ.
Opravné prostředky – refaktoring vám umožní optimalizovat kód výběrem vhodnějších řešení a opravou stávajících.
Historie termínu
První zmínka je z roku 1964 a patří Abrahamu Kaplanovi[6] :
Říkám tomu zákon nástroje): Dejte malému chlapci kladivo, a on zjistí, že všechno kolem něj prostě potřebuje trefit.
Původní text (anglicky)
[ zobrazitskrýt]
Říkám tomu zákon nástroje a dá se to formulovat takto: Dejte malému chlapci kladivo a zjistí, že všechno, s čím se setká, potřebuje bušit.
— Abraham Kaplan
Podobný koncept byl nazván „Maslowovo kladivo“ podle Abrahama Harolda Maslowa , který v roce 1966 napsal:
Myslím, že pokud je vaším jediným nástrojem kladivo, pak se chcete dívat na cokoliv jako hřebík [7] .
Původní text (anglicky)
[ zobrazitskrýt]
Předpokládám, že je lákavé, když jediným nástrojem, který máte, je kladivo, zacházet se vším, jako by to byl hřebík.
Anglický výraz „a birminghamský šroubovák“ odkazuje na zvyk používat jeden nástroj pro všechny účely a je starší než Kaplan a Maslow [8] . Pojetí je také přičítáno Marku Twainovi , ačkoli tam je žádné potvrzení v Twainově publikované práci [9] .
Pozoruhodné výjimky
Někdy funguje anti-vzor zlatého kladiva:
- pokud je produkt, který definuje architektonická omezení, zamýšleným strategickým rozhodnutím z dlouhodobého hlediska;
- pokud je produkt součástí balíčku dodavatele, pro většinu softwarových potřeb .
Vztah s jinými vzory a anti-vzory
- Silver Bullet ( anglicky SilverBullet ) je hypotetická univerzální metoda v technologii nebo technice řízení, která řádově zvyšuje výkon, spolehlivost a jednoduchost softwarového projektu [10] . Frederick Brooks ukázal, že neexistuje žádná stříbrná kulka : žádná technologická nebo organizační inovace nemůže zásadně snížit inherentní složitost projektu (tj. složitost způsobenou složitostí samotného úkolu a dalšími nevyhnutelnými faktory). „Stříbrná kulka“ a „zlaté kladivo“ způsobují škodu různými způsoby: pokud „kladivo“ vede k negativním důsledkům přímo, v důsledku vytěsnění úspěšnějších řešení, pak „kulka“ obvykle neřídí, ale nepřímé poškození tím, že hledá a snaží se uplatnit, v důsledku toho se vynakládá více zdrojů, než je možné ušetřit.
- Závislost na uzamčení dodavatele . Vývojáři aktivně hledají podporu dodavatele při používání zlatého kladiva. Celý projekt se při vývoji a implementaci produktu opírá o přístup jediného nástroje/poskytovatele technologie [11] .
Viz také
Poznámky
- ↑ Bulajic A., 2011 .
- ↑ Laplante, 2005 , str. 71-73.
- ↑ 1 2 3 4 5 Brown, 1998 , str. 62-63.
- ↑ 1 2 Freeman E., 2011 , str. 622-623.
- ↑ Laplante, 2005 , str. 73.
- ↑ Kaplan A., 1964 , pp. 28.
- ↑ Maslow AH, 1966 , pp. patnáct.
- ↑ Green J., 1985 .
- ↑ McQuade, 2006 .
- ↑ Brooks F., 1986 .
- ↑ Brown, 1998 , str. 64-65.
Literatura
- Miroshnichenko E. A. Programovací technologie . - Vydavatelství Tomské polytechnické univerzity, 2008.
- Bulajic A. Design Patterns Past and Future // Proceedings of Informing Science & IT Education Conference ( InSITE). — 2011.
- Smith CU, Williams LG Software Performance AntiPatterns // 2. mezinárodní seminář o softwaru a výkonu. — 2000.
- Maslow A.H. Psychologie vědy . - 1966. - ISBN 0-9760402-3-9 .
- Kaplan A. The Conduct of Inquiry: Methodology for Behavioral Science . - San Francisco: Chandler Publishing Co, 1964. - ISBN 0-7658-0448-4 .
- Zelená, Jonathone. Slovník slangu. - Cassell, 1998. - ISBN 978-0304344352 .
- McQuade TJ Poznání a ekonomika. - Emerald Group Publishing, 2006. - 77 s.
- Allen E. Typické chyby návrhu. - Nakladatelství "Peter", 2003. - 224 s. — ISBN 5-887827-304-6 .
- Brooks F. No Silver Bullet - Essence and Accidents of Software Engineering. . - TPU, 1986.
- Freeman E., Freeman Al. Designové vzory. - Petr, 2011. - 646 s.
- Hnědá WH, Malveau RC AntiPatterns. Refaktoring softwaru, architektur a projektů v krizi. . - Robert Ipsen, 1998. - 157 s. — ISBN 0-471-19713-0 .
- Laplante PA, Neill CJ Antipatterns: Identification, Refactoring and Management. . - Auerbach Publications, 2005. - 333 s. — ISBN 0-8493-2994-9 . (nedostupný odkaz)