Capítulo 6 – Estudo de Casos.
2. Fundamentos da Modelagem
2.1. Processo de Desenvolvimento de
2.1.2. Ciclo de desenvolvimento do
software
O ciclo de desenvolvimento do sistema é um fluxo de trabalho cíclico que gera novos produtos a partir das informações obtidas no levantamento de necessidades do problema. É dades cíclico porque o produto de saída
alimenta o ciclo seguinte, de modo que a cada volta aproxima-se o produto das necessidades levantadas. Espera-se que o ciclo seja convergente, isto é, em um determinado estágio o produto atenderá todos os requisitos e poderá ser
realizado inteiramento no lado do desenvolvedor, mas possui interações com o lado cliente, no ciclo de testes do produto.
O ciclo de desenvolvimento de um sistema é caracterizado por 4 atividades principais: análise, design, construção de componentes e integração. A seguir verifica-se o papel do modelos nas fases e os papel dos participantes de cada uma delas.
Fase de Análise
A análise é a fase de levantamento dos requisitos do problema a ser resolvido.
Nela estabelecem-se os limites do problema, e identificam-se as necessidades do sistema. Deve-se procurar limitar a análise
exclusivamente ao problema em estudo, evitando a influência de elementos que estão fora do escopo do problema. Detalhes de implementação que podem ofuscar a definição do problema, falsos requisitos, limitações inexistentes
devem ser deixadas de lado. Para ajudar o analista na busca de uma maior clareza nas definições inciais, ele deve criar um modelo do problema. Este modelo
deverá ter apenas as informações relevantes para o entendimento do problema e deverá receber a aprovação por parte do cliente, garantindo que o
caminho está correto e servindo de base para as demais fases do projeto.
As técnicas aplicáveis à análise são muitas, e dependem, grandemente, da experiência do analista. Quanto mais complexo o problema, mais difícil é a análise e mais importante o uso de modelos para reduzir e gerenciar esta complexidade. Todas as informações obtidas do cliente devem ser avaliadas e levadas em consideração na análise. Não existe um momento preciso que indica o final da análise, mas o analista pode identificar este momento quanto todas as facetas do problema foram exploradas e a visão que o modelo traduz é suficiente para iniciar as fases
seguintes do projeto. Mesmo que alguns requisitos foram esquecidos, não é motivo de preocupação, como o
processo de desenvolvimento é cíclico sempre será possível rever a análise e incluir estes novos requisitos.
A análise é tarefa do analista de
sistemas. Em projetos mais simples esta
atividade pode ser desempenhada por um desenvolvedor sênior, ou pelo próprio gerente de projeto, se estes possuirem um conhecimento básico de modelagem de sistemas, e a
disponibilidade para entrevistar usuários, levantar e organizar as informações disponíveis para o início do projeto. Em projetos mais complexos
esta tarefa pode ser dividida entre diversos profissionais como o Analista de Negócios, o Analista de
Documentação e o Analista de Banco de Dados.
Analista de Negócios - deve ser
um especialista na área de
conhecimento a que o sistema se destina, e tem como objetivo identificar as
responsabilidades que o sistema deve cumprir para o negócio do cliente. O analista de negócios pode desenvolver uma análise do retorno esperado com o
invetimento no sistema, e estudar a viabilidade técnica do sistema,
integrando-o ao ambiente computacional existente. Os requisitos de negócio, as regras e os processos de negócios devem ser modelados por este
profissional.
Analista de Banco de Dados -
como uma grande parte dos sistemas de informação são
baseados na tecnologia de banco de dados, é importante ter um
entendimento preciso das informações já existentes em bancos de dados, antes de iniciar um novo projeto. O analista pode se utilizar de técnicas próprias e ferramentas de software para criar os esquemas dos bancos de dados
existentes e que serão úteis para o novo projeto de sistema.
Analista de Documentação - é o
responsável por elaborar a documentação do sistema, os documentos de especificação, manuais e diagramas. Como a fase de análise é uma fase onde a
geração de documentos é maior, é importante ter-se um profissional técnico especializado encarregado da produção desta documentação. Uma prática interessante pode ser a de produzir o manual do usuário do sistema já na fase de análise, e utilizá-lo com parte da
especificação técnica de requisitos do sistema.
Como parte importante da fase de análise temos um modelo inicial do sistema que fará parte do documento de especificação, produto da fase de
análise. Porque as correções nas fases iniciais de um projeto são sempre mais fáceis de serem feitas, do que em fases mais avançadas, os documentos e os modelos desta fase devem ser,
continuamente, avaliados e verificados pelos clientes.
Fase de Design
O design se concentra na solução do problema identificado na fase de
os elementos que formam um sistema para resolver o problema de projeto. Como quase sempre a seleção de uma estratégia de solução traz compromissos com outros sistemas, deve-se, nesta fase, avaliar o melhor caminho, testar e
escolher a alternativa de solução mais adequada. O designer conta com a sua experiência e o apoio de modelos do sistema em projeto para apoiar sua decisão.
O design é uma tarefa para engenheiros de software experientes. Em um projeto mais complexo, diversos aspectos de um sistema de software devem ser
considerados, o que exige a participação de outros especialistas, como o
Engenheiro de Redes e o Designer de Interfaces.
Engenheiro de Software - é o
especialista em criar o operar os modelos dos sistemas para levá-los ao código. Deve possuir
habilidade de conceber os componentes do sistema e caracterizá-los de modo a que atendam os requisitos do problema. Pode testar soluções e se utilizar de padrões de soluções já consagradas e aplicá-las a novos problemas. O engenheiro de software deve garantir também que as boas práticas de engenharia sejam
a qualidade do produto.
Engenheiro de Redes - é um especialista importante quando o sistema será implementado em um ambiente de processamento
distribuído. Neste caso, a
comunicação entre os componentes do sistema será feita pela rede de comunicação de dados, que deve ser projetada para dar vazão ao volume de comunicação esperado. Existindo uma grande interação entre os componentes da solução pode exigir, em alguns casos, que componentes especiais de
comunicação sejam especificados e construídos.
especialista na comunicação entre os usuários e o computador. É um profissional muito importante em sistemas com grande interação com os usuários como os sistemas para internet. O aumento do número de usuários nos sistemas de
informação tem feito com que este profissional tenha um papel cada vez mais importante para a
aceitação e para a usabilidade do sistema. Ele deve possuir a
habilidade de e a criatividade para criar metáforas para a operação do sistema.
Ao final da fase de design todas as definições do projeto devem estar
registradas no documento de especificação. Modelos, listas e
esquemas servem como referências para os construtores dos componentes e para a integração do sistema. O modelo
produzido pelo design pode variar muito no nível dos seus detalhes. No início do projeto apresenta poucos detalhes
mostrando conceitualmente a solução, para uma avaliação inicial, ou para a validação de um cliente. Nos ciclos mais avançados do projeto, o modelo deve estar muito bem detalhado para determinar aos programadores todos os pormenores do software.
Componentes
Na fase de construção de
componentes inicia-se as atividades de
programação na construção do software. A boa prática de construção recomenda a adoção do conceito de componentes de software reutilizáveis para reduzir
prazos e custos no desenvolvimento, mantendo a qualidadade do produto. É cada vez mais comum se dispor de componentes pré-fabricados prontos para serem utilizados em diversos
projetos, organizados em um framework. Nestes casos a construção de
componentes se limitará a criar os
componentes que são específicos para o novo projeto.
A construção civil é um exemplo típico de padronização de peças pré-
fabricadas. Poucas são as partes criadas específicamente para uma construção. Na área mecânica o exemplo mais interessante de criação de componentes encontra-se na indústria automobilística, onde um carro é efetivamente a
montagem de peças e partes completas feitas por outras empresas,. Muitas vezes a mesma peça é utilizada em diferentes carros. Esta abordagem ainda é nova na engenharia de software, mas está, aos poucos, revolucionando o desenvolvimento de software.
A construção dos componentes é um trabalho para o programador de
computadores, que é o especialista nas
linguagens de programação. Um mesmo sistema pode possuir compontentes escritos em diferentes linguagens, no entanto, para facilitar a manutenção e simplificar o sistema quanto menor o número de linguagens mais facilmente o sistema será mantido. O programador segue princípios e práticas próprias, que não farão parte deste trabalho. Como uma grande parte dos sistema atuais se utiliza de um banco de dados para armazenar as informações e possui uma grande dose de interação com os
usuários, é importante também envolver na fase da construção outros
especialistas: o programador de banco de dados, o programador de
componentes e o programador de interfaces.
Programador de interfaces é o
profissional responsável por desenvolver os componentes de interação entre o sistema e os seus usuários. Os componentes de interface devem se caracterizar pela facilidade de uso e pela
precisão na comunicação. O uso de uma interface gráfica e regras
próprias para criar estes
componentes, projetador por um designer, exigem que um
programador especializado nesta tarefa seja convocado para realizá- la.
Programador de Componentes
escreve os componentes de negócio obedecendo as regras de negócio definidas pelo Analista de
Negócios e projetadas pelo Engenheiro de Software. Sua principal tarefa é garantir a qualidade do componente, sua eficáfica e robustez. Utiliza, em geral, uma linguagem robusta em um ambiente de desenvolvimento próprio.
Programador de Banco de
Dados é um profissional importante
na fase de construção se houver necessidade de criar componentes específicos para o armazenamento e recuperação de informação. Em
sistema orientados a objeto o uso do banco de dados é limitado e organizado pelos objetos, sendo que este profissional deve ser responsável por integrar os
sistemas orientados a objeto com os sistema legados em bancos de dados.
Analista de Teste. Como o
produto final da fase de construção são os próprios componentes. Cada componente próprio ou adquirido de ter terceiros deve ser testado
individualmente, para garantir que ele esteja de acordo com a
especificação do projeto. Este teste faz parte do processo de criação de
componentes mas não deve ser desprezado. Pode-se criar, em projetos maiores, uma função específica com esta
responsabilidade, garantindo a sua qualidade e funcionalidade. O analista de testes não pode ter uma função acumulada com a função de programador, para evitar um
conflito de interesses.
Fase de Integração
A fase de integração encerra o
processo de desenvolvimento gerando, como produto final, uma nova versão do software. Nesta fase, a atividade mais
importante é a de configuração da versão do software, compilando e instalando os componentes necessários nos equipamentos servidores. É uma fase de trabalho minucioso e organizado, onde se deve assegurar que todos os componentes necessários foram integrados. Após este integração é importante realizar uma fase de teste. É comum nesta fase se criar roteiros automatizados de teste, assim como pode ser necessária alguma atividade de programação para integração final dos componentes.
As atividades de integração podem, em sistemas mais simples, ser realizadas pelo Engenheiro de Software ou pelo
próprio Gerente de Projetos. Em sistemas mais complexos é comum encontrarmos o Gerente de integração ou Gerente de Configuração que irá coordenar uma equipe de profissionais, os Integradores que responderão pela união correta dos componentes.
Os modelos, na fase de integração, servem de mapa para a configuração do sistema, e união dos componentes. Em muitos casos, não se está interessado em criar um sistema totalmente novo, mas sim em adaptar um sistema existente para as necessidades específicas de um cliente. Chama-se ao processo de
adaptar um software especialmente para as necessidades de um cliente de
customização[1]. O processo de
customização passa por todas as fases do processo de desenvolvimento, mas tem uma ênfase maior na fase de
integração, onde são realizadas a maior parte das atividades de configuração do software.