Feature creep
Feature creep er den løbende udvidelse eller tilføjelse af nye features i et produkt,[1] især inden for Computerprogrammer, videospil og forbruger- og erhvervselektronik. Disse ekstra funktioner går ud over produktets grundlæggende funktion og kan resultere i software bloat og over-komplikation, i stedet for et simpelt design.
Definitionen af, hvad der kvalificerer sig som "feature creep" varierer blandt slutbrugere, hvor det, som nogle brugere opfatter som sådan, kan betragtes som praktisk funktionalitet af andre.[2] Feature creep er en af de mest almindelige kilder til omkostnings- og tidsplanoverskridelser.[3]
Årsager
[redigér | rediger kildetekst]Feature creep kan opstå fra ønsket om at give forbrugeren et mere nyttigt eller ønskværdigt produkt for at øge salg eller distribution. Når et produkt gør alt det, det er designet til, kan producenten tilføje funktioner, som nogle brugere måske anser for unødvendige (nogle gange på bekostning af effektiviteten) eller fortsætte med den originale version (på bekostning af en opfattet mangel på forbedring).
Feature creep kan også opstå som et resultat af kompromis fra en komité, der implementerer flere forskellige synspunkter eller use cases i det samme produkt, selv af opportunistiske årsager.[4] Efterhånden som flere funktioner bliver tilføjet for at understøtte hver tilgang, kan tværkonverteringsfunktioner mellem de flere paradigmer yderligere komplicere det totale antal funktioner.
Kontrol
[redigér | rediger kildetekst]Der er flere metoder til at kontrollere feature creep, herunder: strenge grænser for tilladte funktioner, flere variationer og beskæring af overflødige funktioner.
Separation
[redigér | rediger kildetekst]Senere feature creep kan undgås ved at basere det indledende design på stærke softwaregrundlag, såsom logisk adskillelse af funktionalitet og dataadgang, f.eks. ved brug af undermenuer, der valgfrit er tilgængelige for power users, der ønsker mere funktionalitet og en højere mængde af information. Det kan aktivt kontrolleres med streng change management og ved at udskyde ændringer til senere leveringsfaser af et projekt.[5]
Varianter og muligheder
[redigér | rediger kildetekst]En anden metode til at kontrollere feature creep er at opretholde flere varianter af produkter, hvor funktioner er begrænsede og reducerede i de mere basale varianter, f.eks. Microsoft Windows udgaver. For software brugergrænseflader kan visningstilstande eller driftstilstande bruges (f.eks. basis tilstand eller ekspert tilstand), imellem hvilke brugerne kan vælge for at matche deres egne behov.
Både i mange brugergrænseflader og kommandolinjegrænseflader, kan brugere selv vælge en højere detaljeringsgrad. I det sidste tilfælde, i mange kommandolinjeprogrammer, tilføjer man manuelt en -v
eller --verbose
option, som viser mere detaljeret information, der kan være mindre relevant for minimale brugere, men nyttige for power brugere eller til fejlfinding og problemløsning.
Fordi den stadigt voksende tilføjelse af nye funktioner kan overstige tilgængelige ressourcer, kan en minimal kerne "basic" version af et produkt opretholdes særskilt for at sikre drift i mindre driftsmiljøer. Ved at bruge "80/20-reglen" kan de mere basale produktvarianter måske opfylde behovene for flertallet (f.eks. ~80%) af brugerne, så de ikke vil være udsat for kompleksiteten (eller ekstra udgiften) af funktioner anmodet af de avancerede 20% af brugerne. De ekstra funktioner er stadig tilgængelige, men valgfri og klar til at blive brugt af dem, som anmoder om dem, men de er ikke implementeret i de basale versioner af produkterne.
Modularitet
[redigér | rediger kildetekst]En anden løsning på feature creep er modularitet. Power brugere, der kræver mere funktionalitet, kan selv tilføje nødvendige funktioner ved at downloade softwaremoduler, plug-ins, add-ons (også kendt som add-ins) og brugerdefinerede temaer for at matche deres personlige krav.
Beskæring
[redigér | rediger kildetekst]På et tidspunkt kan omkostningerne ved at vedligeholde en bestemt delmængde af funktioner blive forhindrende, og beskæring kan anvendes. En ny produktversion kan udelade de ekstra funktioner, eller måske en overgangsperiode ville blive brugt, hvor gamle funktioner blev deprecated før eventuel fjernelse fra systemet. Hvis der er flere varianter af produkter, så kan nogle af dem blive udfaset. Et større eksempel er Samsung Galaxy S6, udgivet marts 2015, hvor betydeligt mange software/menufunktioner og også nogle hardwarefunktioner blev beskåret. En “mere funktionel” variation af den er ikke blevet udgivet.[kilde mangler]
Konsekvenser
[redigér | rediger kildetekst]Udvidelse af omfang
[redigér | rediger kildetekst]Lejlighedsvis kan ukontrolleret feature creep føre til produkter, der overstiger omfanget af, hvad der oprindeligt var tiltænkt; dette er kendt som scope creep. En konsekvens af feature creep er forsinkelse eller annullering af et produkt, som kan blive dyrere end oprindeligt tænkt.[kilde mangler]
Forsinkelser
[redigér | rediger kildetekst]Ofte kan et rimeligt feature-komplet softwareprojekt, eller et med moderate mængder af feature creep, overleve og endda klare sig gennem mange iterationer, men dens efterfølgerudgivelse kan lider af betydelige forsinkelser, når der tages en beslutning om at omskrive hele kodebasen ud over at indføre nye teknologier. For eksempel var Microsofts Windows Vista planlagt til at være en mindre ombud mellem Windows XP og dens efterfølger med kodenavn Windows "Blackcomb" (udgivet som Windows 7), men efter at have tilpasset flere og flere funktioner fra Blackcomb (mange af hvilke blev til sidst annulleret), blev Vista en større ombud, som tog fem år at udvikle.
En lignende skæbne blev lidt af Netscape 6, som oprindeligt skulle have været Netscape 5. Netscapes beslutning fra 1998 om at open-source dens Netscape Navigator browser og Communicator Internet suite (begge med kodenavn Mozilla) gjorde det hurtigt klart, at det underliggende kode var for svært og krævede en komplet omskrivning af Mozilla, hvilket ansporede oprettelsen af Mozilla applikationsframeworket. Dette forårsagede betydelige forsinkelser, Netscape 5 blev sprunget over, og firmaet blev købt af AOL. Efterfølgende udgivelse af Netscape 6.00 i år 2000 blev bredt kritiseret som alpha-niveau kode, og projektet opnåede stabilitet ved Netscape 6.1 i 2001, tre år efter beslutningen om at omprioritere Internet-suiten. Inden da havde Microsofts Internet Explorer browser længe overhalet Netscape i brugsandel, som var faldet til etcifret tal.
Selv efter at have opnået stabilitet og tilegnet sig nogle nødvendige nye funktioner, blev den open-source Mozilla Applikations Suite (dengang kun kaldet Mozilla), som AOL byggede Netscape på, betragtet som "oppustet". Bare et år senere besluttede en gruppe af Mozilla-udviklere at adskille browserkomponenten, som til sidst blev Firefox.
Se også
[redigér | rediger kildetekst]Wikiquote har citater relateret til: |
Referencer
[redigér | rediger kildetekst]- ^
J.M. Sullivan (8-10 juni 2005). "Impediments to and incentives for automation in the Air Force". Proceedings. 2005 International Symposium on Technology and Society, 2005. Weapons and Wires: Prevention and Safety in a Time of Fear. ISTAS 2005. s. 101-110. doi:10.1109/ISTAS.2005.1452719. ISBN 0-7803-9284-1. S2CID 21079766.
{{cite book}}
: CS1-vedligeholdelse: Dato-format (link) - ^ Featuritis (or creeping featurism) (engelsk). januar 2024.
- ^ Davis, F.D. (februar 2004), "Toward preprototype user acceptance testing of new information systems: implications for software project management", IEEE Transactions on Engineering Management, 51, 51 (1): 31-46
- ^ Krystallis, Ilias; Locatelli, Giorgio (1. september 2022). "Normalizing White-Collar Wrongdoing in Professional Service Firms". Journal of Management in Engineering (engelsk). 38 (5): 04022049.
- ^ Kenneth S. Norton (2001), Applying Cross-Functional Evolutionary Methodologies to Web Development, paper in Web Engineering: Managing Diversity and Complexity of Web published by Springer, ISBN 3-540-42130-0