O documento discute o processo de desenvolvimento de software livre, definindo conceitos como software, engenharia de software e processo de desenvolvimento. Ele explora como projetos de software livre produzem software usando um modelo de sucesso simples e aborda aspectos como documentação, análise de requisitos e gerência de configuração.
5. Conceitos
• Software?
• Engenharia de Software?
• Processo de Desenvolvimento de Software?
Capability Maturity Model (CMM)
PadrõesISO 12207
MPS/BR
Modelos de Processo
Modelo em Cascata
Processo Iterativo
Processos Ágeis
Qualidade
12. Aspectos do desenvolvimento de Software livre
documentação
modelo projeto arquitetural
análise e definição de requisitos
codificação
gerência de configuração
teste de unidade e integração de sistema
gerência de cronograma
modelo
Para projetar a construção de softwares existem processos, ferramentas, organizações alternativas, diversos modelos e esforços conjuntos além de normas como CMM, SPICE e ISO/IEC 12207.
Simultaneamente a essas iniciativas uma porção crescente de software vem sendo desenvolvida por grupos individuais e independentes, organizados em comunidades e/ou grupos que trabalham geograficamente dispersos seguindo
a filosofia original do software livre (open source).
Contrariando todas essas lógicas, procedimentos, modelos e padrões, a grande maioria dos projetos desenvolvidos por essas comunidades obtém sucesso.
Projetos como o Sistema Operacional Linux e o servidor Web Apache, comprovam que qualquer que seja esse modelo de desenvolvimento ele funciona.
Para entender esse modelo , precisariamos responder a duas perguntas:
Destacar os seguintes pontos quando citar a segunda pergunta:
Lembrando que o modelo de desenvolvimento utilizado por esses grupos é fundamentado em trabalho de desenvolvedores amadores e/ou voluntários, coordenados de maneira pouco formal usando ferramentas extremamente simples.
Responder à essas perguntas sem entender alguns conceitos e aspectos da engenharia e do processo de software, é um pouco complicado. Por isso precisamos rever alguns detalhes do processo de software.
Um Processo de Desenvolvimento de Software é um conjunto de atividades parcialmente ordenadas com a finalidade de obter um produto de software.
Legal….. Mas o que é Software. Alguem aqui sabe definir o que é software?
Software é uma seqüencia de instruções a serem seguidas e/ou executadas na manipulação, redirecionamento ou modificação de um dado/informação ou acontecimento.
Engenharia de Software é uma área do conhecimento da informática voltada para a especificação, desenvolvimento e manutenção de sistemas de software.
Processo de Desenvolvimento de Software é um conjunto de atividades parcialmente ordenadas com a finalidade de obter um produto de software.
Padrões -> padrões, que visam à certificação de empresas como possuidoras de um processo de desenvolvimento, o que garante certo grau de confiança aos seus contratantes.
PADRÕES para desenvolvimento de software que EXISTENTES ATUALMENTE;
CMMI, MPS/BR, ISO 12207;
Modelo de Processos de desenvolvimento de software.
Modeloe em Cascata, Processo iterativo, Processos Ageis.
Qualidade de Software;
Alem disso precisamos ententer o que é Software Livre e o que é software Open Source;
Software livre é qualquer software cuja licença garanta ao seu usuário liberdades relacionadas ao uso, alteração e redistribuição. Seu aspecto fundamental é o fato do código-fonte estar livremente disponível para ser lido, estudado ou modificado por qualquer pessoa interessada.
A expressão Open Source é freqüentemente usada para descrever software da mesma categoria que Software Livre, em contextos bastante parecidos. O open source enfatiza os aspectos do processo e da organização social, enquanto software livre enfatiza os aspectos de livre redistribuição e troca de conhecimento.
Esta nomenclatura e discurso foram forjados por Eric Raymond e outros fundadores da OSI para apresentar o software livre a empresas de uma forma mais agradável a visão das corporações.
Nosso trabalho, é focado na tentativa de responder essa pergunta.
A alguns minutos atrás descobrimos que, produção de software não é algo simples existem modelos, que auxiliam e “padronizam” essa pratica.
Também vimos que as a produção de software livre contraria todos esses modelos.
No estudo dos processos e projetos de desenvolvimento de software livre identificamos os seguintes pontos relevantes:
Os projetos são organizações virtuais (comunidades) formadas por indivíduos que trabalham juntos no desenvolvimento de um software livre específico.
Estes indivíduos trabalham geograficamente dispersos, utilizando ferramentas simples para coordenar e comunicar seu trabalho através da Internet.
As equipes da grande maioria dos projetos são pequenas, tendo menos de cinco participantes.
A maioria dos projetos tem requisitos fundamentalmente definidos pelos seus autores.
A base de usuários de grande parte dos softwares é composta por seus desenvolvedores e pela comunidade de software livre.
Uma parcela significativa dos projetos baseia-se em outros softwares existentes e em padrões previamente publicados.
Há pouca atenção dispensada com as atividades de revisão de código e teste sistemático. Entre as ferramentas que os projetos utilizam se destacam as listas de discussão e os sistemas de controle de versão.
Os projetos de software livre se concentram nas áreas de engenharia e desenvolvimento de software, redes, segurança e aplicações multimídia.
modelo Cada projeto de software livre possui sua forma de organização, suas regras internas, seus meios de contato, seus diferentes artefatos, diferentes formas de organizar e oferecer estes artefatos. Este fato dificulta qualquer processo de padronização dos projetos.
Análise e definição de requisitos é freqüentemente facilitado por levantamentos anteriores feitos por outras equipes, seja através de padrões estabelecidos e/ou documentados ou através de código-fonte herdado de outro projeto.
Geralmente não há projeto arquitetural para um projeto de software livre que não seja patrocinado por uma empresa.
A codificação de um software livre inicia em geral imediatamente após sua idealização
Teste Unitário é a fase do processo onde é testada a menor unidade de software desenvolvida (pequenas partes ou unidades do sistema). Geralmente há uma troca onde cada desenvolvedor testa o código desenvolvido por outro.
gerência de cronograma Normalmente software é desenvolvido com base em um prazo esperado (macro-grama) para sua entrega, em projetos iterativos ou de maior escala é freqüente um número de marcos (ou milestones) intermediários que permitem verificar o progresso do trabalho e o desempenho da equipe.
gerência de configuração Controle de versões através de ferramentas como CVS
documentação na maioria dos projetos é feita através de wikis
O processo de software livre parece variar substancialmente entre os projetos, generalizações amplas quando se trata desta população não devem ser feitas.
A maior parte dos modelos de processo este é um modelo genérico, cada projeto de software livre implementa uma instância do processo
de software que é influenciado primordialmente pela sua cultura interna, seu histórico e seus objetivos.
Pode-se afirmar que este processo de software é tipicamente um processo de manutenção, a atenção maior é voltada para os eventos e atividades realizadas após seu primeiro lançamento público.
Objetivo do software livre não é atender a um conjunto de requisitos estáveis como na maioria dos projetos de software e sim evoluir continuamente de acordo com as necessidades dos seus usuários.