ENGENHARIA DE SOFTWARE RECURSOS TECNOLOGICOS PARA ENGENHARIA DE SOFTWARE 1. CASE As Ferramentas CASE (Computer-Aided Software Engineering) constituiem uma categoria de software que tem por finalidade auxiliar as atividades de engenharia de software, o que envolve recursos para gerencia, análise de requisitos, modelagem, programação, testes e manutenção de software. 1.1 Classificação de CASE Não há um padrão definido para classificar as CASE, de um modo geral é possível agrupá-las em: Upper CASE Lower CASE I-CASE As Upper CASE, também referenciadas como Back End, são as CASE destinadas a apoiar as etapas iniciais de criação dos sistemas: as fases de planejamento, análise e projeto do sistema. As Lower CASE, também referenciadas como Front End, são as CASE destinadas a apoiar a codificação testes e manutenção da aplicação. As I-CASE , também referenciadas como Integrated CASE, são as CASE destinadas a apoiar todo o ciclo de vida do software, desde os requisitos do sistema até o controle final da qualidade do produto gerado, o software. As Ferramentas CASE podem ainda ser agrupadas nas seguintes categorias: • • • • • • • Modelação de processos de negócio Modelação de análise e desenho do sistema Desenho da base de dados Programação de aplicações Gestão de alterações no software Testes Orientadas para a Gestão de Projetos 1. 2. Vantagens do uso de CASE Dentre as principais vantagens do uso de ferramentas CASE destacar: • • • podemos Qualidade no produto final Produtividade Agilizar o tempo para tomada de decisão Nota de Aula - Prof. Sidney Vieira 1 • • Menor quantidade de códigos de programação Melhoria e redução de custos na manutenção 2. RAD Uma RAD (Rapid Application Development), Desenvolvimento Rápido de Aplicativos, é uma ferramenta que visa a maior produtividade dos desenvolvedores. As ferramentas RAD devem propiciar um desenvolvimento de software interativo e incremental que enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias). O termo foi registrado por James Martin em 1991 e tem substituído gradativamente o termo de prototipação rápida que já foi muito utilizada no passado. Estas ferramentas empregam técnicas de quarta geração, trabalham com a reutilização de componentes de programa existentes quando possível, ou criam componentes reusáveis. Dentre as vantagens de se empregar uma rad temos: • • • • • • • • Permite o desenvolvimento rápido e/ou a prototipagem de aplicações; Enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 100 dias); Cada função principal pode ser direcionada para a uma equipe RAD separada e então integrada a formar um todo; Criação e reutilização de componentes; Usado principalmente para aplicações de sistemas de informações; Grande redução de codificação manual; Provável custo reduzido; Aparência padronizada (As APIs e outros componentes reutilizáveis permitem uma aparencia consistente). Exemplos de RAD DELPHI, VISUAL BASIC, wxDesigner, Anubis PHP Um comportamento de RAD no Delphi é o fato de ao se colocar um botão num formulário, ele automaticamente acrescenta, na clausula "uses", a library que contém o objeto Tbutton e cria um Tbutton. Caso o objeto TButton possuir dependências de outras classes, o Delphi se encarrega de encontra-las e inclui-las em sua aplicação. 3 IDE Um IDE (Integrated Development Environment), Ambiente Integrado de Desenvolvimento, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Uma IDE deve disponibilizar mais de um ambiente de codificação. Uma IDE deve ser composta de: Nota de Aula - Prof. Sidney Vieira 2 • • • • • • • • • Editor - edita o código-fonte do programa escrito na linguagem suportada pela IDE; Compilador - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina; Linker - liga os vários "pedaços" de código-fonte, compilados em linguagem de máquina, em um programa executável. Depurador - auxilia no processo de encontrar e corrigir erros (bugs) no código-fonte do programa, na tentativa de aprimorar a qualidade de software; Modelagem - criação do modelo de classes, objetos, interfaces, associações e interações dos artefatos envolvidos no software com o objetivo de solucionar as necessidades-alvo do software final. Geração de código - Possibilita a geração de código com base em um modelo gerado pelo no próprio ambiente. Esta característica mais explorada em ferramentas CASE, Distribuição - auxilia no processo de criação do instalador do software, ou outra forma de distribuição do mesmo, seja discos ou via internet. Testes Automatizados - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório dos mesmos. Refatoração - consiste na melhoria constante do código-fonte do software, seja na construção de código mais otimizado, mais limpo e/ou com melhor entendimento pelos envolvidos no desenvolvimento do software. Exemplos de IDE: Eclipse, NetBeans, Eric Python IDE, Boa Constructor, o próprio delphi é considerado uma IDE RAD 4 Framework Um Framework é um conjunto de módulos que colaboram para realizar uma responsabilidade para um domínio de um sub-sistema da aplicação. Framework de software compreende de um conjunto de módulos (funções e procedures), implementadas em uma linguagem específica, usadas para auxiliar o desenvolvimento de software de forma que os mesmos são reaproveitados. O framework atua onde há funcionalidades em comum a várias aplicações, porém para isso as aplicações devem ter algo razoavelmente grande em comum para que o mesmo possa atingir a várias aplicações. Um framework deve: • • • Ser reusável Bem documentado Fácil de usar Nota de Aula - Prof. Sidney Vieira 3 • • Conter funcionalidade abstrata (sem implementação) que deve ser completada Deve ser de uso seguro não permitindo que seus modulos sejam destruídos pelo usuário(desenvolvedor) Exemplos de Framework: miolo, microsoft.net, Zend, Sring, JUnit 4 – Reengenharia de Software O termo “Engenharia Reversa” tem sua origem na análise de hardware, pois é comum a prática de decifrar projetos de produtos finalizados com intuito de duplicá-los. O conceito de Engenharia Reversa de Software é similar. Porém, tradicionalmente o objetivo da dessa engenharia reversa é obter apenas um entendimento do sistema Podemos definir Engenharia Reversa de software como o processo de exame e compreensão do software existente, para recapturar ou recriar o projeto e decifrar os requisitos atualmente implementados pelo sistema, apresentando-os em um nível ou grau mais alto de abstração Nota de Aula - Prof. Sidney Vieira 4