quarta-feira, 25 de março de 2009

Ferramentas de Multilinguagens. Apresento-lhes o Framework.



Antes de apresentar o ambiente .net ("dot net"), farei uma sucinta, mas interessante explicação sobre os frameworks e como eles são importantes para a programação na web atual.


Qual é o problema?

  • Programar é difícil
  • Onde está a maior dificuldade?
    • "Interface design and functional factoring constitute the key intelectual content of software and is far more difficult to create or re-create than code" (Peter Deutsch)
  • Mas nossos programadores são mortais
    • "It shouldn't take a good programmer to build a good program"
  • Solução: Temos que fornecer formas de re-uso que vão além de código: re-uso de análise, design, código.
    • Framework orientado a objeto

O que é um Framework?

  • Um framework captura a funcionalidade comum a várias aplicações
  • As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema

frame1.gif (6254 bytes)

  • Há várias definições de frameworks (ver aqui)
  • A definição que usamos foca quatro características principais de um framework (Orientado a Objeto):
    • "Um framework provê uma solução para uma família de problemas semelhantes, ...
      Usando um conjunto de classes e interfaces que mostra como decompor a família de problemas, ...
      E como objetos dessas classes colaboram para cumprir suas responsabilidades, ...
      O conjunto de classes deve ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço, especificando apenas as particularidades de cada aplicação"
  • Observe que um framework é uma aplicação quase completa, mas com pedaços faltando
    • Ao receber um framework, seu trabalho consiste em prover os pedaços que são específicos para sua aplicação
    • As técnicas básicas são Template Method e Composição

Diferenças entre um Framework e uma Biblioteca de Classes OO

  • Numa biblioteca de classes, cada classe é única e independente das outras
    • Num framework, as dependências/colaborações estão embutidas (wired-in interconnections)
    • Com biblioteca, as aplicações criam as colaborações

frame2.gif (4546 bytes)

  • Vê-se portanto que um framework impõe um modelo de colaboração (o resultado da análise e design) ao qual você deve se adaptar
    • Já que a comunicação entre objetos já está definida, o projetista de aplicações não precisa saber quando chamar cada método: é o framework que faz isso
  • Não se pode embutir conhecimento do domínio (análise + design) numa biblioteca de classes
  • O framework é usado de acordo com o Hollywood Principle ("Don't call us, we'll call you")
    • É o framework que chama o código da aplicação (que trata das particularidades dessa aplicação)
    • Framework = Upside-down library

frame3.gif (6625 bytes)

  • Exemplo do Hollywood Principle
    • Modelo de eventos em Java/AWT
    • AWT é um framework
    • No código abaixo, mouseClicked() e mousePressed() são chamados pelo framework (AWT)
public class MeuMouseListener implements MouseListener {
public void mouseClicked(MouseEvent event) {
...
}
public void mousePressed(MouseEvent event) {
...
}
...
}
...
MeuMouseListener mouseListener = new MeuMouseListener();
JButton meuBotão = new JButton("clique aqui");
// O seguinte método estabelece a interação entre o objeto
// meuBotão e o objeto mouseListener
meuBotão.addMouseListener(mouseListener);
  • A diferença entre um framework e uma biblioteca de classes não é binária

frame4.gif (5985 bytes)

Diferenças entre Frameworks e Design Patterns

  • Aparentemente, os dois consistem de classes, interfaces e colaborações prontas
  • As diferenças são:
    • Design patterns são mais abstratos do que frameworks
      • Um framework inclui código, um design pattern não (só um exemplo do uso de um pattern)
      • Devido à presença de código, um framework pode ser estudado a nível de código, executado, e reusado diretamente
    • Design patterns são elementos arquiteturais menores do que frameworks
      • Um framework típico contém vários design patterns mas o contrário nunca ocorre
      • Exemplo: Design patterns são frequentemente usados para documentar frameworks
    • Design patterns são menos especializados do que frameworks
      • Frameworks sempre têm um domínio de aplicação particular enquanto design patterns não ditam uma arquitetura de aplicação particular

Características Básicas de Frameworks

  • Um framework deve ser reusável
    • É o propósito final!
    • Para ser reusável, deve primeiro ser usável
      • Bem documentado
      • Fácil de usar
  • Deve ser extensível
    • O framework contém funcionalidade abstrata (sem implementação) que deve ser completada
  • Deve ser de uso seguro
    • O desenvolvedor de aplicações não pode destruir o framework
  • Deve ser eficiente
    • Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência
  • Deve ser completo
    • Para endereçar o domínio do problema pretendido


terça-feira, 24 de março de 2009

Borland e sua história

História da Empresa
Três cidadãos dinamarqueses, Niels Jensen, Ole Henriksen e Mogens Glad fundaram a Borland Ltd. em Agosto de 1981 com o intuito de desenvolver produtos para a CP/M. No entanto, a resposta dos produtos da empresa CP/M-82 apresentada em São Francisco revelou que uma empresa U.S. seria necessária para atingir o mercado americano. Conheceram então Philippe Kahn que acabara moveram a Silicon Valley e que tinha sido um dos principais desenvolvedores do Micral. Os três dinamarqueses tinham embarcado, num primeiro momento com sucesso, na primeira comercialização do software a partir da Dinamarca, depois na Irlanda antes de correr em alguns desafios no momento em que eles encontraram Philippe Kahn. A parceria parece ter beneficiado todos os envolvidos. Philippe Kahn foi, em todos os momentos presidente da Borland Inc. desde a sua criação em 1983 até sua saída, em 1995. Os principais acionistas na incorporação da Borland foram Niels Jensen, Ole Henriksen, Mogens Glad e Philippe Kahn.

A Borland lançou com sucesso, uma série de produtos que incluíram Sidekick, Turbo Pascal, SuperKey e Lightning, todos desenvolvidos na Dinamarca.

A Borland desenvolveu uma série de bem-sucedidos ferramentas de desenvolvimento de softwares. Seu primeiro produto foi Turbo Pascal, utilizando o compilador desenvolvido por Anders Hejlsberg.

Em 1987 Borland comprou Wizard Systems e incorporou porções do Wizard C em tecnologia Turbo C. Bob Jarvis, o autor do Assistente Borland C tornou-se um empregado. Turbo C foi lançado em 18 de Maio de 1987, e um número estimado de 100.000 exemplares foram transferidos para o primeiro mês de sua liberação. Esta aparentemente conduziu uma cunha entre a Borland, Niels Jensen e os outros membros da sua equipa que tinha vindo trabalhar sobre compiladores. Foi alcançado um acordo e eles criaram uma empresa chamada TopSpeed. Lançaram um compilador que se tornou TopSpeed Modula-2, que existe até hoje, como a tecnologia subjacente do Clarion 4GL, uma ferramenta do Windows development.

Em setembro de 1987 a Borland comprou Ansa-Software, incluindo os seus Paradox (versão 2.0) como instrumento de gestão de dados.

Em setembro de 1991 a Borland comprou o Ashton-Tate, elevando o dBase InterBase e bases de dados para a casa, todas as ações em uma transação. A concorrência foi acirrada com a Microsoft. A Microsoft lançou o concorrente de dados Microsoft Access e comprou o clone dBase FoxPro em 1992, a subcotação dos preços da Borland. Durante o início de 1990 da implementação da Borland C e C + + da Microsoft. A Borland sobreviveu como uma empresa, mas já não tinha o domínio do software, uma vez que já o tivera. Ele passou por uma profunda transição de produtos, de financiamento e de pessoal, agora é uma empresa muito diferente da que desafiou um Microsoft e Lotus, no início de 1990.

Em meados de 1992 a empresa passa por uma nova crise, a Borland foi perdendo força financeira de projetar a sua comercialização e movimentação de recursos internos para outros produtos. Em 1993 começam a ocorrer demissões para que a empresa se mantivesse. Uma mudança nas condições de mercado também contribuiu para a queda da Borland de destaque.
A separação da empresa com Kahn amigável, o mesmo permaneceu junto com a Borland até 7 de novembro de 1996.

Produtos da Borland:
• Borland CaliberRM
• Borland Caliber DefineIT
• Borland Gauntlet
• Borland StarTeam
• Borland Tempo
• Borland Together for Eclipse
• Borland SilkTest
• Borland SilkPerformer
• Borland SilkCentral Test Manager
• Borland VisiBroker
• Borland AppServer
• Borland Enterprise Studio, for C++, Mobile and Java
• Borland Enterprise Server

Ferramentas de Programação:
• Brief (text editor)
• Borland C++
• C++BuilderX
• C# Builder
• CodeWright
• IntraBuilder
• Kylix
• Object Vision
• Turbo Assembler
• Turbo BASIC
• Turbo C
• Turbo C++
• Turbo Debugger
• Turbo Modula-2
• Turbo Pascal
• Turbo Profiler
• Turbo Prolog

Utilitários:
• SideKick
• SideKick Plus
• SuperKey
• Turbo Lightning

Aplicações:
• Reflex
• dBase
• Paradox
• Quattro
• Quattro Pro
• Sprint

sábado, 21 de março de 2009

O que é Oracle ?

Oracle é uma potente ferramenta cliente/servidor para a gestão de Bases de Dados. Explicamos a ferramenta e as ajudas que oferece ao desenvolvedor.

Oracle é basicamente uma ferramenta cliente/servidor para a gestão de Bases de Dados. É um produto vendido a nível mundial, embora a grande potência que tem e seu elevado preço fazem com que só se veja em empresas muito grandes e multinacionais, por norma geral. No desenvolvimento de páginas web acontece o mesmo: como é um sistema muito caro não está tão espalhado como outras bases de dados, por exemplo, Access, MySQL, SQL Server, etc.

Vamos agora centrarmos no que é Oracle exatamente e como funciona a programação sobre este. Oracle como antes foi mencionado se baseia na tecnologia cliente/servidor, portanto, para sua utilização primeiro, seria necessário instalar a ferramenta servidor (Oracle 8i) e posteriormente poderíamos atacar à base de dados desde outras máquinas com ferramentas de desenvolvimento como Oracle Designer e Oracle Developer, que são as ferramentas básicas de programação sobre Oracle.

Para desenvolver em Oracle utilizamos PL/SQL uma linguagem de 5ª geração, bastante potente para tratar e gerenciar a base de dados, também por norma geral costuma-se utilizar SQL ao criar um formulário.

É possível logicamente atacar a base de dados através do SQL plus incorporado no pacote de programas Oracle para poder realizar consultas, utilizando a linguagem SQL.

O Developer é uma ferramenta que nos permite criar formulários em local, ou seja, mediante esta ferramenta nós podemos criar formulários, compilá-los e executá-los, mas se quisermos que os outros trabalhem sobre este formulário deveremos copiá-lo regularmente em uma pasta compartida para todos, de modo que, quando quiserem realizar uma mudança, deverão copiar de tal pasta e logo voltar a subir à pasta. Este sistema como podemos observar é bastante complicado e pouco confiável, pois é normal que as versões percam e se insistam com freqüência. A principal vantagem desta ferramenta é que é bastante intuitiva e dispõem de um modo que nos permite compor o formulário, tal e como o faríamos em Visual Basic ou em Visual C.

Os problemas anteriores estão totalmente resolvidos com Designer que é uma ferramenta que se conecta à base de dados e portanto, criamos os formulários nela, desta maneira todo mundo se conecta mediante Designer à aplicação que contem todos os formulários e não há problemas de diferentes versões, isto é muito útil e perfeito para evitar massacrar o trabalho de outros. Mas, o principal e mais notável problema é a falta de um meio visual para desenhar o formulário, ou seja, nos aparece uma estrutura como de árvore na qual inserimos um formulário, e ao mesmo tempo dentro deste inserimos blocos ou módulos que são as estruturas que conterão os elementos dos formulários, que podem estar baseados em tabelas ou não.

Portanto, se quisermos fazer formulários para praticar ou para provar o que é isto de Oracle, recomenda-se que se use Developer, pois é muito mais fácil e intuitivo à princípio.

quarta-feira, 18 de março de 2009

Sybase

HISTÓRIA:

A Sybase foi fundada em 1984 nos EUA, ela desenvolve produtos e serviços multi-plataforma em três áreas-chave: ‘Gestão da Informação’, ‘Desenvolvimento & Integração’ e ‘Mobilidade & RFID’. A Sybase está presente em Portugal desde 1996 e é constituída por uma equipe jovem e dinâmica cujo principal objetivo é conseguir que os seus clientes obtenham o valor máximo dos activos de dados, com a melhor performance e o mais baixo custo em TI.

A empresa tem como actividades principais a consultoria, o desenvolvimento de software e infra-estruturas empresariais e a formação.

  • 95 das empresas Fortune 100 utilizam Sybase
  • 50.000 clientes empresariais em todo o mundo
  • 95% de taxa de retenção de clientes
  • Crescimento e lucros contínuos
  • 4.000 colaboradores em 60 países

A Sybase continua a construir relações profundas de parceria e colaboração com líderes da indústria. Podemos citar alguns como: HP, Intel, IBM, Microsoft, SAP e Sun.

Empenhado na filosofia de que as parcerias devem ser mutuamente benéficas, o Business Solutions Alliance Program da Sybase liga os parceiros aos recursos de que necessitam para poderem maximizar a relação, incluindo produtos, ferramentas, formação e acesso ao marketing e ao suporte técnico e de negócio.

PRODUTOS:

A oferta de Produtos e Soluções disponibilizadas pela Sybase no mercado português permite às empresas garantirem o acesso e gestão de informação preciosa e de valor para o seu negócio de modo simples, intuitivo, seguro e em qualquer lugar, através de qualquer dispositivo móvel.

Neste sentido a oferta da Sybase reparte-se da seguinte forma:

Essa foi apenas uma leve introdução do que é a Sybase e como ela atua. Espero poder trazer mais informações dessas e de outras IDEs para vocês.

Até breve!

terça-feira, 17 de março de 2009

Entenda um pouco sobre JAVA



Vamos começar com um pouco de história!



Tudo começou no início dos anos 90, mais precisamente em 1991, com a criação do Green Project, na Sun Microsystems. Nele trabalhavam James Gosling, Mike Sheridan e Patrik Naughton. O objetivo do projeto era antecipar e planejar a “próxima onda” do mundo digital, pois eles acreditavam que em algum momento haveria a convergência dos computadores com os eletrodomésticos. Em 1992 um grupo de pesquisadore surgiu com uma demonstração funcional da idéia inicial. O protótipo se chamava “StarSeven”, um controle remoto com uma interface gráfica touchscreen. Um pouco mais na frente foi criado, para StarSeven, um mascote, hoje amplamente conhecido no mundo Java, o Duke. Ele era responsável em ser um guia virtual para ajudar e ensinar o usuário a utilizar o equipamento. Logo depois, James Gosling especificou uma nova linguagem de programação para o StarSeven e a batizou de “Oak”. O próximo passo era encontrar um mercado para o StarSeven, mas infelizmente a idéia inovadora não foi vista com bons olhos pelas empresas de TV a cabo daquela época. A idéia que o StarSeven tentava vender, hoje já é realidade em programas interativos e também na TV digital. A idéia certa, na época errada. Entretanto, aconteceu em 1994 o estouro da Internet e rapidamente uma grande rede interativa estava se estabelecendo. Era este tipo de rede interativa que a equipe do StarSeven estava tentando vender para as empresas de TV a cabo. E, da noite para o dia, não era mais necessário construir a infra-estrutura para a rede, ela simplesmente estava lá. Gosling foi incumbido de adaptar o Oak para a Internet e em janeiro 1995 foi lançada uma nova versão do Oak que foi rebatizada para JAVA. A linguagem de programação Java tinha sido projetada para se mover por meio das redes de dispositivos heterogêneos, redes como a Internet. Agora aplicações poderiam ser executadas dentro dos browsers nos Applets Java e tudo seria disponibilizado pela Internet instantaneamente. Foi o estático HTML dos browsers que promoveu a rápida disseminação da dinâmica tecnologia Java. A velocidade dos acontecimentos seguintes foi assustadora, o número de usuários cresceu rapidamente, grandes fornecedores de tecnologia, como a IBM anunciaram suporte para a tecnologia Java.James%20Gosling


Desde seu lançamento, em maio de 1995, a linguagem Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação. Em 2004 JAVA atingiu a marca de 3 milhões de desenvolvedores em todo mundo, e ainda continuou crescendo e hoje é uma referência no mercado de desenvolvimento de software como uma das linguagens programação mais usadas, que serve para qualquer tipo de aplicação. Você sabia que seu cartão de crédito pode ter um JavaCard?



Em 1997 a Sun Microsystems tentou submeter a linguagem a padronização pelos orgãos ISO/IEC e ECMA, mas acabou desistindo. Java ainda é um standard de fato, que é controlada através da JCP (Java Comunity Process). Em 13 de Novembro de 2006, a Sun lançou a maior parte do Java como Software Livre sob os termos da GNU General Public License (GPL). Em 8 de Maio de 2007 a Sun finalizou o processo, tornando praticamente todo o código Java como software de código aberto, menos uma pequena porção da qual a Sun não possui copyright.



A plataforma de desenvolvimento JAVA possui várias extensões, sendo as principais: Java 2 Enterprise Edition (J2EE); Java 2 Mobile Edition (J2ME) e Java 2 Standard Edition (J2SE)







  • Java 2 Micro Edition (J2ME) - a plataforma Java voltada para pequenos dipositivos, como telefones celulares, agendas eletrônicas, televisores, aparelhos eletrônicos em geral.

  • Java 2 Standard Edition (J2SE) - a plataforma voltada para aplicações cliente. Essa é a plataforma que será encontrada nos browsers web e instalada nos sistemas operacionais que já incluírem a plataforma Java.

  • Java 2 Enterprise Edition (J2EE) - essa é a plataforma Java para desenvolvimento e execussão de aplicações servidoras. Possui todo o suporte para desenvolver aplicações robustas e escaláveis, para suportar grandes números de usuários. Os servidores de aplicação implementam essa plataforma.


Vale lembrar que JAVA permite o uso de qualquer sistema operacional, seja ele Windows, Unix ou Linux, ou mesmo plataforma Mainframe.


Conclusão


A tecnologia JAVA vem evoluindo com muita velocidade, e nem sempre é fácil de acompanhar as mudanças. Isso muitas vezes acaba se refletindo em uma grande quantidade de produtos e ainda numa maior variedade de versões.


Bem, eu procurie com esse post clariar um pouco as idéias sobre JAVA, é claro que essa não é nem a ponta do Iceberg, pois o assunto é muitíssimo extenso, mas já é um começo!


Qualquer dúvida, pode perguntar, e se eu não souber responder, a gente aprende junto!!!

Introdução - J2EE

Java2EE vem do inglês Java 2 Enterprise Edition, que em português significa Java Edição Empresarial.

O J2EE (Java2 Enterprise Edition) é a plataforma Java voltada para redes, internet, intranets e afins. Assim, ela contém bibliotecas especialmente desenvolvidas para o acesso a servidores, sistemas de e-mail, banco de dados, etc. Por essas características, o J2EE foi desenvolvido para suportar uma grande quantidade de usuários simultâneos. É uma tecnologia que torna possível projetar, desenvolver, empacotar e implantar aplicações empresariais baseadas em componentes. A plataforma é voltada para aplicações de modelos multi-camadas distribuídos com a possibilidade de reutilização de componentes, transferência de dados feita em XML, constituir modelos de segurança unificados e um flexível controle transacional. A plataforma J2EE é considerada um padrão de desenvolvimento, já que os fornecedores de software que a utilizam devem seguir determinadas regras para que possam declarar seus produtos como compatíveis com Java EE. Este tipo de plataforma contém bibliotecas desenvolvidas para o acesso a base de dados, RPC, CORBA, etc.. Devido a essas características ela é utilizada principalmente para o desenvolvimento de aplicações corporativas.

A plataforma J2EE contém uma série de especificações, cada uma com funcionalidades distintas. Entre elas, tem-se:

  • JDBC (Java Database Connectivity), utilizado no acesso a banco de dados;
  • Servlets, para o desenvolvimento de aplicações Web, isto é, esse recurso "estende" o funcionamento dos servidores Web, permitindo a geração de conteúdo dinâmico nos sites. Ele contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador.
  • JSP (Java Server Pages), um tipo de servidor Web. Grossamente falando, servidores Web são as aplicações que permitem você acessar um site na internet, é uma especialização do servlet que permite que o conteúdo dinâmico seja facilmente desenvolvido.
  • JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java.
  • EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações.
  • JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas.
  • JPA (Java Persistence API), é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans.

( API: vem do inglês Application Programming Interface, que em português significa Interface de Programação de Aplicativos, é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos -- isto é: programas que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.

De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao utilizador tradicional.

Por exemplo, um sistema operacional possui uma grande quantidade de funções na API, que permitem ao programador criar janelas, acessar arquivos, criptografar dados, etc. Ou então programas de desenho geométrico que possuem uma API específica para criar automaticamente entidades de acordo com padrões definidos pelo utilizador.

No caso de sistemas operacionais, a API costuma ser dissociada de tarefas mais essenciais, como manipulação de blocos de memória e acesso a dispositivos. Estas tarefas são atributos do Kernel ou núcleo do sistema, e raramente são programáveis.

Mais recentemente o uso de APIs tem se generalizado nos plug-ins, acessórios que complementam a funcionalidade de um programa. Os autores do programa principal fornecem uma API específica para que outros autores criem plug-ins, estendendo as funcionalidades do programa para os utilizadores comuns. )

Texto original obtido em: "http://pt.wikipedia.org/wiki/Java_EE" "http://pt.wikipedia.org/wiki/API"

terça-feira, 10 de março de 2009

IDEs - Introdução.

Ambiente de desenvolvimento integrado
Origem: Wikipédia, a enciclopédia livre.

IDE, do inglês Integrated Development Environment ou 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.

Geralmente os IDEs facilitam a técnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rápido de Aplicativos"), que visa a maior produtividade dos desenvolvedores.

As características e ferramentas mais comuns encontradas nos IDEs são:

* Editor - edita o código-fonte do programa escrito na(s) linguagem(ns) suportada(s) pela IDE;

* Compilador (compiler) - compila o código-fonte do programa, editado em uma linguagem específica e a transforma em linguagem de máquina;

* Linker - liga (linka) os vários "pedaços" de código-fonte, compilados em linguagem de máquina, em um programa executável que pode ser executado em um computador ou outro dispositivo computacional.

* Depurador (debugger) - auxilia no processo de encontrar e corrigir erros (bugs) no código-fonte do programa, na tentativa de aprimorar a qualidade de software;

* Modelagem (modelling) - 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 - característica mais explorada em ferramentas CASE, a geração de código também é encontrada em IDEs, contudo com um escopo mais direcionado a templates de código comumente utilizados para solucionar problemas rotineiros. Todavia, em conjunto com ferramentas de modelagem, a geração pode gerar todo ou praticamente todo o código-fonte do programa com base no modelo proposto, tornando muito mais rápido o processo de desenvolvimento e distribuição do software;

* Distribuição (deploy) - 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 (automated tests) - realiza testes no software de forma automatizada, com base em scripts ou programas de testes previamente especificados, gerando um relatório dos mesmos, assim auxiliando na análise do impacto das alterações no código-fonte. Ferramentas deste tipo mais comuns no mercado são chamadas robôs de testes.

* Refatoração (refactoring) - 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. A refatoração, em conjunto com os testes automatizados, é uma poderosa ferramenta no processo de erradicação de "bugs", tendo em vista que os testes "garantem" o mesmo comportamento externo do software ou da característica sendo reconstruída.

Exemplos

* HB++ (Handheld-Basic) - Desenvolve projetos PalmOS Palm OS;
* Boa Constructor - Gera código Python;
* Delphi - Trabalha originalmente com a linguagem Object Pascal/Pascal, agregando na suite Delphi Studio 2005, a linguagem C# e a extensão da Object Pascal para .NET;
* Eclipse - Gera código Java (através de plugins, o Eclipse suporta muitas outras linguagens como Python e C/C++);
* Netbeans - Gera código Java.
* BlueJ - Gera código Java.
* Visual Basic - Gera código Basic;
* Visual Studio .NET - Gera código para Framework .NET, suportando linguagens Visual Basic .NET, C#, C++, e J#.
* SharpDevelop - Gera código C#.
* MonoDevelop - Baseado no SharpDevelop, para ambiente Unix
* DEV-C++, Code::Blocks - Geram código para C e C++
* Anjuta - Gera código para C e C++
* Anubis - Gera código PHP-GTK;
* WOL - Gera código pascal (também é biblioteca)
* Xcode - Gera código Objective-C