1 Universidade de Pernambuco Faculdade de Ciência e Tecnologia de Caruaru Bacharelado em Sistemas de Informação UMA SOLUÇÃO ORIENTADA A PROCESSOS PARA AUXILIAR A IMPLANTAÇÃO DO NIVEL G DO MPS.BR Trabalho de Graduação Sistemas de Informação Ana Letícia Ferreira da Costa Orientador: Prof. Msc. Rômulo César Dias de Andrade 2 ANA LETÍCIA FERREIRA DA COSTA UMA SOLUÇÃO ORIENTADA A PROCESSOS PARA AUXILIAR A IMPLANTAÇÃO DO NÍVEL G DO MPS.BR Monografia parcial para apresentada obtenção como do requisito diploma de Bacharel em Sistemas de Informação pela Faculdade de Ciência e Tecnologia de Caruaru – Universidade de Pernambuco. Caruaru, dezembro, 2014 3 Dedico este trabalho aos meus pais, Otávio José (in memoriam) e Amparo, pela motivação aos estudos, amor e ensinamentos. 4 Agradecimentos A Deus, por me dar perseverança, força, auxílio e fé para que esse trabalho pudesse ser concluído. A minha mãe, Amparo, por ser um verdadeiro amparo em minha vida, me orientando e incentivando nos momentos de aflição. Ao meu pai, Otávio José (in memoriam), que embora não esteja fisicamente comigo, seus ensinamentos prevalecerão para sempre em minha vida. As minhas avós, Valdeci (in memoriam), com seu modo simples de enxergar o mundo, Marlene (in memoriam), que viu em mim aptidão para com os estudos e a minha bisavó Rosa, com seu modo peculiar de apreciar o conhecimento. A toda minha família pelo apoio incondicional, em especial aos tios: Zé Carlos, por ser um exemplo de perseverança em relação aos estudos, Hozana, por sempre ver o lado bom das coisas e Jô, que, por tantas vezes me acolheu em sua casa. Ao meu namorado, Felipe, pela compreensão durante todos os momentos necessários para elaboração deste trabalho. Aos meus vizinhos, que indiretamente me forneceram internet. Aos professores, que contribuíram com minha formação acadêmica, em particular ao meu orientador, Rômulo César, pelo incentivo e força nos momentos de fraquejo. Aos meus amigos pelo apoio dado durante toda a graduação, de modo notável, Polly, Karine e Élida, que mostraram que uma amizade verdadeira pode surgir independentemente de onde se esteja. E a todos, que de uma forma ou de outra contribuíram para que este trabalho acontecesse. 5 Resumo Atualmente o cenário de competição e profissionalismo obriga organizações a buscarem efetividades nos seus processos de desenvolvimento de software como uma forma de aumentar a qualidade dos serviços prestados. É essencial que as etapas do desenvolvimento de software bem como as fases de levantamento dos requisitos estejam claras e definidas, garantido conformidade para empresas e clientes e assim reduzindo os custos com retrabalho e falta de entendimento devido a requisitos de sistemas que foram mal relatados. A demanda por desenvolvimento de softwares é inevitável, ocasionando requisitos de implementação cada vez mais complexos, onde as fábricas de softwares utilizam modelos de referências para guiar os seus processos. As empresas vêm melhorando os seus procedimentos de especificação de requisitos, tendo em vista que as adoções de boas práticas trazem resultados significativos para as mesmas. Diante desse cenário de processo e especificação de requisitos, este trabalho apresenta um estudo sobre automação de processos com ênfase em BPMS (Busines Process Management System) juntamente com a especificação de requisitos com ênfase no Nível G do MPS.BR (Melhoria do Processo de Software Brasileiro). A finalidade do trabalho proposto é de gerenciar a especificação de requisitos, controlando e dando visibilidade de todas as etapas do processo e com isso melhorando a comunicação entre empresas e clientes evitando assim interpretações erradas destes requisitos e garantido as entregas nos prazos corretos, tendo em vista que a ferramenta proposta controla os tempos em cada fase e assim gera relatórios gerencias para as partes interessadas. Em virtude do uso de um processo definido previamente, será possível identificar possíveis gargalos e trabalhar de forma efetiva para corrigir eventuais problemas que possam existir na fase de especificação de requisitos. Palavras-chave: Qualidade de Software; Requisitos; BPMS; MPS.BR Nível G; Processo; 6 Abstract Currently the competition scenario and professionalism requires organizations to seek effectivities in their software development processes as a way to increase the quality of services provided. It is essential that the stages of software development and the lifting phase of the requirements are clear and definite, guaranteed compliance for businesses and consumers and thereby reducing the cost of rework and lack of understanding due to system requirements that were poorly reported. The demand for development of software is inevitable, causing implementation requirements increasingly complex , where the software factories use reference models to guide their processes. Companies have improved their requirements specification procedures, given that the adoption of best practices bring significant results for the same. Given this scenario process and requirements specification, this paper presents a study on process automation with emphasis on BPMS (Busines Process Management System) together with the specification requirements with emphasis on Level G of MPS.BR (Improving the Software Process Brazilian). The purpose of the proposed work is to manage the requirements specification, thus controlling and giving visibility of all stages of the process and thereby improving communication between businesses and customers avoiding misinterpretation of these requirements and guaranteed deliveries at the right time, with a view that the proposed tool controls the times when each phase and thus generates management reports for stakeholders. Due to the use of a process defined previously, you can identify potential bottlenecks and work effectively to address any problems that may exist in the requirements specification phase. Keywords: Software Quality; Requirements; BPMS; MPS.BR Level G; Process; 7 INDICE DE FIGURAS Figura 1 - Estrutura do Modelo de Prototipação ...................................................................... 21 Figura 2 - Correspondência entre o CMMI e o MPS.BR. ........................................................ 30 Figura 3 - Áreas de Conhecimento em BPM ............................................................................ 34 Figura 4 - Fases da Modelagem, adaptado ............................................................................... 36 Figura 5 - Interface Principal do BizAgi Studio ....................................................................... 37 Figura 6 - BizAgi Studio, Aba do Model Process .................................................................... 38 Figura 7.1 - Fase em que um Processo se Encontra ................................................................. 39 Figura 8.1 - Fases da Modelagem, Etapa de Elicitação dos Requisito ..................................... 46 Figura 9 - Modelagem de Dados na Ferramenta ...................................................................... 48 Figura 10 - Implementação da Fachada .................................................................................... 49 Figura 11 - Regra de Negócios ................................................................................................. 50 Figura 12 - Separação dos Grupos de Requisitos ..................................................................... 51 Figura 13 - Tela de login .......................................................................................................... 52 Figura 14 - Tela de Afazeres .................................................................................................... 52 Figura 15 - Gráfico para Acompanhamento de Projetos .......................................................... 53 Figura 16.1 - Criação e Definição do Papel de Analista .......................................................... 53 Figura 17 - Trabalhos em Andamento por Usuário .................................................................. 55 Figura 18 - Resumo do Tempo de Ciclo................................................................................... 55 8 INDICE DE TABELA Tabela 1 - Fases da Ferramenta ................................................................................................ 46 9 LISTA DE SIGLAS ABPMP Association of Business Process Management Professionals ASD Adaptive Software Development BPM Business Process Management BPMN Business Process Model and Notation BPMS Business Process Management Suite CMM Capability Maturity Model CMMI Capability Maturity Model Integration CBoK Guia para o Gerenciamento de Processos de Negócios DSDM Dynamic Systems Development Methodology ISO International Organization for Standardization MCT Ministério da Ciência e Tecnologia MPS Melhoria do Processo de Software MPS.BR Melhoria do Processo de Software Brasileiro MR-MPS Modelo de Referência do MPS.BR PMBOK Project Management Body of Knowledge Sepin Secretaria de Política de Informática SEI Software Engineering Institute SWEBoK Software Engineering Body of Knowledge SW-CMM Software Capability Maturity Model TI Tecnologia da Informação UML Linguagem de Modelagem Unificada 10 SUMÁRIO 1 INTRODUÇÃO ................................................................................................................... 11 1.1 CARACTERIZAÇÃO DO PROBLEMA .......................................................................... 12 1.2 OBJETIVOS ....................................................................................................................... 13 1.3 JUSTIFICATIVA ............................................................................................................... 13 1.4 METODOLOGIA DA PESQUISA .................................................................................... 14 1.5 ORGANIZAÇÃO DO TRABALHO ................................................................................. 16 2 REFERENCIAL TEÓRICO .............................................................................................. 16 2.1 ENGENHARIA DE SOFTWARE ..................................................................................... 17 2.1.1 Prototipagem de Software ............................................................................................... 20 2.2 MODELAGEM DE SOFTWARE ..................................................................................... 21 2.2.1 Engenharia de Requisitos ................................................................................................ 22 2.3 GESTÃO DE QUALIDADE ............................................................................................. 24 2.3.1 Qualidade de Software..................................................................................................... 26 2.3.2 Melhoria do Processo de Software Brasileiro (MPS.BR) ............................................... 28 2.3.3 Nível G de Qualidade ...................................................................................................... 31 2.4 GERENCIAMENTO DE PROCESSOS DE NEGÓCIOS (BPM) .................................... 32 2.4.1 Tecnologia da Informação Aplicada à Gestão por Processos (BPMS) ........................... 35 2.5 CONSIDERAÇÕES FINAIS ............................................................................................. 39 3 RESULTADOS E DISCUSSÕES ...................................................................................... 41 4 CONCLUSÕES.................................................................................................................... 56 5. REFERÊNCIAS BIBLIOGRÁFICAS ............................................................................. 57 11 1 INTRODUÇÃO A invenção dos computadores foi algo que revolucionou a humanidade, pois, a partir do surgimento e evolução destes objetos, Filho (2013), pessoas passaram a depender cada vez mais da comodidade oferecida por estes. Para tanto, é necessário que os softwares desenvolvidos atendam sempre aquilo que o usuário final anseie. É neste cenário que se destaca a engenharia de software e todas as facilidades oferecidas por esta área tão promissora Filho (2013). Portanto, para que o produto de software desenvolvido tenha qualidade, seja entregue no prazo definido, tenha um custo razoável e ainda atenda às necessidades dos usuários é essencial que possua qualidade em seu desenvolvimento já que estes fatores influenciam de forma direta o produto produzido e proporcionam destaque junto ao mercado competitivo, Anjos e Moura (2014). O que não se deve esquecer é que, softwares caóticos e ineficientes levam organizações desenvolvedoras a perderem mercado, Filho (2013). Motivar organizações às práticas proporcionadas pela qualidade é um desafio constante já que muitas das organizações deixam esta prática como segundo plano; investir em qualidade é algo que só traz benefícios, uma vez que serão observados os produtos de softwares desenvolvidos assim como o grau de maturidade em que a empresa se encontra com a finalidade de obter certificação de qualidade, Gomes (2000). Presentemente existem alguns órgãos responsáveis por ditar as normas de qualidade que um produto de software deve ter; tanto internacionais, CMMI (Capability Maturity Model – Integration), ISO (International Organization for Standardization) e suas normas, bem como nacional, MPS.BR (Melhoria do Processo de Software Brasileiro). Uma vez que softwares são desenvolvidos, estes necessitam de uma equipe de gerenciamento e desenvolvimento; tais equipes precisam estar cientes do grau de produtividade em que o projeto se encontra. Fazer uso de gerenciamento de processos de negócios (BPM) no desenvolvimento de softwares é algo muito útil e quando agregado as práticas de qualidade transformam-se em algo extraordinariamente proveitoso. Utilizar BPM em um processo de software possibilita a transformação deste processo, BPM, CBOK (2013), pois é possível representa-lo graficamente bem como automatiza-lo, não esquecendo de que também é possível fazer o gerenciamento destes processos em desenvolvimento. 12 Antes de se pensar que é impossível fazer esta integração entre dois processos distintos, sendo um voltado a qualidade e o outro à automação, lembremo-nos das oportunidades oferecidas pelo Busines Process Management System (BPMS), como forma de automatizar a gestão de processos de negócios. Sendo assim, este projeto busca criar uma solução orientada a processos com o uso de BPMS, o mesmo toma como ênfase o modelo de melhoria e avaliação do processo de software MPS.BR nível G para que micro, pequenas e médias empresas possam adotar esta ferramenta como metodologia de trabalho. 1.1 CARACTERIZAÇÃO DO PROBLEMA Entende-se por engenharia de software o estabelecimento e uso de sólidos princípios que integra métodos, ferramentas e procedimentos para o desenvolvimento de softwares. Quanto à qualidade são todos os artefatos produzidos durante seu desenvolvimento, ou seja, modelos, documentos, relatórios, código fonte, código executável, cronograma, etc., estes, tem que satisfazer as necessidades dos clientes, colaboradores, acionistas e usuários finais. Uma pesquisa realizada com organizações nacionais mostrou que 43% dos processos de software foram cancelados ou entregues com falhas comprometedoras no produto (ATALLA apud RIBEIRO, et, al., 2011). Segundo Furtado, certos tipos de falhas que ocorrem em projetos de software são ocasionados quando o cliente, ou usuário final é ignorado, pois, a falta de envolvimento desta parte, durante todo o desenvolvimento do projeto, está diretamente relacionada ao fracasso. Analisando tal cenário, em 2003 a Associação para Promoção da excelência do Software Brasileiro (SOFTEX), que conta com o apoio de diversas empresas e ministérios criou o MPS.BR (Melhoria de Processos do Software Brasileiro), este programa, busca atender as necessidades do mercado e, ao mesmo tempo, manter os padrões de qualidade exigidos por órgãos competentes, o MPS.BR subdivide-se em 7 níveis, que vão do G (sendo este, o nível mínimo de qualificação) ao A (sendo este, o nível máximo de qualificação) . Sabe-se, que o mercado de Tecnologia da Informação (TI), está cada vez mais crescente e cada vez mais quebrando barreiras geográficas; é nesse cenário que, em Pernambuco, destaca-se um grande polo de desenvolvimento e soluções inovadoras, o Porto 13 Digital, que age como uma “incubadora de empresas”, onde, para se desenvolver softwares, é essencial que se tenha certificação nível G. É diante desse cenário que surge a seguinte problemática: Como utilizar processos automatizados para auxiliar na implantação do MPS.BR nível G? De acordo com Sommerville (2011), um software além de corresponder às expectativas do usuário, precisa ser confiável; e para ser confiável, precisa seguir padrões de qualidade, tais padrões são ditados pelo MPS.BR, que segue modelos e normas internacionais a fim de que a indústria de software nacional atenda cada vez mais as necessidades dos seus clientes. 1.2 OBJETIVOS Este trabalho tem como objetivo geral propor uma solução automatizada que guie as empresas a partir dos processos Nível G do MPS.BR na implantação deste programa. E como objetivos específicos: o Compreender os processos do MPS.BR Nível G e relacionar suas boas práticas com BPM. o Definir um modelo de implantação do MPS.BR nível G orientada a processos através de um BPMS(Tecnologia da Informação Aplicada a Gestão de Processos) o Estimar o tempo para as atividades de implantação. o Criar papéis e fases de implantação. o Definir fluxos de trabalho. 1.3 JUSTIFICATIVA Como já é costume, a maior parte de micro, pequenas e médias empresas utilizam metodologias tradicionais para realizarem suas tarefas, porém nem sempre utiliza-las surte o efeito esperado, Magalhães e Pinheiro (2007). 14 A pratica de Business Process Model and Notation (BPMN) contribui para um ambiente de trabalho mais dinâmico, além de proporcionar maior comodidade quanto às atividades de execução de estratégia de negócios que estas empresas estabelecem. Já as normas de qualidade MPS.BR servem para atribuir métricas a fim de que estas empresas possuam certificação de qualidade, SOFTEX (2013). Sendo assim, este trabalho visa integrar estas duas ferramentas, sendo uma voltada a processos, BPMN, que tem como intuito gerir um conjunto de boas práticas no processo de negócios e a outras voltada a qualidade, MPS.BR, como forma de melhorar gradativamente o processo de software destas empresas, para tanto daremos ênfase ao Nível G de qualidade por ser este o nível mínimo de qualificação que uma empresa deve ter. A proposta de implantação do Nível G do MPS.BR através de uma ferramenta orientada a processos, para micro, pequenas e médias empresas sobressai-se por ser dinâmica, ágil e intuitiva assim como é proposto pelo BPMN. Porém, de acordo com Magalhães e Pinheiro (2007) mudar a cultura organizacional de empresas é uma tarefa árdua, mesmo que o objetivo seja aumentar a produção e a qualidade dos produtos e serviços pois os gestores estão acostumados com o modelo já existente. Mesclar diferentes ferramentas pode contribuir para que a empresa tenha mais controle acerca dos artefatos de software produzidos, já que a ferramenta proposta facilita o modo como os gestores administram os projetos. A ferramenta desenvolvida propõe às empresas automação dos seus processos para que a partir disto o tempo de desenvolvimento de cada fase de um projeto de software possa ser acompanhado assim como cada pessoa responsável por uma fase, ou seja, a ferramenta indica a definição do fluxo dos trabalhos correntes na empresa. 1.4 METODOLOGIA DA PESQUISA Entende-se por metodologia, um conjunto de regras e métodos, ou seja, procedimentos organizados que conduzem a certo resultado. De acordo com Cervo, Bervian e Da Silva (2006), nos estudos científicos, os métodos são conjuntos de processos utilizados para investigar a demonstração da verdade. Sendo assim, como forma de validar esta pesquisa, algumas etapas consideradas cruciais foram abordadas. 15 A presente pesquisa caracteriza-se por ser exploratória, pois, segundo Cervo, Bervian e Da Silva (2006), este tipo de pesquisa realiza descrições precisas e quer descobrir as relações existentes entre seus elementos componentes. Para tanto será desenvolvida uma ferramenta orientada a processos; esta auxiliará a implantação do nível G em empresas desenvolvedoras de software, seguindo as normas estabelecidas pelo MPS.BR. Ainda de acordo com Cervo, Bervian e Da Silva (2006) qualquer espécie de pesquisa e em qualquer área de estudo, é primórdio que seja feita uma pesquisa bibliográfica; seguindo este pensamento, um estudo bibliográfico detalhado sobre engenharia e modelagem de software, gestão de qualidade com base no MPS.BR nível G e Busines Process Management Suite (BPMS) foi realizado, tendo como objetivo criar embasamento teórico para esta pesquisa. Para que pudesse ser feito o acompanhamento do desenvolvimento da ferramenta, foi adotado o modelo de prototipagem de software, este, gera versões parciais e preliminares de um sistema de software que esteja sendo desenvolvido, Souza (2014), como este trabalho tem por objetivo desenvolver uma ferramenta de software orientada a processos, este modelo de desenvolvimento enquadrou-se de forma satisfatória ao desenvolvimento desta ferramenta, uma maior explanação acerca do assunto será exibido no capítulo 2. Ao ser efetivada a revisão da literatura, descrita no capítulo 2 observou-se a importância de conectar gerenciamento de processos à qualidade de software, tendo em vista viabilizar o desenvolvimento de softwares realizado por micro, pequenas e médias empresas. Para finalizar foi realizada uma pesquisa qualitativa, que, de acordo com Otani e Fialho (2011), são levados em conta a relação diligente entre objetividade e subjetividade o qual não pode ser traduzido em números; para Flick (2009) este tipo de pesquisa consiste na relevância e análise de diferentes perspectivas para o pesquisador, já que são levadas em conta variedade das abordagens bem como os métodos reflexivos no que diz respeito ao processo de produção do conhecimento. Uma pesquisa qualitativa “não requer o uso de métodos e técnicas estatísticas” (OTANI, FIALHO, 2011, p. 38) já que, ainda de acordo com Otani e Fialho (2011) os dados necessários para realização da coleta estão disponíveis no meio natural, e, o pesquisador é o instrumento-chave para coleta-las. Pesquisas do tipo qualitativas tendem a ser descritivas, pois “o pesquisador tende a analisar os dados indutivamente, e o processo e seu significado são os focos principais da abordagem.” (OTANI, FIALHO, 2011, p. 38). 16 1.5 ORGANIZAÇÃO DO TRABALHO O conteúdo deste trabalho está estruturado em cinco capítulos: o No capítulo 1 foi feita uma breve introdução acerca dos principais motivos que levaram a realização deste trabalho, seus objetivos e metodologia utilizada; o No capítulo 2 foi feita a revisão da literatura que aborda assuntos como engenharia de software e o modelo de prototipagem de desenvolvimento, modelagem e gestão da qualidade de software e para finalizar, foi tratado do tema BPM; o Capítulo 3 apresenta os resultados, assim como as discussões acerca do estudo realizado; o E para finalizar, o capítulo 4 aborda as conclusões deste trabalho. 2 REFERENCIAL TEÓRICO Como forma de embasar a pesquisa aqui apresentada, foi-se analisado o estudo da arte referente à engenharia de software. O presente referencial teórico traz como peças chave, a modelagem de software, que de acordo com Pfleeger (2004), modelar softwares é analisar os procedimentos necessários para que ações possam ser acompanhadas e tomadas de forma correta; gestão da qualidade de software, que, segundo Pressman (2011) é o processo onde se verifica os requisitos existentes no projeto, bem como o grau de satisfação do cliente; MPS.BR com ênfase no nível G de qualidade, de acordo com o guia de implementação desenvolvido pela SOFTEX tal programa busca atender as necessidades do mercado ao mesmo tempo que mantém os padrões de qualidade exigidos por órgãos competentes; BPM, para Barrios(2012), BPM nada mais é que o conhecimento dos processos executados a fim de gerencia-los, para, daí realizar melhorias e evoluir tais processos; BPMS, a empresa MasterHause, especializada em consultorias e treinamentos nos diz que o BPMS é um conjunto de funções que tem por objetivo modelar processos de negócios de maneira padronizada. 17 2.1 ENGENHARIA DE SOFTWARE Assim como aconteceu à humanidade, com o software não foi diferente; ambos sofreram intensas evoluções, cada uma ao seu tempo e com sua importância. O software passou a fazer parte da vida das pessoas de tal forma que não conseguimos imaginar o mundo sem as facilidades oferecidas a nós por eles. Mas nem sempre foi assim, segundo Wirth (2012), no princípio havia muitas limitações e por isso a ênfase no hardware era substancial; ainda de acordo com este autor, os anos 50 foram marcados pelo desenvolvimento de diversas linguagens de programação baixo nível; foi apenas nos 60, quando os computadores ganharam características multiprogramação que houve a popularização destes, porém, tal popularização trouxe consigo a necessidade de se desenvolver programas e aplicativos cada vez mais robustos; para tanto, era necessária a contínua evolução do hardware agregada à experiência dos programadores, na prática, as coisas não funcionavam desta forma, as melhorias no hardware, prometidas pelas grandes empresas que fabricavam os computadores não eram cumpridas, nem tão pouco, os programadores eram dotados de experiência nesta “nova área”. Em 1968, uma conferência patrocinada pela NATO, foi dedicada ao tema (1968 em Garmisch-Partenkirchen, Alemanha). Apesar de críticas terem ocasionalmente sido expressas anteriormente, só após a conferência as dificuldades foram discutidas abertamente e confessadas com franqueza incomum, e os termos “Engenharia de Software” e “Crise de Software” foram criados. (Niklaus, 2012). De acordo com Pressman (2011), atualmente o software assume duplo papel e estes papeis sofreram mudanças expressivas ao longo dos últimos cinquenta anos. Algumas dessas mudanças foram, Aperfeiçoamento significativo no desempenho do hardware, mudanças profundas nas arquiteturas computacionais, vasto aumento na capacidade de memória e armazenamento, e uma ampla variedade de exóticas opções de entrada e saída, tudo isso resultou em sistemas computacionais mais sofisticados e complexos. (Pressman, 2011, p.31). 18 Para Falbo (2005) desenvolver softwares não deve ser confundido com programar softwares. Estas são duas realidades diferentes; ao tratarmos do termo desenvolver softwares, visamos “melhorar a qualidade dos produtos de software e aumentar a produtividade no processo de desenvolvimento, através de métodos, técnicas, ferramentas, dentre outros” (FALBO, 2005, Introdução), a este conjunto de métodos atribuímos o nome de engenharia de software. Para França (2012), programar softwares é escrever códigos a partir de uma linguagem de programação existente, revisar e realizar testes de modo que haja uma interação entre o hardware, o sistema operacional e o usuário final. Ambos os processos são estritamente parecidos, porém, para Sommerville (2011) a engenharia de software foca todas as metodologias de desenvolvimento, desde o estágio inicial, onde são obtidas as especificações necessárias do sistema até sua manutenção, ou seja, quando o sistema desenvolvido já está sendo usado. No geral, os softwares passam por algumas etapas durante seu desenvolvimento, a esta cadeia dá-se o nome de processo de software, pode-se dizer que algumas atividades são comuns a todos os projetos, por exemplo: elicitação dos requisitos, onde os clientes e engenheiros se reúnem a fim de definir o software a ser produzido, bem como suas restrições; desenvolvimento do software, ou seja, fase onde os requisitos definidos são programados e é feita uma projeção; validação do software, nesta etapa, é feita uma análise do software produzido, para garantir que o mesmo está de acordo com as especificações do cliente; evolução do software, isto acontece quando há necessidade de modificação, ou seja, quando há uma atualização da versão do software produzido. O modelo de ciclo de vida é a primeira escolha a ser feita no processo de software. A partir desta escolha definir-se-á desde a maneira mais adequada de obter as necessidades do cliente, até quando e como o cliente receberá sua primeira versão operacional do sistema. (DevMedia 36, 2012, p.1). Pode-se dizer que os modelos de ciclo de vida funcionam como a estrutura onde serão ajustadas as fases do projeto para que assim, este vá tomando forma; outro ponto de notoriedade nesta etapa é a detecção de erros; pois bem, o erro, quanto mais cedo for descoberto, mais vantajoso o é, pois assim evita-se o retrabalho, além de que contribui para a qualidade do software, o cumprimento dos prazos, bem como todos os custos associados. 19 Para o professor Prado (2014), “É essencial, antes do desenvolvimento de um produto, preparar um plano geral, ou seja, escolher um modelo de ciclo de vida.” (PRADO, 2014, p.1). De acordo com a revista DevMédia (2014), não existe um modelo de ciclo de vida específico para cada projeto, a escolha de um ou mais modelos vai depender da complexidade do negócio do cliente, bem como nível de confiabilidade, ambiente operacional, custos, equipe de desenvolvimento, dentre outros fatores. Para que haja acompanhamento dos desenvolvedores e da empresa contratante e uma documentação atualizada para assim haver validação de cada uma das etapas, os projetos fazem uso de modelos de software, alguns desses modelos são: o Modelo Cascata: Este modelo tem como finalidade de “estabelecer ordem no desenvolvimento de grandes produtos de software.” (RAMOS, CARLOS, LEITÃO, COSTA, 2010, Introdução); recebe este nome, pois obedece a uma ordem de classes, aqui, cada fase só inicia quando a anterior termina e a nova fase iniciada recebe os atributos da classe anterior. o Modelo em V: “Este modelo introduz a criação de testes de dados e cenários de teste durante o ciclo de desenvolvimento do software, e trabalha com diferentes níveis de testes como: unidade, integração, sistema e aceitação.” (MACORATTI, 2008, p. 1). o Modelo Incremental: Batista e Santos (2012) afirmam que o modelo incremental foi sugerido por Barry Boehm, e que seu desenvolvimento é dividido em etapas, e estas etapas são incrementadas até sua versão final, daí o nome “modelo incremental”. Neste tipo de modelo, o cliente acompanha diretamente cada fase de desenvolvimento do projeto, além de poder opinar se tudo está saindo como o esperado. o Modelo Evolutivo: Este tipo de modelo tem como desígnio “apresentar características que possibilitem desenvolver versões cada vez mais complexas do software.” (PRESSMAN, 2011, p. 62). o Modelo Espiral: De acordo com Pressman (2011), o modelo espiral foi proposto por Barry Boehm, e tal modelo funciona como uma “junção” dos modelos cascata, prototipação e também o modelo interativo. o Rational Unifield Process (RUP): O RUP é um processo bem estruturado para que o desenvolvimento de softwares seja uma tarefa previsível e repetível possui alta qualidade além de levar em conta a acuidade da comunicação com 20 os clientes, é “iterativo e incremental, proporcionando a sensação evolucionária que é essencial no desenvolvimento de software moderno.” (PRESSMAN, 2011, p. 72). 2.1.1 Prototipagem de Software “Prototipação, é a montagem de protótipos, ela pode ser classificada de acordo com uma variedade de dimensões.” (LESSA, JUNIOR, 2009, p. 4). O que os autores quiseram dizer foi que as diferentes etapas de desenvolvimento de software, como por exemplo, levantamento dos requisitos, documentação, codificação, testes, entre outros, são considerados, porém, não necessariamente estas etapas precisam ser seguidas de modo formal. Este tipo de modelo de desenvolvimento oferece vantagens, como por exemplo: o Requisitos necessários não precisam ser totalmente declarados no início de um projeto, e, podem ainda ser editados caso haja essa necessidade. o A entrega do protótipo é feita ao cliente assim como as especificações e definições para que o usuário final saiba utilizar o software; a satisfação e entendimento destes usuários são levados em conta. Estas vantagens oferecidas servem para certificar que o ambiente de desenvolvimento destes softwares está sendo funcional, Lessa, Júnior (2009), pois, o principal objetivo da prototipagem é que a construção total ou parcial de um produto de software seja feita de forma rápida para que assim a equipe desenvolvedora bem como os usuários finais cheguem a um consenso do que realmente é necessário para a construção de um software, Pfleeger (2004). O modelo de prototipagem, tem como intuito revelar ao cliente uma versão inicial do sistema, esta primeira versão serve para “testar” possibilidades, ou seja, “mostrar conceitos, experimentar opções do projeto e, em geral, para conhecer mais sobre os problemas e suas possíveis soluções.” (BATISTA; SANTOS; 2012, p.1), evitando-se assim, gastos com futuras correções de erros. A figura 1 mostra a estrutura do modelo de prototipação. 21 Figura 1 Estrutura do Modelo de Prototipação. Fonte: Pfleeger (2004). Protótipos de software, servem para auxiliar diligências no processo de engenharia de requisitos, já que, na maioria dos projetos, a versão beta serve apenas de orientação quanto ao bom funcionamento, rapidez na execução entre outros fatores que dizem respeito à qualidade. Esta prototipação pode ser mostrada aos usuários de diversas formas, modelo executável, bem como, projeções, protótipos de papel, protótipos existentes, etc. 2.2 MODELAGEM DE SOFTWARE “Modelagem abrange tanto análise quanto projeto, descrevendo representações do software que se tornam progressivamente mais detalhadas.” (Pressman, 2011, p. 123). Para Castilho (2008), modelar software é algo parecido à planta de uma casa, é a representação simplificada de algo real. Tais representações servem para que haja um acompanhamento do que o projeto deverá ter e fazer, a isto dá-se o nome de fluxos de dados. Apesar de cada projeto de software ter sua particularidade, de acordo com Pressman (2011) podemos fazer uso de metodologias existentes para auxiliar o seu desenvolvimento. Pode-se dizer que o pontapé inicial de um projeto de software é levantar os requisitos para 22 que assim, o desenvolvimento do projeto esteja como o cliente ou usuário final almeje. De acordo com Sommerville (2011), atualmente os modelos de software são, na maioria das vezes representados por algum tipo de notação gráfica baseadas em notação UML (linguagem de modelagem unificada), porém, também é possível que tal representação seja feita por modelos matemáticos como forma de se especificar detalhes do sistema. Desse modo, este trabalho aborda as técnicas utilizadas a partir das notações UML sob uma perspectiva estrutural, já que será criada uma modelagem a fim de exemplificar os requisitos que comporão a ferramenta orientada a processos. Neste novo modelo de sistema os requisitos estarão documentados a fim de facilitar o entendimento e também, para seguir normas de qualidade ditadas pelo MPS.BR. “Os modelos estruturais podem ser modelos estáticos, que mostram a estrutura do sistema, ou dinâmicos, que mostram a organização do sistema quando ele está em execução.” (SOMMERVILLE, 2011, p. 89). Como será desenvolvida uma ferramenta orientada a processos, está será estruturada de modo estático e dinâmico, pois, após finalizar a modelagem, está será automatizada. Para tanto, no momento da modelagem, serão utilizados diagramas de classes para que se tornem mais claras as associações existentes entre elas; além disso, também será detalhado nessa modelagem, modelos semânticos de dados, “eles mostram as entidades dos dados, seus atributos associados, e as relações entre essas entidades.” (SOMMERVILLE, 2011, p. 90), funcionam como uma espécie de banco de dados, já que, os diagramas UML não os possui; muitas vezes, os dados podem ter características em comum, e, quando isto acontece, a UML dispõe de um tipo especial de associação entre as classes, conhecida por agregação de dados, aqui, um objeto é composto por um conjunto de outros objetos (Sommerville, 2011). 2.2.1 Engenharia de Requisitos “Projetar e construir softwares é desafiador, criativo e pura diversão.” (PRESSMAN, 2011, p. 127). Bem, a tarefa de desenvolver softwares é sim empolgante, e, por tal motivo, muitos desenvolvedores esquecem de levantar os requisitos necessários para o sucesso do projeto. 23 Apesar de parecer desnecessário que haja documentação e acompanhamento do projeto que está sendo desenvolvido, erros graves podem vir a surgir caso não haja planejamento das ações que deverão ser tomadas; por tudo isso, criou-se o termo engenharia de requisitos, esta, serve como referência para as atividades de desenvolvimento e acompanhamento de projetos de software, pois, Na perspectiva do processo de software, a engenharia de requisitos é uma ação de engenharia de software importante que se inicia durante a atividade de comunicação e contínua na de modelagem. Ela deve ser adaptada às necessidades do processo, do projeto, do produto e das pessoas que estão realizando o trabalho. (Pressman, 2011, p. 127). É a partir da engenharia de requisitos que são analisadas as propostas dos clientes, que, de acordo com Pressman (2011), seguem sete tarefas distintas onde algumas ocorrem em paralelo, e ambas são utilizadas de acordo com as necessidades de cada projeto; estas tarefas são: o Concepção: Nesta fase os clientes formalizam os requisitos fundamentais, determinam as restrições primordiais dos projetos e abordam as principais características e desempenhos que devem estar presentes para que o sistema atenda às necessidades dos clientes ou usuários finais. o Levantamento: Na fase de levantamento dos requisitos é importante que sejam realizadas reuniões com a presença da equipe desenvolvedora bem como dos clientes, para que sejam definidas as necessidades bem como as funcionalidades do software desenvolvido. o Elaboração: A fase de elaboração é responsável por expandir as necessidades identificadas nas fases de concepção e levantamento, por meio de conjuntos de elementos comportamentais, orientados a fluxos e baseados em cenários e classes, este modelo, faz ainda alusões a padrões de análises, e soluções para problemas recorrentes em distintas aplicações, Presman (2011). o Negociação: Fase em que a prioridade dos requisitos bem como a disponibilidade e os custos relativos são analisados e negociados pela equipe desenvolvedora e também pelos interessados no projeto. o Especificação: “Descrição sistemática e abstrata do que o software deve fazer, a partir daquilo que foi analisado.” (LEITE, 2000, p.1). Após esta análise, são levantados 24 possíveis problemas no software que será implementado, e, soluções são mostradas para que tais problemas sejam efetuados de forma segura; tem uma visão voltada para a comunicação sistemática entre as classes, pois assim, indica quais das propriedades funcionais são mais diligentes para resolver o problema de domínio. o Validação: Como certificação que foi feito aquilo que o cliente ou usuário final deseja, esta responsabilidade recai sobre a validação dos requisitos. Além disso, esta fase também é responsável por corrigir possíveis erros no projeto como um todo, evitando que sejam necessários retrabalhos após a entrega da versão final ao cliente. o Gestão: Fase de extrema importância para a engenharia de requisitos já que nesta fase a equipe de desenvolvimento consegue controlar, identificar e acompanhar as mudanças feitas ao longo do desenvolvimento do projeto. Para o Institute of Eletricaland Eletronics Engineers (IEEE, 1990), analisar requisitos de software é uma cadeia onde são ponderadas as necessidades dos clientes, e, a partir delas são determinados “o sucesso ou fracasso do projeto” (QUITERIO, 2012). É primordial que os requisitos que foram levantados, sejam relevantes para o projeto, Pois, eles fornecerão a referência para validar o produto final, estabelecerão o acordo entre cliente e fornecedor sobre o que o software fará, e consequentemente reduzirão os custos de desenvolvimento, pois requisitos mal definidos implicam num retrabalho. (QUITERIO, 2012, p.1). 2.3 GESTÃO DE QUALIDADE Na engenharia de software estabelecer metas e cumprir prazos é de suma importância para que se obtenha excelência no produto produzido. Com a evolução constante deste mercado, empresas desenvolvedoras de software estão mais conscientes que nunca de que qualidade e produtividade andam juntas, e, para que haja eficiência nestas tarefas, o processo de produção de softwares deve ser eficiente. Ao pensarmos em qualidade, imaginamos algo livre de erros ou defeitos, e em excelentes condições, mas, e no ambiente organizacional? 25 Neste tipo de ambiente podemos encontrar diversos significados que nos submetem à qualidade; “atendimento as expectativas do cliente, conformidade com a especificação, conhecimento do processo para melhora-lo, efetividade e usabilidade.” (VASCONCELOS et al., 2006, p. 73). Como visto, definir qualidade não é uma tarefa fácil, já que esta pode ser vista de vários ângulos; no campo da engenharia de software este é um termo a ser tratado com delicadeza já que softwares são bens intangíveis além de que podemos estar nos referindo a qualquer etapa do processo de software, que vai desde uma visão transcendental até uma visão de mercado. Garvin (1984) comenta detalhadamente quais são as perspectivas de qualidade e o que elas significam: o Visão Transcendental: Onde a qualidade é algo que podemos reconhecer, mas não podemos definir. o Visão do Usuário: Onde a qualidade é adequação ao propósito pretendido. o Visão do Fabricante: Onde a qualidade é a conformidade com a especificação. o Visão do Produto: Onde a qualidade está relacionada às características inerentes ao produto. o Visão do Mercado: Onde a qualidade depende do valor que os consumidores estão dispostos a pagar pelo produto. (GARVIN, 1984, p. 25-45). De acordo com Pfleeger (2004), devemos considerar a qualidade de software a partir de três ângulos: o Qualidade do Produto: Esta característica deve ser analisada sob dois pontos de vista; do usuário, estes vão analisar se o software desenvolvido corresponde a suas expectativas, ou seja, se ele faz aquilo que foi projetado para fazer, o usuário analisa ainda se o software é intuitivo, fácil de ser utilizado e possui alguma falha; e dos desenvolvedores do produto, estes tem a função de considerar todas as características do produto antes deste ser entregue ao usuário, por exemplo, defeitos, qualidades, etc. 26 o Qualidade do Processo: O processo de análise da qualidade do software desenvolvido é considerado por muitos engenheiros como sendo de vital importância para um bom funcionamento do projeto, pois, projetos passam por muitas fases e etapas, e caso em alguma destas não for bem realizada, a qualidade pode sofrer algum tipo de consequência; por isso deve-se dar ênfase ao processo de desenvolvimento, e este deve ser melhorado constantemente para que hajam evoluções na qualidade, assim como nos produtos resultantes. o Qualidade no Contexto do Ambiente de Negócios: Aqui o enfoque da observação está voltado para uma perspectiva de negócios, ou seja, a qualidade é mensurada a partir de produtos e serviços que dão suporte ao desenvolvimento de softwares; a partir de pesquisas foi analisado que, ao se melhorar a qualidade do software seu valor comercial também aumenta. Com os constantes avanços tecnológicos, com o crescimento do mercado de Tecnologia da Informação (TI), e com um público alvo cada vez mais exigente, a Organização Internacional de Padronização (ISO) foi criada, esta tinha o intuito de realizar auditorias internas para verificar o funcionamento do sistema de gestão de qualidade (ISO 9000). Pois bem, controlar a qualidade é uma ação que demanda muita responsabilidade, pois, fazer este controle total implica em uma representação de um sistema funcional, onde são integradas atividades como qualidade de desenvolvimento, manutenção além de esforços de melhoria da qualidade. 2.3.1 Qualidade de Software Como foi visto, o mercado de TI está em constante crescimento e evolução, e, a busca por produtos que ofereçam qualidade é algo cada vez mais almejado pelos usuários; investir na qualidade desses softwares é uma tarefa que está “diretamente relacionada a um gerenciamento rigoroso de requisitos, uma gerência efetiva de projetos e um processo de desenvolvimento bem definido, gerenciado e em melhoria contínua.” (VASCONCELOS et al., 2006, p. 81). 27 No sentido mais geral a qualidade de software deve ser definida como: uma gestão de qualidade efetiva aplicada de modo a criar produto útil que forneça valor mensurável por aqueles que o produzem e para aqueles que o utilizam. (Pressman, 2011, p. 360). Devemos lembrar que os softwares são desenvolvidos por pessoas, e, muitas vezes as limitações humanas fazem com que erros de lógica ou erros de interpretação influenciem no cumprimento das metas estabelecidas; investir na qualidade dos softwares desenvolvidos só traz benefícios as empresas, pois, são evitados retrabalhos e correções de defeitos após o software ser entregue ao usuário, sem contar que há um aumento na produtividade assim como um melhor relacionamento com os clientes ou usuários finais já que há um melhor planejamento e gestão por parte da empresa. Segundo Pressman (2011), existem três definições importantes para medir a qualidade dos softwares: o Gestão da Qualidade: Aqui são estabelecidas informações e metas que darão suporte ao processo de criação do software. o Produto Útil: Caracteriza-se como tal um produto de software, porém, este deve atender as necessidades dos clientes, devem ser isentos de erros além de fornecer confiabilidade. o Agregue Valor tanto para o Fabricante quanto para o Usuário: A empresa desenvolvedora deve disponibilizar o mínimo de atualizações possíveis, ou esta vai perder credibilidade junto ao mercado consumidor de softwares. Para Volpe et al. (2004), desde 1993 a Secretaria de Política de Informática (Sepin) que faz parte do Ministério da Ciência e Tecnologia (MCT) no Brasil vem realizando um acompanhamento de qualidade acerca dos processos de software, e a partir destas foi percebida um progresso significativo na procura de melhoria contínua da qualidade nos processos de desenvolvimento dos softwares brasileiros. Adotar um modelo de qualidade traz benefícios em todos os sentidos para uma organização, por exemplo, Aumento de produtividade, redução no número de defeitos em produtos, maior previsibilidade e visibilidade dos processos, além do atendimento das metas de custo, prazo, funcionalidade e qualidade do produto desenvolvido, além de aumentar a motivação da equipe. (VOLPE et al. 2004, p. 48). 28 Atualmente existem diferentes modelos de qualidade que podem ser seguidas por organizações que desenvolvem de software, são elas (Volpe 2004): o Capability Maturity Model (CMM): Desenvolvido pelo Software Engineering Institute (SEI), este modelo descreve um caminho evolucionário no que diz respeito a maturidade; possui cinco níveis de qualidade, sendo assim, quanto maior o nível, maior a maturidade nos processos de desenvolvimento de software de uma empresa. o Capability Maturity Model Integration (CMMI): Também desenvolvido pelo SEI, porém seu foco é na melhoria da maturidade dos processos de softwares em empresas desenvolvedoras. o Project Management Body of Knowledge (PMBoK): Guia de uso contendo as melhores práticas em gerencia de projetos; este guia traduz os conhecimentos mais atuais da prática de gerenciar projetos no mundo inteiro. o Software Engineering Body of Knowledge (SWEBoK): Guia de uso contendo as melhores práticas da engenharia de software. o ISO 9001 – Sistema de qualidade: Modelo para garantia da qualidade em projetos, desenvolvimento, produção, instalação e serviços associados: “Esta norma é baseada em uma série de princípios de gestão da qualidade, incluindo um forte foco no cliente, a motivação e o envolvimento da gestão, abordagem de processo e melhoria contínua.” (ISO 9001: 2008). o ISO 12207 – Tecnologia da Informação: Avaliação de Processos: Esta norma provê um processo que pode ser empregado para definir, controlar e melhorar os processos de ciclo de vida dos softwares. Este trabalho adotará o modelo de qualidade brasileiro MPS.BR com ênfase no nível G de qualidade; a próxima seção detalhará melhor as funcionalidades deste método. 2.3.2 Melhoria do Processo de Software Brasileiro (MPS.BR) O MPS.BR foi criado em dezembro de 2003 pela Associação Para Promoção do Software Brasileiro (SOFTEX), esta conta com o apoio do Ministério de Ciência e Tecnologia 29 (MCT), Financiadora de Estudos e Projetos (FINEP), Serviço Brasileiro de Apoio às Micro e Pequenas Empresas (SEBRAE) e o Banco Interamericano de Desenvolvimento (BID). Seu principal objetivo é a Melhoria do Processo de Software e de Serviços no Brasil, porém, com um atendimento voltado às empresas de pequeno e médio porte. Esta metodologia busca satisfazer as necessidades deste mercado que se encontra em constante expansão; tal programa busca ainda reconhecimento nacional bem como internacional por ser um modelo eficaz e que presta serviço às comunidades desenvolvedoras de software. Como forma de averiguar se este processo está sendo empregado da forma correta, o MPS.BR dispõe de processos e métodos para que sejam realizadas avaliações. Agindo deste modo, embora pareça bobagem, o MPS.BR está contribuindo para que os softwares nacionais possuam certificação de qualidade. O modelo de qualidade MPS.BR, teve sua inspiração em padrões de qualidade nacionail e internacionais; “Norma NBR ISO/IEC 12207, a norma internacional ISO/IEC 12207 e a ISO/IEC 15504, o que permite considerar portanto, que o modelo está em conformidade com estas normas.” (NETO, 2008, p. 57). Este modelo de referência para desenvolvimento de software, define sete níveis de maturidade como nos mostra a figura 2, e de acordo com Fagundes (2014), processos de maturidade de software precisam seguir um conjunto de atividades, métodos, práticas e mudanças, e, as organizações desenvolvedoras são as responsáveis por manter e desenvolver produtos de software baseados nestas atividades. A figura 2, mostra a correspondência entre o CMMI e o MPS.BR. 30 Figura 2 Correspondência entre o CMMI e o MPS.BR Fonte: Carvalho (2005). Estes níveis de maturidade determinam uma escala para medir o quão madura uma organização o é, e foram inspirados nos cinco níveis de desenvolvimento criados pelo CMMI. Apesar do padrão proposto pelo CMMI começar pelo nível inicial (1), depois passar para os níveis de repetível (2), definido (3), gerenciado (4) e otimizado (5), este ainda era um padrão muito alto para as micro, pequenas e médias empresas brasileiras, justamente por este motivo, o MPS.BR desenvolveu sete níveis que atendem ao mercado nacional, são eles: o Nível A: Em Otimização; o Nível B: Gerenciado Quantitativamente; o Nível C: Definido; o Nível D: Largamente Definido; o Nível E: Parcialmente Definido; o Nível F: Gerenciado; o Nível G: Parcialmente Gerenciado; Segundo Neto (2008, apud Couto 2007), o MPS.BR possui uma série de vantagens se tomarmos outros métodos de processo como modelo; alguns desses diferenciais são: 31 o Os níveis de maturidade propostos pelo MPS.BR, permitem uma implantação mais gradual, mais de acordo com a realidade de micro, pequenas e médias empresas brasileiras que desenvolvem software, além de ser possível visualizar estas melhorias; o Possui compatibilidade com o CMMI, que é um modelo de qualidade reconhecido internacionalmente; o Foi planejando tendo como foco a realidade de empresas nacionais de pequeno e médio porte; o Custo acessível; o Estas qualificações são avaliadas a cada dois anos; Cabe lembrar, que não há critérios contraditórios nos diferentes métodos de processo, apenas foram feitas adaptações que se adequaram melhor a realidade do mercado brasileiro. 2.3.3 Nível G de Qualidade “O nível G é o primeiro nível de maturidade do MR-MPS-SW” (SOFTEX, 2013, p. 7). Este deve ser implantado com precaução já que é o início da implantação de melhorias dos processos de software. Mudar a cultura de uma organização é sempre uma tarefa meticulosa, tanto nas empresas que desenvolvem software, como em empresas de qualquer segmento do mercado. Este é justamente o primeiro passo para se implantar o primeiro nível de qualidade, o nível G; em seguida, a empresa deve esclarecer se possui padrões organizacionais. Na maioria dos casos, empresas que desenvolvem software precisam adequar suas metodologias de trabalho para se tornarem organizações orientadas a projetos, e isto ocorre com a evolução dos produtos de software, “ser orientado a projetos significa redefinir algumas operações (atividades de rotina) já em andamento, como projeto, estabelecendo objetivos, prazos e escopo para sua execução.” Este nível subdivide-se em: o Gerência de Projetos: Tem como propósito estabelecer e manter planos para definição de atividades, recursos e responsabilidades acerca do projeto além de 32 corrigir desvios significativos no desenvolvimento do projeto, quando houver; com o crescimento da maturidade da organização, este propósito evolui junto. o Gerência de Requisitos: Tem como propósito gerenciar os requisitos do produto bem como dos componentes do projeto, além disso, é responsável ainda por identificar inconsistências entre estes requisitos, os planos de projeto e os produtos de trabalho. Esta gerência é responsável por controlar os requisitos. 2.4 GERENCIAMENTO DE PROCESSOS DE NEGÓCIOS (BPM) No ramo da engenharia de software, possuir qualidade no produto desenvolvido é algo extremamente importante, uma vez que o produto de software deve satisfazer as necessidades dos usuários; para que isto possa se concretizar, é importante que um modelo de processo de negócios seja seguido, sendo assim, o BPMN (Business Process Moddel and Notation) sobressai-se por “prover uma gramática de símbolos, para mapear de maneira padrão todos os processos de negócio de uma organização” (SGANDERLA, 2012, p.1) buscando com isto gerar a capacidade de entendimento de todas as partes interessadas no projeto, ou seja, analistas, desenvolvedores e também os usuários do sistema, OMG (2014). De acordo com Sganderla (2012), desde o seu lançamento, o que ocorreu em 2004, organizações do mundo inteiro passaram a utilizar BPMN em seus processos de negócios, e isto fez com que fossem disseminados conceitos a respeito de processos de negócios, atualmente, esta é considerada uma “característica chave de qualquer iniciativa BPM” (SGANDERLA, 2012, p.1). De acodo com o Guia para Gerenciamento de Processos de Negócios, o CBoK (2013) a maneira correta se se pensar em Business Process Manegement seria: Em vez de pensar em BPM como um processo de melhoria de processos, pense em BPM como um processo de transformação de processos. Isto porque a transformação vai além da melhoria, transformação implica repensar inovar e mudar paradigmas. Transformar é liderar e construir novas formas de geração de valor para os clientes e para a sociedade. (BPM, CBOK, 2013, p. 1). 33 Utilizar-se de processos para a realização de tarefas é apenas um meio para atingir um fim. E fazer uso de BPM para se chegar a este fim é uma nova forma de articular e aplicar abordagens, metodologias, estruturas de trabalho, práticas, técnicas e ferramentas para processos, já que estes muitas vezes são tratados de forma isolada, BPM, CBOK (2013). De acordo com Tony Benedict, presidente da ABPMP (Association of Business Process Management Professionals), gerenciamento de processos de negócios muda a forma tradicional em que as empresas estão acostumadas a gerenciar seus fluxos de trabalho, este novo meio, proporciona mudanças rápidas e inovações para otimizar o trabalho, o relacionamento com os clientes, fornecedores e colaboradores, BPM, CBOK (2013). A ABPMP tem sua atenção voltada para os profissionais que adotem este tipo de processo, a fim de que transformem seus ambientes de trabalho, quer sejam estes públicos ou privados, para oferecer produtos e serviços mais eficientes e que possuam menos defeitos, para que assim, os softwares produzidos forneçam maior valor para o usuário. Quando uma empresa resolve adotar BPM como metodologia de trabalho, ela só tende a ganhar, pois a partir deste momento, atividades que envolvem gerenciamento de desempenho tornam-se mais equilibradas, e o uso desta ferramenta de processos torna-se mais vantajosa a medida que a prática de BPM torna-se mais comum na organização, além de agregar mais valor. Com a implantação e prática de ferramentas orientas a processos novas estruturas, assim como papéis organizacionais para oferecer suporte às novas práticas tendem a surgir junto; o BPM, arremete duas principais abordagens, as que são mais orientadas a projetos de processo e a outra que vê BPM como esforço de transformação de processos, figura 3. Ainda que ambas as áreas tenham foco no gerenciamento de processos, tais abordagens geram papéis e responsabilidades distintos. Embora adotar a prática de BPM traga tantos benefícios às organizações, infelizmente existe um grave problema a cerca deste processo; “não há pessoas qualificadas e com conhecimento” (BPM CBOK, 2013, p. 13) suficiente nesta área para atender as necessidades de empresas e organizações. De acordo com Brett Champlin, fundador da ABPMP Internacional, (BPM CBOK (2013)), uma saída encontrada por estas empresas foi o investimento em treinamento e desenvolvimento profissional, como uma forma de suprir tal necessidade; ele nos diz ainda que algumas empresas 34 Estão construindo seus próprios currículos e programas de treinamento e incorporando pessoas iniciantes para trabalhar junto com os poucos profissionais talentosos de BPM que possuem. Outras estão enviando gestores e analistas para treinamento, para começaram a adquirir conhecimentos e habilidades necessários. (BPM CBOK, 2013, p. 13). Vale enaltecer que hoje, a prática de BPM é uma atividade de negócios que só tende a crescer, esta é uma prática estimulante e que vem conquistando o mercado por oferecer soluções rápidas e inovadoras. Como crédito extra, Champlin, fundador da ABMPM Internacional (BPM CBOK (2013)) comenta que vê os profissionais de BPM como novo backgraund de treinamento para profissionais que queiram aprender estas práticas no futuro, como é apresentado na figura 3. Figura 3 Áreas de Conhecimento em BPM Fonte: BPM, CBoK (2013). 35 2.4.1 Tecnologia da Informação Aplicada à Gestão por Processos (BPMS) A mudança do foco de função para processo por parte de empresas e organizações fez com que a procura por sistemas de informações que suportassem este tipo de metodologia ficasse cada vez mais evidente; utilizar-se destes sistemas, fez com que o ambiente organizacional se tornasse mais colaborativo, no sentido de que atividades de monitoramento do desempenho e comunicação entre as pessoas envolvidas no desenvolvimento de softwares tornaram-se mais eficazes. Davenport et al. (2004) nos afirmam o quão importante é ajustar sistemas de informação a processos de negócios, uma vez que as organizações devem buscar melhorias contínuas; estas empresas devem melhorar o suporte informacional além de reavaliarem e reajustarem outros fatores que contribuam para o sucesso de uma gestão orientada a processos. Em certos casos, automatizar os processos organizacionais não surte o efeito esperado “pois a automação foi usualmente aplicada aos processos de retaguarda (back office) e às funções administrativas” (GONÇALVES, 2000, p. 6-19). Fazer uso de tecnologias wokrflow (conjunto de ferramentas) no ambiente organizacional possibilita que haja integração entre a automação de processos nas organizações, Thives Jr. (2002). Alguns autores consideram BPM como sendo uma evolução da tecnologia workflow, já que BPM é um processo de transformação de processos e integra várias áreas de atuação de uma organização pela lógica de fluxos de trabalho. A tecnologia BPMS deve fornecer suporte a modelagem dos processos de software, como se pode ver na figura 4, além de integração entre os atores (regra de negócios), automatização dos processos e administração destes, uma vez que os processos desenvolvidos necessitam de execução, monitoração e também de análise, como se pode ver na figura 4: 36 Figura 4 Fases da Modelagem, adaptado. Fonte: Bizagi (2014). Um BPMS é composto de pelo menos cinco tarefas básicas: o Definição de Processos; o Execução de Processos; o Modelagem Gráfica de Processos; o Controle de Atividades; o Interface do Usuário; e, durante sua execução, os dados obtidos devem ser adquiridos, usados, reutilizados e criados constantemente. Visando automatizar a gestão do processo de negócio, foi proposto neste projeto a integração entre a ferramenta BPMS e o modelo de qualidade MPS.BR nível G, como forma de deliberar a criação de uma ferramenta que auxilie organizações a acompanharem a desenvoltura das fases de seus projetos. Portanto, foi escolhido o software BizAgi Studio, cuja interface principal é ilustrada na figura 5; 37 Figura 5 Interface Principal do BizAgi Studio. Fonte: O Autor. BizAgi é um software BPM que possui interface gráfica intuitiva e versátil, facilitando a automação de processos. Tem como objetivo proporcionar resultados imediatos a partir de suas ferramentas, estas dão suporte a modelagem de processos BPMN, regras de negócios, definição de interface com o usuário, portal web de trabalho, além de dar suporte a gerência com ferramentas de otimização e balanceamento de cargas de trabalho, bem como acompanhamento dos indicadores de desempenho de processos, BizAgi (2014). Vale ressaltar que mesmo os processos já tendo sido automatizados, é possível fazer a edição destes de forma prática; isto é bastante útil para as empresas, pois, caso haja a necessidade de modificação, os processos são rapidamente alterados sem gerar danos comerciais, BizAgi (2014). A seguir, será detalhado as funcionalidades desta plataforma de automação de processos, BizAgi (2014): o Curso BPMN Embutido: Model Process é a ferramenta de modelagem de processos oferecida pelo BizAgi, nela é possível identificar detalhadamente as funcionalidades de cada objeto, como mostra a figura 6; quando um desenho é feito, o interlicense identifica quais objetos podem ser conectados, fazendo com que erros sejam impedidos neste primeiro momento, além disso, ao ser finalizada a modelagem, o BizAgi também permite “exportar os gráficos para imagem, arquivo PDF, arquivo Microsoft Visio e Word, XPDL e XML” (FACCIO apud SANTOS, 2011, p. 30). Como se observa na figura 6: 38 Figura 6 BizAgi Studio, Aba do Model Process. Fonte: O Autor. o O Processo é a Aplicação: Com esta plataforma não é necessário desenvolver códigos, pois, a mesma oferece um ambiente para desenvolvimento totalmente gráfico e ainda dispõe de funções como if, else, for, etc. o Acompanhamento Gráfico e online: Para auxiliar as tarefas dos gestores, o BizAgi disponibiliza graficamente da rota pela qual o processo seguiu, qual o responsável por aquela etapa do projeto e em que ponto o projeto se encontra. o Ambiente Web Customizável: Aqui, pode-se ter um acompanhamento completo da situação em que as tarefas se encontram, pode-se ainda interagir diretamente com estas. Diz-se que a visualização do ambiente é customizável pois pode-se utilizar a apresentação dos dados tanto em formato de pastas quanto criando consultas on-line, como presentam as figuras 7.1 e 7.2. 39 Figura 7.1 Fase em que um Processo se Encontra. Fonte: O Autor. Figura 7.2 Fase em que um Processo se Encontra. Fonte: O Autor. o Integração Sharepoint | Web: Possui fácil integração com páginas como HTML, Java, páginas Wiki, Sharepoint, para publicação das mesmas; isto é importante pois a colaboração na geração de modelos torna o processo mais ágil. 2.5 CONSIDERAÇÕES FINAIS 40 Neste capítulo foi apresentada uma visão geral sobre engenharia e modelagem de software, gestão de qualidade e gerenciamento de processos de software. Foi dado ênfase a assuntos como MPS.BR Nível G, que trata da qualidade, BPMS, e o software BizAgi para que assim a modelagem e o desenvolvimento da ferramenta orientada a processos sejam efetuados. 41 3 RESULTADOS E DISCUSSÕES Como já foi apresentado em capítulos anteriores, para desenvolver um sistema ou ferramenta de software algumas etapas devem ser seguidas, e, para o desenvolvimento deste projeto não foi diferente. A princípio foi analisado minuciosamente o guia de implementação MPS.BR nível G, desenvolvido pela SOFTEX para que os requisitos pudessem ser levantados. Com base neste guia, foi escolhida a gerência de requisitos para servir como base para o desenvolvimento da ferramenta. A partir da gerencia de requisitos, as fases para o desenvolvimento da ferramenta foram levantadas com plena base neste guia, como é mostrado na tabela 1: Fases Fase_01: Comunicar com o Cliente Funcionalidades Fase onde a empresa desenvolvedora e a empresa contratante especificam quais serão os meios de comunicação pelos quais ambas se comunicarão durante o desenvolvimento do projeto. Estas comunicações devem ser registradas formalmente em atas, e-mails, ferramentas de comunicação ou outros meios de Fase_02: Levantar Requisitos Nesta etapa, a empresa contratante expressa quais requisitos ela deseja. Fase_03: Definir Requisitos Esta etapa funciona como garantia de que os requisitos estejam claramente definidos a partir do entendimento dos requisitos levantados. Fase_04: Receber Requisitos Esta etapa serve para confirmar que os requisitos levantados e definidos aprovação da empresa contratante. têm 42 Fase_05: Avaliar Requisitos É feita uma avaliação dos requisitos a fim de garantir que os requisitos propostos atendam às necessidades e expectativas da empresa contratante. Fase_06: Registrar Reprovação Caso os requisitos sejam reprovados, um registro de reprovação deve ser obtido pelos fornecedores de requisitos. Este registro deve ser tratado como um marco do projeto. Fase_07: Registrar Aceite Caso os requisitos sejam aprovados, um registro de aprovação deve ser obtido pelos fornecedores de requisitos. Este registro deve ser tratado como um marco do projeto. Fase_08: Avaliar Qualidade Técnica A avaliação e aprovação por parte do cliente após o entendimento dos requisitos por si só não é suficiente para que os requisitos sejam refinados e refletidos em modelos de análise e projeto para a codificação. A avaliação dos requisitos deve envolver, além do cliente, também a equipe técnica da organização. Em geral é aconselhável que os requisitos sejam avaliados pela equipe técnica antes de serem submetidos para aprovação pelo cliente para evitar retrabalho ou a apresentação de um documento sem qualidade técnica adequada para o cliente. Fase_09: Usar Checklist É interessante que a empresa desenvolvedora faça uso de Checklist em suas atividades para que problemas frequentes sejam percebidos. Fase_10: Realizar Reuniões Realizar reuniões possibilita que as diversas partes envolvidas no desenvolvimento do 43 projeto possam opinar, aprovar e se comprometer em relação aos requisitos do projeto. Fase_11: Reavaliar Qualidades Técnicas Caso haja necessidade de modificar algum requisito, a equipe técnica deverá reavalialos. Logo após, são submetidos para aprovação da empresa contratante. Fase_12: Documentar Novos Requisitos Após a reavaliação dos requisitos editados por parte da empresa contratante, um registro de aprovação deve ser obtido pelos fornecedores de requisitos. Este registro deve ser tratado como um marco do projeto. Fase_13: Classificar no Sistema de É importante que se tenha um sistema de Rastreamento rastreamento, pois, é neste sistema onde há detalhamento dos requisitos, transformação em modelos, a codificação, o planejamento e a execução de testes são estruturados para garantir a correta execução do projeto, tendo tarefas previstas discriminadas em um cronograma ou conforme previsto pelo processo Gerência de Projetos - GP (Se houver). Fase_14: Rastrear Dependências A criação de um sistema de rastreabilidade tanto pode ser vertical como horizontal; pressupõe-se que diferentes abstrações dos requisitos, documentos relacionados e o código fonte sejam rastreáveis entre si. Fase_15: Verificar Itens Implementados Os requisitos, dentro do ciclo de vida do projeto, são posteriormente derivados em elementos de análise e projeto e então, 44 transformados em código fonte, para só depois serem testados. Fase_16: Avaliar Artefatos Avaliação da consistência entre os requisitos e os produtos de trabalho do projeto. Fase_17: Identificar Possíveis É importante que revisões sejam realizadas a Inconsistências fim de identificar possíveis inconsistências entre os requisitos e os demais elementos do projeto (planos, atividades e produtos de trabalho). Fase_18: Registrar Aceite Após passar por todas as fases de desenvolvimento, e a empresa contratante decidir que não há inconsistências e nem há a necessidade de realizarem-se mudanças, um registro de aprovação deve ser obtido pelos fornecedores de requisitos. Este registro deve ser tratado como um marco no desenvolvimento do projeto. Fase_19: Resolver Possíveis Inconsistências Caso haja inconsistências, estas devem ser registradas e ações corretivas executadas a fim de resolvê-las. Fase_20: Examinar Possíveis Mudanças No caso de haver mudanças, é importante examinar se há consistência em todos os artefatos modificados. Fase_21: Adequar Mudanças ao Escopo Mudanças documentadas realizadas juntamente devem aos ser outros requisitos. Fase_22: Revisar Requisitos Durante o desenvolvimento do projeto, os requisitos podem mudar por uma série de motivos. Desta forma, requisitos adicionais 45 podem ser incorporados no projeto, requisitos podem ser retirados ou ainda podem ser editados. Fase_23: Analisar Possíveis Mudanças Caso haja necessidade de realizarem-se mudanças nos requisitos, estas devem ser registradas e um histórico das decisões acerca dos requisitos deve estar disponível. Fase_24: Analisar Impacto São analisados aspectos como: *Influência de outros requisitos; *Expectativa dos interessados; *Esforço; *Cronograma; *Riscos; *Custos; Vale ressaltar que o mecanismo de rastreabilidade bidirecional é de fundamental importância. Fase_25: Editar Requisitos Elaboração de um documento onde sejam declarados os requisitos modificados. Fase_26: Registrar Reprovação Caso o cliente ou empresa contratante aprovem os requisitos editados, esta ação é encaminhada para o nível de mudança a fim de resolver este problema. É realizado um registro de reprovação. Este registro deve ser tratado como um marco do projeto. Fase_27: Registrar Aceite Quando há aceitação do cliente ou empresa contratante, é realizado um registro de aprovação. Este registro deve ser tratado 46 como um marco do projeto. Fase_28: Realizar Histórico das Decisões São registras as necessidades de mudanças (se houver), informações assim como tomadas todas durante as o desenvolvimento do projeto. Tabela 1 Fases da Ferramenta. Fonte: Softex (2013), adaptado. Após ter sido feito o levantamento dos requisitos foi realizada a modelagem da ferramenta utilizando notações BPMN no software BizAgi, como serão mostradas nas figuras 8.1 à 8.7; Figura 8.1 Fases da Modelagem, Etapa de Elicitação dos Requisitos. Fonte: O Autor. Figura 8.2 Fases da Modelagem, Etapa de Avaliação dos Requisitos. Fonte: O Autor. 47 Figura 8.3 Fases da Modelagem, Etapa de Rastreabilidade Bidirecional. Fonte: O Autor. Figura 8.4 Fases da Modelagem, Etapa de Revisão. Fonte: O Autor. Figura 8.5 Fases da Modelagem, Etapa de Mudança. Fonte: O Autor. 48 Figura 8.6 Fases da Modelagem, Etapa de Avaliação por parte do Cliente. Fonte: O Autor. Figura 8.7 Modelagem Completa da Ferramenta. Fonte: O Autor. Ao ser concluída a modelagem dos requisitos, a modelagem dos dados da ferramenta foi implementada, como se pode ver na figura 9: Figura 9 Modelagem de Dados na Ferramenta. Fonte: Autor. 49 O software BizAgi diferencia-se por ser intuitivo e completo, além de possibilitar que a interface com o usuário (fachada) também seja implementada, como se percebe na figura 10: Figura 10 Implementação da Fachada. Fonte: O Autor. Não diferente de outras plataformas para desenvolvimento de softwares, o BizAgi também dá suporte a implementação da regra de negócios (algo extremamente importante), como mostra a figura 11: 50 Figura 11 Regra de Negócios. Fonte: O Autor. Desenvolver softwares, é sempre uma tarefa realizada em equipe, e, para que cada equipe tenha acesso a sua parte de interesse no desenvolvimento, o BizAgi permite que a possibilidade de criar perfis e papeis, aonde os requisitos possam ser divididos em grupos específicos, como mostra a figura 12: 51 Figura 12 Separação dos Grupos de Requisitos. Fonte: O Autor. Tomando como base o modelo de prototipagem de software, o próximo passo tomado foi o teste da ferramenta, mas, antes que se possa acessar o sistema, é preciso logar em uma área de atuação específica de acordo com a função de cada desenvolvedor, o que pode ser observado na figura 13: 52 Figura 13 Tela de login. Fonte: O Autor. Após acessar a conta, o desenvolvedor é redirecionado para uma outra tela onde poderá iniciar suas tarefas, como mostra a figura 14: Figura 14 Tela de Afazeres. Fonte: O Autor. Os testes no sistema são realizados como uma forma de revisar os requisitos implementados para que erros e/ou inconsistências possam ser resolvidos. Mudanças realizadas foram documentadas como forma de manter controle do desenvolvimento desta ferramenta. Por fim, a ferramenta proposta neste projeto tem fortes indícios que atenderá aos objetivos geral e específicos, uma vez que esta foi modelada e automatizada tendo como base os princípios do MPS.BR nível G. Como se pode perceber, a ferramenta desenvolvida relacionou Tecnologia da Informação Aplicada ao Processo de Negócios (BPMS) com as boas práticas do MPS.BR nível G, e, definiu um modelo de implantação com tempo específico para cada tarefa, como mostra a figura 15: 53 Figura 15 Gráfico para Acompanhamento de Projetos. Fonte: O Autor. Com definição dos fluxos de trabalho e criação de papéis para cada fase da implementação do software, como está explicito nas figuras 16.1 à 16.3: Figura 16.1 Criação e Definição do Papel de Analista. Fonte: O Autor. 54 Figura 16.2 Criação e Definição do Papel de Equipe Técnica. Fonte: O Autor. Figura 16.3 Criação e Definição do Papel de Gerência. Fonte: O Autor. Para que possa ser feito o acompanhamento da evolução dos processos, o bizagi gera gráficos onde são descriminadas as tarefas por usuários, além de mostrar quantas tarefas estão em dia bem como as atrasadas e informa quem deve faze-las, como mostra a figura 17: 55 Figura 17 Trabalhos em Andamento por Usuário. Fonte: O Autor. Para que possa ser acompanhado o tempo total de um ciclo de um processo uma tabela com tais informações é gerada, como mostra a figura 18: Figura 18 Resumo do Tempo de Ciclo. Fonte: O Autor. 56 4 CONCLUSÕES Desde o surgimento do termo ‘engenharia de software’ em 1968, como aborda Pfleeger (2004), o mundo passou a ser cada vez mais dependente do software, e, isso fez com que a busca por qualidade se tornasse constante. Com o aprimoramento dos sistemas computacionais tornou-se necessário que normas de qualidade surgissem para que houvesse certificação que os softwares produzidos atenderiam as necessidades dos usuários, foi assim que surgiu o CMMI (Capability Maturity Model Integration), e, inspirado neste, no Brasil foi criado o MPS.BR (Melhoria do Processo de Software Brasileiro), SOFTEX (2013). Muito embora o principal objetivo do MPS.BR seja auxiliar micro, pequenas e médias empresas a desenvolverem softwares de maneira eficiente, SOFTEX (2013), é necessário que alguns níveis de maturidade sejam seguidos, inicialmente o MPS.BR sugere que seja adotado o Nível G em qualidade, por ser este o nível mínimo para certificação dos produtos de software, SOFTEX (2014). Utilizar-se de processos (BPM) para transformar a modelagem (BPMS) de softwares é uma atividade inovadora e que possibilita gerenciar de forma mais eficiente os processos de software produzidos, BPM, CBOK (2013). Sendo assim, este trabalho visou unir qualidade a processo uma vez que, para o desenvolvimento da ferramenta proposta foi adotado o Nível G em qualidade proposto pelo MPS.BR e a partir dele a modelagem foi montada com base em gerência de requisitos. Vale ressaltar que a principal proposta deste trabalho é fazer com que a gerência bem como as especificações dos requisitos possam ser controlados e acompanhados tanto pela empresa desenvolvedora quanto pela empresa contratante, evitando-se possíveis retrabalhos. Para que o trabalho de desenvolvimento destes softwares seja uma atividade mais efetiva, a ferramenta dispõe de uma plataforma onde é possível controlar o tempo das atividades além de gerar gráficos discriminatórios dos processos, útil para correção de gargalos identificados e eventuais problemas. 57 5 REFERÊNCIAS BIBLIOGRÁFICAS ANJOS, Lúcio André Mendonça; MOURA, Hermano Perreli de; Um Modelo Para Avaliação de Produtos de Software. Centro de Informática - Universidade Federal de Pernambuco (UFPE), 2014. ATALLA, Fabiano (2012). Por que os Projetos de TI Fracassam? Disponível em: <http://www.techoje.com.br/site/techoje/categoria/detalhe_artigo/1532> no dia 03 de setembro de 2014. BATISTA, Denys Nepomuceno; SANTOS, Marcio (2012). Modelos Incremental, Espiral e de Prototipação. Disponível em: http://engenhariadesoftwareuesb.blogspot.com.br/2012/12/blog-post.html No dia 28 de Outubro de 2014. BARRIOS, Bruno (2012). O que é BPM? Disponível em: <http://www.tiespecialistas.com.br/2012/05/o-que-e-bpm/> No dia 14 de outubro de 2014. CARVALHO, Pedro (2005). O MPS.BR. Disponível http://www.pedrofcarvalho.com.br/mpsbr.html No dia 27 de Novembro de 2014. em: CERVO, Amado L.; BERVIAN, Pedro A.; DA SILVA, Roberto; Metodologia Científica. São Paulo: Pearson Prentice Hall, 2007. 6ª Ed. DA SILVA, Fernando Rodrigues (2011). Testes de Software – Níveis de Testes. Disponível em: http://www.devmedia.com.br/testes-de-software-niveis-de-testes/22282 No dia 28 de Outubro de 2014. DAVEMPORT, T. H.; MARCHAND, D. A. Dominando a Gestão da Informação. Porto Alegre, Bookman, 2004. DEVMEDIA, Equipe de Moderação (2012). Ciclos de Vida do Software: Conhecendo os Bastidores. Disponível em: http://www.devmedia.com.br/ciclos-de-vida-do-software-artigorevista-engenharia-de-software-magazine-36/21099 No dia 27 de Outubro de 2014. 58 FALBO, Ricardo de Almeida. Engenharia de Software: Notas de Aula. Universidade Federal do Espírito Santo – UFES, 2005. FACCIO, Letícia Juciara. Qualidade de Software Aplicando Business Process Model and Notation 2.0. Paraná, 2011. FERREIRA, Décio; COSTA, Felipe; ALONSO, Filipe; ALVES, Pedro; NUNES, Tiago (2005); SCRUM: Um Modelo Ágil para Gestão de Projetos de Software. Disponível em: < http://www.emprel.gov.br/files/es_final_19.pdf> No dia 30 de Outubro de 2014. FILHO, Gilson Teixeira de Almeida (2013). Introdução a Engenharia de Software. Notas de Aula. FLICK, Uwe; Introdução a Pesquisa Qualitativa. Porto Alegre: Artmed 2009, 3ª Ed. FRANÇA, Renato (2014). Diferenças entre Programador e Desenvolvedor de Software. Disponível em: <renato-franca.com/diferenças-entre-programador-desenvolvedor-desoftware/> No dia 21 de outubro de 2014. FURTADO, André, Pontas de Iceberg do Caos no Desenvolvimento de Software. Disponível em: http://www.microsoft.com/brasil/msdn/Tecnologias/Carreira/DesenvolvimentoSoftware.mspx #top No dia 08 de setembro de 2014. GARVIN, D. What does ‘Product Quality’ Really Mean? Sloan Management Review, 1984. GOMES, Alexandre; WILLI, Renato; REHEM Serge (2014); Métodos Ágeis Para Desenvolvimento de Software. Disponível em: < http://livrometodosageis.com.br/ > No dia 01 de Novembro de 2014. ISO – International Organization for Standardization, ISSO 9000: Gestão de Qualidade. Disponível em: < http://translate.google.com.br/translate?hl=ptBR&sl=en&u=http://www.iso.org/&prev=search> No dia 08 de Novembro de 2014. 59 IEEE – Institute of Eletricaland Eletronics Engineers, Standards Glossary of Software Engineering Terminology. Std 610.12, N.Y., 1990. Kent Beck and Cynthia Andres. Extreme Programming Explained: Embrace Change, 2nd Edition. Addison-Wesley, 2 edition, 2004. LEITE, Jair C. (2000); Análise e Especificação de Requisitos. Disponível em: < http://www.dimap.ufrn.br/~jair/ES/c4.html> No dia 07 de Novembro de 2014. LESSA, Rafael Orivaldo; JUNIOR, Edson Orivaldo Lessa; Modelos de Processos de Engenharia de Software. Santa Catarina, 2009. MACORATTI, José Carlos (2008). Um Esboço Sobre o Processo de Testes de Software. Disponível em http://www.macoratti.net/08/08/tst_sw2.htm No dia 28 de Outubro de 2014. MAGALHÃES, I. L. E PINHEIRO W. B. (2007). Gerenciamento de Serviços de TI na Prática: Uma abordagem com base na ITIL – Editora Novatec – 1ª edição, ISBN: 978-857522-106-8. MASTERHAUSE. O que é BPM? Disponível em: <http://www.masterhouse.com.br/sobrebpm/> No dia 14 de outubro de 2014. NETO, Alfredo Colenci. Proposta de um Modelo de Referência para Desenvolvimento de Software com Foco na Certificação do MPS.BR. São Carlos, 2008. OMG – Object Managed Group. Business Process Model and Notation (BPMN). Disponível em: < http://www.bpmn.org/ > No dia 02 de Dezembro de 2014. OTANI, Nilo; FIALHO, Francisco Antonio Pereira. TCC: Métodos e Técnicas. Florianópolis: Visual Books, 2011, 2ª Ed. PFLEEGER, Shari Lawrence. Software Engineering – Theory and Practice. São Paulo: Prentice Hall, 2004. 2ª Ed. 60 PRADO, Professor (ANO). Ciclo de Vida do Software. Disponível em: http://www2.dem.inpe.br/ijar/CicoloVidaSoftPrado.html No dia 27 de Outubro de 2014. PRESSMAN, Roger S., Software Engineering. The McGraw-Hill Companies, Inc. São Paulo, 2006, 6ª Ed. PRESSMAN, Roger S., Software Engineering: a Practitioner’s Approach. The McGraw-Hill Companies, Inc., New York, EUA, 2011, 7ª Ed. PROTOCOLO TI (2012). Os modelos de Desenvolvimento de Software. Disponível em: http://protocoloti.blogspot.com.br/2012/03/os-modelos-de-desenvolvimento-de.html No dia 27 de Outubro de 2014. QUITERIO, Ana Paula (2012); Análise de Requisitos. Disponível em: < http://www.infoescola.com/engenharia-de-software/analise-de-requisitos/> No dia 07 de Novembro de 2014. RAMOS, Almir; CARLOS, Antonio; LEITÃO, Rafael Gonzaga; COSTA, Eryson Raphael M. (2011); Modelo Cascata ou Clássico. Disponível em http://modelocascata.blogspot.com.br/ No dia 27 de Outubro de 2014. SGANDERLA, Kelly (2012). Um Guia para Iniciar Estudos em BPMN (I): Atividades e Sequência. Disponível em: <http://blog.iprocess.com.br/2012/11/um-guia-para-iniciarestudos-em-bpmn-i-atividades-e-sequencia/ > No dia: 02 de Dezembro de 2014. SOFTEX. 2013, MPS.BR – Melhoria de Processo do Software Brasileiro, Guia de Implementação – Parte 1: Fundamentação para Implementação do Nível G do MR-MPS. Disponível em: http://www.softex.br/mpsbr No dia 06 de Outubro de 2014. SOFTEX. 2014, MPS-SV. Disponível em: http://www.softex.br/mpsbr/mps/servicos/ No dia 03 de setembro de 2014. SOMMERVILLE, Ian. Software engineering. São Paulo: Pearson Prentice Hall, 2011. 9ª Ed. 61 SOUZA, Vinícius Rodrigues De (2014). Prototipação no Desenvolvimento de Software. Disponível em: http://www.devmedia.com.br/artigo-engenharia-de-software-17-prototipacaono-desenvolvimento-de-software/14502 No dia 27 de Novembro de 2014. THIVES JR., J. J. A Tecnologia de Workflow e a Transformação do Conhecimento. In: ANGELONI, M.T (Org.). Organizações do Conhecimento: infraestrutura, pessoas e tecnologias. São Paulo, 2002. VASCONCELOS, Alexandre Marcos Lins de; ROUILLER, Ana Cristina; MACHADO, Cristina Ângela Filipak; MEDEIROS, Tereza Maria Maciel de; Introdução à Engenharia de Software e à qualidade de Software. Lavras: UFLA/FAEPE, 2006. VOLPE, Renato Luiz Della; ZABEU, Ana Cecília Peixoto (2004); Falando de Qualidade: Gestão, Processos e Meio Ambiente. Disponível em: < http://periodicos.anhembi.br/arquivos/hemeroteca/periodicos_vo/falando_de_qualidade/14200 8.pdf> No dia 08 de Novembro de 2014. WHIRT, Niklaus (2012). Uma Breve História da Engenharia de Software. Disponível em: <http://marathoncode.blogspot.com.br/2012/07/uma-breve-historia-da-engenhariade_10.html> no dia 14 de outubro de 2014.