engenharia de software e o software livre

65
Engenharia de Software Livre e o Software Livre Valcir Júnior Dalla Rosa Fabio Aiub Sperotto

Upload: fabio-sperotto

Post on 21-Jun-2015

2.426 views

Category:

Technology


0 download

DESCRIPTION

Slides da palestra sobre Engenharia de software aplicado ao software livre, uma proposta de um modelo de colaboração desenvolvida pelo Valcir Júnior Dalla Rosa com contribuição de Fabio Aiub Sperotto. No núcleo de pesquisas de software livre na Unochapecó. Este é um trabalho em andamento e já houve correções sobre os conceitos apresentados, entre em contato (www.bazardoconhecimento.wordpress.com).

TRANSCRIPT

Page 1: Engenharia De Software e O Software Livre

Engenharia de Software Livre e o Software Livre

Valcir Júnior Dalla RosaFabio Aiub Sperotto

Page 2: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 2

dfds

• Engenharia de Software (conceitos);• Modelos Relacionados (clássicos,

ágeis, normas e gestão);• Comunidade de Software Livre;• Proposta de um Modelo Colaborativo;• Conclusões.

Roteiro

Page 3: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 3

Engenharia de Software

dfds

• “O estabelecimento de sólidos princípios de engenharia para que se possa obter economicamente um software confiável e que funcione eficientemente em máquinas reais." (BAUER apud PRESSMAN,1995, p. 31).

Page 4: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 4

Engenharia de Software

O que? Como?

Por que?

Page 5: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 5

Engenharia de Software X Futebol

A profissão:

Técnico Engenheiro de Software

Page 6: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 6

Engenharia de Software X Futebol

Os colaboradores:

Time Equipe

Page 7: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 7

Engenharia de Software X Futebol

A organização:

Tática (Formação) Modelo (Metodologia)

Page 8: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 8

Engenharia de Software X Futebol

O resultado:

Títulos = Satisfação do torcedor

Software de qualidade = Satisfação do cliente

Page 9: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 9

Onde o software livre se encaixa nessa analogia?

• O futebol de final de semana: sem técnico, sem organização formal, sem torcedor.

Page 10: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 10

Modelos de Processo de Software

• É uma proposta teórica de organização das fases envolvidas no processo de produção do software;

• Não é uma descrição definitiva, mas sim, uma representação abstrata do gerenciamento e desenvolvimento do software (SOMMERVILLE, 2001).

Page 11: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 11

Modelo Cascata

Representação gráfica do modelo cascata (PRESSMAN, 1995, p 33).

Page 12: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 12

• Caracteriza-se pela seqüencialidade das atividades de uma forma sistemática, a passagem de uma tarefa para outra tem como requisito a validação e aceitação dos produtos finais da tarefa atual;

Page 13: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 13

Prototipação

• Esse modelo baseia-se na idéia de criação de protótipos, que inicialmente representam apenas a interface;

• Em outra etapa, desenvolve-se funcionalidades que serão aprovadas pelo cliente, (módulos, relatórios, etc.);

Page 14: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 14

• A idéia é que o protótipo evolua até se suprir todas as necessidades do cliente;

• Dois tipos de protótipos:– Descartável;– Não descartável;

Page 15: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 15

Modelo Espiral

Representação gráfica do modelo espiral (TONSIG, 2003, p63)

Page 16: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 16

• A abordagem tradicional considera quatro etapas fundamentais, onde cada etapa é representada por um quadrante do ciclo;

• A cada iteração completada, o software evolui para estágios superiores, normalmente aumentando sua complexidade.

Page 17: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 17

Metodologias Ágeis

• “As metodologias ágeis surgiram com a proposta de aumentar o enfoque nas pessoas e não nos processos. Além disso, existe a preocupação em gastar menos tempo com documentação e mais tempo com a resolução do problema”. (SOARES, 2004, p 2).

Page 18: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 18

Manifesto Ágil• Indivíduos e interações ao invés

de processos e ferramentas;• Software executável ao invés de

documentação; • Colaboração do cliente ao invés

de negociação de contratos; • Respostas rápidas a mudanças

ao invés de seguir planos. (BENK, Kent et al, 2001).

Page 19: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 19

Scrum e XP• Scrum é um método ágil para

gerenciamento de projetos;

• XP é um método ágil para gerenciamento de processos;

Page 20: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 20

Scrum

Representação Gráfica do ScrumFonte: http://dojofloripa.wordpress.com/2007/02/07/scrum-em-2-

minutos/

Page 21: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 21

• Divide o desenvolvimento em sprints, responsáveis por funcionalidades (requisitos) específicas;

• O produto é projetado, codificado e testado durante o sprint;

• No final de cada sprint cada equipe apresenta os resultados do seu trabalho para o grupo, sendo que existem reuniões diárias de 15 minutos;

Page 22: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 22

Papéis no Scrum

• Product Owner: o cliente, dono do produto;

• Scrum Master: o técnico, o gerente da equipe, responsável pela qualidade do trabalho.

• Team: a equipe de trabalho;

• Developers: desenvolvedores.

Page 23: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 23

Padrões

• ISO/IEC 12207: define uma estrutura comum para o clico de vida do software (processos, atividades e tarefas). Conceito de acoplamento.;

• ISO/IEC 15504: avaliação de processos de software com foco em melhorias dos processos.

Page 24: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 24

Padrões

Representação Gráfica dos Processos da ISO/IEC 12207Fonte: http://www.plugmasters.com.br/sys/materias/539/1/ISO

%7B47%7DIEC-12207-Processos-Fundamentais

Page 25: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 25

PMBOK• Formaliza o ciclo de vida do software:

iniciação, planejamento, execução, monitoramento e controle, encerramento.

• Formaliza 9 áreas de conhecimento: integração, escopo, tempo, custos, qualidade, recursos humanos, comunicação, riscos e aquisição.

Page 26: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 26

PMBOK

Representação Gráfica das Áreas de ConhecimentoFonte: http://www.mhavila.com.br/topicos/gestao/pmbok.html

Page 27: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 27

Escolha do Modelo

• Considerar peculiaridades e a natureza de cada projeto e o resultado a ser alcançado.

• Definir prioridades: controle, agilidade, qualidade, etc.

• Considerar o tamanho da equipe.

Page 28: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 28

Escolha do ModeloIndicadores

Fonte: Engenharia de Software Magazine, edição especial de 2007

Page 29: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 29

O Processo de Desenvolvimento de Software

Livre

• Livro e artigo referência no assunto: “The Cathedral and the Bazaar” de Eric S. Raymond ;

• Raymond escreve sobre os métodos de engenharia de software utilizado no processo de produção do sistema operacional Linux, sendo este open source;

Page 30: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 30

Foto de Eric S. Raymond

http://upload.wikimedia.org/wikipedia/commons

Livro “The Cathedral and the Bazaar”

http://www.timferro.com/wordpress/archives/

Page 31: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 31

• Segundo Raymond (2001), o processo de produção de software livre é praticado desde 1980;

• Muitos dos modelos citados acima, principalmente as metodologias ágeis, ainda não haviam sido desenvolvidos ou não estavam plenamente consolidados como modelos seguros;

Page 32: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 32

• Raymond baseou-se na observação do processo de produção do Linux para caracterizar dois métodos produção de software: o método Catedral e o método Bazar.

Page 33: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 33

Método Catedral

• O software é produzido por uma pequena equipe;

• O código, durante o processo de desenvolvimento, está acessível somente a está equipe;

• O código (ou programa compilado) é liberado pra comunidade quando já possui certo grau de confiabilidade;

Page 34: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 34

• Possibilita a existência de uma hierarquia bem definida;

• A fase de teste é geralmente realizada por uma comunidade maior;

• Esse método de produção pode ser observador na produção de software proprietário ou de software livre produzidos em empresas.

Page 35: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 35

Método Bazar

• Software é produzido por uma grande comunidade;

• os códigos são liberados e testados constantemente;

• Os desenvolvedores geralmente encontram-se geograficamente distribuídos comunicando-se pela internet;

Page 36: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 36

• Não possui uma hierarquia bem definida, sendo a organização extremamente informal, valendo-se do conceito de auto-organização bottom-up;

• Este método é encontrado em comunidades de software livre.

Page 37: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 37

As Comunidades de SL

• Geralmente se organizam como “Bazar”;

• Na maioria das vezes o trabalho não é remunerado;

• Os colaboradores (mantedores e contribuidores) encontram-se geograficamente distribuídos.

• MERITOCRACIA;

Page 38: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 38

As Comunidades de SL

Page 39: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 39

O Resultado

• A esmagadora maioria das comunidades não se desenvolvem, pelo simples fato do software não parecer interessante.

• Comunidades maiores possuem certa organização (funções, regras, objetivos), e algumas até incentivo financeiro.

Page 40: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 40

O Problema

• Não existe nenhum modelo formal para o SL;

• Os modelos já desenvolvidos são orientados ao cliente;

• Não consideram as peculiaridades do SL;

Page 41: Engenharia De Software e O Software Livre

Proposta de Modelo

Colaborativo de Desenvolvimento

Page 42: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 42

• Não pretende revolucionar a produção de software livre, mas mostrar-se como uma alternativa.

• Considerar peculiaridades:

- A inexistência de um cliente;

- Colaboradores distribuídos geograficamente;

- Colaboradores não possuem comprometimento efetivo (suporte);

- Falta de recursos financeiros;

Objetivos

Page 43: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 43

Organização Hierárquica

Page 44: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 44

Áreas de Conhecimento

• Ponto chave desse modelo;• O especialista de cada área executa

sua função (“dividir para conquistar”);• Evitar sobrecarga de trabalho sobre o

mediador;• Melhorar a qualidade de cada tarefa

executada;• Cada área é dividida em setores e os

setores em funções;

Page 45: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 45

Área Técnica

• Pilar da comunidade;• Onde o software em si é produzido;• Ex: programação, análise, teste;• Possui o papel do gerente técnico:

- Define setores, funções e quem ocupara cada função;

- Delegação de tarefas;

- Fiscalização do cronograma;

Page 46: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 46

Área Técnica

• Equipes verticais: formadas por colaboradores com a mesma função, sendo responsável por uma fase (processo) da produção.

• Equipes horizontais: Possui profissionais de várias funções que são responsáveis pela solução de um requisito. (Scrum) : programadores, testadores, analistas,

Page 47: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 47

Área de Consultoria

• Formada por colaboradores especialistas em uma área de conhecimento necessária para a produção do software;

• Ajuda no levantamento, definição e validação dos requisitos;

• Cabe ao consultor o poder de abstrair o problema de uma forma genérica e não apenas para resolver o seu problema; programadores, testadores, analistas,

Page 48: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 48

Área de Tradução

• A tradução de software livre é uma prática já consolidada pelas comunidades, porém, geralmente não possui uma área específica;

• A área de tradução pode trabalhar junto com área de tradução para a divulgação de forma global;

• Aumentar a qualidade e a gama de idiomas;

Page 49: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 49

Área de Publicidade

• Não existe na maioria das comunidades;

• Várias comunidades de software livre possuem dificuldades para se promover;

• Empresas de publicidade podem utilizar a comunidade para promover seus serviços;

• Colaboradores que realmente entendem de promoção podem aumentar a quantidade de usuários e até mesmo colaboradores.

Page 50: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 50

Conclusões sobre o Organograma

• Usuário possui voz ativa (feedback);

• Não tem como objetivo burocratizar o processo de produção de software livre;

• Organizá-lo incentivando a colaboração de novas áreas de conhecimento com a filosofia de liberdade peculiar ao software livre;

Page 51: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 51

Processos de Desenvolvimento da Comunidade e do Software

• Além do desenvolvimento do software livre é preciso considerar o desenvolvimento da comunidade;

• Para a criação da comunidade existe a necessidade de um idealizador;

Page 52: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 52

Page 53: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 53

Estudo de Viabilidade

• Análise de todos os fatores relevantes ao desenvolvimento do software e criação da comunidade;

• Pode ser feito pelo idealizador junto com um possível consultor da comunidade;

• Caso seja viável deve-se imediatamente identificar o mediador;

Page 54: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 54

Definição das Áreas, Setores, Funções e Colaboradores

• Deve ser feita por um mediador, sendo que, na área técnica os responsável pela definição dos setores, funções e colaboradores deve ser feita pelo “gerente técnico”.

• Quando destas atividades concluídas a organização hierarquia encontra-se estruturada;

Page 55: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 55

Levantamento dos Requisitos

• Deve ser feito por algum colaborador (engenheiro de requisito) da área técnica juntamente com o consultor de cada área;

• Dependendo do software há a necessidade de mais áreas;

• Mais consultores da mesma área pode ser interessante;

Page 56: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 56

Elicitação dos Requisitos

• Executada por colaboradores da área técnica pelo levantamento dos requisitos (documento de requisitos);

• Artefatos de análise são gerados: diagramas, fluxogramas, roteiros,etc.

• É importante que os requisitos sejam bem definidos e documentados (levantamento e análise);

Page 57: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 57

Codificação• O artefatos gerados pelo levantamento e

análise dos requisitos são utilizados para a codificação da solução;

• Aspectos técnicos como linguagem de programação, são resolvidos pela equipe de programação, considerando o problema;

• Conforme são codificados os requisitos podem ser testados;

Page 58: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 58

Teste Técnico

• Pode ser feito por uma equipe de teste ou por alguém pertencente a equipe técnica que não seja o colaborador que o codificou;

• Ex de aspecto técnico: “erro quando a tecla x é clicada”, “campo com tipo de dado errado”, “mensagens erradas”, “problema de ergonomia na interface”, etc.

• Se o código não é válido ele volta pra codificação para que as devidas mudanças sejam feita;

Page 59: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 59

Teste do Consultor(es)• Refere-se a saída dos programas;

• Validação do requisito;

• Cada consultor atesta o código para os aspectos da sua área;

• Quando um requisitos não é validado e sofre refatoração antes de ser codificado novamente;

Page 60: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 60

Publicação• Após a validação das duas fases de teste

ocorre a publicação;

• Publicação de todos os artefatos (documentação) gerados e não somente do código;

• Facilita a compreensão do software (estudo), possível customização e manutenção;

Page 61: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 61

Processo de Manutenção• Qualquer colaborador pode propor uma

alteração ou aperfeiçoamento;

• O mediador faz um estudo de impacto viabilidade sobre esta modificação juntamente com os consultores;

• Caso a proposta seja viável, um novo requisito pode ser criado ou um requisito existente pode sofrer alteração;

Page 62: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 62

Page 63: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 63

Conclusões• O modelo apresentado pode ser melhor

gerenciado com uma ferramenta on-line;

• Quem está acostumado ao processo tradicional de desenvolvimento de software livre pode apresentar resistência;

• A utilização de conceitos e modelos da engenharia de software vem para trazer confiança e qualidade a software livre;

Page 64: Engenharia De Software e O Software Livre

Free Template from www.brainybetty.com 64

Conclusões

• É importante que colaboradores de outras áreas entendam a filosofia do SL e também o modelo;

• Comunidades Universitárias de SL;

Page 65: Engenharia De Software e O Software Livre

Contato

Valcir Júnior Dalla Rosa

[email protected]

• www.twitter.com/jr_dr

Fabio Aiub Sperotto

[email protected]

• www.twitter.com/fabio_gk