Você está na página 1de 11

A preocupação com a qualidade do software desenvolvido é uma realidade constante na vida dos desenvolvedores de software, principalmente os responsáveis pela

entrega final do projeto, estes devem manter a qualidade que os clientes desejam e manter o regist ro de todas as alterações solicitadas. Após a instalação em produção é importante saber em qual versão o software se encontra, quais alterações ele sofreu, garantir que erros corrigidos não voltem a aparecer, que versões antigas não tome o lugar de versões novas ou simplesmente não encontrar o código fonte de um sistema em produção. O Gerenciamento de Configuração de Software é um das atividades de apoio ao desenvolvimento de software, ele permite que todos os passos executados sejam registrados e monitorados, de forma que qualquer alteração de escopo do projeto ocorra de forma clara e com a devida aprovação. Muitas ferramentas para gestão e gerenciamento de configuração de software estão disponíveis no mercado, algumas de código proprietário e de custos d e licenças variáveis, outras de código fonte aberto, livre e sem custos de licenças, nosso objetivo aqui é apresentar as normas e modelos de práticas para esta atividade, listar algumas ferramentas disponíveis no mercado, apresentar um estudo de caso com a implantação de ferramentas de código fonte aberto, destacar que independente da ferramenta escolhida o que vai garantir o registro das alterações é o processo de gerenciamento do ciclo de vida de software escolhido e implantado, independente da ferramenta escolhida.

Ciclo de Vida de um Software
Postado por: Thiago F. Pereira em: Engenharia de Software| Modelo Cascata| Modelo Iterativo Um ciclo de vida de um software nada mais é como as atividades serão executadas durante o projeto e em que ordem. Nos últimos 40 anos foram criados vários modelos de ciclos de vida. Aqui vamos descrever os dois modelos mais utilizados no mercado e que embora muitos sejam contra uma ou outra, ambas já provaram que com elas, o sucesso do projeto poderá ser alcançado.

Ciclo de vida de um software ArtigoTabela de conteúdo

Ciclo de vida de um software
O ciclo de vida de um "software (em inglês software lifecycle), designa todas as etapas do desenvolvimento de um software, da sua concepção ao seu desaparecimento. O objectivo de tal segmentação é definir balizas intermédias que permitem a validação do desenvolvimento do software, isto é, a conformidade do software com as necessidades exprimidas, e a verificação do processo de desenvolvimento, quer dizer, a adequação dos métodos aplicados.

É objecto de testes de integração consignados num documento. estes unitário. Concepção geral. quer dizer a expressão. isto é.   . Manutenção. Codificação (Aplicação ou programação). Análise das necessidades e viabilidade. Modelos de ciclos de vida Para estar em condições de ter uma metodologia comum ao cliente e à empresa que realiza o desenvolvimento. cujo objectivo é assegurar a intercomunicação dos diferentes elementos (módulos) do software. Integração. A sequência e a presença de cada uma destas actividades no ciclo de vida depende da escolha de um modelo de ciclo de vida entre o cliente e a equipa de desenvolvimento. a verificação da conformidade do software às especificações iniciais. foram criados modelos de ciclo de vida que definem as etapas do desenvolvimento. compreendendo todas as acções correctivas (manutenção correctiva) e evolutivas (manutenção evolutiva) no software.A origem desta discriminação provém da constatação que os erros têm um custo ainda mais elevado quando são detectados tardiamente no processo de realização. Produção. no mínimo. Qualificação (ou receita). que permitem verificar individualmen te que cada subconjunto do "software" é aplicado em conformidade com as especificações. destinada a produzir as informações necessárias para a utilização do software e para desenvolvimentos ulteriores. que consiste em definir precisamente cada subconjunto do software. consistindo em definir a finalidade do projecto e a sua inscrição numa estratégia global. o ciclo de vida do software compreende. os prazos da sua realização e os custos associados. O ciclo de vida permite detectar os erros o mais depressa possível e assim dominar a qualidade do software. as actividades seguintes: y y y y y y y y y y y Definição dos objectivos. a recolha e a formalização das necessidades do requerente (o cliente) e do conjunto dos constrangimentos. quer dizer a tradução numa linguagem de programação das funcionalidades definidas aquando das fases de concepção. Documentação. Concepção detalhada. Geralmente. Trata-se da elaboração das especificações da arquitectura geral do software. assim como os documentos a produzir que permitem validar cada uma das etapas antes de passar à seguinte.

Modelo em cascata O modelo de ciclo de vida em cascata foi criado logo em 1966. antes de passar à seguinte: Modelo em V O modelo de ciclo de vida em V parte do princípio que os procedimentos de verificação da conformidade do software às especificações devem ser elaborados logo durante as fases de concepção. Define fases sequenciais ao fim de cada uma das quais são produzidos documentos para verificar a conformidade. seguidamente formalizado por volta de 1970. .

no escopo da engenharia de software. Cada fase inclui um conjunto de atividades ou disciplinas que devem ser realizadas pelas partes envolvidas.Ciclo de Vida do Software O ciclo de vida de um software descreve as fases pelas quais o software passa desde a sua concepção até ficar sem uso algum. é necessário elaborar o documento de proposta de desenvolvimento de software. deve-se fazer um estudo de viabilidade. O conceito de ciclo de vida de um software é muitas vezes confundido com o de modelo de processo (assunto do próximo artigo). Existem várias propostas e denominações para as fases do ciclo de vida de um software. procedimentos. pessoal. . software. Caso seja decidido pelo desenvolvimento do sistema. diversos profissionais buscam o conhecimento da situação atual e a identificação de problemas para que possam elaborar propostas de solução de sistemas computacionais que resolvam tais problemas. Nossa proposta identifica 4 fases que são delimitadas por eventos típicos em diversos ciclos de vida. para se decidir qual solução será a escolhida. indicando informações sobre hardware. informação e documentação. O resultado desta atividade deve incluir a decisão da aquisição ou desenvolvimento do sistema. Esse documento pode ser a base de um contrato de desenvolvimento. Nesta atividade. Essas fases são: y y y y Definição Desenvolvimento Operação Retirada Fase de Definição A fase de definição do software ocorre em conjunto com outras atividades como a modelagem de processos de negócios e análise de sistemas. incluindo análise custo-benefício. Dentre as propostas apresentadas.

Por exemplo. a fase de definição é considerada concluída com a apresentação da proposta de desenvolvimento apenas. a implementação e a verificação e validação do software. Não existe um consenso sobre o caracteriza o final da fase de definição. Os requisitos são também fundamentais para que o engenheiro possa elaborar um plano de desenvolvimento de software.Profissionais de engenharia de software atuam nesta atividade com o objetivo de identificar os requisitos de software e modelos de domínio que serão utilizados na fase de desenvolvimento. indicando em detalhes os recursos necessários (humanos e materiais). Ela inclui principalmente o design. Outros modelos de processo. bem como as estimativas de prazos e custos (cronograma e orçamento). pode-se iniciar atividades da fase de desenvolvimento mesmo que a fase de definição não esteja completamente concluída. Fase de Desenvolvimento A fase de desenvolvimento ou de produção do software inclui todas as atividades que tem por objetivo a construção do produto. Isto varia de acordo com o modelo de processo adotado. O design inclui: y y y y Design conceitual Design da interface de usuário Design da arquitetura do software Design dos algoritmos e estruturas de dados O design conceitual envolve a elaboração das idéias e conceitos básicos que determinam os elementos fundamentais do software em questão. De acordo com o modelo de processo adotado. Design A atividade de design compreende todo o esforço de concepção e modelagem que têm por objetivo descrever como o software será implementado. considera que o software apenas está completamente definido com a especificação de requisitos e com a elaboração do plano de desenvolvimento de software. um software de correio eletrônico . Em algumas propostas.

o layout de janelas e telas. corpo. etc. de maneira independente da linguagem de programação adotada. São exemplos de visões arquitetônicas. também conhecido como design detalhado. esta é uma visão dinâmica do software. O design de algoritmos e estrutura de dados. etc. Embora seja um design adotado pela maioria dos software. as soluções . caixa de saída. Na visão de código. Estas classes implementam os componentes abstratos ou conceituais. cc. devese determinar quais são os módulos que serão utilizados na implementação e como eles organizam as classes e/ou funções. bcc. Na visão conceitual. O conceito de componente em arquitetura varia de acordo com a visão arquitetônica adotada. caixa de entrada. visão de módulos. O design conceitual exerce influência na interface de usuário e na arquitetura do software. por sua vez. etc. A interface deve garantir a boa usabilidade do software e é um fundamental fator de sucesso do software. a arquitetura deve descrever os diferentes processos que são ativados durante a execução do software e como eles interagem entre si. O conceito de conversação do Gmail é um exemplo. Exemplos são arquiteturas cliente-servidor e arquitetura em camadas. visa determinar. Enquanto as anteriores oferecem uma visão estática. Estes componentes são abstrações que devem definir outros elementos menos abstratos. a escolha dos objetos de interfaces (botões. a visão conceitual. deve-se determinar como as classes e/ou funções estão organizadas e interagindo entre si. os componentes de software são derivados do design conceitual. Na visão de execução. novos modelos conceituais podem vir a ser adotados. inclui os conceitos de para. A mensagem.tradicional inclui os conceitos: mensagem. etc. caixas de texto. visão de código e visão de execução. assunto. O design de arquitetura de software deve elaborar uma visão macroscópica do software em termos de componentes que interagem entre si. menus.). O design da interface de usuário envolve a elaboração da maneira como o usuário pode interagir para realizar suas tarefas. Na visão de módulos.

lista encadeada) elas vão ser armazenados. É fundamental um controle e gerenciamento de versões para que se tenha um controle correto de tudo o que está sendo codificado. robustez. Inspeção analítica e revisão de modelos. confiabilidade.algorítmicas e as estruturas de dados associados. dentre outros. Existem diferentes formas de verificação e validação. Os testes de correção. isto é. Implementação A implementação envolve as atividades de codificação. Diferentes técnicas de testes podem ser aplicadas para cada um destes fatores Fase de Operação A fase de operação envolve diferentes tipos de atividades: . utilizando linguagens e ferramentas adequadas. Os testes podem ser iniciados durante a fase de implementação. não possui erros de execução (fazendo certo a coisa). A codificação visa traduzir o design num programa. A depuração de erros ocorre durante a programação utilizando algumas técnicas e ferramentas. desempenho. como as informações podem ser ordenadas (algoritmo de bolha ou quicksort) e em qual tipo de estrutura de dados (array. visam avaliar diversos fatores de qualidade a partir da execução do software. por exemplo. usabilidade. Verificação e validação Verificação e validação destinam-se a mostrar que o sistema está de acordo com a especificação e que ele atende às expectativas de clientes e usuários. compilação. A verificação visa verificar se o programa está correto. integração e testes. Deve-se decidir. documentos e código fonte são formas que podem ser usadas antes mesmo que o programa seja completamente codificado. Os componentes arquiteturais devem ser codificados de forma independente e depois integrados. A codificação deve refletir a estrutura e o comportamento descrito no design. A validação visa assegurar se o programa está fazendo aquilo que foi definido na sua especificação (fazendo a coisa certa).

Fase de retirada A fase retirada é um grande desafio para os tempos atuais. normalmente. A qualidade da utilização é a usabilidade do software. ou adaptar-se às novas tecnologias que surgem (hardware. Mudanças no domínio de aplicação implicam em novos requisitos e incorporação de novas funcionalidades. A manutenção normalmente ocorre de duas formas: corretiva e evolutiva. etc). A retirada desses software legados em uma empresa é sempre uma decisão difícil: como abrir mão daquilo que é confiável e ao qual os funcionários estão acostumados. A manutenção evolutiva ou adaptativa visa a produção de novas versões do software de forma a atender a novos requisitos dos clientes. falta de confiabilidade. linguagens. plataformas operacionais. pode ser feito com a ajuda de software de instalação disponibilizados pelos fabricantes dos ambientes operacionais.y y y y Distribuição e entrega Instalação e configuração Utilização Manutenção A distribuição e entrega pode ser feita diretamente pelo desenvolvedor (em caso de software personalizado). A atividade de utilização é o objeto do desenvolvimento do software. baixo desempenho. etc. eles precisam evoluir para novas plataformas operacionais ou para a incorporação de novos requisitos. No entanto.). O processo de instalação e configuração. após anos de treinamento e utilização? . baixa usabilidade. A manutenção corretiva visa a resolução de problemas referentes a qualidade do software (falhas. Diversos software que estão em funcionamento em empresas possuem excelente níveis de confiabilidade e de correção. ou em um pacote a ser vendido em prateleiras de lojas ou para ser baixado pela Internet (em caso de software genéricos). Surgimento de novas tecnologias de software e hardware e mudanças para uma plataforma mais avançada também requerem evolução.

Este fato pode ser observado claramente através de gráficos que definem que por conta de não considerar mudanças desde o começo.Processos de reengenharia podem ser aplicados para viabilizar a transição ou migração de um software legado para um novo software de forma a proporcionar uma retirada mais suave. o que alteraria todo o ciclo. atrasando a redução de riscos. uma alterção em qualquer das fases pode alterar qualquer uma das outras. entre eles é possível citar: Força bruta. Uma vez que o sistema sempre estará correndo o risco de uma mudança ser necessária no final de cada uma das fases. . Existem várias etapas que são desenvolvidas de forma sistemática e sequêncial:  Especificação de Requisitos  Análise e Projeto  Implementação  Integração e Testes  Implantação o Neste modelo existem pontos específicos para entrega dos artefatos. nike-way. 18 e 19 Aula 17 Existem vários modelos de ciclo de vida de desenvolvimento de software. Cascata. também conhecido como modelo clássico. Sabe-se o problema e desenvolve-se uma solução para ele. pois ele teria de ser reinializado. por mais que se busque fases independentes. ou seja. y Força bruta É o tipo de desenvolvimento sem organização em fases e em fases sistemáticas. Resumo Aulas 17. começo e fim definidos e definitivos antes do final de todo o projeto o Ele leva em consideração que os requisitos não serão mudados. Espiral e Iterativo. provocando diversos atrasos no cronograma. pois cada fase depende da anterior o Ela é bastante simples e por conta disso acaba sendo bastante fácil de planejar o Contudo. não tendo. ou seja. estas só vem a aparecer no momento da integração do sistema. por ser um dos mais antigos. elas acabam se relacionando. de forma a evitar mudanças que causassem o retorno a fases teoricamente já finalizadas o Por não estar considerando mudanças nos requisitos ele acaba. y Modelo cascata É ainda hoje o mais utilizado. existe iteração entre cada uma das fases.

o Com este modelo os riscos críticos são resolvidos logo no início do desenvolvimento. análise e projeto. Integração e Testes são feitos desde o início do projeto. o Ao utilizar o modelo Iterativo. Para cada uma dessas iterações haverá todas as fases descritas pelo modelo cascata: especificação de requisitos. é mais fácil acertar as estimativas e evitar grandes atrasos o Além disso. Por ser mais suscetível aos riscos e as possíveis mudanças que o projeto pode sofrer acaba apresentado dificuldades para fechamento de contratos.y Modelo Espiral É um modelo que está mais integrado com a gestão de riscos e por conta disso acaba sendo muito dependente da mesma. e não ter que esperar que todo o sistema esteja pronto. Para projetos de desenvolvimento de software quanto antes a mudança for reportada menor o trabalho para implementá-la. o A ordem em que os Casos de Uso serão implementados dependem da complexidade de cada um deles. o usuário estará sempre podendo observar os avanços que o seu sistema está obtendo. paradigmas. de forma contínua. podendo medi -lo de forma mais concreta o E implementaçõesparcias também podem ser resolvidas Uma metodologia é um processo de desenvolvimento que permite a utilização de métodos e práticas que são aperfeiçoadas a medida em que a instituição que a utiliza se torna mais experiente. y Modelo Iterativo É um modelo derivado do modelo cascata. ele permite se ter um feedback do usuário final mais rápido o Por se tratar de pequenas iterações. o Através dos testes desde o início do ciclo de desenvolvimento. para altera r um conjunto de arquivos. integração e testes e Implantação. o A utilização do modelo iterativo antecipa a redução de riscos. Ela possui ainda orientações nas linguagens. com curto-prazo e pequenos projetos. É fundamental que esteja sempre bem definido para cada uma destas atividades: O que? Quando? E Como? . logo se no primeiro UC houver uma falha de arquitetura ela já será corrigida. implementação. uma vez que eles são as tarefas mais custosas. uma vez que o projeto será implementado e integrado aos poucos. evitando que grandes valores sejam investidos no projeto antes dos problemas críticos serem resolvidos. chamados de iterações. tecnologias e ferramentas que serão utilizadas. Eles devem obedecer à ordem em que os UC mais difíceis são implementados primeiro. Ele considera o tempo dividido em ciclos. Ele é bastante complexo e exige um bom conhecimento de gestão de riscos para que ele seja eficiente.

deve possuir detalhes específicos como de acordo com a lingua gem e ferramentas utilizadas na empresa. quanto mais risco um caso de uso tiver. prazos e níveis de qualidade desejados. os componentes são implementados e analisa-se se eles satisfazem os casos de uso. . é preciso um tempo para adaptação ao novo processo. além disso elas são baseadas em UML. As vantagens na utilização de uma metodologia são a qualidade do software e a produtividade no desenvolvimento. pois em cada iteração é feita uma identificação e especificação dos casos de uso mais relevantes. até porque eles serão melhor estimados. Em seguida se define a análise e o projeto deles baseado na arquitetura do sistema. antes ele será implementado.O processo de desenvolvimento necessita de um modelo de ciclo de vida como foi definido acima e de um conjunto bem definido das atividades que devem possuir: y Responsáveis y Artefatos de entrada e saída y Dependências entre as mesmas e a ordem de execução Já as práticas e métodos de desenvolvimento são compostas por um conjunto de atividades com uma descrição sistemática de como devem ser realizada. com uma metodologia é possível controlar o desenvolvimento dentro de custos. operação e manutenção. O RUP é um framework para processos baseado em boas práticas de desenvolvimento para utilizá-lo é preciso instanciá-lo e definir padrões e guias adaptados a realidade de cada empresa. Os benefícios não vem de imediato. A ordem de desenvolvimento dos casos de uso é baseado em uma análise dos riscos envolvidos no projeto. Além disso. Ele deve ser: y Iterativo e incremental y Guiado por casos de uso y Baseado na arquitetura do sistema y Orientado a objetos Iterativo e incremental. evitando que os problemas se prolonguem.