beneficios engenharia de software

Upload: jonathas-montenegro-pita

Post on 02-Nov-2015

215 views

Category:

Documents


0 download

DESCRIPTION

Artigo que apresenta uma síntese dos benefícios da Engenharia de Software aplicada à um caso de uso.

TRANSCRIPT

MODELO DE TRABALHO DE GRADUAO

ENGENHARIA DE SOFTWAREBENEFCIOS DA APLICAO BASEADO EM CASO DE USO

Jonathas Montenegro Souza Pita

Prof. Jean Richard

Centro Universitrio Leonardo da Vinci UNIASSELVI

Gesto de Tecnologia da Informao (GTI0072) Trabalho de Graduao 20/05/15

RESUMO

O desenvolvimento de software surgiu com o objetivo de criar solues, aumentar a produtividade, possibilitar melhorias de processos alm de criar novas alternativas atravs do uso da inteligncia computacional. Atravs desta premissa, este estudo visa apresentar a Engenharia de Software como proposta de mtricas e modelos no desenvolvimento e tambm em como o seu uso pode ser benfico, tanto para a equipe de desenvolvimento quanto para o usurio final atravs de uma aplicao prtica utilizando um objeto de estudo.

Palavras-chave: Engenharia; Software; Desenvolvimento de software.

1 INTRODUO

A Engenharia de Software foi definida pela primeira vez como o estabelecimento e uso de slidos princpios de engenharia para que se possa obter economicamente um software que seja confivel e que funcione eficientemente em mquinas reais (PRESSMAN, 1995). Deste conceito entende-se que atravs de metodologias sistematizadas a engenharia direciona o desenvolvimento de forma torn-lo mais eficiente, seguro e gil.Como capacidades essenciais crticas no processo de desenvolvimento de novos produtos, pode-se citar fatores ligados a quatro dimenses bsicas: a estratgia tecnolgica, o contexto organizacional, as equipes de projetos e as ferramentas para melhorar continuamente o processo. Atravs deste pensamento, percebe-se que Schilling e Hill propm a conduo das iniciativas de desenvolvimento de novos produtos sob a forma de projetos. (SCHILLING; HILL, 1998)Um software surge a partir de um problema e do entendimento claro deste e a partir deste conhecimento a busca pela soluo que ser ento desenvolvida a partir de escopos, mtodos, estudo de possibilidades entre outros requisitos. Este trabalho possui o intuito de apresentar um caso prtico de uso da Engenharia de Software no entendimento do problema e desenvolvimento da soluo. Doravante, apresentando os benefcios e as dificuldades da aplicao.

2 ENTENDIMENTO DO CASO DE USODevido ao aumento de fatores como produtividade, faturamento, nmero de filiais e funcionrios, uma empresa de vendas, que aqui ser chamada Empresa A, comeou a ter problemas em processos simples como cadastros de clientes e a comunicao ordenada entre os setores de forma que o prprio andamento passou a ser prejudicado. Mesmo aps definidos melhorias de processos e a implantao de um ERP que mantm e apresenta os dados cadastrados viu-se a necessidade clara de implantar uma ferramenta que gerenciasse as solicitaes de cadastro de novos clientes, novos produtos, novas anlises de crdito e que a partir destes dados cadastrados apresentar indicadores de desempenho.

O principal objetivo do sistema a ser desenvolvido controlar as solicitaes de cadastro e gerar indicadores de atendimento do setor de cadastro.

3 PROCESSOS DE SOFTWARE

Conforme PMI(2004, p.5) Um projeto um esforo temporrio para criar um produto, servio ou resultado exclusivo. Temporrio, significa que o resultado gerado, de certa forma, de maneira diferente de outros produtos servios ou resultados j existentes. Martin e Tate (2001, p.8), ressaltam o fato dos projetos serem temporrios e produzirem resultados nicos, em contraponto com as operaes continuadas, em que o mesmo processo repetido vrias vezes, com objetivo de produzir os mesmos resultados a cada execuo. Ainda, o plano de trabalho incerto, requerendo atualizaes constantes, enquanto nas operaes continuadas o plano bem definida.Segundo PRESSMAN(1995), para que um projeto de desenvolvimento de software seja bem sucedido, necessrio que alguns parmetros sejam analisados, como por exemplo o escopo do projeto, os riscos envolvidos, os recursos necessrios, as tarefas a serem realizadas, os indicadores a serem acompanhados, os esforos e custos aplicados e a sistemtica aplicada. Porm o maior desafio de para qualquer metodologia de software definir quando cada fase do projeto dever iniciar e encerrar. Pode parecer uma tarefa simples criar um cronograma pois existe uma ordem nas tarefas, porm deve-se levar em conta os erros que ocorrem ocorrer sem agentes externos. Mas atravs de modelos de ciclos de vida, pode-se sistematizar as etapas do desenvolvimento de forma mais concisa.

3.1 MODELOS DE CICLO DE VIDA

Um dos modelos de ciclo de vida mais simples conhecidos o chamado Cascata ou Clssico. Nele no so considerados agentes externos e as fases so baseadas nos passos bsicos para qualquer desenvolvimento. So eles: requisitos de sistema, requisitos de software, analise, design de programa, codificao, testes e operao conforme ROYCE (1970). O grande paradigma deste modelo o fato do produto ser entregue em sua totalidade, e no se aplica ao caso de uso. Se viu necessrio o desenvolvimento de uma primeira verso da soluo para atender as necessidades mais bsicas e em um prximo passo liberar novas verses conforme novas funcionalidades forem desenvolvidas. Outro modelo de ciclo de vida o chamado Prototipao. Este possui como maior caracterstica garantir clareza no entendimento dos requisitos pr-definidos para soluo do problema. Neste modelo so produzidos prottipos do produto final apenas com a parte visual apresentada de forma a encontrar na prtica requisitos e necessidades da aplicao.

Fonte: Portal INPE, 2015 esta apresentao preliminar da soluo que garante confiabilidade e elimina grande parte dos retrabalhos, mas importante citar que existem dois pontos negativos de aplicar este modelo ao caso de estudo. O primeiro ponto a necessidade de desenvolver uma aplicao preliminar o que toma tempo e recursos. E um segundo ponto negativo o fato de que modelos preliminares da aplicao podem gerar um falso entendimento do tempo necessrio para o desenvolvimento dando a entender que o desenvolvimento das funcionalidades em si demandam menos recursos.Apesar dos pontos negativos, este modelo o que melhor se aplica ao caso de uso. Existem ainda as chamadas metodologia geis. Estes modelos se popularizaram em 2001 com a apresentao do Manifesto gil (Agile Manifesto 2004), onde dezessete especialistas em processo de desenvolvimento estabeleceram princpios e observncias comuns entre os mtodos geis. Os conceitos chave destas metodologias que se opem s tradicionais so:So adaptativas ao invs de preditivas, isto implica em aceitar alteraes de requisitos em qualquer fase do projeto se adequando a mudanas competitivas.So orientadas s pessoas e no a processos, valorizando o trabalho de cada indivduo relacionado ao projeto, desde fornecendo um ambiente de trabalho adequado e motivao para a equipe at participao do cliente e o entendimento de suas necessidades.Buscam o equilbrio entre a excelncia do desenvolvimento e agilidade da entrega priorizando a funcionalidade do software, continuidade das aes, eliminar o mximo possvel de retrabalho e atravs de reunies frequentes ponderar os pontos fracos para tornar a equipe mais efetiva.

4 DEFININDO REQUISITOS

O Desenvolvimento de um sistema de software centrado na arquitetura, inicia-se com um arquiteto de software, de posse de um conjunto de requisitos do sistema. Nesse momento, busca-se identificar qual estilo ou combinaes destes oferece suporte mais adequado a esses requisitos e, portanto, derivar uma arquitetura de software que atenda s caractersticas do sistema a ser desenvolvido. Conforme a definio abaixo (DORFMAN, THAYER 1990):

Requisito funcional: utilizando ponto de vista do usurio, um requisito de sistema de software que especifica uma funo que o sistema ou componente deve ser capaz de realizar. Estes so requisitos de software que definem o comportamento do sistema, ou seja, o processo ou transformao que componentes de software ou hardware efetuam sobre as entradas para gerar as sadas.

Requisito no funcional: aquele que descreve como que o sistema efetuar as aes. No diretamente quanto as funcionalidades mas em como o sistema executar estas funcionalidades.

Segundo CYSNEIROS & LEITE(1997), os requisitos no funcionais, ao contrrio dos funcionais, no expressam nenhuma funo a ser realizada pelo software e sim comportamentos e restries que este software deve satisfazer.

4.1 REQUISITOS FUNCIONAIS DO CASO DE USOEm anlise ao caso de uso, foi definido juntamente com gestores e diretores todos os requisitos e elaborado um documento contendo todos eles atravs da seguinte estrutura:

A. Descrio geral do sistema.B. Requisitos funcionais.B.1 Cadastro[RF01] Criar solicitao;[RF02] Alterar solicitao;[RF03] Excluir solicitao;B.2 Visualizao[RF04] Visualizar solicitaes criadas;[RF05] Visualizar indicadores de desempenho;B.2 Notificao[RF05] Enviar e-mail para solicitante e para setor de cadastro quando uma nova solicitao criada;[RF06] Enviar e-mail para solicitante e para setor de cadastro quando uma solicitao promovida para uma nova fase;[RF07] Enviar e-mail e para setor de cadastro quando ultrapassado prazo limite de finalizao da solicitao;[RF08] Usurio enviar notificao solicitando reavaliao de cadastro j efetuado;B.3 Importao e exportao[RF09] Anexar arquivo ao efetuar cadastro;[RF10] Exportar relatrios de cadastros efetuados;[RF11] Exportar relatrios de tempo mdio de finalizao dos cadastros;C. Requisitos no funcionais[RN01] Expirar sesso do usurio aps uma hora;[RN02] Flexibilidade em manutenes corretivas e criao de novos tipos de solicitaes;[RN03] Perfis de acesso diferenciados para leitura, alterao e excluso e bloqueio de acesso fora do nvel;[RN04] Usabilidade e intuitividade de forma que no seja necessrio treinamento especializado para uso;[RN05] Desenvolvimento utilizando plataforma PHP5 em servidor APACHE2 e utilizando banco de dados MySQL com acesso pela intranet empresarial.[RN06] Utilizar comunicao LDAP de servidor AD para login e recolher dados como e-mail e setor do usurio.[RN07] Garantir integridade dos dado atravs de validaes automticas5 DESIGN DE SOFTWARE

Pfleeger (2004, p. 159) nos ensina que o design de software o processo criativo de transformar o problema em uma soluo. , portanto, a descrio da estrutura a ser construda para que o software realize as funes desejadas.

5.1 MODELO CONCEITUALUma descrio do sistema proposto em termos de um conjuntos de ideias e conceitos integrados a respeito do que ela deve fazer, de como deve se comportar e com o que deve se parecer que seja compreendida pelos usurios da maneira pretendida. No objeto de estudo, pode ser feita a seguinte descrio:

Aplicao web de uso interno da empresa que crie, altere, exclua e promova solicitaes de cadastro de novos clientes. O Vendedor deve inserir os dados do cliente confirmar e os dados so salvos no sistema. Neste momento o setor de cadastro recebe uma notificao por e-mail informando que existe um novo cadastro, ento abre o e completa os dados. A solicitao deve passar, ao todo, por 4 estgios: em cadastro, anlise de crdito, concludo ou rejeitado. Cada vez que um cadastro promovido o solicitante deve receber um e-mail de notificao informando o status. A partir dos dados apresentar relatrios e indicadores de desempenho do setor de cadastro.

5.2 ARQUITETURA DE SOFTWARE

Pode-se assumir arquitetura de software como o entendimento das partes do sistema a ser desenvolvido como subsistemas e mdulos que atendero os requisitos propostos. Quo maior forem os requisitos, em maior escala ser a arquitetura a ser desenvolvida que segundo Sommerville (2003) pode depender principalmente dos no funcionais como desempenho, proteo, segurana e disponibilidade. Destes itens, aqueles que forem os mais requisitados sero os definidores do modelo de arquitetura a ser utilizado. No caso do objeto de estudo, foi definido que a segurana nos dados seria o principal pilar, seguido pelo desempenho. Dentro do conceito de segurana est confiabilidade dos dados na aplicao e no tratamento destes dados.

5.3 MODULARIDADE

Conforme Abelson e Sussman (1985), a sntese efetiva de programas tambm precisa de prncipios organizacionais que nos guie na formulao do desenho de um programa. Em particular, precisamos de estratgias para nos ajudar a estruturar grandes sistemas de tal maneira que eles tenham uma organizao modular, ou seja, possam ser divididos em partes coerentes que possam ser separadamente desenvolvidas. Quando os requisitos direcionam a aplicao de forma que suas aes seja independentes, o ideal que os mdulos se tornem mais independentes um dos outros para facilitar a manuteno e o desenvolvimento individual por exemplo.Quando se trata de modularidade, define-se que acoplamento se refere ao quanto a unidade funcional depende da outra para funcionar, quanto maior a dependente entra estas unidades, sejam elas mtodos, funes ou classes por exemplo, maior o acoplamento. A coeso, por sua vez, est ligada responsabilidade nica da unidade funcional, um mtodo que seja coeso realiza uma funo conceitual, servindo a apenas um propsito especfico.Com estes conceitos em mente, entende-se que para o o objeto de estudo, o desenvolvimento deve ser voltado para a alta coeso e a baixa modularidade, pois um dos objetivos da aplicao se tornar base para outras solues semelhantes mas independentes uma da outra criando uma aplicao nica mas composta de solues especficas e autnomas.

5.4 INTERFACE DE USURIOInterface o nome dado a toda poro de um sistema com a qual um usurio mantm contato ao utiliz-lo. Conforme conceitua Preece (1994), iterao o processo de comunicao entre pessoas e sistemas interativos de forma interpretativa e tendo este conceito em mente, pode-se entender a interface como o sistema de comunicao utilizando neste processo.

A interface de usurio deve ser entendida como sendo parte de um sistema computacional com a qual uma pessoa entrar em contato fsica, perceptiva ou conceitualmente. Sendo que fsica se tratando dos elementos que o usurio pode manipular, perceptiva aqueles que ele pode perceber e conceitual que o resultado da interpretao e do raciocnio do usurio desencadeados pela usa interao com o sistema (MORAN 1981).

Para no ser necessrios longos treinamentos, a intuitividade da interface um item prioritrio a ser considerado na hora de planejar o design das telas. Itens como menu fixo no top da tela, formulrios de cadastro bem posicionados e com letras legveis, ttulos escolhidos para descreverem as aes a serem executadas. Mas se tratando de um sistema consideravelmente simples, a interface no apresentou grandes dificuldades, apenas foram aplicados conceitos bsicos de legibilidade e facilidade no uso.

6 DESENVOLVIMENTO DE SOFTWARE

Parte do projeto de software que demanda maior esforo da equipe tcnica. Com o escopo da soluo bem resolvido e o cerne devidamente claro, possvel iniciar o processo de desenvolvimento que se inicia planejando a infraestrutura e plataforma de desenvolvimento a ser usada.

6.1 PLATAFORMA DE DESENVOLVIMENTO

A escolha correta da plataforma de desenvolvimento ser o alicerce do sistema,, a escolha errada poder gerar transtornos em termos de manuteno, correes, melhorias, mantenimento e integraes. Durante a pesquisa das plataformas ficou claro alguns itens importantes serem levados em consideraes:Referncias de mercado: Recomendaes por empresas que utilizam a plataforma, analisar solues j desenvolvidas, pontuar prs e contras e qual aceitao do mercado para aplicaes que utilizam esta plataforma. Custo em recursos humanos: A falta de popularidade na linguagem a ser utilizada em geral significa mo de obra mais escassa e cara incluindo tambm o custo em treinamento que para linguagens mais especializadas pode significar altos preos.Atualizaes: Um alto nvel de atualizaes em um plataforma indica uma linguagem no consistente e com alta ocorrncia de falhas que podem gerar transtornos.Legalidade: Algumas plataformas so livres apenas para uso particulas e educacional, mas para uso comercial so pagas, existem tambm plataformas totalmente pagas. Optar por uma distribuio paga vai depender do que esta linguagem tem a oferecer que se aplica aos requisitos e o quanto este custo vale a pena para o retorno final da aplicao. Suporte: Algumas plataforma de desenvolvimento possuem suporte pago que pode auxiliar a equipe de desenvolvimento. As distribuies gratuitas por sua vez, costumam ter fruns de ajuda e discusso que podem substituir certos atendimentos pagos. Cabe analisar o nvel dos desenvolvedores.Aplicao dos requisitos: claro que o sucesso final depende que a aplicao cumpra todos os requisitos apontados e escolher um plataforma que auxiliar nisto um passo para a entrega de um projeto bem sucedido.

Tendo em vista todos estes fatores a soluo, entre as linguagens Java, PHP e ASP a escolhida foi PHP5. Esta foi originada a partir da linguagem conhecida como PHP/FI criada em 1994 por Ramus Lerdof, e ao longo dos anos seguintes foi sendo aperfeioada. Em 1998 o desenvolvimento passou a ser feito por vrios desenvolvedores e ento passou a ser chamada apenas de PHP, como acrnimo recursivo Hypertext Preprocessor. Ainda neste perodo, j disponibilizava uma interface robusta de mltiplos banco de dados como Oracle, SQL e Sybase, ou protocolos como IMAP, LDAP e POP3, ou APIS e a possibilidade de desenvolvimento de novas bibliotecas. Hoje, na verso 5, pode-se apontar as seguintes caractersticas: velocidade, orientao objetos, portabilidade, open-source e ser server-side, ou seja, o servidor executa as aes e retorna como HTML ou Javascript. Enquanto o PHP uma linguagem server-side, o HTML e o Javascript por sua vez so client-side, ou seja, suas aes so executadas a nvel da sesso do utilizador. E para o Javascript exitem bibliotecas que trazem recursos prontos como o AJAX (Asynchronous Javascript and XML) que permite tornar as aes se tornem mas responsivas dentro da pgina executando diretamente na sesso atual sem necessidade de atualizao. A biblioteca Jquery possui funes predefinidas que executam funes integradas com o AJAX. O framework EasyUI uma biblioteca do Jquery que possui de forma mais abstrata e simplificada itens de interface como cones, barras de tarefas, tabelas dinmicas ou efeitos grficos.Segundo W3TECHS(2015), o PHP utilizado por 81,8% dos websites como uma linguagem server-side. Ao contrrio da linguagem Java que possui 30% de utilizao.6.2 AMBIENTE DE DESENVOLVIMENTO

Apenas escrevendo os cdigos de forma desordenada a probabilidade de no cumprir os requisitos corretamente bem alta, por isso a importncia de um ambiente onde o desenvolvimento posso ocorrer de forma organizada e segura. Existem algumas opes de uso como Eclipse, Delphi, Visual Studio, mas dentre as vistas o Netbeans foi o melhor soluo apresentada. As vantagens de se utilizar uma ferramenta de ambiente de desenvolvimento a possibilidade de criar partes de cdigo de forma automtica, notificao de erros, correes automticas, depurao de cdigo, organizao das classes e dos arquivos do projeto. Um problema no desenvolvimento em equipe alteraes de cdigo simultneas, a soluo encontrada para isso foi uma ferramenta implantada em um servidor linux chamada Subversion. Um projeto da empresa Apache, que integrado ao Netbeans apresenta uma soluo inteligente para o problema do desenvolvimento simultneo. Os arquivos da aplicao so movidos para o repositrio do Subversion e ele ir gerenciar as alteraes efetuadas. De forma prtica um desenvolvedor pode alterar determinado trecho de cdigo enquanto outro faz a mesma coisa. O Subversion identifica isto e aponta ao Netbeans que por sua sinaliza o trecho no painel alterando a cor do arquivo para vermelho indicando que naquele momento que o cdigo est sendo atualizado. Ao finalizar o primeiro desenvolvedor confirma a alterao e o segundo receber um notificao para decidir se sobrescreve ou no.

6.3 INFRAESTRUTURA

Aps a deciso da plataforma de desenvolvimento a infratrutura necessrio dever ser montada. Para o PHP foi necessrio a instalao de um servidor web com sistema operacional linux Fedora e feita a instalao dos aplicativos Apache, PHP5, Subversion, banco de dados MySQL e PHPMyAdmin. Outro fator importante a automatizao de backups dirios e semanais da aplicao e do banco de dados, isto vital para dar segurana no gerenciamento de problemas.Outro fator primordial quanto a infraestrutura do ambiente a segurana do software. Segundo Chess e Mcgraw (2004), um campo que surgiu a partir da necessidade de desenvolvedores, arquitetos e cientistas da computao de lidar com a construo de software mais seguro. De forma prtica, o software resistente a invaso o que reduz a probabilidade de um ataque bem sucedido e mitiga a extenso do dano. O software seguro desenvolvido de forma que possvel estabelecer que ele continue operando corretamente em caso de ataques, resistindo explorao de falhas no software, ou tolerando os erros e falhas que podem gerar desta explorao (GOERTZEL, 2008).

7 QUALIDADE DE SOFTWARE

Segundo Sanders (1994), um produto de software apresenta qualidade dependendo do grau de satisfao do cliente sob todos os aspectos do produto. Ainda conceituando, Pressman (1995) define qualidade de software como a conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padres de desenvolvimento claramente documentados, e as caractersticas implcitas que so esperadas de todo software desenvolvido por profissionais. Isto deixa claro que existem duas medidas para a qualidade: a satisfao do cliente mediante os requisitos propostos e uma viso comum padronizada que informe mtricas do que deve ser a qualidade do software. Existes organismos de normalizao com alta aceitao de nvel mundial que fornecem diretrizes importantes de qualidade como ISO e CMMI.A ISO (International Organization for Standardization) estabelece padres relacionados ao processo de desenvolvimento de software, como a ISO/IEC 12207 referente a processos de ciclo de vida de software e a ISO/IEC 15504 PDTR referente a avaliao de processo de software . J o CMMI (Capability Maturity Model Integration) uma abordagem de melhoria de processos que ajuda a aperfeioar a eficcia, eficincia e qualidade da organizao, identificando os pontos fortes e fracos alm de promover mudanas.Para o objeto de estudo no sero aplicados integralmente todas as mtricas definidas pelos padres internacionais, devido ao curto prazo de entrega e a simplicidade inicial do projeto, contudo alguns parmetros apontados foram levados em considerao e assimilados como requisitos da aplicao. Entre eles: Usabilidade, que um conjunto de caractersticas que vo definir a capacidade da aplicao de ser compreendida, atrativa, legvel e navegvel; Eficincia, caractersticas que vo definir se o servio possui boa performance, acessibilidade e utilizao dos recursos;Manutenibilidade, capacidade da soluo desenvolvida de ser adaptvel e modificvel quanto a novas necessidades;Implementabilidade, caracterstica da aplicao de ser implementvel seja economicamente, tecnologicamente ou temporalmente em relao ao cronograma proposto;Funcionalidade, conjunto de particularidades que definem a capacidade da aplicao de ter compatibilidade com outros navegadores, segurana, mecanismos de buscas, relevncia de contedo entre outros apontadores quanto as aes executadas.

A qualidade do software fundamental para o item mais importante dentro do desenvolvimento, a satisfao do cliente. 8 CONCLUSOSeguindo sinteticamente os passos propostos pela Engenharia de Software, a taxa de aceitao do software se mostrou claramente alta em relao desenvolvimentos feitos sem utilizar uma mtrica ou um padro preestabelecido. Tais conhecimentos dispostos e aplicados se mostraram de grande valor tanto equipe de desenvolvimento que conseguiu desenvolver uma soluo com baixo risco, custo reduzido, alta aplicabilidade e com um ambiente que pode ser utilizado para inmeras outras solues, quanto aos usurios que com baixo custo de treinamento, prottipos de exemplificao, todos requisitos desenvolvidos, melhoria e aumento de produtividade no processo e possibilidade de novos desenvolvimentos. Tendo em vista todos os fatores abordados, fica claro que todo o conceito abordado pode e deve ser utilizado como mtrica para desenvolvimento das mais diversas solues garantindo a Engenharia de Software um recurso que agrega valor soluo proposta.

REFERNCIAS

TAFNER, Elisabeth Penzlien; DA SILVA, Everaldo. Metodologia do Trabalho Acadmico. Indaial: ASSELVI, 2008.

ABELSON & SUTTMAN. Structure and Interpretation of Computer Programs. MIT Press and McGraw Hill, 1985.

BRIAN CHESS & GARY MCGRAW. IEEE Security & Privacy, November/December 2004.

CYSNEIROS, L. M. Integrando Requisitos No Funcionais ao Processo de Desenvolvimento de Software. Rio de Janeiro. 116f. Dissertao (Mestradoem Informtica) - Departamento de Informtica, Pontifcia Universidade Catlica do Rio de Janeiro, 1997.

DORFMAN, M., THAYER, R. H. Standards, Guidelines and Examples of System and Software Requirements Engineering. Los Alamitos, CA, IEEE Computer Society Press, 1990.

GOERTZEL, B. Achieving Advanced Machine Consciousness through Integrative, Virtually Embodied Artificial General Intelligence, 2008.

MARTIN, P.; TATE, K. Getting started in project management. New York: John Wiley & Sons, 2001.

MORAN, T. The Command Language Grammars: a representation for the user interface of interactive computer systems. Em International Journal of Man-Machine Studies 15:3-50, Academic Press, 1981.

PFLEEGER, S. L. Engenharia de Software: Teoria e Prtica, Prentice Hall do Brasil, 2 Edio, 2004

PREECE, J. Et al. Human-Computer Interaction, Addison- Wesley, 1994.

PRESSMAN, R. S. Engenharia de Software. Makron Books. So Paulo. Brasil, 1995.

ROYCE W. WINSTON. Managing the development of large software systems, 1970.

SANDERS, Joc. Qualidade de software. 1994.

SCHILLING, M. A.; HILL, C. W. L. Managing the new product development process: Strategic Imperatives. Academy of Management Executive, 1998.

SOMMERVILLE, Ian. Engenharia de software. So Paulo. 6. ed. Pearson Education Companion, 2003.

Manifesto gil, Ward Cunningham. Manifesto for Agile Software Developement Disponvel em: Acesso em 01 de Junho de 2015.Portal INPE, Instituto Nacional de Pesquisas Espaciais. Disponvel em: Acesso em 10 de Maio de 2015.