Jeg er nødt til at starte design og udvikling af en ny ramme for at interagere med en open source ECM. Dette inkluderer en tilpasset datamodel til at hjælpe webstedsudviklere med at interagere med denne ECM, så de behøver ikke at bekymre sig om detaljerne i manipulation af noder og andre detaljer på lavt niveau. Det er bare en masse klasser og metoder til at udvikle.
Jeg er i tvivl om, hvordan man håndterer projektets organisering og styring: Er der nogle generelle regler at følge, tip, bedste praksis eller noget man skal huske på for at udvikle denne type projekt?
Jeg er sikker på, at der er en forskel mellem udviklingen af en ramme eller et bibliotek og en applikation.
Kommentarer
- Skal vi antage, at ECM betyder virksomhedsindholdsstyring [system]?
- Ja, jeg ‘ arbejder sammen med Alfresco
Svar
Først her er mine 2 regler for at undgå rammeaffaldssyndrom:
- Fraværet af en eksisterende, der dækker 80% af mine behov og kan udvides til at matche de sidste 20%
- Det nærmeste sikkerhed for, at jeg vil bruge det igen i et andet program
Når du har bestået dem, skal du tjekke dette:
- http://www.slideshare.net/brada/framework-design-guidelines-presentation
- http://www.informit.com/podcasts/episode.aspx?e=5a161893-c1ce-4449-8b67-31baa54ce316
- http://www.marlabsblogs.com/?tag=microsoft-framework-design-guidelines
Kommentarer
- Jeg tilføjer, at hvis du kan ‘ ikke finder en ramme, der opfylder din 80/20-regel, enten arbejder du i et ekstremt unikt domæne ELLER forstår du ikke ‘ dit domæne godt nok.
Svar
1) Funktioner skal kun føjes til en Framework, når de ekstraheres fra arbejdskoden. Med andre ord, før du tilføjer din seje nye idé til din seje nye ramme, skal du sørge for, at den faktisk tilføjer værdi til og reducerer gentagelse i en fungerende applikation i den virkelige verden.
2) Dokumentation, dokumentation, dokumentation.
3) Dokumentation, dokumentation, dokumentation.
Svar
Smertefuld oplevelse og meget spildt arbejde føre til dette råd: uddrag eller refaktor en ramme fra arbejdssoftware. Byg den software, og husk at du tror, du vil ønske at udtrække en ramme i fremtiden, men bygg ikke rammen først.
Svar
Jeg vil foreslå bogen Retningslinjer for rammedesign . Den er et par år gammel, men principperne forbliver sande. Det har masser af mønstre og forklarer ræsonnementet bag de beslutninger, du ”tager, når du bygger en ramme.
Svar
1) Hold dig til gode konventioner lige fra starten, sørg for at du har dokumenteret en meget specifik konvention, de bedste rammer er dem, der er internt konsistente.
2) Sørg for, at alt er meget dokumenteret, fra godt kode kommentarer hele vejen igennem for at forklare, hvad de vigtigste funktioner kræver og producerer, selvom det virker super simpelt for dig, kan du få nogen til at bruge det på den 14. lige time, og de bare har brug for den ene ting med det samme.
3) Lav en projekt brief til dig selv, med hvad du vil have rammen for at opnå, realistiske mål og overordnede prioriteter.
4) Hvis det vil være tilgængeligt for folk at bruge, skal du sørge for at du har en eller anden form for supportproces / bugsporing. Der vil være bugs, det sker for os alle, men hvis du kan styre dem fra starten, vil det gøre dit liv lettere.
Alt i alt en lignende tilgang til at opbygge enhver applikation, men udviklere er endnu mere besværlige end brugerne, og de bedste rammer er dem, vi kan hente, give mening, og vi behøver ikke at kæmpe.
Svar
Jeg er uenig i meget af det, der er blevet sagt, og jeg føler, at mere er blevet nævnt, så jeg begynder fra bunden.
Agile metoder
Vedtag smidige metoder under din rammeudvikling, så du kan tilpasse dig ændringer, reagere hurtigt på vejspærringer og sikre et funktionelt kvalitets slutprodukt. Agile metoder er dem, der ifølge “Agile Manifesto” prioriterer:
Individer og interaktioner over processer og værktøjer
Arbejdssoftware over omfattende dokumentation
Kundesamarbejde over kontraktforhandlinger
Svar på ændring over efter plan
Det er rigtigt. Jeg sagde, at funktionalitet er vigtigere end dokumentation. Bemærk, at “Agile Manifesto” nævner, at de højre prioriteter stadig er vigtige, bare mindre end dem til venstre.
Kommunikation
Den, der laver rammen, skal vide:
- Sådan bruges den: målapplikation
- Hvilket problem det er beregnet til at løse: målproblemet
- Hvem skal bruge det: målgruppen
For eksempel, hvis en virksomhed havde til hensigt at udvikle en endelig applikation med ASP .NET, ville det være dumt at fortælle sine programmerere “lav denne ramme” uden at fortælle dem ovenstående. Hvis programmørerne ikke kendte målapplikationen, gjorde de det muligvis ikke weborienteret. Hvis de ikke kendte problemet, kunne de muligvis skabe en ramme til et andet formål. Hvis de ikke kendte publikum, kunne de programmere rammen i C ++. Enhver af disse omstændigheder ville gøre den resulterende ramme ubrugelig.
Style
Det er overflødigt at sige, etablere en programmeringsstil / format og hold fast ved det.
E “s
- Modularitet : Genbrug kode programmatisk, ikke bogstaveligt.
- Effektivitet : Din kode er beregnet til genbrug . Eventuelle skader på hastighed bliver ganget.
- Vedligeholdelsesevne : Du vil være i stand til at redigere rammen til opdater flere programmer uden at skulle ændre de nævnte programmer.
- Brugbarhed : Kan applikationer faktisk bruge din ramme uden at hoppe gennem bøjler?
- Praktikitet : Må ikke genopfinde hjulet, hvis du ikke har for at gøre det. Din ramme kan afhænge af andre rammer.
- Redundans : Fang undtagelser / fejl. Overalt. Håndter dem. Overalt. Stol aldrig på nogen kode, men den i det lokale omfang til at håndtere fejl, selvom du ved, at den gør det.
Kommentarer
- Velkommen til P.SE! Jeg ‘ jeg er ikke enig med w / # 6 i at fange undtagelser inden for dine rammer. Jeg ‘ er stor tro på, at rammen skal være en absolut klods og kaste undtagelser og lade det være op til programmøren, der bruger rammen til at fange dem eller (bedre endnu) omlægge deres kode så for at undgå undtagelsen – tilskyndelse til konventionens overensstemmelse.
Svar
Jeg er sikker på, at der er en forskel mellem udviklingen af en ramme eller et bibliotek og en applikation.
Udviklingsprocesser er stort set de samme. forskelle kan komme ned til marketing- og implementeringsproblemer, selvom jeg finder ud af, at de største forskelle normalt er med hensyn til projektomfang og definition. Husk, at en applikation kan omfatte eller bruge en ramme eller et bibliotek, en ramme kan være en samling biblioteker.
Jeg er i tvivl om, hvordan man håndterer organisationen og ledelsen af dette projekt: Er der nogle generelle regler, der skal llow, tip, bedste praksis eller noget at huske på for at udvikle denne type projekt?
Projektorganisation og ledelse er igen de samme for ethvert udviklingsprojekt . Igen kommer det ned på omfanget. Når det kommer til at skrive en ramme, betaler det sig dog at have en meget klar vision om, hvad det er, du prøver at opnå, og at placere strenge designregler på den offentlige grænseflade til rammen for at sikre konsistens med hensyn til APIets præsentation. Hvis du tillader enhver udvikler at gøre deres egne ting, ender du med et kompliceret rod og et meget uelegant API-design.
Jeg kommer igen til Ryan Hayes “ anbefaling om at læse Retningslinjer for rammedesign selvom selve bogen er rettet mod at udvikle .NET-baserede rammer, fordi den generelle rådgivning gælder uanset de specifikke implementeringsteknologier, som du måske vælger at bruge.
Fra erfaring vil jeg anbefale at holde sig til det klassiske YAGNI-princip ved først at implementere de mest forenklede offentlige grænseflader og derefter udvide for at give større kontrol og dybde senere, men pas på at bruge nyttige navne til at vise, hvorfor metoder eller klasser udvides. Jeg har aldrig været fan af at tilføje “Ex” eller andre lignende suffikser til metodenavne eller tilføje tal til udvidede interface-definitioner. Differentier på funktionalitet, og dit interface / metodenavne skulle blive klarere og forhåbentlig mindre tilsløret og forvirrende.