930 resultados para object-oriented software framework
Resumo:
Ohjelmistotestaus on suuri ja kasvava kustannuserä ohjelmistotuotannossa. Kirjallisuudessa mainittu ohjelmistotestauksen kustannusten osuus on noin 50% ohjelmistokehityshankkeiden budjetista. Tutkimusprojektin tarkoituksena on selvittää, kuinka ohjelmistotestauksen kustannusten kasvu saataisiin pysähtymään tai laskemaan laatua menettämättä. Tässä työssä keskitytään laadullisen analyysin kautta selvittämään ja ymmärtämään tietämyksen välittämistä ohjelmistotestausorganisaatiossa. Tutkimusmateriaali on kerätty haastattelemalla26 organisaatioyksikön edustajia. Näiden organisaatioyksiköiden joukosta on edelleen valittu viisi organisaatioyksikköä lähempään tarkasteluun. Työssä havaittiin muun muassa, että tuotesuuntautuneessa ohjelmistokehityksessä tietämystä on vaivattomampi kodifioida. Esimerkiksi testitapausten määrittäminen ennakkoon on tällöin helpompaa. Kodifiointi mahdollistaa myös testauksen laajamittaisen ulkoistamisen, sillä kodifioitua tietämystä on helpompi välittää. Räätälöityjen järjestelmien testaamisessa tarvittava tietämys vaikuttaa olevan suurelta osin hiljaista, esimerkiksi sovellusalueosaaminen painottuu enemmän.
Resumo:
Työssä käsitellään selainkäyttöliittymää käyttävien oliopohjaisten tietokantasovellusten toteuttamista. Erityisesti keskitytään olio- ja relaatiomallien yhteensovittamiseen ja oliopohjaisten selainkäyttöliittymien toteutukseen Java-servlettien ja JSP-sivujen avulla. Myös hajautetut sovellusarkkitehtuurit käydään läpi ja niiden toteuttamista arvioidaan servlet-sovellusten näkökulmasta. Työssä on toteutettu selainkäyttöliittymän avulla hallittava kaksitasoarkkitehtuuria käyttävä oliopohjainen sovellus Ilmatieteen laitoksen tuotantojärjestelmän seurantaan. Sovellus mahdollistaa mm. tuotantoajojen ja laajempien tuotantoketjujen suoritusaikojen tilastollisen seurannan. Työn tuloksena todettiin Java-servlettien ja JSP-sivujen olevan suorituskykyinen ja monipuolinen ratkaisu selainkäyttöliittymien toteuttamiseen. Olio- ja relaatiomallien väliset erot sekä käyttöliittymän eriyttäminen toimintalogiikasta osoittautuivat ongelmakohdiksi.
Resumo:
Empower Oy on energia-alan palveluja tarjoava yritys. Energianhallintajärjestelmää käytetään energiatietojen hallintaan ja ylläpitoon sekä tietojen esittämiseen loppukäyttäjille. Palvelun näytöt ja raportit on toteutettu web-pohjaisen käyttöliittymän kautta. Yhtiössä käynnistyi suurprojekti vanhan energianhallintajärjestelmän korvaamiseksi. Vanha järjestelmä otettiin käyttöön vuonna 1995 ja EMS-projekti käynnistettiin vuonna 2001. Diplomityö tehtiin osana EMS-projektia ja työn tavoitteina oli selvittää perusjärjestelmän käyttämän tietokantaratkaisun toimivuutta ja soveltuvuutta tehtävään sekä tutkailla eri tietokantamalleja teoreettisesti. Lisäksi työhön kuului erillisten haku- ja muutoskomponenttien ja rajapintojen toteuttaminen. Näiden avulla voidaan hakea ja muuttaa tietoa perusjärjestelmän pohjalla toimivasta oliorelaatiotietokannasta. Perusjärjestelmän DOR-tietokannaksi (Domain Object Repository) kutsuttu kokonaisuus on olioläheinen tietovarasto, josta tietoa haetaan ilmoittamalla haettavan olion tyyppi ja siihen liitoksissa olevat tyypit. Hakutulokseen mukaan haluttavat ominaisuudet ilmoitetaan kultakin tyypiltä erikseen. Haettaessa ja muutettaessa oliopohjaista DOR-tietoa, tulee noudattaa järjestelmän käyttämiä tietomalleja. Haku- ja muutoskomponentit toteutettiin Microsoftin kehittämällä .NET-teknologialla. Tietokantamallien teoreettinen tarkastelu auttoi ymmärtämään järjestelmän pohjalla toimivaa tietokantaratkaisua. Työssä selvisi, että perusjärjestelmän hyödyntämä oliorelaatiotietokanta soveltuu varsin hyvin tarkoitukseensa. Haku- ja muutoskomponenttien toteutus onnistui ja ne toimivat helppokäyttöisenä rajapintana energianhallintajärjestelmän tietokantaan.
Resumo:
Työssä perehdytään verkkokäyttöliittymien suunnitteluun ja toteutukseen. Erityisen huomion kohteena ovat Java-ohjelmointikieli ja ohjelmistosuunnittelussa suurta huomiota herättäneet suunnittelumallit. Java on kehittynyt lyhyen elinikänsä aikana huomattavasti, ja viimeaikaiset vakioluokkakirjastot ovat mahdollistaneet monipuolisten ja siirrettävien ohjelmistojen toteuttamisen. Vaikka Java ei sovellukaan kaikkiin tarkoituksiin, on se luotettavuutensa, siirrettävyytensä ja luokkakirjastojensa ilmaisuvoiman ansiosta hyvin houkutteleva kieli käyttöliittymien tekemiseen. Suunnittelumallit ovat merkittävä osa ammattimaista oliosuunnittelua. Ne tarjoavat valmiita ratkaisuja yleisiin suunnitteluongelmiin ja säästävät siten aikaa suunnittelu- ja toteutusvaiheissa. Suunnittelumallit voidaan jakaa kolmeen ryhmään: luontimallit, rakennemallit ja toiminnalliset mallit. Käytännön osuudessa tarkastellaan Java-käyttöliittymän toteutusta olemassa olevaan Soneran TradeXpress-tietojärjestelmään. Tässä tehtävässä Java ja suunnittelumallit ovat olleet keskeisellä sijalla. Java-käyttöliittymä, JavaGUI, koostuu kahdesta osasta: asiakasappletista ja Jrls-palvelimesta. Näiden kahden väliseen tiedonsiirtoon käytetään pääasiassa Javan RMI-yhteyskäytäntöä. Jrls-palvelin toimii asiakkaana RLS-palvelimelle erityisen RLS-yhteyskäytännön avulla.
Resumo:
Sähköinen kaupankäynti (electronic commerce, EC) on jatkuvasti ja nopeasti kasvava liiketoiminnan muoto. Suurten yritysten välistä sähköistä kaupankäyntiä, EDI:ä, on harjoitettu jo noin kaksikymmentä vuotta, mutta aivan viime vuosina sähköisen kaupankäynnin suosio on kokenut räjähdysmäisen kasvun sen siirryttyä yhä kevyemmille markkinoille, pienyritysten ja jopa yksityisten kuluttajien käytettäväksi. Perinteisen EDI:n järjestelmät ovat kuitenkin suuria, raskaita ja ne kykenevät huonosti tarjoamaan nykyaikaisen sähköisen kaupankäynnin vaatimia toimintoja. Tässä on tarkoituksena esittää malli uudelle, tehokkaammalle järjestelmälle. Tavoitteena on luotettava, helposti ylläpidettävä ja suorituskyvyltään sekä ominaisuuksiltaan skaalautuva järjestelmä. Koko järjestelmä toteutetaan käyttäen oliokeskeisiä menetelmiä. Järjestelmän perustana käytetään yleistä hajautettua komponentti-arkkitehtuuria. Työn tuloksena esitetään periaatteeltaan toteuttamiskelpoinen malli nykyaikaisesta sähköisen kaupankäynnin järjestelmästä. Malli mahdollistaa tehokkaan toiminnallisuuden hajauttamisen ja tehokkaan, hyvin määritellyn liitynnän eri sovellusjärjestelmien kanssa. Tämä toteutetaan rakentamalla koko järjestelmä CORBA-arkkitehtuurin ympärille.
Resumo:
We describe a model-based objects recognition system which is part of an image interpretation system intended to assist autonomous vehicles navigation. The system is intended to operate in man-made environments. Behavior-based navigation of autonomous vehicles involves the recognition of navigable areas and the potential obstacles. The recognition system integrates color, shape and texture information together with the location of the vanishing point. The recognition process starts from some prior scene knowledge, that is, a generic model of the expected scene and the potential objects. The recognition system constitutes an approach where different low-level vision techniques extract a multitude of image descriptors which are then analyzed using a rule-based reasoning system to interpret the image content. This system has been implemented using CEES, the C++ embedded expert system shell developed in the Systems Engineering and Automatic Control Laboratory (University of Girona) as a specific rule-based problem solving tool. It has been especially conceived for supporting cooperative expert systems, and uses the object oriented programming paradigm
Resumo:
O ensino presencial nos cursos de graduação continua sendo o foco do ensino e da aprendizagem. Com o advento de novas tecnologias de ensino, algumas ferramentas têm sido utilizadas como reforço ao ensino presencial. A plataforma Moodle (Modular Object Oriented Distance Learning) tem sido uma das mais empregadas nas instituições de ensino. Este estudo avaliou a relação do ensino presencial com o uso do Moodle institucional na disciplina de Parasitologia e Micologia Médica do curso de Medicina da Universidade Federal de Ciências da Saúde de Porto Alegre (UFCSPA). Como reforço a esta atividade, a página da disciplina cadastrada no sistema Moodle disponibilizou casos clínicos para que os alunos realizassem o diagnóstico. Além disso, foram apresentadas outras informações complementares para o ensino presencial. A metodologia buscou exercitar os instrumentos de aprendizagem que o sistema Moodle oferece, como o link a um arquivo ou site, os fóruns de discussão, a ferramenta questionário e o chat. Como o Moodle é institucional, nele está disponível a página da disciplina, onde passaram a constar todas as informações referentes à mesma, bem como as atividades extraclasse
Resumo:
Workshop at Open Repositories 2014, Helsinki, Finland, June 9-13, 2014
Resumo:
Tässä työssä tutkitaan yrityksen tuoterakenteen toteuttamista olioparadigmalla osana vanhenevan tuotannonohjausjärjestelmän uudistamista. Työssä on tunnistettu olioparadigman keskeiset rakenteet sekä tarkasteltu suunnittelumalleja, joita hyödyntämällä voidaan määrittää ja toteuttaa monimutkaisia sekä laajennettavia tuoterakenteita. Työn tavoitteena oli muodostaa tuoterakenteen runko, jota muokkaamalla on mahdollista toteuttaa erityyppisiä tuoterakenteita. Työ on rajattu siten, että todellista tuoterakennetta ei toteuteta. Tutkimuksen tuloksena havaittiin, että oliokeskeisyydellä voidaan toteuttaa tuoterakenteita, joita on mahdollista tulevaisuudessa muokata yrityksen tarpeisiin mukauttaen siten, että tuoterakenteen runkoon ei tarvitse tehdä suuria muutoksia. Olioperusteisella lähestymisellä voidaan mallintaa hyvin erityyppisiä ja ymmärrettäviä käsitteitä. Oliokeskeisellä lähestymistavalla voidaan toteuttaa myös muut vanhenevan tuotannonohjausjärjestelmän osa-alueet.
Resumo:
Ce mémoire vise à recenser les avantages et les inconvénients de l'utilisation du langage de programmation fonctionnel dynamique Scheme pour le développement de jeux vidéo. Pour ce faire, la méthode utilisée est d'abord basée sur une approche plus théorique. En effet, une étude des besoins au niveau de la programmation exprimés par ce type de développement, ainsi qu'une description détaillant les fonctionnalités du langage Scheme pertinentes au développement de jeux vidéo sont données afin de bien mettre en contexte le sujet. Par la suite, une approche pratique est utilisée en effectuant le développement de deux jeux vidéo de complexités croissantes: Space Invaders et Lode Runner. Le développement de ces jeux vidéo a mené à l'extension du langage Scheme par plusieurs langages spécifiques au domaine et bibliothèques, dont notamment un système de programmation orienté objets et un système de coroutines. L'expérience acquise par le développement de ces jeux est finalement comparée à celle d'autres développeurs de jeux vidéo de l'industrie qui ont utilisé Scheme pour la création de titres commerciaux. En résumé, l'utilisation de ce langage a permis d'atteindre un haut niveau d'abstraction favorisant la modularité des jeux développés sans affecter les performances de ces derniers.
Resumo:
Parc marin du Saguenay - Saint-Laurent, Groupe de recherche et d'éducation sur les mammifères marins, GREMM, excursions aux baleines, bélugas, Tadoussac, règlementation, ArcCatalog, ArcMap.
Resumo:
Les antipatrons sont de “mauvaises” solutions à des problèmes récurrents de conception logicielle. Leur apparition est soit due à de mauvais choix lors de la phase de conception soit à des altérations et des changements continus durant l’implantation des programmes. Dans la littérature, il est généralement admis que les antipatrons rendent la compréhension des programmes plus difficile. Cependant, peu d’études empiriques ont été menées pour vérifier l’impact des antipatrons sur la compréhension. Dans le cadre de ce travail de maîtrise, nous avons conçu et mené trois expériences, avec 24 sujets chacune, dans le but de recueillir des données sur la performance des sujets lors de tâches de compréhension et d’évaluer l’impact de l’existence de deux antipatrons, Blob et Spaghetti Code, et de leurs combinaisons sur la compréhension des programmes. Nous avons mesuré les performances des sujets en terme : (1) du TLX (NASA task load index) pour l’éffort ; (2) du temps consacré à l’exécution des tâches ; et, (3) de leurs pourcentages de réponses correctes. Les données recueillies montrent que la présence d’un antipatron ne diminue pas sensiblement la performance des sujets alors que la combinaison de deux antipatrons les entrave de façon significative. Nous concluons que les développeurs peuvent faire face à un seul antipatron, alors que la combinaison de plusieurs antipatrons devrait être évitée, éventuellement par le biais de détection et de réusinage.
Resumo:
Nous proposons une approche probabiliste afin de déterminer l’impact des changements dans les programmes à objets. Cette approche sert à prédire, pour un changement donné dans une classe du système, l’ensemble des autres classes potentiellement affectées par ce changement. Cette prédiction est donnée sous la forme d’une probabilité qui dépend d’une part, des interactions entre les classes exprimées en termes de nombre d’invocations et d’autre part, des relations extraites à partir du code source. Ces relations sont extraites automatiquement par rétro-ingénierie. Pour la mise en oeuvre de notre approche, nous proposons une approche basée sur les réseaux bayésiens. Après une phase d’apprentissage, ces réseaux prédisent l’ensemble des classes affectées par un changement. L’approche probabiliste proposée est évaluée avec deux scénarios distincts mettant en oeuvre plusieurs types de changements effectués sur différents systèmes. Pour les systèmes qui possèdent des données historiques, l’apprentissage a été réalisé à partir des anciennes versions. Pour les systèmes dont on ne possède pas assez de données relatives aux changements de ses versions antécédentes, l’apprentissage a été réalisé à l’aide des données extraites d’autres systèmes.
Resumo:
Traditionnellement, les applications orientées objets légataires intègrent différents aspects fonctionnels. Ces aspects peuvent être dispersés partout dans le code. Il existe différents types d’aspects : • des aspects qui représentent des fonctionnalités métiers ; • des aspects qui répondent à des exigences non fonctionnelles ou à d’autres considérations de conception comme la robustesse, la distribution, la sécurité, etc. Généralement, le code qui représente ces aspects chevauche plusieurs hiérarchies de classes. Plusieurs chercheurs se sont intéressés à la problématique de la modularisation de ces aspects dans le code : programmation orientée sujets, programmation orientée aspects et programmation orientée vues. Toutes ces méthodes proposent des techniques et des outils pour concevoir des applications orientées objets sous forme de composition de fragments de code qui répondent à différents aspects. La séparation des aspects dans le code a des avantages au niveau de la réutilisation et de la maintenance. Ainsi, il est important d’identifier et de localiser ces aspects dans du code légataire orienté objets. Nous nous intéressons particulièrement aux aspects fonctionnels. En supposant que le code qui répond à un aspect fonctionnel ou fonctionnalité exhibe une certaine cohésion fonctionnelle (dépendances entre les éléments), nous proposons d’identifier de telles fonctionnalités à partir du code. L’idée est d’identifier, en l’absence des paradigmes de la programmation par aspects, les techniques qui permettent l’implémentation des différents aspects fonctionnels dans un code objet. Notre approche consiste à : • identifier les techniques utilisées par les développeurs pour intégrer une fonctionnalité en l’absence des techniques orientées aspects • caractériser l’empreinte de ces techniques sur le code • et développer des outils pour identifier ces empreintes. Ainsi, nous présentons deux approches pour l’identification des fonctionnalités existantes dans du code orienté objets. La première identifie différents patrons de conception qui permettent l’intégration de ces fonctionnalités dans le code. La deuxième utilise l’analyse formelle de concepts pour identifier les fonctionnalités récurrentes dans le code. Nous expérimentons nos deux approches sur des systèmes libres orientés objets pour identifier les différentes fonctionnalités dans le code. Les résultats obtenus montrent l’efficacité de nos approches pour identifier les différentes fonctionnalités dans du code légataire orienté objets et permettent de suggérer des cas de refactorisation.
Resumo:
La compréhension des objets dans les programmes orientés objet est une tâche impor- tante à la compréhension du code. JavaScript (JS) est un langage orienté-objet dyna- mique, et son dynamisme rend la compréhension du code source très difficile. Dans ce mémoire, nous nous intéressons à l’analyse des objets pour les programmes JS. Notre approche construit de façon automatique un graphe d’objets inspiré du diagramme de classes d’UML à partir d’une exécution concrète d’un programme JS. Le graphe résul- tant montre la structure des objets ainsi que les interactions entre eux. Notre approche utilise une transformation du code source afin de produire cette in- formation au cours de l’exécution. Cette transformation permet de recueillir de l’infor- mation complète au sujet des objets crées ainsi que d’intercepter toutes les modifications de ces objets. À partir de cette information, nous appliquons plusieurs abstractions qui visent à produire une représentation des objets plus compacte et intuitive. Cette approche est implémentée dans l’outil JSTI. Afin d’évaluer l’utilité de l’approche, nous avons mesuré sa performance ainsi que le degré de réduction dû aux abstractions. Nous avons utilisé les dix programmes de réfé- rence de V8 pour cette comparaison. Les résultats montrent que JSTI est assez efficace pour être utilisé en pratique, avec un ralentissement moyen de 14x. De plus, pour 9 des 10 programmes, les graphes sont suffisamment compacts pour être visualisés. Nous avons aussi validé l’approche de façon qualitative en inspectant manuellement les graphes gé- nérés. Ces graphes correspondent généralement très bien au résultat attendu. Mots clés: Analyse de programmes, analyse dynamique, JavaScript, profilage.