• Nenhum resultado encontrado

2.6 SERVIÇO DE DESENVOLVIMENTO DE SOFTWARE

2.6.1 Engenharia e Processo de Software

Engenharia de software é uma disciplina da engenharia relacionada com todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até sua manutenção, depois que este entrar em operação (SOMMERVILLE, 2007). O Institute of

Electrical and Electronics Engineers Computer Society (IEEE CS) (1990) define engenharia

de software como sendo: “1) a aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software, isto é, a aplicação da engenharia ao software; 2) o estudo de abordagens como as de 1)”.

A importância da elaboração e uso de um PS advém da complexidade da atividade de desenvolvimento de software, que aumenta na mesma medida de crescimento do tamanho e da quantidade necessária e solicitada desses softwares. Essa complexidade decorre das dificuldades de integração e harmonização das características técnicas, funcionais, operacionais, gerenciais e estratégicas das diversas etapas do processo de desenvolvimento e manutenção de software em diferentes plataformas tecnológicas e de negócios (NOMURA, 2008).

Pressman (2006) separa a engenharia de software em camadas, que devem se apoiar em um compromisso organizacional visando à qualidade dos produtos desenvolvidos. Doutrinas que levam à cultura de um processo contínuo de aperfeiçoamento devem estimular a base da engenharia de software, que é o foco na qualidade. A Figura 7 apresenta as camadas formadoras da engenharia de software.

A camada processo29 é o fundamento da engenharia de software que mantém unidas as camadas de tecnologia e permite o desenvolvimento racional e oportuno de softwares, além de formar a base para o controle gerencial de projetos de software e estabelecer o contexto no qual os métodos técnicos são aplicados, os produtos de trabalho (modelos, documentos, dados, relatórios, formulários, dentre outros) são produzidos, estabelecer as metas, assegurar a qualidade e gerir as modificações (PRESSMAN, 2006).

Figura 7 - Camadas formadoras da engenharia de software

Fonte: Pressman (2006).

A camada processo30 é o fundamento da engenharia de software que mantém unidas as camadas de tecnologia e permite o desenvolvimento racional e oportuno de softwares, além de formar a base para o controle gerencial de projetos de software e estabelecer o contexto no qual os métodos técnicos são aplicados, os produtos de trabalho (modelos, documentos, dados, relatórios, formulários, dentre outros) são produzidos, estabelecer as metas, assegurar a qualidade e gerir as modificações (PRESSMAN, 2006).

A camada método fornece as técnicas de “como fazer” para construir software, abrangendo um amplo conjunto de tarefas que incluem comunicação, análise de requisitos, modelagem de projeto, construção de programas, testes e manutenção e estão alicerçadas em um conjunto de princípios básicos que regem cada área da tecnologia (PRESSMAN, 2006).

Pressman (2006) apresenta a camada ferramenta como fornecedora de apoio automatizado ou semi-automatizado para o processo e para os métodos. Quando há a integração de ferramentas que possibilite o uso compartilhado da informação entre elas, cria- se um sistema de apoio ao desenvolvimento de software chamado engenharia de software

29 Quando se elabora um produto ou sistema é importante percorrer uma série de passos previsíveis – um roteiro

– que ajudará a criar tempestivamente um resultado de alta qualidade. O roteiro que se segue é chamado de processo de software (PRESSMAN, 2006).

30 Quando se elabora um produto ou sistema é importante percorrer uma série de passos previsíveis – um roteiro

– que ajudará a criar tempestivamente um resultado de alta qualidade. O roteiro que se segue é chamado de processo de software (PRESSMAN, 2006).

apoiada por computador (CASE31 – Computer-Aided Software Engineering).

Um modelo de processo de software é uma representação abstrata de um processo de software (SOMMERVILLE, 2007). Cada modelo representa um processo sob determinada perspectiva e são baseadas em um dos três modelos gerais ou paradigmas de desenvolvimento de software, a saber:

Modelo em cascata: considera as atividades fundamentais do processo, compreendendo especificação, desenvolvimento, validação e evolução, representando-as como fases de processo separadas, como especificação de requisitos, projetos de software, implementação, testes, dentre outros;

Desenvolvimento evolucionário: intercala as atividades de especificação, desenvolvimento e validação, criando um sistema inicial rapidamente baseado em especificações abstratas; e

Baseada em componentes: fundamenta-se na existência de um número significativo de componentes reusáveis que poderão ser integrados.

Pressman (2006) também destaca a metodologia ágil, um modelos de processo de software que busca focar muito mais a entrega do software funcional ao invés de artefatos da engenharia de software tradicional – como a documentação que acompanha o processo de desenvolvimento.

No âmbito da APF, o PS tem influência direta nas contratações do serviço de desenvolvimento de software por definir as atividades, os artefatos e os parâmetros de qualidade que serão exigidos dos fornecedores ao longo da execução contratual (BRASIL, 2011a), e pode se basear em qualquer modelo de processo que seja mais adequado para a realidade e necessidade de uma determinada organização pública.

O TCU (2008a) considera o processo de software (PS) requisito fundamental para a produção de SI com qualidade e sua ausência aumenta o risco de se construir soluções de software pouco robustas, susceptíveis a falhas, sem testes adequados e com documentação deficiente, além de não ser possível a medição do serviço prestado. Além disso, caso não haja PS vigente e em uso na organização pública, a licitação para a contratação do serviço de desenvolvimento de software poderá ser considerada irregular, tendo em vista a exigência prevista na Lei 8.666/93 (1993) de se ter claramente definido o objeto a ser contratado (BRASIL, 2010a). Ainda assim, 51% dos órgãos públicos declararam não possuir PS em uso em 2008 (BRASIL, 2008a), passando para 49% em 2010 (BRASIL, 2010a).

31 CASE são sistemas de software que têm a intenção de fornecer apoio automatizado para atividades de