Curso de Desenvolvimento de software com UML 2.0 – Do Básico ao Avançado.

admin | 17 de agosto de 2010 | Comments (0)
Curso de Desenvolvimento de software com UML 2.0 – Do Básico ao Avançado.

Aprenda a desenvolver softwares de qualidade com UML – do básico ao avançado. A UML (Unified Modeling Language) é uma ferramenta necessária para líderes de projeto, analistas de sistemas, analistas de negócios, programadores, administradores de banco de dados, Web designers e todos aqueles que são envolvidos com a qualidade em software. A UML surgiu devido à necessidade de uma padronização que o "mundo" da engenharia de software buscava há anos para a construção de softwares certos e no prazo.

Este curso apresenta, de maneira prática e já testada, o que é, para que serve e como usar os diagramas da UML 2.0, indo do básico ao avançado.

As aulas interativas são realizadas em um ambiente de treinamento online, que inclui áudio, vídeo, chat, slides e interatividade real entre professores e alunos.

Conteúdo programático

O objetivo do curso é apresentar os fundamentos e conceitos da UML em caráter estático e dinâmico de forma prática e objetiva, mostrando quando utilizar a UML, como projetar um software com UML, o dia a dia com a UML, quando utilizar cada diagrama, dicas de uso, modelo e modelação, estereótipos, restrições, diagrama de caso de uso, diagrama de pacotes, diagrama de atividades, diagrama de classes, diagrama de colaboração, diagrama de estado, diagrama de tempo, diagrama de objetos, diagrama de interação, diagrama de sequências, diagramas fisícos, diagramas de componentes, diagrama de implantação, diagrama de estrutura compostas, associação, extensão, inclusão, transições, desvios, separação, união, thread, concorrência, multiplicidade, herança, papéis, frozen, eventos, nó, conectores, portas, colaborações, apresentar exercícios de fixação, casos reais e servir de base para a certificação UML Fundamental OMG.

  • História da UML.
  • Software de Qualidade.
  • Introdução a Orientação a Objetos.
  • Documentos iniciais de um software.
  • Levantamento de requisitos.
  • Diagrama de Casos de Uso – Modelagem de Requisitos.
  • Diagrama de Classes – Modelos Conceitual e de Domínio.
  • Mapeamento de Classes em Tabelas Relacionais.
  • Diagrama de Sequência.
  • Diagrama de Estado.
  • Banco de dados – MER e DER.
  • Diagrama de Pacotes.
  • Diagrama de Atividade.
  • Diagrama de componentes e implantação.
  • Diagrama de objetos.
  • Diagrama de Comunicação – Colaboração.
  • Timing Diagram.
  • Diagrama de Interação.
  • Composite Structure Diagram.
  • Métricas de caso de uso.

Todos os itens do curso são acompanhados de exercícios praticos usando exemplos reais. Ao todo são 30 horas de curso, divido em 2 aulas semanais ao vivo e em tempo real, utilizando a ferramenta CASE Enterprise Architect. Ao final do curso os alunos, com no mínimo 70% de participação, receberão seus certificados.

A quem se destina o curso?

Líderes de projeto, analistas de sistemas, analistas de negócios, programadores, administradores de banco de dados, Web designers e todos aqueles que são envolvidos com a qualidade em software.

Após o término deste treinamento o profissional estará apto a:

  • Compreender os conceitos da orientação a objetos;
  • Modelar os requisitos do sistema por meio do diagrama de casos de uso;
  • Criar os modelos conceituais e de domínio do sistema por meio do diagrama de classes;
  • Mapear classes em tabelas relacionais;
  • Modelar processos de software por meio dos diagramas de sequência, máquina de estados e atividade;
  • Compreender a funcionamento básico-intermediário de uma ferramenta CASE.

Pré-requisitos

Para o pleno aproveitamento do curso de Desenvolvimento de Software com UML 2.0 – Do básico ao avançado, é necessário que o aluno possua os seguintes pré-requisitos técnicos:

  • Conhecimentos intermediários de qualquer linguagem Orientada a Objetos;
  • Conhecimentos intermediários em qualquer banco de dados SGDB.

Sobre o Professor

Ramos de Souza Janones é Engenheiro de Software e Publicitário. E sócio-diretor do portal Ramos da Informática, autor dos livros "Delphi com Oracle", "Relatórios com Rave Report", "Criando Treinamentos Multimídia" e autor do curso em CD Multimídia e DVD "Sucesso com Software". Trabalha com desenvolvimento de software desde 1993.

Como é o método de ensino?

Um método de ensino para que você aproveite ao máximo nossos treinamentos

As aulas interativas serão realizadas em um ambiente real de treinamento online (Treina TOM), com áudio, vídeo, chat, slides, codebox, compartilhamento de telas e outros recursos para maior interatividade entre os participantes e o instrutor. Todos os alunos poderão opinar e questionar simultaneamente.

O Treina Tom necessita somente do plugin Flash Player, na versão 10 ou superior. Além disso, para maior proveito do curso, é altamente recomendado conexão banda larga com pelo menos 512kbps. O participante precisará de fone de ouvido com microfone para uma melhor comunicação.

O sistema de ensino necessita de navegadores modernos, como Mozilla Firefox, Apple Safari, Google Chrome ou similar. Internet Explorer 7 ou superior também estão na lista.

Se possuir firewall, as portas 1935 e 80 devem estar liberadas.

Dúvidas?

Se você possui qualquer dúvida quanto ao conteúdo programático dos cursos ou sobre como funcionam os cursos a distância, não hesite em perguntar na nossa página de contato ou deixe um recado nos comentários.

Faça sua matrícula no curso

  • Até o dia 17/09 – R$ 290,00.
  • Dia 18/09 em diante – 350,00.

Inicio das aulas: 18/10. Aulas todas segundas e quartas das 19:00 às 21:00.

Carga horária: 36 horas.

A matrícula é feita através do PagSeguro. Faça sua matrícula clicando o botão a seguir:

 

Read More

Qualidade de Software: Uma questão de eficiência.

admin | 20 de agosto de 2010 | Comments (0)
Qualidade de Software: Uma questão de eficiência.

Por Ramos de Souza Janones.

Você sabia que, a grande maioria das empresas de software no Brasil gasta 70% do tempo de desenvolvimento corrigindo erros, ao invés de inovar e desenvolver novas soluções?

É um trabalho de reescrever códigos ao invés de criar novos códigos, inovar, criar novas soluções. Existem empresas que já estão na versão 5 de seu software, mas tem clientes que ainda usam a versão 3, porque os clientes morrem de medo de atualizar, por causa dos históricos de erros em novas versões – eles preferem os problemas já conhecidos. Empresas que levam o software ao cliente e uma tela não funciona, ou uma correção de um problema que afetou outro lugar no sistema e uma infinidade de questões, aqui vamos ilustrar apenas algumas:

Não existem requisitos ou documentação.

Geralmente desenvolvedores não fazem a tarefa de casa levantando os requisitos de software, já começam a escrever o código conforme é pedido. Ou, pior, não fazem as documentações necessárias de análise antes do desenvolvimento de um software. Isso causa diversos problemas:

  • Quando o desenvolvedor desconhece os requisitos, ele provavelmente voltará a reescrever um código que já foi escrito, pela falta de análise, desordem, descaso por não levantar os requisitos.
  • Às vezes pode até haver requisitos, mas numa equipe cada desenvolvedor pode interpretar os requisitos de uma forma diferente.
  • Requisitos mal levantados ou mal escritos por falta de conhecimento ou experiência.
  • Falta de uma documentação do software.
  • Documentação mal elaborada.

Quando há a falta de documentação o serviço de software fica complicado em diversos sentidos: há uma grande dificuldade de encontrar mão de obra especializada, e quando encontram, devido à falta de documentação, os contratados levam meses para conhecer o software da empresa, afinal, o conhecimento está na cabeça de alguns; é difícil fazer teste de software para garantir um menor risco de erros; o desenvolvimento de software é comprometido aumentando as chances de erros do software. Estes são apenas alguns exemplos.

Não existe a fase de projeto de software

Simplesmente levantam-se rapidamente os requisitos e inicia o desenvolvimento, sem uma analise e projeto. Isso leva a falta de documentação e inicio de vários problemas de, no futuro, ter que reescrever códigos com erro, além de dificultar para a equipe de testes a análise do software.

Controle de mudanças e de versões inadequadas (ou inexistentes)

Não há um controle do que foi mudado, um muda o banco de dados sem comunicar e interferem outros módulos do software. Não há uso de controle de versões. O que é um erro. Há diversas ferramentas que fazem este controle, como o CVS.

Foco na entrega

Muitos pensam em entregar o mais rápido o software, sem se preocupar com a qualidade. Isso faz o software voltar com diversos erros encontrados, muitas vezes pelos clientes, o que é péssimo. É melhor colocar um prazo real e entregar com qualidade, que correr para entregar rápido. Há empresas que eliminam a análise de documentação do projeto em nome de "produtividade", mas esta suposta "produtividade" é apenas ilusória.

Inexistência de um time de testes

Geralmente quem faz os testes são os desenvolvedores. Isso é um erro. Eles seguem uma lógica que é diferente da lógica de usuários finais. Ou quando tem uma equipe de testes, é a secretária, o office-boy, ou outros funcionários da empresa que não fazem um teste correto. Ou a falta de ferramentas de automação de testes. Ou o teste é realizado pelos próprios clientes, o que é pior.

Time de testes focado em testes superficiais

Quando há, como foi citado no item anterior, não utilizam ferramentas de automação de testes, de ferramentas de gestão de testes, de gestão de defeitos, etc. Fazem aquele teste de usuário, mesmo assim superficial, não fazem teste do banco de dados, do desempenho do sistema, de análise do código, não catalogam os defeitos em níveis de defeitos, não criam regras de mensagens de erros para ajudar ao usuário a contornar os possíveis erros, etc. Hoje montar uma equipe de testes é importante, se estuda muito teste de software, são raros os profissionais especializados e são muito bem remunerados.

Desenvolvimento reativo

O desenvolvimento é focado na correção de erros, ao invés da evolução do software ou novas soluções. Isso devido aos fatores já mencionados.

O teste e a qualidade de software hoje em dia são tão importantes e é um assunto muito discutido no mundo todo e já há alguns anos no Brasil, porque hoje tudo depende de software: o piloto de avião para navegar, sistemas de pagamentos de contas, sistemas bancários, enfim, uma afinidade de softwares que todos nós dependemos. Um erro pode colocar a vida de pessoas em risco, perdas de negócio e produtividade, prejuízos financeiros, comprometimento da reputação da empresa, etc. Vemos quase que diariamente noticias de empresas prejudicadas devido a erros em softwares. 

Hoje softwares se comunicam com tudo: WebService de nota fiscal eletrônica, PAD, celulares, internet, rede, etc. Devem se portar para os mais diversos sistemas operacionais, os mais diversos browsers, e tudo isso leva a uma maior complexidade, não apenas de código mas de análise, e uma boa documentação para manutenção e continuidade dos softwares.

Sem um bom levantamento de requisitos, análise, documentação e projeto a chance de erros é enorme e pior: sem todos estes passos antes do desenvolvimento será um grande pesadelo difícil de sair.

Se a engenharia em geral gasta seu tempo em análise, documentação, projeto e uma série de bateria de testes, porque a engenharia de software deve ser diferente? É preciso mudar a mentalidade e cultura dos desenvolvedores e empresas de software a investirem mais nestes itens, não apenas para a melhora na qualidade do software, mas para melhorar o rendimento da equipe interna, de novos contratados, criação de novos produtos ao invés do foco reativo, diminuição da equipe de suporte técnico, consecutivamente dos custos da empresa, maior competitividade no mercado, consecutivamente um lucro maior.

Trocam tudo isso em nome de “maior produtividade”, o que é um erro, não aumenta a produtividade coisa nenhuma, só piora, é comprovado através de pesquisas que a grande maioria das empresas brasileiras gastam 70% do tempo de desenvolvimento corrigindo erros, por falta dos itens já mencionados. Onde está a produtividade? É uma ilusão pensar que economizando nestes itens haverá maior produtividade. Além do mais, basta utilizar ferramentas CASE que geram o código a partir da documentação. E vamos falar um pouco de ferramentas CASE.

Sobre ferramentas CASE

Ferramentas CASE (do inglês Computer-Aided Software Engineering) é uma classificação que abrange todas as ferramentas baseada em computadores que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até programação e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de desenvolvimento de software

Objetivos

  • Melhoria da qualidade de software
  • Aumento da produtividade no processo de software

Vantagens do uso de ferramentas CASE

  • Qualidade no produto final
  • Produtividade
  • Agilizar o tempo para tomada de decisão
  • Menor quantidade de códigos de programação
  • Melhoria e redução de custos na manutenção
  • Agilidade no retrabalho do software

Desvantagem do uso de ferramentas CASE

  • Incompatibilidade de ferramentas
  • Treinamento para utilização

Uma ferramenta CASE que gosto bastante é o Enterprise Architect, que permite tudo isso e ainda gerar códigos em:

  • ActionScript
  • Ada
  • C e C++
  • C#
  • Java
  • Delphi
  • Verilog
  • PHP
  • VHDL
  • Python
  • System C
  • VB.Net
  • Visual Basic
  • E mais…

Esta é apenas uma solução para documentação e análise de sistema, que permite aumentar a qualidade melhorando ainda mais a produtividade no desenvolvimento de software.

Muito foi falado de testes neste artigo, então apresento aqui algumas ferramentas de testes open-source:

Ferramentas de Testes

Para automação de testes podemos citar as seguintes ferramentas open-source:

  • Testlink – www.teamst.org – Para desenvolvedores Web.
  • Selenium–Testes -  Automatizados para Web por meios Funcionais e de Aceitação. http://seleniumhq.orgJMeter
  • Testes de performance em aplicações de diferentes tipo de servidores (HTTP/HTTPS, SOAP, JMS, etc..). http://jakarta.apache.org/jmeter
  • Watir –Testes Automatizados para Web escritos na linguagem Ruby. Existem derivações em .Net (WatN) e Java (WatJ) http://watir.com
  • FitNesse–Web Server – Wikie ferramenta de Teste Automatizado para suportar Testes de Aceitação http:// jakarta.apache.org/jmeter/jakarta.apache.org/jmeter

Conclusão

É preciso mudar a mentalidade e cultura de desenvolvedores e empresas de software para aumentar não apenas a qualidade de software, mas a rentabilidade das empresas de software em geral. Um grande desafio, uma vez que as faculdades, universidades e cursos técnicos formam desenvolvedores com esta mentalidade e cultura atrasados no mundo de hoje.

Os profissionais e empresas de software deveriam investir em treinamentos de análise, documentação e orientação a objetos, além de testes de software e, incentivar os funcionários a adotarem a risco estas metodologias de análise, desenvolvimento e testes de software. Só assim poderemos melhorar o cenário do mercado de software nacional, podendo inclusiver competir com o mercado internacional.

Vamos mudar isso?

Uma das missões da Ramos da Informática é ajudar empresas e profissionais de software a alcançarem o sucesso. Desenvolvemos componentes de desenvolvimento, o curso Sucesso com Software que trata sobre marketing para empresas e profissionais de software, o portal Ramos da Informática, enfim, uma diversidade de itens com este intuito.

Então vamos por partes neste sentido em relação a este artigo, ok.

Estamos lançando o treinamento on-line em tempo real com o tema: “Desenvolvimento de software com UML 2.0 – Do básico ao avançado”. Percebemos que um dos grandes motivos é dos cursos não abordarem este tema com seu devido valor.

A UML (Unified Modeling Language) é uma ferramenta necessária para líderes de projeto, analistas de sistemas, analistas de negócios, programadores, administradores de banco de dados, Web designers e todos aqueles que são envolvidos com a qualidade em software. A UML surgiu devido à necessidade de uma padronização que o "mundo" da engenharia de software buscava há anos para a construção de softwares certos e no prazo.

Este curso apresenta, de maneira prática e já testada, o que é, para que serve e como usar os diagramas da UML 2.0, indo do básico ao avançado e utilizando a ferramenta CASE Enterprise Architect.

Mais informações sobre o curso em: www.cursos.ramosdainformatica.com.br

Read More