Engenharia de Software e Software Livre



Documentos relacionados
Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Como contribuir com projetos de software livre

Como contribuir com projetos de software livre

Agenda. Histórico Máquinas virtuais X Emuladores Vantagens & Desvantagens Vmware Quemu Xen UML Comparação entre VM's Conclusão

Aula 01. Introdução ao Linux

Circuito Curitibano de Software Livre

GERÊNCIA DE CONFIGURAÇÃO. Isac Aguiar isacaguiar.com.br

Controle de Versão de Software. Luiz Jácome Júnior

Sistemas de Informação I

Tiago Rodrigo Marçal Murakami

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

No mercado atual, podemos encontrar vários tipos de sistemas operacionais que fazem parte das seguintes classes:

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

Engenharia de Software I

Ferramentas de planejamento e acompanhamento

Windows 2008 Server. Windows 2008 Server IFSP Boituva Prof. Sérgio Augusto Godoy.

Integração Contínua com Rational Team Concert, Jenkins e SonarQube

Definições: quando usar cada um?

I CICLO ITINERANTE DE FORMAÇÃO PARA O TERCEIRO SETOR

Debian como Desktop. Álvaro Justen (a.k.a. Turicas) Debian como Desktop.

O que é um processo de software?

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

Requisitos de Ferramentas Especializadas de Gestão de Configuração de Software

Introdução à Computação

Introdução Fatores de Qualidade Garantia de Qualidade Rivisões de Software Conclusão. Qualidade. Plácido A. S. Neto 1

EVOLUÇÃO DE SOFTWARE

COLIVRE Cooperativa de Tecnologias Livres Telefone: (71) CNPJ:

Desenvolvimento de um software de gerenciamento de projetos para utilização na Web

Atividade da gerência da qualidade

Gerência de Configuração de Software Funções

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Agenda da Aula. Resumo dos Padrões (Aula 4) Padrões Arquiteturais. Arquitetura Cliente-Servidor. Arquitetura Cliente-Servidor

Sistemas Operacionais Introdução

GARANTIA DA QUALIDADE DE SOFTWARE

Desenvolvendo Software Livre com Programação extrema

ITIL V3 (aula 8) AGENDA: REVISÃO FERRAMENTAS EXAME

Qualidade de Processo de Software Normas ISO e 15504

Software Livre e Aberto

Obtendo Qualidade com SOA

Engenharia de Requisitos Estudo de Caso

Dicas para implantação do Autodesk Vault para pequenas e médias empresas

Controle de Versão com GIT

ISO/IEC 12207: Gerência de Configuração

UM CASE DE IMPLANTAÇÃO DA GERÊNCIA DE CONFIGURAÇÃO E MUDANÇA (NÍVEL F) DO MPS.BR UTILIZANDO PADRÕES ABERTO PARA O DESENVOLVIMENTO CORPORATIVO

Gerenciamento de software como ativo de automação industrial

Ferramenta de apoio a gerência de configuração de software. Aluno: Rodrigo Furlaneto Orientador: Everaldo Artur Grahl

Manutenção e Ferramentas CASE. Marcos L. Chaim Segundo Bimestre 2003 Mestrado Profissional IC/Unicamp

Plano de Gerenciamento do Projeto

FTIN Formação Técnica em Informática. Sistema Operacional Proprietário Windows Prof. Walter Travassos

3 Estudo de Ferramentas

ENGENHARIA DE SOFTWARE I

Qualidade em Projetos aperfeiçoamento de processos Entendimento/Monitoração e Controle. 0 - Generalidades

Organização dos Estados Ibero-americanos. Para a Educação, a Ciência e a Cultura

SISTEMA OPERACIONAL & SOFTWARE LIVRE

Yocto Project. reduzindo "time to market" do seu próximo produto. Otavio Salvador

Gerência de Configuração de Software Introdução

Curso Fundamentos de Gerenciamento de Serviços de TI baseado no ITIL V3

Desempenho e Segurança em Sistemas de Informação. Profa.: Me. Christiane Zim Zapelini christianezapelini@nwk.edu.br

ARQUITETURA DE SOFTWARE

UFG - Instituto de Informática

Projeto de Arquitetura

UNIP Ciência da Computação / Sistemas de Informação TED I - Orientações Gerais para Elaboração dos Documentos

Gestão de TI com Software Livre em Instituições de Ensino

Engenharia de Sistemas Computacionais

Arch Linux: simplicidade, eficiência e eficácia juntos em uma distribuição

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

Introdução à Engenharia de Software

Francielle Santos

CC Montagem e manutenção de hardware Docente: Nataniel Vieira 1 sem Técnico em Informática Roteiro 06: Atividade sobre o Documentário RevolutionOS

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

CONCORRÊNCIA AA Nº 05/2009 BNDES ANEXO X PROJETO BÁSICO: DESCRIÇÃO DOS PROCESSOS DE TI

5. Métodos ágeis de desenvolvimento de software

Engenharia de Software 2013/2

Versionamento de Código. Núcleo de Desenvolvimento de Software

JVM s Livres. Paloma Costa. javawoman@portaljava.com.br

Governança de TI. ITIL v.2&3. parte 1

Introdução 12/06/2012. Software Livre

Gerenciamento de Níveis de Serviço

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

Modelos de Qualidade de Produto de Software

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

LINUX. Lapro I Profa. Fernanda Denardin Walker. - Aula 2 - Material adaptado de: Isabel Mansour, Marcia Moraes e Silvia Moraes SISTEMA OPERACIONAL

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

Oficina de ferramentas de Gerência para Redes em Linux. Prof. Jefferson Santiago

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Prof. Victor Halla. Unidade IV FUNDAMENTOS DE SISTEMAS

Projeto JavaEE: OPUS, Sistema de Gestão de Obras para o Exército Brasileiro

Sistemas de Canais Sistemas de Informação

Arquiteto de Software. Projeto. Professor MSc Wylliams Barbosa Santos h:p://about.me/wylliams Infra- Estrutura de SoCware

Universidade Federal de Goiás. Alexandre Ferreira de Melo CERCOMP / UFG

Transcrição:

Tudo a Ver! terceiro@dcc.ufba.br Abril de 2008 fisl9.0

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Da Wikipedia ( Software Engineering ): Estudo de abordagens sistemáticas, disciplinadas e quantificáveis para desenvolvimento, operação e manutenção de software.

Perguntas que não querem calar Como prever custo e tempo do desenvolvimento de software? Como melhorar a qualidade o produto do desenvolvimento de software? Como facilitar futuras modificações em software? Como reduzir custo do desenvolvimento de software?

Temas comuns da Engenharia de Software Qualidade Evolução Arquitetura

Qualidade de Software Como disciplina: Conjunto planejado e sistemático de atividades para garantir que o software seja construído com qualidade. Como atributo: 1 o grau ao qual um software atinge os requisitos especificados 2 o grau ao qual um software atinge as expectativas dos seus usuários. Fonte: IEEE 610.12: IEEE Standard Glossary of Software Engineering Terminology (tradução livre)

Evolução de Software Processo contínuo de transformação no software. As 8 leis de Lehman: I) Mudança contínua II) Complexidade crescente VI) Crescimento contínuo VII) Qualidade descrescente M.M Lehman, J.F. Ramil, P.D. Wernick, and D.E. Perry. Metrics and laws of software evolution-the nineties view. In Proceedings of the 4th International Symposium on Software Metrics, 1997.

Arquitetura de Software A arquitetura de software de um programa ou sistema computacional é a estrutura das estruturas do sistemas, o que reúne elementos de software, as propriedades desses elementos que são externamente visíveis, e a relação entre eles. Fonte: Software Architecture in Practice (2nd edition), (Bass, Clements, Kazman; Addison-Wesley, 2003.

Arquitetura de Software (2) A arquitetura de um software se manifesta na construção e na execução do software. Descrição de arquitetura: documentação da estrutura de alto nível de um software. Torna a arquitetura expĺıcita. Usos: Planejamento do processo de desenvolvimento. Análise de impacto de possíveis alterações (rastreabilidade). Análise de desempenho da arquitetura. Planejamento de implantação.

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Um software é livre se seus usuários têm 4 liberdades: 0 executar 1 estudar 2 redistribuir 3 aperfeiçoar e distribuir Copyleft representa a manutenção dessas liberdades.

Como se dá o desenvolvimento de software livre? Figura: Desenvolvimento distribuído de software livre

Como se dá o desenvolvimento de software livre? (2) Controle de versão ( Gerência de configuração ): CVS, svn, bzr, darcs, hg, git... Gerenciamento de projeto: Bugzilla, Trac, debbugs,... Comunicação on-line: listas, IRC, blogs, planets, fóruns web... Lançamentos: versões para teste e versões estáveis.

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Qualidade O que é Engenharia de Software Quando os desenvolvedores de um software são voluntários...... como garantir que todo trabalho que precisa ser feito para a próxima versão será feito?... como prever o tempo de desenvolvimento?... como garantir cumprimento de prazos? Voluntário: um colaborador do projeto sobre cujas atividades não se tem controle.

Evolução O que é Engenharia de Software Como manter a qualidade do código? Como manter a arquitetura do software? Como facilitar a entrada de novos colaboradores? Como manter a portabilidade?

O caso do acoplamento no Linux Figura: Common coupling no Linux Fonte: S.R. Schach, B. Jin, D.R. Wright, G.Z. Heller, and A.J. Offutt, Maintainability of the Linux Kernel, IEE Proceedings Software, 149(1), 18-23, February 2002. http://citeseer.ist.psu.edu/schach02maintainability.html

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Qualidade: Portabilidade build systems bastantes completos Disponibilidade de arquiteturas diferentes para teste Debian: 11 arquiteturas Linux com suporte oficial: i386, m68k, sparc, alpha, powerpc, arm, mips, hppa, ia64, s390, amd64 4 arquiteturas Linux sem suporte oficial: ppc64, sh, armeb, m32r 4 Arquiteturas não-linux, sem suporte oficial: hurd-i386, netbsd-i386, netbsd-alpha, kfreebsd-gnu

Qualidade: Gerenciamento de Lançamentos baseado em tempo Projetos grandes. Trabalho suficiente é realizado durante o ciclo de desenvolvimento. Quando chega a época do lançamento, o que está pronto é lançado e o que não está fica pra próxima. Exemplo perfeito: GNOME Fonte: Michlmayr, M. (2007) Quality Improvement in Volunteer Free and Open Source Software Projects: Exploring the impact of Release Management. PhD Dissertation, University of Cambridge.

Evolução: uso corriqueiro de branches

Evolução: controle de versão distribuído

Arquiteturas de plugins Core estável Extensões desenvolvidas independentemente Exemplos: Mozilla * TWiki GNOME: Gedit, EOG,... outros

Agenda O que é Engenharia de Software 1 O que é Engenharia de Software 2 3 4 5

Alguns pontos A Engenharia de Software procurar melhorar o desenvolvimento de software. Historicamente, a ES teve seu foco no contexto de organizações desenvolvedoras de software. EXISTE SIM o uso de diversas técnicas de Engenharia de Software no Software Livre. Mas quase sempre não existe organização desenvolvedora. Então é necessário repensar a Engenharia de Software...

Repensando a Engenharia de Software Além de se perguntar como aumentar a qualidade e reduzir o custo, é preciso se perguntar também: Num contexto de desenvolvedores voluntários e espalhados geograficamente que se comunicam quase exclusivamente através da rede...... como facilitar a entrade de novos colaboradores em projetos complexos?... como comunicar decisões de projeto?... como especificar o Jeito Certo TM de se fazer as coisas?... como gerantir a integridade do código, mesmo que não exista alguém designado (ou especialmente motivado) para isso?

Perguntas? terceiro@dcc.ufba.br