Geração Automática de Código Android Eficiente a partir de Modelos UML
|
|
|
- Maria de Begonha Van Der Vinne Esteves
- 10 Há anos
- Visualizações:
Transcrição
1 Geração Automática de Código Android Eficiente a partir de Modelos UML Abilio Gambim Parada, Aline Rodrigues Tonini, Lisane Brisolara de Brisolara Ciência da Computação, Grupo de Arquiteturas e Circuitos Integrados, Centro de Desenvolvimento Tecnológico, Universidade Federal de Pelotas, Brasil {agparada, artonini, [email protected] Resumo. Dispositivos móveis vêm substituindo computadores para uma série de aplicações. Um grande número destes aparelhos utilizam a plataforma Android da Google. Este crescimento na utilização de dispositivos móveis tem impulsionado o mercado de desenvolvimento de aplicações para estes dispositivos. Entretanto, devido ao curto tempo de lançamento do produto no mercado, abordagens que visam acelerar o desenvolvimento são necessárias. Para diminuir o tempo de desenvolvimento e ao mesmo tempo suportar projetos complexos, abordagens de engenharia baseada em modelos, ou MDE (ModeldrivenEngineering), estão sendo utilizadas. No entanto, os desenvolvedores devem se preocupar também em atender requisitos não funcionais relacionadas a desempenho e consumo de energia inerentes ao domínio. Neste contexto, a Google propôs um conjunto de boas práticas e técnicas de programação para aplicações Android, tendo como principal objetivo o desempenho das aplicações. Este artigo propõe uma abordagem MDE para geração automática de código, a qual aplica boas práticas Android, visando à geração de código eficiente. A abordagem é demonstrada através de um estudo de caso, no qual a melhoria obtida com as práticas adotadas pode ser observada. Palavras Chaves: Android, UML, boas práticas, desempenho, geração de código, MDE. 1 Introdução A crescente utilização de dispositivos móveis, como smartphones e tablets, tem se tornado uma alternativa à utilização de computadores de uso pessoal, impulsionado assim o mercado destes eletrônicos. Dentre as várias plataformas disponíveis no
2 mercado surge a plataforma Android [1], como uma solução completa de código livre com um amplo suporte aos mais diversos dispositivos, bem como ferramentas de apoio ao desenvolvimento e sistema operacional. Aplicativos Android trazem novas características para a programação tanto no estilo quanto em peculiaridades que devem ser observadas. Uma destas características é a programação orientada a eventos, pois estes aplicativos devem constantemente reagir a interações do usuário [2], e também conceitos adicionais como ciclo de vida e a utilização de determinada estrutura de acordo com o comportamento da aplicação.estas novas características aumentam a dificuldade do desenvolvimento de aplicativos Android. Além disso, desenvolvedores devem se preocupar também com a eficiência e um melhor aproveitamento dos recursos do dispositivo. Considerando estas particularidades e o fato de existir pessoas de vários lugares do mundo com maneiras diferentes de programar desenvolvendo aplicações para Android, a Google propõe o uso de Boas Práticas no processo de desenvolvimento [3], para assim viabilizar um melhor desempenho das aplicações Android. Além de todas as características de desenvolvimento e de boas práticas que devem ser consideradas, as aplicações Android estão fortemente ligadas ao mercado possuindo um curto tempo de desenvolvimento. Tradicionalmente, abordagens de Engenharia Dirigida por Modelos ou MDE (do inglês, Model Driven Engineering) vem sendo adotadas, principalmente por que oferecem abstração através do uso de modelos e automação através de transformação de modelos, facilitando e acelerando o desenvolvimento [4]. Segundo um estudo realizado na Motorola, a MDE pode reduzir em até 70% o tempo de produção de software [5]. Entretanto o uso efetivo do paradigma MDE no desenvolvimento Android, requer uma abordagem dedicada para a modelagem dos aplicativos e ferramentas capazes de transformar modelos UML em código Android. Para resolver este problema, em [6], foi proposta uma abordagem para modelagem e geração de código. Entretanto esta abordagem não aplica técnicas de otimização de código, dessa forma, este artigo estende esta abordagem para a geração de código Android eficiente através da aplicação das boas práticas propostas pela Google. Nossa abordagem é demonstrada e os resultados de desempenho são discutidos através de um estudo de caso. Este artigo está organizado da seguinte forma. A Seção 2 apresenta a fundamentação teórica, enquanto a Seção 3 apresenta e discute trabalhos relacionados. Na seção 4, a abordagem proposta para geração de código eficiente é detalhada e o estudo de caso que demonstra resultados de seu emprego é apresentado na Seção 5. As conclusões do trabalho são discutidas na Seção 6.
3 2 Boas práticas Android A Google sugere uma série de Boas Práticas para o desenvolvimento de aplicativos Android. Estas boas práticas são dicas simples de programação que aplicadas aos hábitos de codificação proporcionam um melhor desempenho geral da aplicação. Esta seção introduz estas boas práticas bem como destaca o seu impacto no desempenho, segundo o estudo realizado pela Google em [3]. Uma das boas práticas indicadas pela Google é evitar a criação de objetos desnecessários, pois a criação destes é sempre custosa. A alocação de objetos em excesso faz com que a coleta de lixo seja realizada periodicamente, o que tem um impacto negativo no desempenho da aplicação. Outra prática sugerida é preferir o uso de métodos estáticos ao invés de virtuais. Desta forma, métodos que não irão acessar campos do objeto devem ser declarados como estáticos. De acordo com o estudo da Google, invocações estáticas serão de 15% a 20 % mais rápidas. Neste conjunto de boas práticas, é recomendado o uso de static final para constantes, pois ao usar a palavra reservada final na definição de constantes os acessos serão mais rápidos. Isso se deve ao fato da classe não requerer o método <clinit>, visto que constantes são armazenadas em um campo do arquivo.dex responsável pela inicialização das constantes. Porém, esta recomendação é válida somente para tipos primitivos e Strings constantes. Em linguagens orientadas a objeto como C++ e Java é comum o uso de getter para acessar atributos ao invés de acessá-los diretamente. Porém esta não é uma prática recomendável para Android, pois as chamadas a métodos virtuais são muito mais caras do que o acesso direto ao campo. Desta forma, é recomendado que o uso de getters e setters seja evitado. De acordo com a Google, o tempo para acessar um atributo diretamente é três vezes mais rápido do que através de um getter sem o recurso de JIT (Just-in-time) e cerca de sete vezes mais rápido com o uso do JIT. A sintaxe do for aprimorado ou for-each pode ser usada para definir coleções que implementam uma interface iterativa para Arrays. Com as coleções é alocado um iterador que faz chamadas a hashnext e next. De acordo com a Google o uso da sintaxe aprimorada do for em Arrays é três vezes mais rápido (com ou sem o uso de JIT) comparado com o uso do for com iterador explícito. É possível iterar uma matriz de três maneiras, como mostram os trechos de código abaixo. A maneira como zero itera a matriz é mais lenta, pois o JIT não otimiza a maneira de obter o comprimento da matriz a cada iteração do laço. A iteração usada
4 em one é mais rápida, pois utiliza variáveis locais e o comprimento da matriz oferece um beneficio de desempenho. A implementação da sintaxe aprimorada do for, introduzida no Java 1.5, realizada em two é a mais rápida em dispositivos sem JIT e indiferente de one para dispositivos com JIT. É possível iterar uma matriz de três maneiras, como mostra o trecho de código abaixo: Códigos com várias implementações de for static class Foo { intmsplat; Foo[] marray =... public void zero(){ int sum = 0; for (int i = 0; i<marray.length; ++i){ sum + = marray[i].msplat; public void one(){ int sum = 0; Foo[] localarray = marray; intlen = localarray.length; for (int i = 0; i<len; ++i){ sum + = localarray[i].msplat; public void two(){ int sum = 0; for( Foo : a ){ sum + = a.msplat; As boas práticas também indicam o uso de acesso do tipo pacote (package) ao invés do tipo privado (private) em classes internas privadas. Esta prática se aplica quando uma classe interna a outra (inner class) precisa acessar atributos da classe
5 externa. A máquina virtual considera o acesso direto da classe interna a membros privados da classe externa como sendo ilegal, porque são classes diferentes. Para evitar esse problema atributos e métodos que devem ser acessados por classes internas devem ter visibilidade do tipo pacote, indicada pelo modificador public, protected ou sem nenhum modificador [7]. Ao aplicar a prática sugerida, evita-se uma sobrecarga em aplicações que utilizam classes internas em pontos críticos de desempenho. Outra boa prática é evitar o uso de Ponto Flutuante, pois de acordo com a Google, o seu uso em dispositivos Android é cerca de duas vezes mais lento do que o uso de inteiros. 3 Trabalhos Relacionados Muitos trabalhos preocupam-se com a eficiência de aplicações para dispositivos móveis [8][9][10]. Em [8] os autores discutem a sobrecarga no desempenho induzida pelo uso da abstração em camadas para software embarcado, usando como plataforma alvo o Android. Em [9], um conjunto de benchmarks foram implementados de diferentes formas no Android e avaliados quanto ao desempenho. Os resultados mostraram uma sobrecarga do Java-Android comparado a implementações C rodando na mesma plataforma. Da mesma forma, em [10] são realizados experimentos com diferentes implementações de algoritmos e são analisados resultados de desempenho e energia consumida pelas implementações quando executadas no Android. Porém, nenhum destes trabalhos considera as boas práticas. Apenas em [11] o impacto destas práticas no desempenho do software foi avaliado através de experimentos. Como este ainda é um campo de atuação novo, há um número bastante reduzido de ferramentas que proveem a geração automática de código para dispositivos Android a partir de modelos de alto nível de abstração. A IBM recentemente adicionou à ferramenta Rational Rhapsody [12] um perfil para aplicações Android. No entanto, sua abordagem exige que a aplicação seja definida em um nível baixo de detalhe para que a geração de código seja realizada. Além da IBM, observam-se esforços da Google e da Eclipse. A Google propôs o App Inventor [13] e a Eclipse, o AndroMate [14], ambas focam na modelagem gráfica e geração para Android. No entanto, tanto o AndroMate como o App Inventor poderiam ser classificados como programação visual ao invés de orientados a modelos. Ainda deve-se ressaltar que nenhuma destas abordagens considera boas práticas ou inclui passos de otimização no momento da geração de código. Nossa abordagem difere-se das abordagens utilizadas por estas ferramentas, pois procura minimizar os detalhes que devem ser inseridos pelo projetista no modelo e aplica boas práticas automaticamente durante a geração de código, suportando assim a geração de código eficiente para a plataforma Android.
6 4 Geração de Código Android Eficiente A geração automática de código Android eficiente proposta neste trabalho baseia-se na aplicação das boas práticas propostas pela Google para dispositivos Android. Assim como proposto em [6], nossa abordagem gera código Java-Android a partir de modelos UML construídos usando suas notações padrão, sendo esta transformação suportada por uma ferramenta em desenvolvimento pelo grupo. Durante a geração de código, a ferramenta aplica as boas práticas, visando a obtenção de código otimizado para a plataforma Android, evitando que o projetista tenha que refatorar o código para incluir estas otimizações manualmente. Estas otimizações são opcionais de forma que o usuário pode escolher quais otimizações serão aplicadas, para assim observar os impactos destas otimizações de forma isolada. A entrada da ferramenta de geração de código é um modelo UML, composto de diagramas de classe e de sequência, construídos de acordo com a abordagem apresentada em [6]. O diagrama de classe oferece a visão estrutural, a partir da qual código estrutural pode ser gerado. Já os diagramas de sequência são usados na geração de código comportamental. A Seção 4.1 apresenta a geração estrutural de código eficiente para a plataforma Android, enquanto a geração comportamental é detalhada na Seção 4.2. Atualmente, nossa ferramenta implementa três das boas práticas sugeridas pelo Google. Destas, uma afeta apenas a geração estrutural, outra apenas a geração comportamental e outra modifica ambas as gerações. 4.1 Geração Estrutural Na geração de código estrutural, são geradas definições de atributos (nome, tipo e visibilidade), de métodos (nome, parâmetros e visibilidade) e importação de pacotes. Duas das boas práticas são aplicadas na geração do código estrutural. A primeira delas se refere a geração dos atributos e se baseia na boa prática que sugere o uso dos modificadores static e static final para constantes. Quando um atributo tem um valor de inicialização, este é classificado como constante pela ferramenta. Neste caso, a ferramenta aplica a boa prática, gerando a declaração com o modificador mais apropriado. Se a constante for do tipo primitivo ou String, é usado o static final, caso contrário, apenas o modificador static é usado. Esta boa prática traz benefícios na velocidade de acesso a estas constantes, proporcionando assim um melhor desempenho para o sistema, como discutido na Seção 2. A segunda boa prática aplicada na geração refere-se à definição e geração de métodos de acesso a atributos, os métodos getters e setters. Na primeira versão da ferramenta, sem foco na otimização, para todo o atributo era gerado um método getter
7 e um método setter, mesmo que estes métodos não estivessem explicitados no modelo da classe. No entanto, esta prática é contrária a uma das boas práticas do Google que propõe o acesso direto aos atributos sem métodos getters e setters como forma de melhorar o desempenho do código. A eliminação destes métodos pode requerer mudanças na visibilidade do atributo para permitir que o mesmo seja acessado diretamente, e também a eliminação da invocação do método de acesso. Desta forma, esta boa prática não afeta apenas a geração do código estrutural, mas também afeta a geração de código comportamental (discutida na Seção 4.2). Na geração estrutural, nossa ferramenta realiza a análise dos atributos e métodos de acesso descritos no modelo antes da geração propriamente dita do código. Caso seja identificado um atributo privado (private ou protect) para o qual métodos de acesso tenham sido definidos no modelo, a ferramenta irá gerar a definição do atributo como público (public) e não fará a definição dos métodos de acesso correspondentes. Para isto é necessário que o projetista siga a boa prática indicada para programação em geral, de utilizar nomes para métodos de acesso contendo o nome do atributo a ser acessado [15] com prefixo get ou set. 4.2 Geração Comportamental Na geração do código comportamental das aplicações Android, a aplicação da boa prática de eliminação de chamadas aos métodos getters e setters deve ser concluída. Para tal, a ferramenta deve analisar os diagramas de sequência para identificar onde são utilizados estes métodos de acesso, para posteriormente substituir a invocação do método por uma atribuição ou leitura do atributo. Neste trabalho, também propomos a aplicação da boa prática relativa à utilização da sintaxe do for apropriada, apresentada na Seção 2. Para aplicação desta boa prática, a ferramenta deve analisar os diagramas de sequência do modelo, com especial atenção naqueles onde um fragmento do tipo loop é usado, o qual representa uma iteração. A análise para determinar a melhor sintaxe do for considera o que está sendo utilizado dentro da estrutura de iteração.caso seja iterado uma coleção de objetos é indicado pelas boas práticas a utilização da sintaxe for-each, enquanto que para a manipulação de um simples vetor é indicado a utilização do for-lenght. Desta forma, com base nas características do modelo, a ferramenta escolhe a melhor sintaxe de acordo com as boas práticas para o uso do for apresentadas na Seção 2.
8 5 Estudo de Caso Para demonstrar a nossa abordagem bem como os resultados obtidos pelo uso das boas práticas, esta seção apresenta um estudo de caso. Neste estudo, primeiramente, a aplicação Snake é modelada em UML, seguindo a nossa abordagem de modelagem proposta em [6] e realizando a engenharia reversa do código original da aplicação. Posteriormente, este modelo é usado como entrada para a ferramenta GenCode, a qual gera o código a aplicação. A aplicação escolhida está disponível no site de apoio ao desenvolvedor Android [16]. Apesar de ser uma aplicação simples, ela permite a demonstração dos principais aspectos da abordagem, bem como apontar as melhorias alcançadas com a aplicação das boas práticas. Neste estudo é demonstrada a geração de trechos de código da aplicação, focando nos pontos do código onde as práticas foram aplicadas. Primeiramente, será demonstrada a aplicação da eliminação de getters e setters, que conforme explicado na Seção 4, é realizada pelas duas rotinas de geração de código, estrutural e comportamental. Após, será demonstrada a aplicação da boa prática do for. Para facilitar a visualização das melhorias aplicadas pela geração, o código original será comparado com o código automaticamente gerado pela ferramenta. O código gerado inclui a aplicação de boas práticas (em separado) e a comparação entre estes dois códigos permite observar o impacto das otimizações. Além disso, análises de desempenho também foram realizadas, permitindo a comparação entre os códigos. A Figura 1 ilustra a visão estática da aplicação, representada pelo diagrama de classes. Nesta figura são destacadas as classes Activity, View e Handler, pertencentes ao Android. A partir das informações obtidas neste diagrama, o código estrutural foi gerado. Como a eliminação de getters e setters foi habilitada, a ferramenta realizou a análise de atributos e de seus métodos de acesso. Esta busca identificou o método settextview da classe Snake, contexto onde a boa prática que evita getters e setters deveria ser aplicada. Abaixo, são apresentados os trechos do código original e do código gerado, após a captura e análise do diagrama. O código original define o atributo como privado (modificador private) e declara o método de acesso, bem como o corpo deste método. Já o código gerado automaticamente declara este atributo como público (usando o modificador public) e não faz a declaração do método settextview.
9 Fig. 1. Diagrama de classe, representação estrutural da aplicação Snake. Trecho de código original da aplicação Snake utilizando setter private TextView textview; public void settextview(textview textview) { this.textview = textview; Trecho de código da aplicação Snake utilizando a prática que evita getters e setters public TextView textview; Para a eliminação do método settextview, porém, a ferramenta realizou uma busca entre os diagramas de sequência a fim de identificar onde este método era invocado. Para então, substituir esta invocaçãopor uma atribuição. Sem a otimização, o código que seria gerado a partir do modelo comportamental, incluiria a invocação do método settextview(), conforme trecho de código abaixo. Trecho de código original da classe SnakeView, invocação do método de acesso msnakeview.settextview(findviewbyid(r.id.text)); Enquanto que com a aplicação da boa prática, a rotina de geração do código comportamental faz a busca pela invocação do método a ser eliminado e substitui a sua chamada pelo acesso direto ao atributo, gerando o trecho de código abaixo. Trecho de código da classe SnakeView, utilizando a prática que evita getters e setters msnakeview.textview = findviewbyid(r.id.text);
10 Incl CPU Time (ms) Para a comparação da eficiência do código gerado pela nossa ferramenta com o código original do aplicativo, foi utilizada a ferramenta DDMS (Dalvik Debug Monitor Server) [17], que fornece resultados relativos ao tempo de execução de códigos Android. A DDMS gera CPU Include Time, o qual considera o tempo de execução do método analisado incluindo o tempo dos métodos chamados por este, e o CPU Exclude Time, que por sua vez, considera apenas o tempo de execução do método em análise. Todos os experimentos realizados e discutidos nesta seção foram repetidos 30 vezes, e a partir dos tempos de execução obtidos, uma média foi calculada, a qual é utilizada nas comparações realizadas. Os resultados obtidos pela análise de desempenho dos dois códigos são apresentados no gráfico ilustrado na Fig. 2, onde o eixo y representa o tempo da CPU em milissegundos (ms). Esta análise de desempenho considera o CPU Include Time fornecido pela DDMS, pois o custo da chamada do método de acesso deve ser contabilizado, neste caso. O tempo médio de execução do fragmento do código original (Fig. 2) foi de 0,8444 ms e o desvio padrão foi de 0,0276 ms, enquanto o tempo de execução do código gerado foi de 0,8030 ms e o desvio padrão de 0,30 ms. Foi utilizado o teste estatístico t de student para comparação de médias, sendo a diferença entre as médias considerada estatisticamente significativa. Neste gráfico, observa-se que o tempo de execução foi reduzido em 4,9029% pela aplicação da boa prática que evita o uso de getters e setters, o que demostra o impacto real da utilização desta boa prática. Comparação Com Setter - Sem Setter 0,88 0,86 0,84 0,82 0,8 0,78 0,76 0,74 0,72 Com Setter Sem Setter Fig. 2. Gráfico representando a diferença de desempenho na utilização de métodos de acesso. Neste estudo de caso, a aplicação da boa prática da escolha da sintaxe do for também é demonstrada. Esta boa prática é tratada apenas pela rotina de geração de código comportamental. Durante esta rotina, laços devem ser identificados nos diagramas de sequência. Para demonstrar sua aplicação é usada a representação de
11 uma pequena parcela do modelo comportamental do Snake ilustrado na Figura 3. Este diagrama de sequência se refere ao detalhamento do método enqueuedirection proveniente da classe SnakeView. Neste diagrama pode-se observar o uso de um laço de iteração no qual o objeto mnextdirectionarray é iterado. O laço é representado pelo fragmento loop. Outro fragmento interno a este, do tipo opt, representa uma condicional, que restringe a invocação do método add(direction). Fig. 3. Diagrama de sequência do método enqueuedirection da classe SnakeView. Com base nas informações contidas neste diagrama, a ferramenta aplica a boa prática e determina qual a sintaxe apropriada para a implementação da manipulação do Array mnextdirectionarray. Neste caso, a ferramenta escolhe o uso do for-each, devido ao uso de um Array junto a um laço. Abaixo são apresentados os fragmentosreferente ao laço. No código original o for normal é usado, enquanto no código gerado pela ferramenta, o for-each é usado. Trecho de código original da aplicação Snake, utilizando a sintaxe normal do for private void enqueuedirection(int direction) { int c=mnextdirectionarray.size(); for (int i=0; i<c; i++) { if (mnextdirectionarray.get(i)==0) { mnextdirectionarray.add(i,direction); break;
12 Excl CPu Time (ms) Trecho de código gerado aplicando a boa prática do for-each private void enqueuedirection(int direction) { for (Integer c : mnextdirectionarray) { if (c.equals(0)) { mnextdirectionarray.add(direction); break; Para demonstrar a melhoria em desempenho obtida pela aplicação desta otimização, foram realizados experimentos após a geração do código (considerando apenas esta otimização). Os resultados de desempenho do código original e código gerado são ilustrados no gráfico da Fig. 4. A análise de desempenho neste caso, considera o CPU Exclude Time fornecido pela DDMS, pois apenas o custo do laço deve ser contabilizado, não incluindo o custo da chamada do método adddirection(). Pode-se observar que o tempo médio de execução com o for normal (código original) foi de 59,0882 mscom desvio padrão de 1,5526 ms, enquanto o resultado utilizando o for-each (código gerado), foi de 12,4501ms, tendo o desvio padrão de 0,5249 ms. Valores médios de tempo de execução foram usados nestacomparação e a diferença entre as médias também foi considerada estatisticamente significativa. Comparação For Normal - For Each For Normal For - Each Fig. 4. Desempenho obtido pelo for normal e pelo for-each 6 Conclusões Este artigo apresenta uma abordagem MDE para geração automática de código Android eficiente a partir de modelos UML. A geração de código aplica
13 automaticamente boas práticas do Google, com o objetivo de melhorar o desempenho do código gerado. Esta geração foi prototipada em uma ferramenta de geração de código chamada GenCode [6]. A automatização destas otimizações evita que o projetista tenha de estudar as boas práticas e refatorar o código implementado para que este faça uso destas práticas e, portanto, tenha o desempenho melhorado. A abordagem é demonstrada com um estudo de caso, que também é usado para evidenciar as melhorias no desempenho obtidas com a geração de código proposta. Além da eficiência do código gerado, outros benefícios podem ser vinculados ao emprego desta abordagem, dentre estes destaca-se a abstração oferecida pelo uso de modelos UML e a automação provida pela ferramenta de geração. Além disso, a abordagem proposta utiliza notações padrão da UML, o que evita a necessidade do uso de uma ferramenta de modelagem específica. O uso do diagrama de sequência limita a geração de código comportamental proposta até o nível de chamada de métodos, que é o que pode ser expresso neste diagrama. Para obter código completo, outros diagramas precisam ser considerados na geração de código. Atualmente, nossa ferramenta implementa três das boas práticas sugeridas pelo Google. Como trabalhos futuros, pretendemos analisar a viabilidade de estender esta abordagem para outras boas práticas, priorizando aquelas que apresentam maior impacto no desempenho. Referências 1.Google. (2012) Fundamentos de uma aplicação Android. Disponível em: Acesso em: Dezembro, Kraemer, F. A. et al., Engineering android applications based on UML activities, Proceedings of the 14th international conference on Model driven engineering languages and systems (MODELS 11), Jon Whittle, Tony Clark, and Thomas Khne (Eds.). Springer- Verlag, Berlin, Heidelberg, pp , Google. (2012) Boas práticas para performance. Disponível em: Acesso em: Dezembro, Selic, B. Models, software models, and UML, UML for real: Design of embedded real time systems, vol. Boston: Kluwer Academic Publishers, pp. 1 16, Weigert, T. Practical experiences in using model-driven engineering to develop trustworthy, Computing Systems. IEEE International Conference on Sensor Networks, Ubiquitous, and Trustworthy Computing, vol. 1 (SUTC 06), 2011.
14 6.Parada, A., Brisolara, L.: A model driven approach for Android application development. SBESC, Brazilian Symposium on Computing System Engineering, Natal, Oracle. (2012) Controlling Access to Members of a Class. Disponível em: Acesso em: Dezembro, Camara, V. B., Corrêa, U. B. Performance Overhead from the Usage of Software Abstraction on Complex Embedded Systems. SBESC, Brazilian Symposium on Computing System Engineering, Florianópolis, Batyuk, L., et al. (2009) Developing and Benchmarking Native Linux Applications on Android in Mobile Wireless Middleware, Operating Systems, and Applications Vieira et al. Análise de desempenho e consumo energético para aplicações embarcadas na Plataforma Android. SBESC, Brazilian Symposiumon Computing System Engineering, Natal, Beckmann, M. Avaliação das Boas Práticas de Codificação para Plataforma Android. Trabalho de conclusão de curso. UFPel. 12.IBM. (2012) Rational Rhapsody. Disponível em: Acesso em: Dezembro, MIT. (2012) App Inventor. Disponível em: Acesso em: Dezembro, Telematica Instituut. (2012) The android modeller and code generator. Disponível em: Acesso em: Dezembro, Martin, R..: Clean Code: A hand book of Agile Software Craftsmanship,, Pearson, Boston, (2009). 16.Google. (2012) Exemplos de Aplicações Android em: Acesso em: Dezembro, Google. (2012) Using DDMS. Disponível em: Acesso em: Dezembro, 2012
Geração Automática de Código Android Eficiente a partir de Modelos UML
Geração Automática de Código Android Eficiente a partir de Modelos UML Abilio Gambim Parada Aline Rodrigues Tonini Lisane Brisolara de Brisolara Grupo de Arquiteturas e Circuitos Integrados - GACI Universidade
Orientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Java. Marcio de Carvalho Victorino www.dominandoti.eng.br
Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a
3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:
Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Revisão dos conceitos básicos O processador é o componente vital do sistema de
Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental
CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS Elicitação Ciclo de Vida Clássico ou Convencional O Modelo Cascata Análise Ana Paula Terra Bacelo Blois Implementação Material Adaptado do Prof. Marcelo Yamaguti
Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.
1 Introdução aos Sistemas de Informação 2002 Aula 4 - Desenvolvimento de software e seus paradigmas Paradigmas de Desenvolvimento de Software Pode-se considerar 3 tipos de paradigmas que norteiam a atividade
Uma abordagem para Engenharia de Requisitos no Domínio de Software Embarcado
Workshop on Requirements Engineering WER 2013 Uma abordagem para Engenharia de Requisitos no Domínio de Software Embarcado Milena Marques, Eliane Siegert, Lisane Brisolara Universidade Federal de Pelotas
UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de Software AULA NÚMERO: 10 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir os conceitos de coesão e acoplamento. DESENVOLVIMENTO Projetar
5 Mecanismo de seleção de componentes
Mecanismo de seleção de componentes 50 5 Mecanismo de seleção de componentes O Kaluana Original, apresentado em detalhes no capítulo 3 deste trabalho, é um middleware que facilita a construção de aplicações
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software
PROCESSO DE DESENVOLVIMENTO DE SOFTWARE Introdução Modelos de Processo de Desenvolvimento de Software Os modelos de processos de desenvolvimento de software surgiram pela necessidade de dar resposta às
Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1
Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de
Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite [email protected] (81 )9801-6619
Tópicos em Engenharia de Software (Optativa III) AULA 2 Prof. Andrêza Leite [email protected] (81 )9801-6619 Engenharia de Software Objetivo da aula Depois desta aula você terá uma revisão sobre o
Programação de Computadores - I. Profª Beatriz Profº Israel
Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo
Coleções. Page 1. Coleções. Prof. Anderson Augustinho Uniandrade
Page 1 podem ser comparadas com arrays, visto que também apresentam a capacidade de armazenar referências para vários objetos. Entretanto, as coleções apresentam uma gama de funcionalidades bem maior do
Modelos de Sistema. 2007 by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.
Modelos de Sistema Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1 Objetivos Explicar por que o contexto de um sistema deve ser modelado como parte do processo de RE Descrever
ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS
ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o
Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc [email protected]
Engenharia de Software: conceitos e aplicações Prof. Tiago Eugenio de Melo, MSc [email protected] 1 Objetivos da aula Apresentar os conceitos de Engenharia de Software e explicar a sua importância.
10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO
10 DICAS DE TECNOLOGIA PARA AUMENTAR SUA PRODUTIVIDADE NO TRABALHO UMA DAS GRANDES FUNÇÕES DA TECNOLOGIA É A DE FACILITAR A VIDA DO HOMEM, SEJA NA VIDA PESSOAL OU CORPORATIVA. ATRAVÉS DELA, ELE CONSEGUE
O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE
O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil [email protected], [email protected] Resumo. Este artigo
DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID
DESENVOLVIMENTO DE UM APLICATIVO DO TIPO SECRETÁRIO VIRTUAL PARA A PLATAFORMA ANDROID Maik Olher CHAVES 1 ; Daniela Costa Terra 2. 1 Graduado no curso de Tecnologia em Análise e Desenvolvimento de Sistemas
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. [email protected]
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. [email protected] ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)
Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem
Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios
Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana
Qualidade de Software
Qualidade de Software O software é algo abstrato, pois são as instruções que quando executadas atingem o propósito desejado no sistema computacional. (Algoritmo). As principais características são: Complexidade:
UML - Unified Modeling Language
UML - Unified Modeling Language Casos de Uso Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 24 de abril
Introdução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Apesar de existirem diversas implementações de MVC, em linhas gerais, o fluxo funciona geralmente da seguinte forma:
1 Introdução A utilização de frameworks como base para a construção de aplicativos tem sido adotada pelos desenvolvedores com três objetivos básicos. Primeiramente para adotar um padrão de projeto que
Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo
Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: ([email protected]) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de
3. O NIVEL DA LINGUAGEM DE MONTAGEM
3. O NIVEL DA LINGUAGEM DE MONTAGEM Nas aulas anteriores tivemos a oportunidade de discutir dois diferentes níveis presentes na maioria dos computadores atuais. Nesta aula dedica-se a outro nível que também
Engenharia de Software III
Engenharia de Software III Casos de uso http://dl.dropbox.com/u/3025380/es3/aula6.pdf ([email protected]) 09/09/2010 O que são casos de uso? Um caso de uso procura documentar as ações necessárias,
Entendendo como funciona o NAT
Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços
Rock In Rio - Lisboa
Curso de Engenharia Informática Industrial Rock In Rio - Lisboa Elaborado por: Ano Lectivo: 2004/05 Tiago Costa N.º 4917 Turma: C Gustavo Graça Patrício N.º 4757 Turma: C Docente: Professora Maria Estalagem
2 Diagrama de Caso de Uso
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Caso de Uso (Use Case) Autoria:Aristófanes Corrêa
Programação Funcional. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2015.
Programação Funcional Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2015.1 1/13 1 Paradigmas de programação 2 Programação funcional 3 A Crise
Modelo Cascata ou Clássico
Modelo Cascata ou Clássico INTRODUÇÃO O modelo clássico ou cascata, que também é conhecido por abordagem top-down, foi proposto por Royce em 1970. Até meados da década de 1980 foi o único modelo com aceitação
2 Engenharia de Software
20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite
Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.
Processos de Software Objetivos Apresentar os modelos de processo de software Conjunto coerente de atividades para especificar, projetar, implementar e testar s de software Descrever os diferentes modelos
5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância
5 Framework para coordenação e mediação de Web Services para ambientes de aprendizado à distância O capítulo anterior apresentou uma discussão sobre a inclusão dos chamados learning services no processo
ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE
ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE Fabiana Gomes Marinho Faculdade Lourenço Filho Resumo: Na UML, a modelagem conceitual dos dados é descrita pelo diagrama de classes, que através
AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: [email protected] CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0
AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: [email protected] CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0 SUMÁRIO 1 Conceitos Básicos... 3 1.1 O que é Software?... 3 1.2 Situações Críticas no desenvolvimento
BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:
BRAlarmExpert Software para Gerenciamento de Alarmes A TriSolutions conta com um produto diferenciado para gerenciamento de alarmes que é totalmente flexível e amigável. O software BRAlarmExpert é uma
Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi
5 Conclusão Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi permitir que scripts Lua instanciem e usem
Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)
Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,
ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.
Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto
PROFESSOR: CRISTIANO MARIOTTI
PROFESSOR: CRISTIANO MARIOTTI Conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto de software; Considerado um dos principais mecanismos para se obter software de qualidade
Sobre o Professor Dr. Sylvio Barbon Junior
5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr [email protected] 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005
ISHIFT: Informação em Movimento
ISHIFT: Informação em Movimento Contato: www.ishift.com.br +55 51 32798159 [email protected] Somos uma empresa completa de produtos e serviços ligados à tecnologia, que procura apresentar soluções
DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES
DESENVOLVIMENTO DE APLICATIVO MÓVEL PARA AUXÍLIO NA PREVENÇÃO DE TRAGÉDIAS EM DECORRÊNCIA DE ENCHENTES Autores: Luciano GONÇALVES JUNIOR, Natália Maria Karmierczak DA SILVA, Paulo César Rodacki GOMES,
1.6. Tratamento de Exceções
Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER
Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW
Ciclo de Vida Aula 2 Revisão 1 Processo de Desenvolvimento de Software 1 O Processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto
Análise e Projeto Orientados por Objetos
Análise e Projeto Orientados por Objetos Aula 02 Análise e Projeto OO Edirlei Soares de Lima Análise A análise modela o problema e consiste das atividades necessárias para entender
O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no
1.1 RATIONAL UNIFIED PROCESS (RUP) O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no processo que atende pelo nome de Processo Unificado (ou UP do inglês Unified
Tópicos em Engenharia de Computação
Tópicos em Engenharia de Computação Introdução / Revisão UML e POO (JAVA) Prof. Ivan Prof. Zagari UML Linguagem Unificada. Não é metodologia, processo ou método. Versão atual 2.0 3 categorias de Diagramas
Arquiteturas RISC. (Reduced Instructions Set Computers)
Arquiteturas RISC (Reduced Instructions Set Computers) 1 INOVAÇÕES DESDE O SURGIMENTO DO COMPU- TADOR DE PROGRAMA ARMAZENADO (1950)! O conceito de família: desacoplamento da arquitetura de uma máquina
Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.
1 Diagrama de Classes Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. Um dos objetivos do diagrama de classes é definir a base para
Projeto de Software Orientado a Objeto
Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software
Conceitos de Banco de Dados
Conceitos de Banco de Dados Autor: Luiz Antonio Junior 1 INTRODUÇÃO Objetivos Introduzir conceitos básicos de Modelo de dados Introduzir conceitos básicos de Banco de dados Capacitar o aluno a construir
UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação
SOFT DISCIPLINA: Engenharia de software AULA NÚMERO: 08 DATA: / / PROFESSOR: Andrey APRESENTAÇÃO O objetivo desta aula é apresentar e discutir conceitos relacionados a modelos e especificações. Nesta aula
Introdução ao Android
Introdução ao Android André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida Parte 1 Conhecendo o Sistema e Primeiro Programa Roteiro Pré-requisitos Conceitos Básicos Configurando o Ambiente
Fundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Professor: João Fábio de Oliveira [email protected] (41) 9911-3030 Objetivo: Apresentar o que são os Sistemas Operacionais, seu funcionamento, o que eles fazem,
Aula 26: Arquiteturas RISC vs. CISC
Aula 26: Arquiteturas RISC vs CISC Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Arquiteturas RISC vs CISC FAC 1 / 33 Revisão Diego Passos
REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br [email protected]
REVISÃO ENGENHARIA DO SOFTWARE Isac Aguiar isacaguiar.com.br [email protected] Software Sequencia de Instruções a serem seguidas ou executadas Dados e rotinas desenvolvidos por computadores Programas
Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA
Desenvolvendo uma Arquitetura de Componentes Orientada a Serviço SCA RESUMO Ricardo Della Libera Marzochi A introdução ao Service Component Architecture (SCA) diz respeito ao estudo dos principais fundamentos
Feature-Driven Development
FDD Feature-Driven Development Descrição dos Processos Requisitos Concepção e Planejamento Mais forma que conteúdo Desenvolver um Modelo Abrangente Construir a Lista de Features Planejar por
Lógica de Programação
Lógica de Programação Unidade 20 ArrayList: Operações de Busca Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 TIPOS DE BUSCAS... 3 BUSCA ESPECÍFICA... 3 BUSCA ABRANGENTE... 3 PROCEDIMENTO DE BUSCA...
Modelagemde Software Orientadaa Objetos com UML
Modelagemde Software Orientadaa Objetos com UML André Maués Brabo Pereira Departamento de Engenharia Civil Universidade Federal Fluminense Colaborando para a disciplina CIV 2802 Sistemas Gráficos para
Wilson Moraes Góes. Novatec
Wilson Moraes Góes Novatec Copyright 2014 Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo,
MINISTÉRIO DA CIÊNCIA E TECNOLOGIA MCT MUSEU PARAENSE EMÍLIO GOELDI MPEG
MINISTÉRIO DA CIÊNCIA E TECNOLOGIA MCT MUSEU PARAENSE EMÍLIO GOELDI MPEG PROJETO: DESENVOLVIMENTO DE UMA PROPOSTA DE REESTRUTURAÇÃO DO SITE DA ESTAÇÃO CIENTÍFICA FERREIRA PENNA, VISANDO ATENDER AOS PADRÕES
IW10. Rev.: 02. Especificações Técnicas
IW10 Rev.: 02 Especificações Técnicas Sumário 1. INTRODUÇÃO... 1 2. COMPOSIÇÃO DO IW10... 2 2.1 Placa Principal... 2 2.2 Módulos de Sensores... 5 3. APLICAÇÕES... 6 3.1 Monitoramento Local... 7 3.2 Monitoramento
Extração de Requisitos
Extração de Requisitos Extração de requisitos é o processo de transformação das idéias que estão na mente dos usuários (a entrada) em um documento formal (saída). Pode se entender também como o processo
EMENTA DO CURSO. Tópicos:
EMENTA DO CURSO O Curso Preparatório para a Certificação Oracle Certified Professional, Java SE 6 Programmer (Java Básico) será dividido em 2 módulos e deverá ter os seguintes objetivos e conter os seguintes
Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki
Prevayler Perola André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki Prevayler Prevayler é a implementação em Java do conceito de Prevalência. É um framework que prega uma JVM invulnerável
ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS
ENGENHARIA DE SOFTWARE DESENVOLVIMENTO EM CAMADAS Uma estrutura para um projeto arquitetural de software pode ser elaborada usando camadas e partições. Uma camada é um subsistema que adiciona valor a subsistemas
2 echo "PHP e outros.";
PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento
O Processo Unificado: Captura de requisitos
O Processo Unificado: Captura de requisitos Itana Gimenes Graduação em Informática 2008 Captura de Requisitos Modelagem do negócio: Visão de negócios Modelo de objetos de negócio de negócio Especificação
MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS O termo metodologia não possui uma definição amplamente aceita, sendo entendido na maioria das vezes como um conjunto de passos e procedimentos que
Projeto de Sistemas I
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo Projeto de Sistemas I Professora: Kelly de Paula Cunha E-mail:[email protected] Requisitos: base para todo projeto, definindo o
Requisitos de Software
Requisitos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama [email protected] Slides originais elaborados por Ian Sommerville e adaptado pelos professores Márcio Cornélio,
UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS
UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS PROFESSOR: CARLOS BECKER WESTPHALL Terceiro Trabalho
3.1 Definições Uma classe é a descrição de um tipo de objeto.
Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:
ISO/IEC 12207: Gerência de Configuração
ISO/IEC 12207: Gerência de Configuração Durante o processo de desenvolvimento de um software, é produzida uma grande quantidade de itens de informação que podem ser alterados durante o processo Para que
Laboratório de Redes. Professora Marcela Santos [email protected]
Laboratório de Redes Professora Marcela Santos [email protected] Active Directory (AD) Samba Máquina virtual Criação de uma máquina virtual Instalação do Windows Server O Active Directory (AD) é um
Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional
Introdução à Linguagem JAVA Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação Laboratório de Visão Computacional Vantagens do Java Independência de plataforma; Sintaxe semelhante às linguagens
Fábrica de Software 29/04/2015
Fábrica de Software 29/04/2015 Crise do Software Fábrica de Software Analogias costumam ser usadas para tentar entender melhor algo ou alguma coisa. A idéia é simples: compara-se o conceito que não se
Introdução à Engenharia de Software
Introdução à Engenharia de Software Professor: Rômulo César [email protected] www.romulocesar.com.br Imagem Clássica Objetivo da aula Depois desta aula você terá uma visão sobre o que é a engenharia
Introdução à Programação de Computadores
1. Objetivos Introdução à Programação de Computadores Nesta seção, vamos discutir os componentes básicos de um computador, tanto em relação a hardware como a software. Também veremos uma pequena introdução
ENGENHARIA DE SOFTWARE I
ENGENHARIA DE SOFTWARE I Prof. Cássio Huggentobler de Costa [[email protected]] Twitter: www.twitter.com/cassiocosta_ Agenda da Aula (002) Metodologias de Desenvolvimento de Softwares Métodos Ágeis
4 O Workflow e a Máquina de Regras
4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu
Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS 5312 1
Engenharia de Software Parte I Introdução Metodologias para o Desenvolvimento de Sistemas DAS 5312 1 Mitos do Desenvolvimento de Software A declaração de objetivos é suficiente para se construir um software.
Princípios de Linhas de Produtos de Software. Prof. Alberto Costa Neto [email protected]
Princípios de Linhas de Produtos de Software Prof. Alberto Costa Neto [email protected] Surgimento das Linhas de Produtos Inicialmente produtos eram feitos artesanalmente Mas... Nº de pessoas que poderiam
Engenharia de Domínio baseada na Reengenharia de Sistemas Legados
1021 X Salão de Iniciação Científica PUCRS Engenharia de Domínio baseada na Reengenharia de Sistemas Legados Cássia Zottis¹, Profa. Dra. Ana Paula Terra Bacelo 1 (orientadora) 1 Faculdade de Informática,
Guia de Fatores de Qualidade de OO e Java
Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.
Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho
20 Capítulo 3 Avaliação de Desempenho Este capítulo aborda como medir, informar e documentar aspectos relativos ao desempenho de um computador. Além disso, descreve os principais fatores que influenciam
Profº. Enrique Pimentel Leite de Oliveira
Profº. Enrique Pimentel Leite de Oliveira O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam
UML Aspectos de projetos em Diagramas de classes
UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada
