998 resultados para Desenvolvimento de software
Resumo:
Este é o meu trabalho do fim de curso de Engenharia de Sistemas e Informática, no grau de licenciatura que tem como tema “Utilização de Plataformas Open Source” onde vou abordar a utilização de plataformas Open Sources na área de TI mas concretamente no desenvolvimento do software em geral o que engloba todas as fazes de desenvolvimento do software. De um modo geral está memória visa fazer uma pequena publicitação dos softwares Open Sources, sabendo que é muito comum encontramos grandes softwares Open Source mais pouco utilizado em relação a um outro software do mesmo tipo mas que é proprietário, como no caso de Windows e Linux. Pretende-se analisar as principais características de softwares Open Source que dificultam a sua utilização por parte dos profissionais de empresas de base tecnológica e chefe de laboratórios informático das instituições de ensino superior da Cidade da Praia, também pretende saber o porque da dominação dos softwares proprietários em países em desenvolvimento em geral.Entretanto vamos apresentar as principais melhorias que empresas de desenvolvimento de softwares Open Source devem fazer para aumentar a utilização dos seus softwares em comparação com o software proprietário.
Resumo:
O desenvolvimento de software complexo de grande porte é muitas vezes dificultado pela carência de ferramentas adequadas para a clara expressão das idéias dos programadores em todos os aspectos técnicos do projeto. Isto é particularmente verdadeiro quando se lida com o poder de expressão de linguagens de programação. Como os grandes programas se compõem usualmente de segmentos com características técnicas diversificadas, parece natural disponibilizar ferramentas específicas para os programadores, de forma que uma boa expressividade seja obtida no código correspondente. As técnicas multiparadigma e multilinguagem são discutidas como formas alternativas de satisfazer essas necessidades, e a implementação de um ambiente de desenvolvimento multilinguagem (multiparadigma) é proposta e discutida em seus aspectos diversos. O artigo finaliza com uma bibliografia significativa sobre o tema, orientando os leitores interessados tanto nos aspectos de projeto como nos de caráter filosófico da técnica proposta.
Resumo:
O desenvolvimento de software complexo de grande porte é muitas vezes dificultado pela carência de ferramentas adequadas para a clara expressão das idéias dos programadores em todos os aspectos técnicos do projeto. Isto é particularmente verdadeiro quando se lida com o poder de expressão de linguagens de programação. Como os grandes programas se compõem usualmente de segmentos com características técnicas diversificadas, parece natural disponibilizar ferramentas específicas para os programadores, de forma que uma boa expressividade seja obtida no código correspondente. Para que a interface entre estes diferentes segmentos seja efetivada, torna-se viável o emprego de esquemas que facilitem a interação entre os mesmos. O artigo apresenta uma proposta de implementação de um mecanismo de troca de dados entre módulos de linguagens que compõem uma aplicação multilinguagem. O mecanismo pode também ser aplicado a linguagens oriundas de diferentes paradigmas de programação. O artigo também apresenta um pequeno exemplo completo de implementação que exercita parcialmente o ambiente proposto.
Resumo:
O modelo de objetos apresenta-se como um modelo promissor para o desenvolvimento de software tolerante a falhas em virtude de características inerentes ao próprio modelo de objetos, tais como abstração de dados, encapsulamento, herança e reutilização de objetos (componentes). O uso de técnicas orientadas a objetos facilita o controle da complexidade do sistema porque promove uma melhor estruturação de seus componentes e também permite que componentes já validados sejam reutilizados [LIS96]. Técnicas básicas para tolerância a falhas em software baseiam-se na diversidade de projeto e de implementação de componentes considerados críticos. Os componentes diversitários são gerenciados através de alguma técnica que tenha por objetivo assegurar o fornecimento do serviço solicitado, como, por exemplo, a conhecida técnica de blocos de recuperação. Reflexão Computacional é a capacidade que um sistema tem de fazer computações para se auto analisar. Ela é obtida quando o programa pára sua execução por um período de tempo para fazer computações sobre si próprio; analisa seu estado, se o processamento está correto, se pode prosseguir com a execução e atingir o objetivo satisfatoriamente; se não precisa mudar de estratégia ou algoritmo de execução, fazendo, ainda, processamentos necessários para o sucesso da execução. Um sistema de programação distribuída consiste basicamente em vários aplicativos executados em diferentes computadores, os quais realizam troca de mensagens para solucionar um problema comum. A comunicação entre os computadores é realizada através da rede que os interliga. As Redes que controlam sistemas críticos são normalmente de pequena escala pois redes de grandes dimensões podem apresentar atrasos e baixa confiabilidade. Portanto, a abordagem aqui proposta consiste em utilizar, em um ambiente distribuído, uma arquitetura reflexiva aliada a técnicas do domínio da tolerância a falhas para promover a separação entre as atividades de controle, salvamento, recuperação, distribuição e validação de componentes e as funcionalidades executadas pelo próprio componente, a fim de que falhas não venham a prejudicar a disponibilidade, confiabilidade e clareza de determinadas computações. A proposta apóia-se num estudo de caso, implementado na linguagem de programação Java, com seus protocolos de reflexão computacional e de comunicação.
Resumo:
Este trabalho apresenta uma metodologia para a geração automática de ASICs, em VHDL, a partir da linguagem de entrada Java. Como linguagem de especificação adotou-se a Linguagem Java por esta possuir características desejáveis para especificação a nível de sistema, como: orientação a objetos, portabilidade e segurança. O sistema é especificamente projetado para suportar síntese de ASICs a partir dos modelos de computação Máquina de Estados Finita e Pipeline. Neste trabalho, adotou-se estes modelos de computação por serem mais usados em sistemas embarcados As principais características exploradas são a disponibilização da geração de ASICs para a ferramenta SASHIMI, o alto nível de abstração com que o projetista pode contar em seu projeto, as otimizações de escalonamento realizadas automaticamente, e o sistema ser capaz de abstrair diferentes modelos de computação para uma descrição em VHDL. Portanto, o ambiente permite a redução do tempo de projeto e, consequentemente, dos custos agregados, diminuindo a probabilidade de erros na elaboração do projeto, portabilidade e reuso de código – através da orientação a objetos de Java – podendo-se proteger os investimentos prévios em desenvolvimento de software. A validação desses conceitos foi realizada mediante estudos de casos, utilizando-se algumas aplicações e analisando os resultados obtidos com a geração dos ASICs.
Resumo:
O processo de desenvolvimento de software implica na necessidade constante de tomadas de decisão. A cada etapa do processo, torna-se necessário estabelecer a comunicação e interação entre usuários, gerentes, analistas, programadores e mantenedores numa constante troca de informações. O registro dos artefatos produzidos durante todo o processo é uma questão que norteia as pesquisas em ambiente de desenvolvimento de software. Quando se fala em suporte ao processo de colaboração entre os elementos de uma equipe de desenvolvimento, este registro torna-se ainda mais necessário. Neste contexto, a modelagem dos dados a serem armazenados se amplia para comportar outras informações provenientes da interação do grupo além dos artefatos gerados. As informações trocadas durante este processo interativo que incluem fatos, hipóteses, restrições, decisões e suas razões, o significado de conceitos e, os documentos formais formam o que é denominado pela literatura especializada como memória de grupo. A proposta da arquitetura SaDg PROSOFT visa fornecer suporte a memória de grupo, no que diz respeito ao registro das justificativas de projeto(Design Rationale), através de uma integração com o gerenciador de processos (GP) provido pelo ADS PROSOFT. Esta integração se dá através das ferramentas inseridas no modelo, assim desenhadas: Editor de Norma, Editor de Argumentação, Extrator de Alternativas, Editor de Votação. O ADS PROSOFT integra ferramentas para desenvolvimento de software. Este ADS foi escolhido para o desenvolvimento do modelo SADG, pois baseia-se na construção formal de software, mas particularmente no método algébrico, por ser um ambiente estendível, possibilitando a inclusão do modelo SaDg PROSOFT ao seu conjunto de ferramentas, por ter características de um ambiente distribuído e cooperativo e por não dispor de nenhum suporte à discussões e decisões em grupos. São apresentados os fundamentos de modelos SADG e algumas ferramentas. Alguns dos principais requisitos desses ambientes foram coletados e são apresentados a fim de embasar a proposta do trabalho. O modelo SADG é apresentado na forma de ferramentas PROSOFT(chamadas ATOs) e permite a definição de atividades como: Atividade de argumentação, atividade de extração e a atividade de votação. Além disso, permite a coordenação destas atividades através de um facilitador e do próprio GP, e também, possui um mecanismo para a configuração do processo decisório.
Resumo:
A atividade de teste constitui uma fase de grande importância no processo de desenvolvimento de software, tendo como objetivo garantir um alto grau de confiabilidade nos produtos desenvolvidos. O paradigma da Orientação a Objetos (OO) surgiu com o objetivo de melhorar a qualidade bem como a produtividade no desenvolvimento de aplicações. Entretanto, apesar do aumento constante de aceitação do paradigma OO pela indústria de software, a presença de algumas de suas características torna a atividade de teste de programas neste paradigma mais complexa do que o teste de sistemas tradicionais. Entre estas características cita-se a herança, o encapsulamento, o polimorfismo e a ligação dinâmica [EIS 97] [PRE 95] [UNG 97]. Algumas técnicas estão sendo implementadas para auxiliarem a atividade de teste através do uso da tecnologia de reflexão computacional [HER 99]. Estas técnicas permitem a realização de análises de aspectos dinâmicos dos programas, sem a necessidade de instrumentar o código-fonte das aplicações que estão sendo monitoradas. Com o objetivo de auxiliar o processo de teste de programas orientados a objetos, este trabalho aborda o desenvolvimento de uma ferramenta, a qual automatiza parcialmente o teste de programas escritos em Java. A ferramenta evidencia o teste de estados fazendo uso da tecnologia de reflexão computacional. Através da especificação de asserções, feitas pelo usuário da ferramenta, na forma de invariantes de classe, pré e pós-condições de métodos, é possível verificar a integridade dos estados dos objetos durante a execução do programa em teste. A ferramenta possibilita também, armazenar a seqüência de métodos chamados pelos objetos da aplicação em teste, tornando possível ao testador, visualizar o histórico das interações entre os objetos criados no nível-base.
Resumo:
A tecnologia de workflow vem apresentando um grande crescimento nos últimos anos. Os Workflow Management Systems (WfMS) ou Sistemas de Gerenciamento de Workflow oferecem uma abordagem sistemática para uniformizar, automatizar e gerenciar os processos de negócios. Esta tecnologia requer técnicas de engenharia de software que facilitem a construção desse tipo de sistema. Há muito vem se formando uma consciência em engenharia de software de que para a obtenção de produtos com alta qualidade e que sejam economicamente viáveis torna-se necessário um conjunto sistemático de processos, técnicas e ferramentas. A reutilização está entre as técnicas mais relevantes desse conjunto. Parte-se do princípio que, reutilizando partes bem especificadas, desenvolvidas e testadas, pode-se construir software em menor tempo e com maior confiabilidade. Muitas técnicas que favorecem a reutilização têm sido propostas ao longo dos últimos anos. Entre estas técnicas estão: engenharia de domínio, frameworks, padrões, arquitetura de software e desenvolvimento baseado em componentes. Porém, o que falta nesse contexto é uma maneira sistemática e previsível de realizar a reutilização. Assim, o enfoque de linha de produto de software surge como uma proposta sistemática de desenvolvimento de software, baseada em uma família de produtos que compartilham um conjunto gerenciado de características entre seus principais artefatos. Estes artefatos incluem uma arquitetura base e um conjunto de componentes comuns para preencher esta arquitetura. O projeto de uma arquitetura para uma família de produtos deve considerar as semelhanças e variabilidades entre os produtos desta família. Esta dissertação apresenta uma proposta de arquitetura de linha de produto para sistemas de gerenciamento de workflow. Esta arquitetura pode ser usada para facilitar o processo de produção de diferentes sistemas de gerenciamento de workflow que possuem características comuns, mas que também possuam aspectos diferentes de acordo com as necessidades da indústria. O desenvolvimento da arquitetura proposta tomou como base a arquitetura genérica e o modelo de referência da Workflow Management Coalition (WfMC) e o padrão de arquitetura Process Manager desenvolvido no contexto do projeto ExPSEE1. O processo de desenvolvimento da arquitetura seguiu o processo sugerido pelo Catalysis com algumas modificações para representar variabilidade. A arquitetura proposta foi descrita e simulada através da ADL (Architecture Description Language) Rapide. A principal contribuição deste trabalho é uma arquitetura de linha de produto para sistemas de gerenciamento de workflow. Pode-se destacar também contribuições para uma proposta de sistematização de um processo de desenvolvimento de arquitetura de linha de produto e também um melhor entendimento dos conceitos e abordagens relacionados à prática de linha de produto, uma vez que esta tecnologia é recente e vem sendo largamente aplicada nas empresas.
Resumo:
Neste estudo investigam-se as possibilidades de Cenários Educacionais Informatizados como alternativas estratégicas de uso de produtos da tecnologia informática para o desenvolvimento de processos cognitivos. São propostos indicadores de aprendizagem na forma de Pegadas Cognitivas. Tais Pegadas são o resultado gráfico de uma distribuição espacial de pontos correspondentes aos indicadores de aprendizagem e suas dimensões nos cenários pesquisados. Em cada caso, a “pegada” resulta da ligação entre tais pontos, formando um diagrama onde a disposição dos indicadores, comparando-se as situações ideal e real, permitiu avaliar o desvio em que se encontra a situação real, comparativamente à situação ideal. Sua construção permitiu simbolizar a provisoriedade de cada situação de aprendizagem e inspirar ações para as correções que se fizerem necessárias. Utilizaram-se: software de modelagem computacional – Modellus; espaços virtuais de comunicação – chat, e-mail, listas de discussão, whiteboard, forms, entre outros; Mapas Conceituais/Mentais; imagens e representações; ações ligadas às atividades endógenas permanentes dos aprendizes em função de seu imaginário e dos espaços virtuais e recursos da telemática em atividades de aprendizagem, na área de físico-química, visando ao estudo de como ocorrem as reações químicas. A partir dos resultados obtidos realizou-se o confronto entre as possibilidades reais do ambiente com o imaginado, sobre o tema, por alunos do ensino médio que integram o grupo denominado Grupo Imagem. O caminho que representa a linha mestra deste referencial teórico encontra-se nas Ciências Cognitivas no que se refere às questões relativas às formas de representação, às estratégias cognitivas utilizadas pelo sistema humano de processamento de informação e às aplicações de modelagem computacional em situações de aprendizagem. Considerou-se uma abordagem que leva em conta arquiteturas cognitivas e influências do meio ambiente sobre a capacidade humana de aprender. Aprender no sentido de assimilar novas informações, armazená-las e, ao acessá-las, desenvolver estratégias cognitivas que promovam a evolução das estruturas do conhecimento, numa dinâmica caracterizada pela inovação, pela capacidade humana de estar constantemente em mudança, através de ações situadas, contextualizadas, na Sociedade da Informação, geradora da Sociedade do Conhecimento. Tal sociedade impõe desafios a ser enfrentados com estratégias que permitam a todos, independente de sua situação na escala social, a acessibilidade e a mobilidade informacional e de tecnologias cada vez mais especializadas em todas as áreas, sejam acadêmicas, econômicas ou de bem-estar pessoal que produzam não apenas a mundialização de recursos materiais e físicos, mas que incluam as diferenças de pensamentos e ações que permitem aos seres humanos serem individuais e únicos em sua essência. A Aprendizagem à Distância – AAD – utilizada neste fazer investigatório evidenciou competência para solucionar as dificuldades relativas à flexibilidade dos programas disponíveis para compor cenários educacionais que privilegiem a aprendizagem significativa, em escolas de ensino médio, por exigirem novos posicionamentos e novas habilidades de educandos e de educadores. Entre as habilidades de aprendizagem individual e coletiva que os aprendizes devem possuir ou desenvolver para cooperar com o grupo em AAD, destacam-se: autonomia, responsabilidade, liderança, capacidade para negociação e decisão, capacidade de inferência, dedução, possibilidade de realização de análise e síntese, regras de conduta que permitam a convivência e as trocas de conhecimentos.
Resumo:
Uma definição confiável dos requisitos de um software depende diretamente da completa e correta compreensão sobre as necessidades do sistema e sua conseqüente representação de forma adequada ao processo de desenvolvimento. Uma proposta de modelagem de requisitos deve apresentar qualidades que colaborem para a compreensão mútua das necessidades entre os envolvidos no processo e que organizem os requisitos de forma a permitir o acompanhamento no desenvolvimento do software. O presente trabalho apresenta um modelo de estruturação de requisitos fundamentado em metodologias orientadas a objetivos com utilização de cenários e preceitos da Teoria da Atividade. O modelo tem sua argumentação nas premissas que cliente e usuários normalmente expressam suas necessidades através de objetivos almejados e que a ação humana deve ser analisada dentro de um contexto para que possa fazer sentido e ser compreendida. Inserido no contexto do Projeto FILM1, cujo objetivo é expandir o Método Fusion, agregando uma etapa de modelagem de requisitos, o trabalho estabeleceu a qualidade de usabilidade como motivadora da definição de um modelo de estruturação de requisitos. A usabilidade é uma qualidade que visa facilitar a utilização do modelo como uma ferramenta de representação dos requisitos de forma inteligível, atuando tanto na especificação dos requisitos como na validação dos mesmos entre os envolvidos. Os requisitos são estruturados segundo uma abordagem voltada aos clientes e usuários do sistema. O modelo definido tem por objetivo prover a construção gradual e incremental do entendimento compartilhado entre os envolvidos sobre os domínios do problema e da solução, na concepção e no desenvolvimento do software. Metodologias orientadas a objetivos, operacionalizadas através de cenários, conjugadas a princípios da atividade oferecem um suporte adequado a estruturação de requisitos provendo usabilidade ao modelo. A avaliação da aplicabilidade do modelo é realizada com a modelagem de requisitos em três estudos de casos. Em cada caso são aplicadas técnicas de elicitação no sentido da afinar a sintonia com a estrutura do modelo de requisitos. A concepção do modelo, embasada em conceitos da Teoria da Atividade, é bastante adequado às atividades de elicitação em uma abordagem voltada aos clientes e usuários.
Resumo:
O objetivo desta dissertação é a elaboração de uma técnica da aplicação do formalismo de Autômatos Finitos com Saída (Máquina de Mealy e Máquina de Moore) como um modelo estrutural para a organização de hiperdocumentos instrucionais, em destacar especial, Avaliação e Exercício. Esse objetivo é motivado pela organização e agilização do processo de avaliação proporcionado ao professor e ao aluno. Existem diferentes técnicas de ensino utilizadas na Internet, algumas dessas continuam sendo projetadas com o uso de metodologias tradicionais de desenvolvimento, outras têm a capacidade de modelar de forma integrada e consistente alguns aspectos necessários para uma aplicação WEB. Para alcançar o objetivo proposto, foram realizadas pesquisas nas várias áreas abrangidas pelo tema em evidência, tanto relativo ao processo tradicional (aplicação de prova utilizando metodologia tradicional), como o desenvolvimento de software mediado por computador e uso da Internet em si. A modelagem de desenvolvimento para Internet deve integrar características de técnicas de projeto de sistemas de hipermídia devido à natureza hipertextual da Internet. O uso de hiperdocumento como autômatos com saída está na forma básica de representação de hipertexto, em que cada fragmento de informação é associado a um nodo ou a um link (estado/transições) do grafo. Sendo assim, os arcos direcionados representam relacionamentos entre os nodos ou links, ou seja, uma passagem do nodo origem para o nodo destino. As n-uplas dos autômatos apresentam uma correspondência as estruturas de hiperdocumentos na WEB, seu estado/transição inicial corresponde a sua primeira página e suas transições definidas na função programa, funcionam como ligações lógicas, quando selecionadas durante a navegação do hipertexto. Entretanto, faz-se necessário um levantamento dos modelos de hipertextos e das ferramentas de implementação disponíveis para a Internet, a fim de que seja capaz de suportar as peculiaridades do ambiente. Tudo isso deve ser integrado preferencialmente em um paradigma de desenvolvimento amplamente aceito, para que os projetistas não tenham muitas dificuldades em assimilar os conceitos propostos. A proposta apresentada nesta dissertação, batizada de Hyper-Automaton (hipertexto e autômato), consiste na integração de um Curso na WEB, utilizando formalismo de Autômatos Finitos com Saída para a modelagem dos conceitos necessários e definição das fases adequadas para completar a especificação de Sistema Exercício e Avaliação, bem como a especificação da Geração Automática dos Exercícios e Avaliações baseadas em autômatos para a WEB. Os modelos criados abrangem conceitos de Máquina de Mealy, Máquina de Moore e Aplicações de Hiperdocumentos e Ferramentas de Programação para Internet, os mesmos já testados em caso real. Os parâmetros apurados, nos testes, serviram a uma seqüência de etapas importantes para modelar e complementar a especificação do sistema projetado. Com os parâmetros e etapas de modelagem, a metodologia Hyper-Automaton consegue integrar, de forma consistente, as vantagens de várias técnicas específicas de modelagem de documentos e sistemas de hipermídia. Essas vantagens, aliadas ao suporte às ferramentas de desenvolvimento para Internet, garantem que a metodologia fique adequada para a modelagem de Sistemas com aplicação de métodos de autômatos para exercícios e avaliação na WEB.
Resumo:
Os requisitos direcionam o desenvolvimento de software porque são cruciais para a sua qualidade. Como conseqüência tanto requisitos funcionais quanto não funcionais devem ser identificados o mais cedo possível e sua elicitação deve ser precisa e completa. Os requisitos funcionais exercem um papel importante uma vez que expressam os serviços esperados pela aplicação. Por outro lado, os requisitos não funcionais estão relacionados com as restrições e propriedades aplicadas ao software. Este trabalho descreve como identificar requisitos não funcionais e seu mapeamento para aspectos. O desenvolvimento de software orientado a aspectos é apontado como a solução para os problemas envolvidos na elicitação e modelagem dos requisitos não funcionais. No modelo orientado a aspectos, o aspecto é considerado o elemento de primeira ordem, onde o software pode ser modelado com classes e aspectos. As classes são comumente usadas para modelar e implementar os requisitos funcionais, já os aspectos são adotados para a modelagem e implementação dos requisitos não funcionais. Desse modo, é proposta a modelagem dos requisitos não funcionais através das fases do ciclo de vida do software, desde as primeiras etapas do processo de desenvolvimento. Este trabalho apresenta o método chamado FRIDA – From RequIrements to Design using Aspects, cujo objetivo é determinar uma forma sistemática para elicitar e modelar tanto os requisitos funcionais quanto os não funcionais, desde as fases iniciais do ciclo de desenvolvimento. Em FRIDA, a elicitação dos requisitos não funcionais é realizada usando-se checklists e léxicos, os quais auxiliam o desenvolvedor a descobrir os aspectos globais – utilizados por toda a aplicação – bem como, os aspectos parciais que podem ser empregados somente a algumas partes da aplicação. O próximo passo consiste na identificação dos possíveis conflitos gerados entre aspectos e como resolvê-los. No método FRIDA, a identificação e resolução de conflitos é tão importante quanto a elicitação de requisitos não funcionais, nas primeiras fases do ciclo de vida do software. Além disso, é descrito como usar a matriz de conflitos para automatizar esse processo sempre que possível. A extração dos aspectos e sua modelagem visual são características muito importantes, suportadas pelo método, porque elas possibilitam a criação de modelos que podem ser reutilizados no futuro. Em FRIDA, é demonstrado como transformar os requisitos em elementos da fase de projeto (classes e aspectos) e como traduzir esses elementos em código. Outra característica do método FRIDA é que a conexão entre diagramas, que pertencem a diferentes fases do processo de desenvolvimento do software, permite um alto nível de rastreabilidade. Em resumo, FRIDA requer que o desenvolvedor migre de uma visão puramente funcional para outra que contemple também os requisitos não funcionais.
Resumo:
Em vista da maior complexidade da programação paralela e distribuída em relação à programação de ambientes centralizados, novas ferramentas vêm sendo construídas com o objetivo de auxiliar o programador desses ambientes a desempenhar sua tarefa de formas mais eficazes e produtivas. Uma das ferramentas que há algum tempo tem sido usada na programação centralizada e aos poucos está sendo empregada também na programação concorrente é a programação visual. A programação visual se vale da presença de elementos visuais na especificação dos programas como peças chaves do processo de desenvolvimento de software. No caso específico da programação concorrente, a programação visual é especialmente útil pela capacidade que os gráficos têm de representar de forma mais adequada estruturas bidimensionais. Um programa concorrente, por relacionar no espaço diversos elementos com seus próprios fluxos de execução, faz surgir duas dimensões de análise que são mais difíceis de serem observadas através de programas textuais. Atualmente existem ferramentas de programação visual paralela e distribuída, mas a ênfase é dada na programação paralela, sem muita atenção a aplicações de sistemas abertos ou cliente-servidor. Além disso, tais ferramentas sofrem da falta de apoio à engenharia do software. Considerando essas deficiências, este trabalho apresenta uma ferramenta de programação visual para o desenvolvimento de aplicações compostas por objetos distribuídos que ofereça também a possibilidade de aplicar os principais conceitos da engenharia de software, como reutilização e orientação a objeto. Nesta ferramenta, o programador especifica de maneira visual a estrutura do seu programa, insere o código textual para a lógica da aplicação e o ambiente se encarrega do tratamento da distribuição e da comunicação de mais baixo nível. A aplicação é representada como um grafo dirigido, onde os nodos representam os objetos distribuídos e os arcos indicam os relacionamentos existentes entre esses objetos. A especificação dos programas é modular, baseando-se na reunião de componentes reutilizáveis, o que torna o sistema altamente configurável e extensível. Tanto a implementação da ferramenta quanto o código das aplicações geradas usam a linguagem de programação Java. A linguagem de programação visual projetada não especifica detalhes a respeito de como irá funcionar a comunicação e distribuição dos objetos. Portanto, foram implementados componentes para comunicação e outros recursos de programação distribuída, como locks e dados globais para serem usados nas aplicações. Para validar os principais objetivos da ferramenta, foram implementados alguns exemplos de aplicações distribuídas, como um pequeno sistema de bate-papo.
Resumo:
As maiores dificuldades encontradas no teste de software estão relacionadas à definição dos dados de teste e a decisão de quando encerrar os testes. Uma das formas encontradas para minimizar tais dificuldades está centrada na utilização de critérios de cobertura. O principal objetivo dos critérios de cobertura é tornar o processo de testes mais rápido e preciso, fornecendo informações que determinem o que testar em um software para garantir sua qualidade. A modelagem é um dos elementos de maior importância nas atividades relacionadas ao desenvolvimento de software. Os modelos são construídos principalmente para melhor se entender o sistema, descrever a estrutura e comportamento desejados, visualizar a arquitetura e documentar as decisões tomadas durante o seu desenvolvimento. Atualmente, o sistema de notação mais utilizado para a modelagem de sistemas baseados nos conceitos de orientação a objetos é a Linguagem de Modelagem Unificada – UML [LAR 99]. Nesta notação, um sistema é descrito por um conjunto de diagramas que apresentam diferentes aspectos do sistema. As informações disponibilizadas por estes diagramas propiciam, já nas fases iniciais do desenvolvimento da aplicação (análise e projeto), o planejamento dos casos de teste e a definição de critérios de cobertura. Observa-se que nestas fases a maioria das informações necessárias para o teste já estão disponíveis, como por exemplo, a definição das classes com seus atributos, métodos e relacionamentos, a representação da interação existente entre objetos para a realização de um cenário e a descrição dos possíveis estados e transições de um objeto em resposta a eventos externos e internos. Este trabalho propõe um conjunto de diretrizes e critérios de cobertura de teste, tendo como base as especificações diagramáticas UML. As diretrizes estabelecem um conjunto de instruções para que o teste seja feito e os critérios de cobertura identificam os pontos principais e serem considerados durante o teste. Na definição das diretrizes e dos critérios foram avaliadas as informações disponibilizadas pelos diagramas de classes, seqüência, colaboração e estados.
Resumo:
A presente tese visa contribuir na construção de ambientes de desenvolvimento de software através da proposição de uma arquitetura reflexiva para ambiente de suporte a processo, nomeada WRAPPER (Webbased Reflective Architecture for Process suPport EnviRonment). O objetivo desta arquitetura é prover uma infra-estrutura para um ambiente de suporte a processo de software, integrando tecnologias da World Wide Web, objetos distribuídos e reflexão computacional. A motivação principal para esta arquitetura vem da necessidade de se obter maior flexibilidade na gerência de processo de software. Esta flexibilidade é obtida através do uso de objetos reflexivos que permitem a um gerente de processo obter informações e também alterar o processo de software de forma dinâmica. Para se obter um ambiente integrado, a arquitetura provê facilidades para a agregação de ferramentas CASE de plataformas e fabricantes diversos, mesmo disponibilizadas em locais remotos. A integração de ferramentas heterogêneas e distribuídas é obtida através do uso de tecnologias Web e de objetos distribuídos. Reflexão computacional é usada no ambiente tanto para extrair dados da execução do processo, quanto para permitir a adaptação do mesmo. Isto é feito através da introdução e controle de meta-objetos, no metanível da arquitetura, que podem monitorar e mesmo alterar os objetos do nível base. Como resultado, a arquitetura provê as seguintes características: flexibilidade na gerência de processo, permitindo o controle e adaptação do processo; distribuição do ambiente na Web, permitindo a distribuição de tarefas do processo de software e a integração de ferramentas em locais remotos; e heterogeneidade para agregar componentes ao ambiente, permitindo o uso de ferramentas de plataformas e fornecedores diversos. Neste contexto, o presente trabalho apresenta a estrutura da arquitetura reflexiva, bem como os mecanismos usados (e suas interações) para a modelagem e execução de processo dentro do ambiente de suporte ao processo de software.