Abstract-Rule-baserade metoder har traditionellt använts för att utveckla kunskapsbaserade system som replikerar expertprestanda på en djup men smal problematik. Kunskapsingenjörer fångar expertkunskap och kodar den som en uppsättning regler för att automatisera expertens resonemangsprocess för att lösa problem inom en mängd olika områden. Vi beskriver utvecklingen av ett kunskapsbaserat system för att förbättra programförståelsen av programvaran Service Oriented Architecture (SOA). Vårt tillvägagångssätt använder regelbaserade metoder för att automatisera analysen av uppsättningen artefakter som är involverade i att bygga och distribuera en SOA-kompositapplikation. Reglerna kodifierar expertkunskap till abstrakt information från dessa artefakter för att underlätta programförståelse och därmed hjälpa programvaruingenjörer när de utför systemunderhåll. En viktig fördel med det kunskapsbaserade tillvägagångssättet är dess anpassningsförmåga till den heterogena och dynamiska utvecklingen av SOA-miljöer. Nyckelordsexpertis; regelbaserat system; kunskapsbaserat system; serviceorienterad arkitektur; SOA; programvaruunderhåll; sökverktyg. Regelbaserade metoder har varit mycket effektiva när det gäller att stödja beslutsfattandet på många komplexa områden. Kan de också hjälpa programvaruingenjörer att hantera de framväxande komplexiteterna i applikationerna för tjänsteorienterad arkitektur (SOA)? SOA är inte en enda programvaruarkitektur, utan snarare en stil för att bygga komplexa system, särskilt de som behöver korsa organisatoriska gränser. SOA-system, ofta kallade sammansatta applikationer, liknar typiskt bild. 1................................................................ En organisation, vare sig den är statlig, ideell eller privat, finner att den behöver arbeta med andra organisationer för att utföra viktiga arbetsflöden. Till exempel att uppfylla en inköpsorder kräver att få aktier från ett partnerföretag, planering personal resor innebär bokningar på flera flygbolag, eller att ge en läkare med en patients medicinska historia innebär att samla in information från många medicinska registersystem. Som visas i bild. 1, i en SOA arkitektur programvara för att stödja dessa arbetsflöden organiseras som tjänster som har definierat gränssnitt, körs på olika noder och kommunicerar via meddelande passerar. Vissa av dessa tjänster kommer att ägas och förvaltas av hemorganisationen men andra kommer att tillhöra partners eller erbjudas av kommersiella leverantörer. Oftast används Web Services-gruppen av standarder för att definiera gränssnitten och protokollen för tjänsten [1]. I teorin stöds dessa standarder av en bred grupp leverantörer så att tjänster kan samverka mellan många olika programmeringsspråk, operativsystem och datadefinitionsscheman. Standarderna har dock visat sig vara både mycket komplexa och mycket lösa, vilket leder olika implementatörer att skapa tjänster och gränssnitt med mycket olika stilar. SOA:s sammansatta tillämpningar började dyka upp i början av det tjugoförsta århundradet och är nu mycket utbredda. De har ställts inför många tekniska och administrativa svårigheter, men kanske ingen kommer att vara svårare än utmaningen med programvaruunderhåll när dessa system börjar åldras. Traditionellt har underhåll av stora program varit särskilt dyrt och långsamt eftersom typiskt: a) Det finns en stor kodbas av befintliga, äldre programvara. -Volym. -Volym. 2, nr 3, 2013 45 P a g e www.ijarai.thesai.org SOA Software Engineers kommer därför att behöva svara på ständiga och ofta oförutsägbara förändringar som de upprätthåller stora heterogena program som uppvisar en förvirrande variation av programmeringsstilar. Forskningen undersöker hur kunskapsbaserade metoder kan bidra till att ge nödvändig expertis för att hjälpa SOA-system att utvecklas till rimliga kostnader. I detta dokument beskriver vi ett kunskapsbaserat förhållningssätt till detta problem, där ett regelbaserat system används för att förbättra söktekniker så att en programvaruingenjör snabbare kan förstå en given sammansatt applikation. Det regelbaserade systemet genererar abstraktioner, småbitar av information som sammanfattar komplexa applikationsrelationer för att ge sammanhang snabbt. Den regelbaserade metodens främsta fördel är anpassningsförmåga; olika tillämpningsstilar och föränderliga miljöer kan hanteras genom relativt enkla ändringar av reglerna. På så sätt kan en regeluppsättning utvecklas dynamiskt i takt med att den sammansatta applikationen utvecklas för att möta förändrade behov. I nästa avsnitt går artikeln igenom arbetet följt av en presentation av ett illustrativt exempel för att motivera behovet av SOA abstraktioner. Därefter beskrivs de designprinciper som är lämpliga för sökning i ett SOA-sammanhang, diskuterar det kunskapsbaserade synsättet på SOA-abstraction och presenterar resultaten av en fallstudie. Artikeln avslutas med en sammanfattning av viktiga bidrag och förslag till framtida arbete. Även om det finns lite litteratur om användningen av regelbaserade system för underhåll av SOA-system, har regelbaserade system tillämpats mer allmänt på programvaruförståelse. Canfora och Di Penta [4] beskriver två verktyg, Design Maintenance System [9] och TXL [10] som tolkar källkod och genom regelbaserade transformationer producerar artefakter som underlättar programmets förståelse. Braun [11] beskriver ett serverbaserat analyssystem baserat på regler som är utformade för att spela en roll i konfigurationshanteringen av programvara. Tanken är att utcheckade versioner kan utsättas för regelbaserade kontroller av olika attribut innan de är engagerade i ett versionskontrollsystem. Regelbaserad informationsextrahering i likhet med idén om att sammanfatta programvaruabstractioner i det nuvarande arbetet verkar vara ett område av allt större intresse. Zaghouani [12] beskriver ett system för namngiven enhet extraktion från text i naturligt språk bearbetning. Wang [13] beskriver namngiven enhetsextrahering med regler och en maskininlärningsmetod med hjälp av "villkorade slumpmässiga fält". Michelakis m.fl. [14] beskriver regelbaserad informationsextrahering där strukturerade objekt extraheras ur text, baserat på användardefinierade regler. Forskningen om verktyg för att stödja underhåll av SOA-system har varit ganska begränsad. De flesta förslagen innebär en dynamisk analys, vanligtvis av ett spår från ett fungerande system. En grupp från IBM har beskrivit ett verktyg som kallas Web Services Navigator som använder dynamisk analys för att ge fem olika vyer av ett fungerande system [15]. Två dokument beskriver sätt att lokalisera användarfunktioner i ett SOA-system. En metod producerar ett sekvensdiagram som visar funktionen [16] medan den andra gör en analys av dynamiska anropsträd [17]. Halle och Al. har ett något annorlunda tillvägagångssätt som utgår från ett hypotetiskt serviceavtal och automatiskt skickar en serie rättegångar för att se om tjänsten verkligen överensstämmer med hypotesen [18]. Dynamisk analys är en kraftfull metod för att förstå ett system; den största svårigheten är att det ofta är opraktiskt att samla in nödvändiga data från ett stort system som körs över flera noder. Denna förordning träder i kraft den tjugonde dagen efter det att den har offentliggjorts i Europeiska unionens officiella tidning. SOA UNDERHÅLL UTMANINGAR: ETT ILLUSTRATIVT EXEMPEL För att illustrera problemet med att förstå SOA, överväga ett exempel från WebAutoParts.com, en av de sammansatta applikationerna i vår öppna SOALAB insamling av resurser för SOA undervisning och forskning [19]. WebAutoParts.com (Fig. 2) är en hypotetisk leverantör av bildelar online som använder externa tjänster för att underlätta en smidig utveckling. Som är sant för många SOA sammansatta program som är baserade på Web Services standarder, de viktigaste artefakter som beskriver WebAutoParts är BPEL programkod, WSDL gränssnittsbeskrivningar och XSD data typ definitioner. -Volym. -Volym. 2, nr 3, 2013 46 P a g e www.ijarai.thesai.org BPEL, Business Process Execution Language, är ett XML formaterat språk som beskriver hur tjänster iscensätts tillsammans för att utföra ett komplett arbetsflöde [20]. Varje BPEL-program i sig blir en tjänst när det tolkas på en applikationsserver. WSDL står för Web Services Beskrivning Språk [21]. WSDL-filer, som återigen har ett XML-format, beskriver det gränssnitt som en tjänst presenterar för sina kunder. XML-schemabeskrivningar (XSD) är ett XML-språk som används för att beskriva datatyperna för meddelandedata som skickas mellan tjänster [22]. Beskrivningarna av datatyp för en viss tjänst kan antingen ingå i avsnittet < types> i tjänstens WSDL-fil eller ingå i en extern XSD-fil. WebAutoParts har ett arbetsflöde för orderhantering som visas i bild. 2............................................................... Det finns två "stubbed" interna tjänster skrivna i BPEL (Order Processing and Inventory Repository) och fyra externa tjänster från tre välkända leverantörer:  på Amazon Web Services -Amazon Simple DB (databas) och Message Quue (meddelande queuing)  på StrikeIron.com -Skattdata Basic (försäljning skattesats)  på Ecocoma -USPS (fraktkostnader) I detta arbetsflöde, en inkommande order kontrolleras först mot lager för att bekräfta att det kan behandlas. Då beräknas omsättningsskatten på grundval av reglerna i den stat där kunden är bosatt. Fraktkostnader beräknas sedan och läggs till och slutligen läggs ordern till i en meddelandekö som ska plockas upp av orderuppfyllelsetjänsten. Medan programmet WebAutoParts faktiskt inte kör, består det av syntaktiskt korrekt BPEL-kod som distribuerar framgångsrikt till Ode BPEL-miljön tillsammans med XSD- och WSDL-dokument typiska för nuvarande industriella praxis. Antag att en Software Engineer obekant med detta program försöker genomföra en ändring i databasen design och behöver veta vilka data som skickas när Order Processing kontrollerar lagernivåer. Om han har omfattande BPEL / Web Services erfarenhet han kan räkna ut detta med hjälp av en serie sökningar (Fig. 3)............................................................... I dessa sökningar måste han matcha namnen som visas i olika XML-element och navigera upp och ner i inneslutningshierarkin för dessa element: Även för en Software Engineer som är expert på Web Services, att spåra sådana kedjor av relationer kräver en tråkig och felbenägen sekvens av sökningar. Dessutom innebär heterogeniteten hos SOA-tjänster att expertisen inte kan generaliseras väl från en sammansatt tillämpning till en annan. Varje sådan tillämpning kan använda olika kombinationer av tekniker och tillämpa dem på olika sätt. Det finns till exempel många textmässigt olika sätt att beskriva i huvudsak samma meddelandedata med hjälp av WSDL:er och XSD:er. Vad värre är, Web Services standarder utvecklas själva så det är troligt att en utvecklare kommer att stöta på fältbaserade system baserade på olika versioner. Slutligen, eftersom WSDLs, XSDs och konfigurationsfiler som beskriver en sammansatt applikation ofta är maskingenererade, innehåller de "clichés" eller mönster som är speciella för en viss utvecklingsmiljö. Till exempel, en XSD som genereras av Microsofts WCF-ramverk innehåller fem-tag sekvenser av XML för att helt enkelt deklarera en ogiltig returtyp för en operation [23]. Det finns mycket information i artefakterna som beskriver en SOA-kompositapplikation. Experter med lång tillämpningsspecifik erfarenhet kan kunna navigera dessa artefakter, men sådana experter kommer att vara knappa. Fokus för denna forskning är därför att utveckla ett regelbaserat system som efterliknar expertresonemang på SOA artefakter för att ge användbar information för ett bredare spektrum av programvarutekniker som saknar specifik kunskap om hantering av artefakter. Intelligenta sökverktyg kan hjälpa användare att hitta den typ av information i SOA-kompositer som ansvariga kan behöva. Sökverktyg baserade på textmatchning kan användas på en mängd olika dokumenttyper vilket gör dem till en bra passform för den heterogena världen av SOA-kompositapplikationer. Vår grupp har forskat kring tillämpningen av intelligent sökning efter SOA underhåll med hjälp av SOAMiner, en prototyp SOA-specifik sökmotor. Fallstudier med olika grupper av akademiska och verkliga programmerare har undersökt "vad SOA-ansvariga kommer att vilja veta" [23] [24]. Resultaten av dessa studier har visat att deltagarna fann det enkelt och naturligt att söka en stor corpus av artefakter från en SOA komposit ansökan. De hittade snabbt relevanta snippets av information, såsom alla XML-taggar som innehåller ett nyckelord som "inventering". Men sök Vol. 2, nr 3, 2013 47  till P a g e www.ijarai.thesai.org identifierade varje sippett isolerat och visade inte sitt sammanhang i ansökan som helhet. I vissa fall var det tillräckligt att helt enkelt visa mer av den omgivande texten, men det är tydligt att för andra problem en Software Engineer skulle behöva göra en tråkig sekvens av sökningar som de i exemplet ges tidigare. Vi drar slutsatsen att sökningen för SOA måste förbättras med en abstraktionsprocess. Till exempel bör en sökning ta användaren till relevanta fragment av en BPEL, WSDL eller XSD, och sedan ge en högre nivå abstraktion som visar hur det fragmentet passar in i en bredare verklighet. En svårighet är naturligtvis att de relevanta abstraktionerna i SOA:s öppna miljö kommer att variera från system till system och över tid i takt med att standarder, praxis och verktyg förändras. Därför behöver vi en adaptiv och dynamisk abstraktionsmekanism för att komplettera SOA-sökningen. Ett idealiskt verktyg skulle indexera insamlingen av artefakter från en sammansatt ansökan och: 3) Tillåt definitionen av ytterligare abstraktioner så att fler och fler sökningar kan flyttas in i den första kategorin. Ett sådant verktyg bör vara flexibelt för att anpassa sig till ett brett spektrum av SOA-artefakter från olika miljöer och möjliggöra införandet av nya abstraktioner när de upptäcks. Kunskap spelar en viktig roll för att uppnå intelligent beteende. Kunskapsbaserade system fångar mänsklig kunskap, representerar den i maskinläsbar form och underlättar resonemang med den för att lösa problem. Följande beskriver vår strategi för att fånga mänsklig expertis i SOA-kodanalys och att använda den expertisen för att analysera SOA-artefakter och ge intelligent sökstöd. Regelbaserade system har traditionellt använts för att fånga mänsklig expertis som en uppsättning regler för att dra slutsatser från kedjor av regler som tillämpas på ursprungliga fakta som lagras i ett arbetsminne. När reglerna verkställs skapas nya fakta och läggs till i arbetsminnet vilket gör att andra regler kan verkställas. Så småningom har reglerna fullständigt förändrat fakta i minnet och ingen regel kan verkställa. Arbetsminnet innehåller de slutsatser som härleddes från reglerna. Denna flexibla kontroll, som är inbyggd i regelbaserade system, skiljer sig från de fördefinierade kontrollstrukturer som finns i program med traditionella programmeringsspråk. Regler kan lätt ändras eller utvidgas för att anpassa det regelbaserade systemets prestanda. Därför är regelbaserade system en idealisk metod för att hantera den heterogena karaktären hos SOA-tillämpningar och deras föränderliga artefakter, för att identifiera och extrahera abstraktioner automatiskt och göra dem tillgängliga för inspektion. Genom experiment och fallstudier med domänexperter skapar vi en uppsättning regler som identifierar abstraktioner inom SOA artefakter, och extrahera och omvandla dessa abstraktioner till maskinläsbara representationer. I huvudsak fångar reglerna en experts kunskaper och färdigheter för att identifiera användbara utdrag av information som är relevant för underhåll av programvara och resonemanget motorn automatiserar processen för expertens analys av SOA artefakter genom att utföra kedjor av regler på artefakter när de är engagerade i motorns arbetsminne. Bilda. 4 visar systemarkitekturen för det kunskapsbaserade sökverktyget. Verktyget består av en XML-annoterare, en sökindexerare och en resonemangsmotor. Det behandlar XML-filer eftersom många SOA artefakter har XML-struktur (WSDL, XSD, BPEL och många konfigurationsfiler). Som ett första steg antecknar verktyget varje element i de ingående XML-filerna med en unik identifierare så att det kan refereras i resonemangsmotorn och under sökningar. Efter kommentaren laddas filerna både i sökindexeraren och resonemangsmotorn. Denna motor kör det DROOLS Expert-regelbaserade systemet för att identifiera och konstruera uttag från inmatningskällorna [25]. Motorn utför regler om XML-element i de importerade filerna för att identifiera abstraktioner som finns inom artefakterna och bygga dem i arbetsminnet. Eftersom abstraktioner är engagerade i arbetsminnet som tillfälliga resultat kan reglerna senare upptäcka nya abstraktioner och relationer mellan dem. Slutligen efter att alla regler har avfyrats, är arbetsminne frågas om att lagra abstraktioner i filer som sedan kan visas som svar på sökningar till stöd för underhållsuppgifter. Varje abstraktion är formaterad som en XML-slipett som innehåller komponenter och relationer från SOA artefakter för att modellera abstraktionen. Den slutliga utgången är i form av tre XML-filer, en som innehåller uppsättningen abstraktioner, en annan innehåller korsreferenser när en abstraktion hänvisar till en annan, och en tredje beskriver sökindex för Apache Solr sökplattform [26]. Vår fallstudie producerade tre typer av abstraktioner för att stödja underhållsverksamhet: A) sammanfattningar av datatyp, B) tjänster och C) BPEL åberopa relationer. Baserat på dessa resultat, analyserade vi artefakter från WebAutoParts SOA sammansatta ansökan för att leta efter abstraktioner och för att identifiera den information som behövs för att producera dem. Från denna information byggdes regler och representationer som matchar XML-element i SOA-artefakterna och omvandlar dem till nya representationer för att beskriva de olika abstraktionerna.
Men viss forskning har tittat på statisk analys av artefakter som beskriver tjänster, såsom WSDL gränssnittsbeskrivningar och XSD data scheman REF.
A Knowledge-Based System Approach for Extracting Abstractions from Service Oriented Architecture Artifacts
{'venue': None, 'journal': 'International Journal of Advanced Research in Artificial Intelligence', 'mag_field_of_study': ['Computer Science']}