• Nenhum resultado encontrado

Novas Formas de Organização do Trabalho Setor Software

N/A
N/A
Protected

Academic year: 2021

Share "Novas Formas de Organização do Trabalho Setor Software"

Copied!
76
0
0

Texto

(1)

n.3

Novas Formas de orgaNização do Trabalho

seTor soFTware

andré leme Fleury

afonso Carlos Corrêa Fleury

(2)
(3)
(4)

SERVIÇO NACIONAL DE APRENDIZAGEM INDUSTRIAL

SENAI Conselho Nacional

Presidente: Armando de Queiroz Monteiro Neto

SENAI

Departamento Nacional

Diretor-Geral: José Manuel de Aguiar Martins

(5)

n.3

NOvaS FOrmaS dE OrgaNizaçãO dO TrabalhO

SETOr SOFTwarE

andré leme Fleury

(6)

SENAI/DN

Unidade de Tendências e Prospecção – UNITEP

SENAI

Serviço Nacional de Aprendizagem Industrial Departamento Nacional

Sede

Setor Bancário Norte Quadra 1 – Bloco C Edifício Roberto Simonsen 70040-903 – Brasília – DF Tel.: (0xx61) 3317-9001 Fax: (0xx61) 3317-9190 http://www.senai.br Ficha Catalográfica F618n

Fleury, André Leme

Novas formas de organização do trabalho: setor software / André Leme Fleury, Afonso Carlos Corrêa Fleury. – Brasília: SENAI/DN, 2007.

69 p. (Série Estudos Tecnológicos e Organizacionais, n.3) ISBN 978-85-7519-229-0

1. Trabalho – Organização 2. Software I. Fleury, Afonso Carlos Corrêa II. Título II. Série

(7)

Lista de ilustrações

Figura 1 –

Dinâmica organizacional do setor de Telecomunicações

22

Figura 2 –

Dinâmicas organizacionais do setor de Software

29

Figura 3 –

Relação entre número de clientes e de projetos

31

Figura 4 –

Relacionamento entre o Modelo de Telecomunicações e o

Modelo de Software

34

Figura 5 –

Ciclo de Vida do Software

43

Figura 6 –

Relacionamento entre hardware e software no contexto

de “software embutido”

59

Figura 7 –

Processos de capacitação relacionados com software embutido

60

Tabela 1 –

Sumário das características organizacionais

– Setor de Telecomunicações

22

(8)
(9)

Sumário

Apresentação

1 Introdução

11

2 A Indústria de Software

13

2.1 Algumas considerações sobre passado e futuro

13

2.2 A indústria brasileira de software

15

2.3 Oportunidades e ameaças para a indústria brasileira de software

19

3 Caracterizando o Setor de Software

21

3.1 O setor de Telecomunicações

21

3.2 Analisando o setor de software através da abordagem proposta para

o setor de Telecomunicações

24

3.3 Caracterizando o setor de Software

25

3.4 Considerações sobre o modelo proposto

31

4 Analisando as Categorias de Empresa de Software

33

4.1 Software embutido

33

4.2 Software livre e o modelo proposto

35

4.3 Reutilização de software

37

4.4 A localização das empresas e o modelo proposto

38

4.5 Adotando o modelo proposto para alinhamento entre o setor de

Software e o setor industrial

39

5 Processo de Desenvolvimento de Software

41

5.1 Ciclo de vida de software

41

5.2 Qualidade e produtividade em software

43

(10)

6 Novas Formas de Organização do Trabalho na Indústria de

Software Brasileira

51

6.1 Empresas Usuárias de Software

53

6.2 Empresas Orientadas a Clientes

53

6.3 Empresas Orientadas a Serviços

54

6.4 Empresas Orientadas a Produtos

55

6.5 Consolidando o processo de análise elaborado

55

7 Subsídios para Formulação de Políticas de Formação de

Profissionais de Software

57

7.1 Estratégias de treinamento relacionadas com software embutido

60

7.2 Propondo um caminho para implementação da estratégia proposta

61

7.3 Limitações do estudo e sugestões de pesquisas futuras

62

(11)

Apresentação

D

ando continuidade à divulgação da Série Estudos Tecnológicos e

Organizacionais, temos o prazer de disponibilizar o estudo sobre as Novas

Formas de Organização do Trabalho no Setor de Software.

Este estudo constitui uma atividade de monitoramento e é resultado da continuidade da aplicação do Modelo SENAI de Prospecção no setor de Telecomunicações.

O estudo objetivou conceituar a indústria de software através de sua trajetória tecnológica, identificar os atores envolvidos e suas inter-relações, bem como as mudanças estruturais e tecnológicas na indústria de software no Brasil e seus impactos no perfil ocupacional e na qualificação profissional, gerando, assim, subsídios para a formulação de políticas de formação de profissionais de software.

Espera-se que este estudo possa ser mais um importante instrumento de informação sobre o mercado de trabalho e da educação para as empresas e entidades representativas de empregadores e de trabalhadores, bem como de tomada de decisão quanto à formulação de políticas de formação profissional.

José Manuel de Aguiar Martins

(12)
(13)

1 Introdução

A

indústria de software é considerada estratégica por um grande número

de países, já que atualmente esses sistemas são responsáveis por parte significativa das inovações tecnológicas introduzidas em produtos e serviços. Nos últimos anos, de alguma forma, todos os setores da economia transformaram-se com a utilização de software, e a crescente popularização das mídias digitais garantirá o crescimento dessa indústria nos próximos anos. Neste contexto, a compreensão sobre o alinhamento entre as dinâmicas da indústria de software e a organização do trabalho nas diferentes empresas que atuam no setor traz conhecimentos relevantes para a formulação de estratégias de capacitação técnica e profissional.

Este relatório analisa a organização do trabalho em empresas do setor de software, buscando conhecer, detalhar e explicar as seguintes questões: quais as formas organizacionais mais relevantes entre as empresas desenvolvedoras de software? É possível identificar categorias de empresas, destacando características organizacionais e questões do ambiente ou negócio em que estão inseridas? Quais os perfis de empresas de software mais relevantes para o setor industrial brasileiro? Existe um referencial comum de atividades executadas nas diferentes empresas de software? Como se relaciona hoje a organização do trabalho, no contexto desse processo de desenvolvimento, com diferentes estratégias corporativas?

Para responder a essas questões, este relatório incorpora e analisa conhecimentos provenientes de duas disciplinas principais:

(14)

Engenharia de Produção: contempla o projeto, o aprimoramento e a instalação de sistemas integrados, incluindo pessoas, materiais, informações, equipamentos e energia [2]. Devido às particularidades mencionadas sobre os sistemas de software, a interface entre engenharia de software e engenharia de produção atualmente apresenta-se como uma área de estudos que experimenta grandes avanços, os quais serão apresentados ao longo deste documento.

As questões apresentadas são analisadas de acordo com duas abordagens complementares: a abordagem vertical, que considera o contexto para o qual o sistema de software é desenvolvido, incorpora conhecimentos sobre a realidade específica de cada cadeia produtiva e é bastante utilizada na formulação de políticas governamentais de incentivo e promoção dessa indústria [3, 4]; e a abordagem horizontal, que analisa o processo de desenvolvimento de software independentemente do contexto para o qual o sistema é desenvolvido e, desta forma, tem como foco de análise o conjunto de processos comuns às empresas que compõem a indústria de software [5, 6].

(15)

2 A Indústria de Software

O

objetivo desta seção é apresentar a evolução da indústria de software,

descrevendo a sua história e contextualizando o seu momento atual, de forma a criar um referencial comum sobre as oportunidades, ameaças, potencialidades e fraquezas que permeiam o segmento. Para isso, é apresentada a evolução mundial da indústria de software, a história da indústria nacional, seus principais modelos de negócios atuais e diferentes iniciativas de incentivo à produção e exportação de software, praticadas tanto pelo governo como também por instituições privadas.

2.1 Algumas considerações sobre passado e futuro

(16)

digital, os sistemas de software, executados em potentes computadores interligados e utilizando recursos avançados de programação, tornaram-se parte central de estratégias corporativas e governamentais.

Atualmente a indústria mundial de software vivencia uma nova realidade dentro desta quarta era. Se durante os anos 1990 essa indústria experimentou crescimentos superiores a 15% devido à “exuberância irracional” ocorrida nos mercados financeiros internacionais com a difusão da internet, ao surgimento do euro, ao temor experimentado com as previsões sobre a chegada do ano 2000 e à conseqüente possibilidade de ocorrência do bug do milênio e também por uma crença generalizada sobre o aumento de produtividade graças à adoção de ferramentas de Tecnologia da Informação [4], atualmente essas taxas de crescimento são inferiores a 10%, e a indústria experimenta um período de maturidade, que pode ser verificado nas fusões e aquisições realizadas por empresas tradicionais do setor (por exemplo, IBM, Rational e Lotus; Adobe e Macromedia; Oracle e Peoplesoft; Microsiga e Logocenter), na emergência de novos padrões (por exemplo, XML, UML, CMMI, ISO/IEC 15504, OPM3 etc.) e na experimentação de novos modelos de negócios como, por exemplo, os baseados em software livre e a arquitetura de software orientada a serviços [8-10].

Essa nova realidade é fruto do realinhamento nos investimentos promovidos nesse mercado, composto principalmente por governos, empresas de manufatura e de serviços, que deixaram de buscar o aumento de seu valor financeiro graças a investimentos em TI e passaram a buscar um vínculo mais direto entre investimentos em software e estratégia corporativa [11, 12].

(17)

A Indústria do Software

estruturadas com base em contratos eletrônicos, potencializa a criação de novos modelos de negócios [8]. Por sua vez, o aumento nas funcionalidades viabilizadas com software em produtos manufaturados transfere as inovações do hardware para o software, transforma estratégias de pesquisa e desenvolvimento e traz o gerenciamento de software para o centro do processo de gestão tecnológica em empresas de manufatura [14].

Neste novo cenário, as empresas desenvolvedoras de software têm de buscar o máximo retorno para seus clientes, operando com volumes inferiores de recursos. A inovação permanece como o principal direcionador do mercado, e a elaboração de cenários futuros traz conhecimentos importantes durante o processo de definição de objetivos estratégicos. Por outro lado, o processo de desenvolvimento de software é e permanecerá complexo, demandando profissionais individualmente produtivos, trabalhando efetivamente em conjunto para o atingimento de objetivos comuns.

2.2 A indústria brasileira de software

A organização de um sofisticado segmento de empresas de desenvolvimento de software, alinhado com outros setores produtivos para o desenvolvimento de produtos e serviços relacionados, gera estímulos produtivos para a economia de um país, já que o software desempenha papel importante na criação de inovações em potencialmente todos os segmentos corporativos e é uma importante ferramenta para o processo de aprendizagem organizacional [3].

O Brasil desenvolveu uma indústria de software relativamente forte para o seu nível de desenvolvimento econômico quando comparado com outros países. O segmento contabiliza vendas de US$ 7,7 bilhões de dólares anuais (1,5% do PIB) e emprega 160.000 trabalhadores. É o sexto mercado do mundo, atrás apenas dos Estados Unidos, Japão, Alemanha, Reino Unido e Índia [3].

(18)

relativamente pequenas (da ordem de US$ 100 milhões anuais1), e a indústria

tem como foco principal o mercado interno. Pesquisas realizadas na Índia, Israel e Irlanda, países que recentemente atingiram volumes expressivos de exportação de software, sugerem que o caminho para o desenvolvimento de uma indústria de sucesso é a busca de uma ampla base de exportação, constituída por empresas locais ou através de investimento estrangeiro direto e, em qualquer um dos casos, com forte relacionamento com o mercado norte-americano.

A história da indústria brasileira de software pode ser dividida em duas fases principais. Antes de 1990 a política para a indústria de software era indireta, vinculada à política de hardware e buscando a autonomia tecnológica do país. Nesse período algumas organizações (em especial nos setores governamental e financeiro) criaram equipes internas e estabeleceram competências para desenvolver sistemas de software. Ainda nesse período, produtos inovadores e interessantes foram desenvolvidos por empresas nacionais, como, por exemplo, o editor de textos “Carta Certa”. Porém, por estar crescendo isolada das grandes mudanças tecnológicas que aconteciam no plano internacional durante os anos 1980, a indústria nacional foi perdendo competitividade. Pressões financeiras e pela liberalização do mercado reduziram os subsídios governamentais diretos e os estímulos para o desenvolvimento de novas tecnologias. As firmas locais passaram a falhar no desenvolvimento de novos produtos. A principal conseqüência negativa desse período foi o aumento no custo do hardware para os usuários finais, atrasando e reduzindo o processo de difusão da TI e – mais importante – bloqueando o desenvolvimento de usuários de software maduros e sofisticados. O impacto para as novas empresas de software apresentou-se na forma de grandes barreiras de entrada e de um favorecimento em relação aos setores que podiam arcar com o custo extra dos hardwares, como bancos e instituições financeiras. Em 1991, o mercado doméstico de software correspondia a US$ 1,1 bilhões, ou 1/3 do total das vendas de TI.

Os anos 1990 foram caracterizados pela implementação extensiva de políticas de liberalização, buscando maior integração internacional e a redução do papel do Estado na economia brasileira. Temendo que o país retardasse o seu

1 Em 2005, projeções fornecidas pela Softex indicam que o tamanho da indústria brasileira de software era de US$ 10 bilhões, e o volume de

(19)

A Indústria do Software

desenvolvimento tecnológico, a política de reserva de mercado foi substituída por uma política orientada ao mercado, em 1992, e, como conseqüência direta, a indústria nacional passou a enfrentar competição internacional. Para evitar exposição excessiva, diversas leis foram criadas buscando estimular a indústria brasileira; porém, apesar dos esforços governamentais, durante esses anos o cenário da indústria alterou-se significativamente. Corporações internacionais conquistaram importantes segmentos de mercado, incluindo aplicativos para computadores pessoais, bancos de dados e sistemas de informações gerenciais. Composta por aproximadamente 5.400 empresas, a indústria nacional é fragmentada, e predominam os micro e pequenos empreendimentos. Aproximadamente 76% das empresas empregam menos de 50 funcionários e, tipicamente, têm como foco principal o desenvolvimento de aplicações de nicho, explorando necessidades únicas do mercado doméstico e customizando produtos estrangeiros de acordo com práticas e linguagem locais. Esses empreendimentos carecem de escala e competências claras, e como as barreiras para entrada de novas empresas são baixas, o surgimento e desaparecimento de empresas é elevado. Um pequeno número de empresas, menos de 1%, desenvolveu produtos ou serviços distintos. Essas empresas têm, usualmente, mais de 1.000 empregados e faturamento superior a US$ 50 milhões.

Em relação ao mercado doméstico, alguns setores da economia destacam-se como consumidores de software nacional. O destacam-setor financeiro, reconhecido por seus padrões internacionais de competitividade, é o maior e mais sofisticado mercado para as empresas de software. O setor de telecomunicações também apresenta bastante importância, graças aos laboratórios de pesquisa e à presença de multinacionais estrangeiras. O setor de e-business é outro no qual o Brasil é líder na América Latina (40% do volume total e 60% do B2B) e que pode estimular a competitividade das empresas brasileiras. O governo federal também é um grande e sofisticado usuário de software; porém, grande parte dos seus gastos é absorvida pelo próprio governo. Em 2002, as oito maiores empresas do Estado atingiram vendas muito superiores a meio bilhão de dólares. Essa característica limita os efeitos multiplicadores dos investimentos governamentais no setor privado.

(20)

Enterprise Resource Planning (ERP). O modelo das fábricas de software como

processo de desenvolvimento de software estruturado e com significativa reutilização de componentes experimentou grande avanço nos últimos anos, mas mesmo nessas fábricas ainda predomina o desenvolvimento de aplicações pequenas e customizadas. Algumas empresas brasileiras lideram mercados de produtos, especialmente no segmento de ERPs, onde duas empresas têm importância bastante grande, em especial entre pequenas e médias empresas no Brasil e na América Latina. Muitas das empresas nessas áreas estão buscando a sua internacionalização, algumas começando pela América Latina, mas outras diretamente no mercado norte-americano. Por outro lado, essas empresas também estão enfrentando maior competição com as multinacionais em seu mercado doméstico. O desenvolvimento de software embutido e software “pacote”, modelos de negócios que viabilizam maior ganho de escala para as empresas produtoras, ainda é pouco significativo no país.

Em relação às iniciativas de estímulo à produção de software, atualmente essa indústria encontra-se entre as quatro áreas priorizadas pela politica industrial elaborada pelo atual governo federal [15]. Dentro do governo, um dos principais programas desenvolvidos é o Programa Brasileiro da Qualidade e Produtividade em Software – PBQP Software, criado em 1993 pelo Ministério da Ciência e Tecnologia e que tem como objetivo fazer com que as empresas brasileiras atinjam padrões internacionais de qualidade e produtividade de software. O PBQP Software é composto por voluntários interessados na melhoria da qualidade e produtividade do software brasileiro, ligados ao governo, academia e setor privado [16].

(21)

A Indústria do Software

a indústria de software, incluindo a articulação política e institucional em diversas frentes, a capacitação de empresas e a exposição dessas empresas no mercado internacional.

Atualmente a Softex está executando o Programa Setorial Integrado de Exportação de Software e Serviços (PSI-SW), que busca gerar contratos qualificados para as empresas no exterior e promover a marca “Brasil” de software. Os modelos de negócios promovidos incluem terceirização de serviços, software pacote ou semicustomizado e os provedores de serviços ativos (Active

Service Providers, ASP). Os segmentos verticais priorizados incluem bancos e

finanças, telecomunicações, governo, segurança, saúde, gestão empresarial e internet em geral.

Outra iniciativa promovida pela Softex buscando o aprimoramento da indústria nacional de software é a criação do Programa de Melhoria de Processo de Software Brasileiro – MPS.BR, que visa à melhoria dos processos de software para a grande maioria das micro e pequenas empresas de software brasileiras. O programa busca capacitar essas empresas de forma que seus processos de desenvolvimento atinjam padrões de qualidade internacional. O MPS.BR procura ser compatível com os principais padrões internacionais (CMMI e ISO 15504), de modo a facilitar eventuais processos futuros de certificação internacional nas empresas. O programa está sendo replicado em países como Argentina, Costa Rica, Chile, Cuba, Uruguai e Peru.

2.3 Oportunidades e ameaças para a indústria brasileira de

software

(22)

Nesse contexto, iniciativas que buscam alinhar o software desenvolvido nas empresas nacionais com as atividades produtivas de outros segmentos usuários de software são de grande relevância, pois fortalecem simultaneamente as empresas consumidoras, que passam a contar com fornecedores capacitados no desenvolvimento de sistemas que podem trazer inovações e diferenciais competitivos, e as empresas desenvolvedoras, que passam a contar com um mercado específico e relevante, para o qual podem especializar suas atividades de desenvolvimento, ganhando competências e habilidades para ampliar suas possibilidades comerciais.

(23)

3 Caracterizando o Setor de Software

E

sta seção tem por objetivo apresentar um modelo para compreensão,

classificação e análise das diferentes empresas que atuam no mercado de software, independentemente da finalidade do software desenvolvido. Análises sobre a indústria de software usualmente classificam as empresas que atuam no setor como “prestadoras de serviços” ou “desenvolvedoras de produtos”, onde empresas “prestadoras de serviços” desenvolvem software para um cliente apenas e empresas “desenvolvedoras de produtos” desenvolvem software para mais de um cliente [3, 4]. Embora essa classificação “binária” (ou seja, ou a empresa presta serviços ou a empresa desenvolve produtos) seja útil para análises da indústria de software como um todo, em especial na identificação dos segmentos verticais mais relevantes (como apresentado na seção anterior), ela tem aplicabilidade limitada num estudo que tem como objetivo analisar quais os perfis de empresas de software mais importantes para o setor industrial independentemente do seu segmento de especialização.

Buscando identificar diferentes categorias de empresas que atuam na indústria de software independentemente do contexto para o qual o software é desenvolvido, esta análise inicialmente verifica a aplicabilidade do modelo elaborado para o setor de telecomunicações no projeto “SENAI – Novas Formas de Organização do Trabalho - Setor de Telecomunicações” no setor de software.

3.1 O setor de Telecomunicações

(24)

Figura 1 – Dinâmica organizacional do setor de Telecomunicações

Integradoras Operadores

Características Sistema Sistema (Soluções Integradas) Características Solução Características Solução Solução Solução Desenvolvedoras Produtoras Projeto Produto Produto Mercado

Fonte: Fleury, A. e Fleury, A. L. [17]

Tabela 1 – Sumário das características organizacionais – Setor de Telecomunicações

A tabela a seguir descreve as principais características de cada categoria de empresas proposta:

Operadoras Integradoras Desenvolvedoras Produtoras

Características

Interagem com o mercado final como fornecedoras de serviços Projetam, montam, testam e implementam sistemas tecnológicos complexos Pesquisam e desenvolvem novos produtos e soluções integradas Produzem produtos e fornecem serviços de rotina Foco Operação

Clientes mais Sistemas (Software & Hardware & Relacionamento & Operações)

Sistema

Sistemas Tecnológicos (Software & Hardware para atender requisitos dos clientes) Solução Produtos complexos (Software & Hardware) para viabilizar aplicações Processos para produção de produtos (Hardware ou Software) e serviços Alguns

Exemplos Telefonica, NET, TIM, Vivo Promon, Scopus Motorola, Nokia,Samsung Flextronics, Celestica

Competência

(25)

Caracterizando o Setor de Software

Operadoras Integradoras Desenvolvedoras Produtoras

Processos Principais Concepção e • Desenvolvimento do Serviço Implantação e • Operação do Serviço Marketing • Concepção e • Desenvolvimento do Sistema Implantação e • Operação do Sistema Concepção e • Desenvolvimento da Solução Implantação e • Operação da Solução Marketing • Concepção e • Desenvolvimento do Processo Implantação e • Operação do Processo

De acordo com o modelo apresentado, empresas Operadoras tem como principal objetivo a comercialização de serviços de comunicação para o mercado final (corporativo ou individual). Desta forma, o processo de concepção do serviço inclui a análise das principais demandas e oportunidades apresentadas por seus clientes e as principais possibilidades tecnológicas disponibilizadas por seus fornecedores. Sua competência principal baseia-se no relacionamento com os clientes finais. Seus principais processos envolvem concepção e desenvolvimento do serviço, implantação e operação do serviço e marketing.

Por sua vez, empresas Integradoras projetam, montam, testam e implantam sistemas tecnológicos complexos para empresas Operadoras. Um sistema tecnológico corresponde ao conjunto de uma ou mais soluções tecnológicas, integradas e customizadas de acordo com as especificações do cliente; assim, os sistemas desenvolvidos operacionalizam o serviço planejado pela Operadora. A principal competência deste tipo de empresa é a engenharia de sistemas, e seus processos principais incluem concepção e desenvolvimento do sistema e implantação e operação do sistema.

Empresas Desenvolvedoras têm como missão a pesquisa e o desenvolvimento de novos produtos e soluções integradas. Usualmente uma solução compreende hardware e software operando em conjunto de forma a viabilizar novas aplicações. A principal competência deste tipo de empresa está relacionada com sua capacidade de pesquisa e desenvolvimento, e, desta forma, seus processos principais incluem concepção e desenvolvimento da solução, implantação e operação da solução e marketing.

Finalmente, empresas Produtoras têm como especialidade a eficiência de seus processos produtivos, sejam eles voltados para a produção de hardware,

(26)

de software ou para a prestação de serviços. Desta forma, seus processos principais incluem concepção e desenvolvimento do processo e implantação e operação do processo.

3.2 Analisando o setor de Software através da abordagem

proposta para o setor de Telecomunicações

Apesar de as empresas de software e de telecomunicações constituirem um mesmo segmento mais amplo – o segmento de Tecnologia da Informação [18, 20, 21] –, algumas questões inviabilizam a replicação do modelo proposto para o setor de telecomunicações para o setor de software. A primeira questão refere-se ao fato de que, dependendo do contexto em que a análise é elaborada, uma determinada empresa pode ser considerada simultaneamente uma Integradora ou uma Desenvolvedora, tornando o modelo inconsistente.

Por exemplo, o desenvolvimento de um software ERP (Enterprise Resource

Planning) requer a integração de diversos softwares “básicos” para a geração da

nova aplicação, como, por exemplo, sistemas operacionais, bancos de dados, geradores de interface e geradores de relatórios. Desta forma, uma empresa que desenvolve um ERP (como Microsiga e Datasul) pode ser considerada uma Integradora, já que utilizou diversas “soluções” desenvolvidas para a criação do seu “sistema” (exemplo: o banco de dados Oracle). Por outro lado, a customização e implementação desse tipo de produto apresenta-se como um projeto complexo, sendo usualmente realizada por uma outra empresa, normalmente uma empresa de consultoria especializada (exemplos: Accenture e IBM). Assim sendo, nesta segunda análise sobre o mesmo evento, a empresa que desenvolveu o ERP deixa de estar na posição de Integradora e passa a apresentar-se como uma Desenvolvedora, e a empresa de consultoria assume a posição de Integradora.

(27)

Caracterizando o Setor de Software

caracterizadas como fábricas de software. Essas empresas comportam-se de maneira diferente das Produtoras do segmento de telecomunicações, já que, além das Desenvolvedoras, elas podem interagir diretamente com as Integradoras ou até mesmo com o cliente final (Operadoras) e, assim, têm grande influência no processo de levantamento de requisitos e definição das características do sistema. Mais ainda, eventualmente todas as empresas que atuam no segmento de software dispõem de áreas especializadas de desenvolvimento, podendo implantar fábricas de software internas (também conhecidas como linhas de produção de software).

Desta forma, verifica-se que o modelo proposto para o setor de telecomunicações não apresenta aderência adequada quando se analisa o setor de software. Mais ainda, todas as empresas que atuam no segmento de software realizam conjuntos de atividades semelhantes, e o que diferencia essas empresas é a importância que cada atividade tem em seu contexto organizacional específico, como será detalhado na próxima seção.

No entanto, apesar de não ser replicável para o setor de software, o referencial proposto para o setor de telecomunicações será de grande importância para este trabalho, pois é com a sua utilização que será apresentado e analisado o funcionamento das empresas que desenvolvem software embutido, software altamente relevante para o setor industrial brasileiro.

3.3 Caracterizando o setor de Software

Considerando as limitações em relação à aplicabilidade da abordagem proposta para o setor de telecomunicações no setor de software apresentadas no item anterior e buscando compreender como acontece o processo de desenvolvimento de software entre diferentes empresas brasileiras, os autores deste projeto realizaram entre os meses de abril e novembro de 2004 a pesquisa “Estado da Prática em Engenharia de Software”.

(28)

de mercado; segundo, e como discutido anteriormente, identificar variáveis capazes de segmentar diferentes categorias de empresas de desenvolvimento de software independentemente do escopo do sistema desenvolvido.

As questões da pesquisa foram elaboradas a partir do conteúdo apresentado pela norma NBR-ISO/IEC 12207 (detalhada posteriormente neste documento), e o questionário final continha 300 questões. A metodologia de execução da pesquisa pode ser caracterizada como uma “survey exploratória” [22], capaz de fornecer conhecimentos preliminares sobre o fenômeno que está sendo estudado e criar uma base de conhecimentos para a elaboração de estudos mais aprofundados. O questionário foi publicado no site da universidade, e os entrevistados foram convidados a participar da pesquisa através de contato telefônico. O perfil das empresas participantes revelou-se bastante diverso: responderam ao questionário trinta e oito empresas de software, de pequeno, médio e grande porte (19 encontram-se listadas entre as 200 maiores do país, de acordo com a Revista Info Exame), incluindo fornecedoras de sistemas únicos ou personalizados para instituições privadas e governamentais, desenvolvedoras de pacotes para gestão de empresas e prestadoras de serviços diversos. Maior detalhamento sobre os resultados obtidos com a pesquisa podem ser encontrados em [23].

Todas as empresas analisadas executam as mesmas atividades de desenvolvimento, variando entre elas o grau de rigor e formalização com que as atividades são executadas. Desta forma, a pesquisa comprovou que existe um conjunto de práticas de desenvolvimento que é comum a todas as empresas de software, e que será utilizado posteriormente neste documento para a análise dos perfis profissionais que desempenham essas atividades.

(29)

Caracterizando o Setor de Software

de escala para tal projeto. Empresas que executam projetos cujos resultados envolvem milhares de clientes potenciais devem adotar práticas comerciais, gerenciais e de desenvolvimento voltadas para a venda em massa desse resultado. Por outro lado, empresas que executam projetos cujos resultados envolvem apenas um cliente potencial devem elaborar estratégia distinta, eventualmente com foco na comercialização de outros projetos para esse mesmo cliente.

Ainda como resultado da pesquisa “Estado da Prática em Engenharia de Software”, foi verificado que os serviços de software e os produtos de software (classificação tradicional) podem ser classificados da seguinte maneira:

Tabela 2 – Categorias de produtos e serviços na Indústria de Software

Resultado Descrição

Serviço

Software Original Software originalmente desenvolvido para o cliente; por exemplo, um sistema de otimização de carteira de investimentos desenvolvido para um banco.

Software Customizado Software já produzido anteriormente e customizado de acordo com as necessidades do cliente; por exemplo, um sistema ERP (Enterprise Resource Planning) que foi customizado de acordo com as características específicas de um cliente.

Produto

Aplicativo Software que pode ser utilizado diretamente pelo usuário; por exemplo, o processador de textos Word.

Produto Complexo Software que necessita ser customizado para o usuário antes de ser utilizado; por exemplo, um sistema ERP (Enterprise Resource Planning) antes de ser customizado para o cliente.

Componentes Software que será incorporado na construção de outros softwares; por exemplo, as bibliotecas de componentes comercializadas na internet.

Ferramentas Software que será utilizado para a construção de novos softwares; por exemplo, a ferramenta “Net”, desenvolvida pela Microsoft para o desenvolvimento de novos sistemas em C#.

Analisando a relação entre número de clientes e número de projetos, é possível verificar a existência de quatro categorias principais de empresas que operam no setor de software, sendo três categorias diretamente relacionadas com o seu desenvolvimento:

(30)

Desta forma, atuam como “gatilho” do processo de software, disparando o processo de especificação e aquisição do sistema. No caso específico do setor industrial brasileiro, empresas que utilizam máquinas com software embutido são classificadas como usuárias de software.

Empresas Orientadas a Clientes: empresas que possuem número de projetos superior ao número de clientes, ou seja, nas quais clientes de grande importância para a empresa adquirem um número elevado de sistemas, usualmente software original e específico para suas necessidades. Para esta categoria de empresas, os clientes têm grande influência na definição dos requisitos do sistema, que podem variar significativamente durante a execução do projeto. Desta forma, uma das principais competências das empresas “Orientadas a Clientes” é a habilidade de compreender as oportunidades e ameaças que permeiam o ambiente de negócios do cliente, desenvolvendo para ele sistemas de software capazes de alavancar oportunidades e minimizar ameaças. Os relacionamentos com os clientes usualmente são de longa duração, o que possibilita às empresas “Orientadas a Clientes” fidelizarem seus clientes devido ao alto custo da troca de fornecedor. Outra característica importante para esta categoria de empresas é o fato de que os produtos desenvolvidos são únicos e, por isso, não podem ser comparados. Assim, estas empresas usualmente são avaliadas de acordo com a qualidade dos seus processos produtivos, que pode ser mensurada de acordo com seu nível de maturidade. No caso específico do setor industrial, empresas que desenvolvem software capaz de integrar as informações provenientes de diversas máquinas de acordo com as necessidades únicas do cliente são consideradas “orientadas a clientes”.

(31)

Caracterizando o Setor de Software

nas máquinas de acordo com as necessidades do cliente são consideradas “orientadas a serviços”.

Empresas Orientadas a Produtos: usualmente desenvolvem sistemas de software padronizados (software de prateleira), para serem comercializados com o maior número possível de clientes. Em vista disso, sua principal competência é o desenvolvimento de produtos inovadores, capazes de atender às demandas de um grande número de clientes. Para este tipo de empresa, a qualidade dos produtos finais é o principal diferencial competitivo, juntamente com o grau de inovação apresentado pelo produto comercializado. No caso específico do setor industrial, empresas que desenvolvem software a ser embutido nas máquinas de acordo com necessidades genéricas do mercado são consideradas “orientadas a produtos”.

A relação esquemática entre categorias de empresas e de produtos é apresentada a seguir:

Figura 2 – Dinâmicas organizacionais do setor de Software

Orientadas a

Clientes Usuários de Software

Orientadas a Serviços Orientadas a Produtos Produtos de Software - Ferramentas - Componentes Produtos de Software - Aplicativos Produtos de Software - Produtos Complexos Software Original Software Customizado Requisitos de Customização Requisitos Software

Fonte: FLEURY, A. L.; SPINOLA, M. [23]

(32)

Tabela 3 – Sumário das características organizacionais – Setor de Software

Orientadas a

Clientes Orientadas a Serviços Orientadas a Produtos

Características Projetam, desenvolvem, implementam sistemas de software originais

Serviços relacionados com customização, treinamento e operação de software

Desenvolvimento e suporte de produtos de software

Estratégia

Competitiva [24] Excelência operacional Orientada para serviço Inovação no produto Fator Chave de

Sucesso Atendimento / superação das expectativas do cliente

Gestão do projeto de acordo com as

especificações contratuais Inovação no produto

Foco Pesquisa e

Desenvolvimento Portfolio de Clientes Portfolio de Serviços Portfolio de Produtos

Produtos/Serviços Sistemas únicos, desenvolvidos de acordo com as especificações do cliente. - Customização - Implantação - Treinamento - Execução de Processos (outsourcing) Softwares pacotes, podendo ser aplicativos, ferramentas de desenvolvimento, componentes e produtos complexos

Foco Qualidade Processo Projeto Produto

Riscos Principais Mudanças nos requisitos e duração do projeto Custo e duração do projeto Duração do projeto

Foco Gerenciamento

Projeto Gerenciamento das expectativas dos clientes Gerenciamento dos recursos do projeto Gerenciamento da qualidade do produto

Treinamento Programação e gerenciamento de configuração

Programação e modelagem

de sistemas Programação e testes de sistema

Processo de Desenvolvimento

O processo de desenvolvimento de software pode ser considerado como semelhante para todas as empresas e as diferentes atividades que o compõem têm importância diferente para cada uma das categorias propostas.

(33)

Caracterizando o Setor de Software

Figura 3 – Relação entre número de clientes e de projetos

Empresas orientadas a Clientes Empresas orientadas a Serviços Empresas orientadas a Produtos Alta Variabilidade do Software

Baixa Baixo Número de Clientes por Projeto Alto

Fonte: FLEURY, A. L.; SPINOLA, M. [25]

3.4 Considerações sobre o modelo proposto

Esta seção tem como objetivos categorizar as diferentes empresas de software de acordo com um referencial único e identificar um conjunto de atividades comuns a todas essas empresas. A classificação das empresas de software de acordo com a relação entre número de clientes e número de projetos viabiliza esse referencial único e facilita comparações entre as diferentes empresas do setor, pois utiliza um “contínuo” para determinar qual o posicionamento da empresa e evita a tradicional classificação binária “prestadora de serviços” ou “desenvolvedora de produtos”. A identificação de um conjunto comum de atividades de desenvolvimento garante que, independentemente da categoria da empresa em consideração, o mesmo processo produtivo estará sendo analisado.

(34)
(35)

4 Analisando as Categorias de Empresa

de Software

Esta seção analisa algumas das características mais relevantes do

mercado de software utilizando a categorização proposta na seção anterior. O objetivo desta seção é consolidar o referencial apresentado como referencial apropriado para análise do segmento de software. Como conseqüência, se esse referencial se mostrar consistente em diferentes análises, pode-se considerá-lo apropriado para a análise das novas formas de organização do trabalho nas empresas de software, que é o objetivo primário deste trabalho.

4.1 Software embutido

O desenvolvimento e a customização de software embutido apresentam-se como muito relevantes para o apresentam-setor industrial, pois, como mencionado anteriormente, o aumento nas funcionalidades viabilizadas com software em produtos manufaturados transfere as inovações do hardware para o software, transforma estratégias de pesquisa e desenvolvimento e traz o gerenciamento de software para o centro do processo de gestão tecnológica em empresas de manufatura [14].

Para compreender como funcionam as dinâmicas das empresas desenvolvedoras de software embutido com a utilização dos referenciais apresentados anteriormente, o modelo proposto para o setor de telecomunicações e o modelo proposto para o setor de software devem ser analisados em conjunto.

(36)

Por outro lado, quando a empresa de manufatura posiciona-se como uma “Integradora”, ou seja, quando ela desenvolve sistemas específicos para apenas um cliente, a sua área de software deve assumir o posicionamento “orientado a clientes” (relacionamento 2, apresentado na figura a seguir), já que o software desenvolvido viabilizará a integração entre diferentes soluções tecnológicas de forma a criar o sistema imaginado pela empresa operadora (usuária do software).

Figura 4 - Relacionamento entre o Modelo de Telecomunicações e o Modelo de Software

Integradoras Operadores

Produtoras

Orientadas a Clientes

Orientadas a

Produtos Orientadas a Serviços Usuários de Software Software 2 1 Desenvolvedoras Telecomunicações

Fonte: Elaborado pelos autores

(37)

Analisando as Categorias de Empresa de Software

entre essas soluções é viabilizado pelos sistemas de software, que possibilitam esta “aderência” através da recepção, processamento e transmissão de dados entre as diferentes soluções.

4.2 Software livre e o modelo proposto

De acordo com Taurion [8], softwares livres são diferentes dos softwares produzidos, comercializados e distribuídos tradicionalmente, já que são distribuídos juntamente com seu código fonte e, desta forma, são legíveis e passíveis de serem alterados e redistribuídos pelos usuários.

Os primeiros softwares livres foram criados e desenvolvidos de acordo com a GPL (Gnu Public Licence), segundo a qual o autor outorga a todos o direito de usar, copiar, alterar e redistribuir o programa sem o pagamento de taxas [26]. Devido a descontentamentos em relação à utilização do licenciamento GPL, em 1997 foi criada a Open Source Definition (OSD), conjunto de especificações, regras e diretrizes para licenças baseadas no modelo de software livre, diferente da GPL, pois não obriga que o código alterado seja disponibilizado publicamente. Desta forma, a OSD permite que softwares livres e proprietários convivam numa mesma solução. Outras formas de contornar as restrições impostas pela GPL incluem a contratação do programador para reescrever o código de forma não-GPL ou a realização da engenharia reversa do código, reescrevendo-o em outra linguagem.

O processo de desenvolvimento dos softwares livres é complexo e contraria alguns princípios dos modelos econômicos tradicionais, já que normalmente os programadores não são remunerados diretamente pelo seu trabalho [27]. Desta forma, os programadores envolvidos no seu desenvolvimento usualmente buscam reconhecimento, prestígio e reputação.

(38)

mesmo tempo alinhadas com os objetivos estratégicos da corporação e com os interesses da comunidade desenvolvedora.

Os projetos de desenvolvimento dos softwares são conduzidos por comunidades de programadores, dispersos geograficamente e sem interações pessoais, sendo a comunicação entre eles realizada através de meios eletrônicos de forma bastante sucinta. Mais importante, a comunidade de desenvovedores atua de forma livre, ou seja, os projetos que são desenvolvidos pela comunidade são aqueles que despertam a sua atenção, seja pelo seu caráter inovador, seja pelo seu caráter desafiador. O projeto normalmente envolve um mantenedor, desenvolvedor responsável por aprovar as alterações no projeto e pela liberação dos novos releases e, desta forma, responsável também pela liderança e gerenciamento do projeto, incluindo o processo de motivação dos colaboradores. Porém, o processo de desenvolvimento é realizado de forma individual e anárquica, ou seja, cada programador define e executa as tarefas nas quais tem interesse, quando e como considerar apropriado.

Desta forma, verifica-se que os projetos de desenvolvimento de softwares livres têm similaridades com as atividades desempenhadas nas empresas “Orientadas a Produtos”, e representam uma ameaça concreta para elas. Porém, atualmente o Brasil tem atividade limitada no desenvolvimento de produtos de prateleira, e a emergência dos softwares livres pode ser benéfica, já que empresas “Orientadas a Clientes” e “Orientadas a Serviços” podem passar a incorporar gratuitamente novos componentes, aplicações, ferramentas e produtos complexos no desenvolvimento de seus produtos e serviços, minimizando seu custo graças ao não-pagamento de licenças e aumentando suas margens de receita. Conclusão semelhante é apresentada em relatório desenvolvido pela Softex [10], que realizou extensa pesquisa entre desenvolvedores e usuários de software livre e de código aberto no Brasil, e observou que esse modelo de negócios “ameaça fortemente o modelo de pacotes (plataformas e sistemas operacionais), componentes de software (enquanto a ênfase da sua utilização for como produto) e produtos customizáveis”.

(39)

Analisando as Categorias de Empresa de Software

conhecimentos e experiências visando a um benefício comum. À medida que essas Comunidades de Prática Virtuais forem evoluindo, sua capacidade de estruturação, tendo como objetivo o desenvolvimento de softwares específicos e o fornecimento de serviços de software, pode se aprimorar. Neste caso, essas entidades virtuais começarão a concorrer diretamente com empresas “Orientadas a Serviços” e “Orientadas a Clientes”, alterando significativamente o perfil das empresas e profissionais do setor.

4.3 Reutilização de software

O processo de reutilização de software, essência das linhas de produtos de software e das fábricas de software, pode ser analisado por duas perspectivas distintas: reutilização de componentes e reutilização de processos. Em relação à reutilização de componentes de software, cada projeto de software produz uma entidade de software, composta por conjuntos de dados, relacionamentos entre dados, algoritmos e funções [29], e que desempenha uma ou mais tarefas específicas. Como resultado, cada entidade de software é única e, em teoria, deverá ser reutilizada caso as tarefas que ela desempenha precisem ser implementadas novamente.

Por sua vez, a reutilização de processos é definida como a replicação de um conjunto de ações de um processo anteriormente executado em um novo ambiente [30]. A reutilização de processos possibilita à empresa criar um conjunto de processos corporativos, que passam a caracterizar o seu know-how. Os processos executados num projeto de software podem ser divididos em quatro categorias principais, de acordo com Sawyer e Guinan [31]:

(40)

Processos Sociais: buscam analisar como diferentes desenvolvedores se estruturam em equipes, compreendendo estruturas de comunicação formais e informais. Metodologias como o Team Software Process (TSP) [35] trabalham a reutilização de software nesta perspectiva;

Perspectiva Individual: tem como foco aprimorar o processo de desenvolvimento individual de cada membro da equipe de desenvolvimento,

incluindo técnicas e motivação. Metodologias como o Personal Software Process

(PSP) e Personal Capability Maturity Model (P-CMM) apresentam conceitos para

aprimorar a reutilização de processos sob esta perspectiva;

Contexto Organizacional: tem como foco questões estratégicas, incluindo a análise da competitividade da empresa, o mercado no qual ela opera, o nível de recursos e fatores extraorganizacionais que afetam a performance do processo de desenvolvimento.

Desta maneira, a reutilização de software é um objetivo comum e estratégico para todas as empresas do setor, que buscam o aumento da qualidade e produtividade de produtos e serviços oferecidos através da criação de “linhas de produção de software”. Assim sendo, os conceitos de reutilização de software são fundamentais para todos os profissionais do segmento.

Por sua vez, as “fábricas de software”, empresas especializadas na reutilização de software, apresentam características semelhantes às das empresas “Orientadas a Clientes”, já que sua estratégia competitiva baseia-se na padronização do desenvolvimento de sistemas de software de acordo com as especificações do cliente, com conseqüente minimização de custos.

4.4 A localização das empresas e o modelo proposto

(41)

Analisando as Categorias de Empresa de Software

O conceito envolvido nesta análise parte do princípio de que o perfil de empresas predominante numa determinada localização geográfica está vinculado ao perfil dos clientes existentes nessa região. Em outras palavras, tomando como exemplo as cidades de São Paulo, Brasília e Florianópolis, é possível apresentar a seguinte análise:

Florianópolis apresenta mercado consumidor de tamanho bastante reduzido. Desta forma, o perfil predominante de empresas desenvolvedoras de software na cidade é do tipo “Orientada a Produtos”, já que os sistemas desenvolvidos serão comercializados (e, conseqüentemente, customizados e implementados) em outras regiões do país, por empresas “Orientadas a Serviços” e empresas “Orientadas a Clientes”;

Brasília apresenta como principal mercado consumidor instituições governamentais, que usualmente utilizam software especificamente desenvolvido para atender às suas necessidades únicas. Nesse caso, o perfil predominante de empresas desenvolvedoras de software é do tipo “Orientada a Clientes”, capaz de suprir as necessidades únicas desse mercado;

São Paulo, por sua vez, tem como um de seus principais mercados consumidores as instituições multinacionais, que utilizam em suas unidades locais software compatível com o software utilizado nas suas matrizes. Desta forma, para atender esse segmento corporativo, o perfil das empresas desenvolvedoras de software na região é predominantemente do tipo “Orientada a Serviços”, capaz de customizar e implementar sistemas semelhantes aos sistemas operacionalizados nas matrizes das empresas usuárias. Vale lembrar que certamente a complexidade econômica de São Paulo garante a existência de todos os diferentes perfis de empresas apresentados anteriormente.

4.5 Adotando o modelo proposto para alinhamento entre o

setor de software e o setor industrial

(42)

motivo, tal modelo será utilizado para a proposição de uma linha de ação para o SENAI em relação à formação de profissionais para atuarem na indústria de software, com vistas ao desenvolvimento de sistemas relevantes para o setor industrial.

(43)

5 Processo de Desenvolvimento de

Software

O

objetivo desta seção é apresentar conhecimentos específicos sobre o processo

de desenvolvimento de software, buscando estabelecer um referencial capaz de viabilizar a identificação de diferentes perfis ocupacionais a partir das principais atividades desempenhadas pelas empresas deste segmento.

5.1 Ciclo de vida de software

O processo de desenvolvimento de um software segue um ciclo de vida, sendo iniciado com o surgimento de uma idéia ou de uma necessidade, que pode ser atendida total ou parcialmente com a aquisição de um sistema de software. Esse processo de desenvolvimento inclui quatro etapas fundamentais, comuns a todos os projetos de software [1]:

1. Especificação do Software: métodos, técnicas e ferramentas para a definição das funcionalidades do software e das suas restrições quando em operação. Inclui a análise e definição dos requisitos, que devem ser compreendidos e acordados por clientes, usuários e equipe de desenvolvimento;

2. Desenvolvimento do Software: compreende métodos, técnicas e ferramentas para definir a arquitetura e desenvolver o software. Inclui o design do software, que particiona os seus requisitos e gera a arquitetura geral do sistema e o design detalhado deste, bem como a sua implementação, onde o código do sistema é efetivamente programado;

3. Validação do Software: compreende métodos, técnicas e ferramentas para garantir que o software produzido realize o que o cliente deseja. Inclui testes de unidades de programa e testes de sistema;

(44)

Cada ciclo de evolução pode ser compreendido como um pequeno ciclo completo de desenvolvimento de software.

O desenvolvimento de um software pode ser descrito de acordo com um modelo de ciclo de vida. O conjunto desses modelos constituem uma área de pesquisas importante para a Engenharia de Software, e atualmente quatro modelos principais merecem destaque:

1. Code and Fix: neste modelo não existe um processo formal, ou seja, o desenvolvedor escreve o código e corrige eventuais problemas resultantes. Em sua primeira era, os softwares eram elaborados dessa forma. Atualmente este modelo ainda é bastante utilizado, especialmente em pequenos projetos, com objetivos não claramente definidos;

2. Waterfall (Cascata): o primeiro modelo explícito de desenvolvimento de software foi apresentado por Royce [36] em 1970. O modelo descreve as principais atividades do processo de desenvolvimento de forma isolada, ou seja, sem nenhum tipo de iteratividade, incluindo as atividades de definição de requisitos, design do software, implementação, testes de unidade, integração, testes de sistema, operação e manutenção do software. Neste modelo, no momento em que cada estágio do processo é concluído, as diferentes partes envolvidas no projeto devem concordar com o resultado obtido antes de passar para a próxima etapa;

3. Design Iterativo: este modelo considera que os requisitos são razoavelmente compreendidos antes do início do projeto, e o ciclo de vida do software pode ser decomposto em diversas iterações de desenvolvimento, onde cada iteração comporta-se como um pequeno projeto de software, incluindo todas as atividades de desenvolvimento. O objetivo final de uma iteração é a criação de um software executável, estável e parcialmente testado. A iteração final gera o produto completo, que pode ser distribuído para os clientes do projeto [37]. O modelo espiral de Boehm [38], o Processo Unificado [5] e a Extreme Programming [6] são exemplos de modelos iterativos.

(45)

Processo de Desenvolvimento de Softwares

desenvolvimento. Neste modelo, antes das iterações começarem, um sistema inicial é desenvolvido a partir de especificações abstratas. Contando com o retorno obtido junto aos clientes, o sistema é refinado de forma a atender às suas expectativas. O desenvolvimento prototipativo iterativo é consistente com o desenvolvimento de sistemas que envolvem descobertas não previstas e mudanças no desenvolvimento de novos produtos [37].

Desta forma, esses modelos de ciclo de vida apresentam diferentes estratégias para seqüenciar (formalmente ou informalmente) um conjunto comum de atividades, que acontece cada vez que uma iteração de desenvolvimento é executada. Uma descrição desse conjunto comum de atividades é apresentada pelo modelo de ciclo de vida de software “cascata” (waterfall), como mostra a figura a seguir:

Figura 5 – Ciclo de Vida do Software

Design do Sistema Implementação Definição dos Requisitos Operação Integração e Testes

Fonte: Adaptado de SOMMERVILLE [1]

5.2 Qualidade e produtividade em software

(46)

onde o foco estava na exploração dos recursos da Tecnologia de Informação e o seu alinhamento com as operações do negócio. Os anos 1970 podem ser designados como a “era do cronograma”, quando atrasos significativos e excessos no orçamento passaram a demandar o planejamento e o controle dos projetos de software, resultando na introdução dos modelos de ciclo de vida apresentados anteriormente [39]. Os anos 1980, por sua vez, podem ser caracterizados como a “era do custo”, quando as aplicações de TI difundiram-se nas corporações e ao mesmo tempo tornaram-se disponíveis para os indivíduos. Com a competição na indústria de computadores tornando-se mais acirrada e as aplicações de baixo custo sendo amplamente difundidas, a importância da produtividade em software cresceu significativamente. Nesse momento, vários modelos de custo foram desenvolvidos e utilizados [40]. No final dos anos 1980, a importância da qualidade também passou a ser reconhecida. Nesse contexto, os anos 1990 podem ser considerados como a “era da qualidade e produtividade” para a indústria de software [41], caracterizada pelo surgimento de diversos modelos e normas que buscavam apresentar melhores práticas para a estruturação desse processo de desenvolvimento, entre as quais vale mencionar:

Software Capability Maturity Model (SW-CMM): é um modelo de cinco níveis, que busca construir as capacidades da organização de software através da descrição de boas práticas em engenharia e gerenciamentode projetos [42];

People Capability Maturity Model (P-CMM): emprega o framework de maturidade do SW-CMM como base para a criação de um modelo de melhores práticas para desenvolvimento e gerenciamento da força de trabalho em uma organização de software [43];

Personal Software Process (PSP): também emprega o framework de maturidade do SW-CMM, mas como base para a concepção de uma metodologia para avaliação da performance individual [44];

Team Software Process (TSP): utiliza ciclos de desenvolvimento múltiplos para a construção dos produtos finais, estabelecendo padrões de medidas para qualidade e performance das equipes envolvidas no desenvolvimento [35];

(47)

Processo de Desenvolvimento de Softwares

foi construído corretamente, o produto ou serviço produzido também estará de acordo com os padrões de qualidade planejados. A norma ISO 9001 é genérica, não tendo sido escrita para um segmento de negócios específico, mas tem grande aplicabilidade para projetos de software [45];

ISO/IEC 9126: define atributos de qualidade para produtos de software, incluindo funcionalidade, confiabilidade, usabilidade, eficiência, manutenabilidade e portabilidade, podendo ser utilizada para avaliação desses produtos [46].

Os anos 1990 também vivenciaram a emergência de importantes padrões numa área-chave para o processo desenvolvimento de software, o gerenciamento de projetos. Entre esses padrões vale mencionar:

Project Management Body of Knowledge (PMBok): identifica um conjunto de práticas na teoria do gerenciamento de projetos que são geralmente reconhecidas como as melhores práticas [47];

Project Management Competency Development Framework: traz indicações sobre as competências mais relevantes para os gerentes de projetos.

Nos anos 2000, os conceitos de maturidade de processos transcenderam as fronteiras do desenvolvimento de software e passaram a ser aplicados em diferentes etapas do desenvolvimento de produtos e serviços, tanto para avaliação como para aprimoramento dos processos. Os modelos de maturidade foram propostos para um grande número de atividades, incluindo gerenciamento da qualidade, desenvolvimento de software, relacionamento com fornecedores, efetividade de programas de pesquisa e desenvolvimento, geração de inovações, colaboracão no desenvolvimento e confiabilidade de produtos. Desta forma, enquanto os anos 1990 podem ser considerados como a “era da qualidade e produtividade”, a década de 2000 pode ser considerada, pelo menos até o momento, como a “era da integração”. Dentre os modelos surgidos neste período, vale destacar:

(48)

ISO/IEC 15504: apresenta um referencial comum para avaliação de processo de software, permitindo que os resultados da avaliação possam ser utilizados para identificar onde as melhorias são necessárias [34];

Organizational Project Management Maturity Model (OPM3): fortalece os relacionamentos entre planejamento estratégico e execução, de forma que os resultados dos projetos sejam predizíveis, confiáveis e consistentes [48].

5.3 Atividades do processo de desenvolvimento de software

Como apresentado anteriormente, apesar da proliferação dos diferentes modelos de maturidade, o processo de software apresenta processos que são comuns a todas as empresas, e que são resumidos de acordo com a norma “NBR – ISO/IEC 12207 - Processo de ciclo de vida de software” [49]. Como mencionado anteriormente, a norma tem como objetivo prover uma estrutura comum na disciplina de software, para que profissionais da área possam “falar a mesma língua” durante o processo de criação e gerência de software. Desta forma, categoriza e apresenta os processos que compõem o ciclo de vida completo do software, desde sua concepção até sua manutenção e descontinuidade. Como o escopo deste estudo concentra-se nas empresas envolvidas diretamente com processos de software, considera-se que os processos apresentados são suficientes para definir e delimitar os processos que devem ser analisados quando se busca determinar as principais competências e, conseqüentemente, quais as principais categorias de objetivos que podem ser almejados por essas corporações.

A NBR – ISO/IEC 12007 apresenta três categorias principais de processos:

- Processos Fundamentais

As atividades e as tarefas em um processo fundamental são de responsabilidade da organização que o inicia e executa. A organização assegura a existência e a funcionalidade desse processo.

(49)

de software ou um serviço de software. O processo continua com a preparação e emissão de pedido de proposta, seleção de fornecedor e gerência do processo de aquisição através da aceitação do sistema, produto de software ou serviço de software.

b) Processo de Fornecimento: envolve as atividades e as tarefas do fornecedor. O processo pode ser iniciado tanto por uma decisão de preparar uma proposta para responder a um pedido de um adquirente quanto pela assinatura e celebração de um contrato com o adquirente para fornecer o sistema, produto de software ou serviço de software. O processo continua com a determinação dos procedimentos e recursos necessários para gerenciar e garantir o projeto, incluindo o desenvolvimento e a execução dos planos de projeto até a entrega do sistema, produto de software ou serviço de software para o adquirente.

c) Processo de Desenvolvimento: diz respeito às atividades e tarefas do desenvolvedor. O processo contempla as atividades de análise de requisitos, projeto, codificação, integração, testes, e instalação e aceitação relacionada aos produtos de software. Pode envolver atividades relacionadas ao sistema, se estipulado no contrato. O desenvolvedor executa ou apóia as atividades neste processo, de acordo com o contrato. Representa a atividade mais importante sob a ótica da engenharia de software, e suas atividades podem ser decompostas de acordo com o modelo “Cascata”, apresentado anteriormente.

d) Processo de Operação: engloba as atividades e as tarefas do operador. O processo cobre a operação do produto de software e o suporte operacional aos usuários. Como a operação do produto de software está integrada à operação do sistema, as atividades e tarefas deste processo se referem ao sistema.

(50)

- Processos de Apoio ao Ciclo de Vida:

Os processos de apoio ao ciclo de vida constituem um conjunto de oito processos. Um processo de apoio auxilia um outro processo como uma parte integrante, com um propósito distinto, e contribui para o sucesso e qualidade do projeto de software. Um processo de apoio é empregado e executado, quando necessário, por outro processo. Os processos de apoio são:

a) Processo de Documentação: é um processo para registrar informações produzidas por um processo ou atividade do ciclo de vida. O processo abrange o conjunto de atividades de planejamento, projeto, desenvolvimento, produção, edição, distribuição e armazenamento daqueles documentos necessários a todos os interessados (gerentes, engenheiros e usuários do sistema ou produto de software).

b) Processo de Gerência de Configuração: é um processo de aplicação de procedimentos administrativos e técnicos, por todo o ciclo de vida de software, destinado a: identificar e definir os itens de software em um sistema e estabelecer suas “linhas base” (baselines); controlar as modificações e liberações dos itens; registrar e apresentar a situação dos itens e dos pedidos de modificação; garantir a completeza, a consistência e a correção dos itens; e controlar o armazenamento, a manipulação e a distribuição destes.

c) Processo de Garantia da Qualidade: define as atividades para garantir objetivamente que os produtos e processos de software estão em conformidade com seus requisitos especificados e aderem aos seus planos estabelecidos. Revisões Conjuntas, Auditorias, Verificação e Validação podem ser utilizadas como técnicas para Garantia da Qualidade.

d) Processo de Verificação: define as atividades (para o adquirente, o fornecedor, ou uma parte independente) para verificação dos produtos de software, em profundidade variável, dependendo do projeto de software.

(51)

Processo de Desenvolvimento de Softwares

f) Processo de Revisão Conjunta: define as atividades para avaliação da situação e dos produtos resultantes de uma atividade. Este processo pode ser empregado por qualquer uma das duas partes, onde uma delas (parte revisora) revisa a outra parte (parte revisada) em um fórum conjunto.

g) Processo de Auditoria: define as atividades para determinar a conformidade com requisitos, planos e contrato. Este processo pode ser empregado por qualquer uma das duas partes, onde uma delas (parte auditora) audita os produtos de software ou atividades da outra parte (parte auditada).

h) Processo de Resolução de Problema: define um processo para análise e remoção dos problemas (incluindo não-conformidades) – independentemente da sua natureza ou origem – que forem descobertos durante a execução dos processos de desenvolvimento, de operação, de manutenção ou de outros processos.

- Processos Organizacionais de Ciclo de Vida

Os processos organizacionais de ciclo de vida constituem um conjunto de quatro processos. Eles são empregados por uma organização para estabelecer e implementar uma estrutura subjacente, constituída de processos de ciclo de vida e pessoal associados, bem como melhorar continuamente a estrutura e os processos. Eles são tipicamente empregados fora do domínio de projetos e contratos específicos; entretanto, ensinamentos desses projetos e contratos contribuem para a melhoria da organização. Os processos organizacionais são:

a) Processo de Gerência: envolve as atividades e tarefas genéricas que podem ser realizadas por quaisquer das partes que têm que gerenciar seu(s) respectivo(s) processo(s). O gerente é responsável pelo gerenciamento de produto, gerenciamento de projeto e gerenciamento de tarefa do(s) processo(s) aplicável(eis), tais como aquisição, fornecimento, desenvolvimento, operação, manutenção ou processos de apoio.

Referências

Documentos relacionados

O tema proposto neste estudo “O exercício da advocacia e o crime de lavagem de dinheiro: responsabilização dos advogados pelo recebimento de honorários advocatícios maculados

O relatório encontra-se dividido em 4 secções: a introdução, onde são explicitados os objetivos gerais; o corpo de trabalho, que consiste numa descrição sumária das

Os principais resultados obtidos pelo modelo numérico foram que a implementação da metodologia baseada no risco (Cenário C) resultou numa descida média por disjuntor, de 38% no

Este seguro prevê e regula a inclusão, automática dos cônjuges dos Segurados Principais que estejam em perfeitas condições de saúde, na qualidade de Segurados

3 Caliente aceite en un wok o una sartén, ponga en él la carne y dórela a fuego vivo unos 2 minutos sin dejar de remover.Añada la pasta de curry y mézclela bien; incorpore luego

Almeja-se com esta investigação contribuir para avaliação da Política de Educação de Jovens e Adultos, bem como instigar para o debate conjunto entre órgãos públicos

Considerando a presença e o estado de alguns componentes (bico, ponta, manômetro, pingente, entre outros), todos os pulverizadores apresentavam alguma

A solução, inicialmente vermelha tornou-se gradativamente marrom, e o sólido marrom escuro obtido foi filtrado, lavado várias vezes com etanol, éter etílico anidro e