SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Planejamento Em Desenvolvimento de Sistemas
2 de Setembro de 2008
Conteúdo
I Sobre essa apostila 3
II Informações Básicas 5
III GNU Free Documentation License 10
IV Planejamento em desenvolvimento de sistemas 19
1 Planejamento em desenvolvimento de sistemas 20
2 Plano de ensino 21
2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3 Introdução 24
3.1 Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Exemplo de sistema de informação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4 Problemas e mitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 Práticas de planejamento - Visão geral 27
4.1 Definição de engenharia de software . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Componentes de um software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.3 Procedimentos e atributos de qualidade . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.4 Etapas de engenharia de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.5 Melhores práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5.1 Gerência de riscos: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5.2 Gerência de riscos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.5.3 Gerência de configuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
4.5.4 Gerência de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.5.5 Gerência com uso de métricas . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5 Práticas de planejamento 32
5.1 Planejamento de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.2 Modelo de processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 Processo de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.4 Ciclos de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.5 Técnicas de quarta geração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6 Introdução às disciplinas de um projeto 37
6.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2 Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2.1 Concepção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2.2 Elaboração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2.3 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.2.4 Transição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3 Disciplinas de um projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.4 Coleta de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
6.5 Análise de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7 Disciplinas de um projeto 41
7.1 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.1.1 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.1.2 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
7.2 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.3.3 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.4 Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2
Parte I
Sobre essa apostila
3
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Conteúdo
O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in-
ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br.
O formato original deste material bem como sua atualização está disponível dentro da licença
GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de
mesmo nome, tendo inclusive uma versão traduzida (não oficial).
A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br), desde outubro
de 2006. Criticas e sugestões construtivas são bem-vindas a qualquer tempo.
Autores
A autoria deste conteúdo, atividades e avaliações é de responsabilidade de Gabriel Gianelli
Pena (gabriel@cdtc.org.br) .
O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vem
sendo realizado pelo ITI em conjunto com outros parceiros institucionais, atuando em conjunto
com as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiando
inclusive a comunidade Free Software junto a outras entidades no país.
Informações adicionais podem ser obtidas atréves do email ouvidoria@cdtc.org.br, ou da
home page da entidade, através da URL http://www.cdtc.org.br.
Garantias
O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi-
lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam
direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido.
Licença
Copyright ©2006,Gabriel Gianelli Pena (gabriel@cdtc.org.br) .
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.1 or any later version published by
the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS-
TILA. A copy of the license is included in the section entitled GNU Free Documentation
License.
4
Parte II
Informações Básicas
5
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Sobre o CDTC
Objetivo Geral
O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina-
ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do
desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira.
Objetivo Específico
Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e
de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os
servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado
nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios
de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo
treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários,
criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como
incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe-
recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de
produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros
(dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro-
dutos de software livre.
Guia do aluno
Neste guia, você terá reunidas uma série de informações importantes para que você comece
seu curso. São elas:
• Licenças para cópia de material disponível
• Os 10 mandamentos do aluno de Educação a Distância
• Como participar dos fóruns e da wikipédia
• Primeiros passos
É muito importante que você entre em contato com TODAS estas informações, seguindo o
roteiro acima.
Licença
Copyright ©2006, Gabriel Gianelli Pena (gabriel@cdtc.org.br) .
6
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos
da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior
publicada pela Free Software Foundation; com o Capítulo Invariante SOBRE ESSA
APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu-
mentação Livre GNU".
Os 10 mandamentos do aluno de educação online
• 1. Acesso a Internet: ter endereço eletrônico, um provedor e um equipamento adequado é
pré-requisito para a participação nos cursos a distância.
• 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá-
tica é necessário para poder executar as tarefas.
• 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân-
cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal,
dos colegas e dos professores.
• 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus
colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo.
• 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão
e a sua recuperação de materiais.
• 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e
realizá-las em tempo real.
• 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre.
• 8. Flexibilidade e adaptação: requisitos necessário a mudança tecnológica, aprendizagens
e descobertas.
• 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é
ponto-chave na comunicação pela Internet.
• 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não
controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração.
Como participar dos fóruns e Wikipédia
Você tem um problema e precisa de ajuda?
Podemos te ajudar de 2 formas:
A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso:
O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações
que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a
7
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que
interesse ao grupo, favor postá-la aqui.
Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do
curso, é recomendado que você faça uso do Fórum de dúvidas gerais que lhe dá recursos mais
efetivos para esta prática.
. O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo
para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas
a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem
ajudar.
Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a
formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico
é recomendável ver se a sua pergunta já foi feita por outro participante.
A segunda forma se dá pelas Wikis:
Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par-
ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem
ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um
ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé-
dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por
pessoas de todas as partes do mundo. Acesse-a em português pelos links:
• Página principal da Wiki - http://pt.wikipedia.org/wiki/
Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo!
Primeiros Passos
Para uma melhor aprendizagem é recomendável que você siga os seguintes passos:
• Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar;
• Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das
ferramentas básicas do mesmo;
• Entrar nas lições seguindo a seqüência descrita no Plano de Ensino;
• Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais.
Perfil do Tutor
Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores.
O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos
valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as
idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar.
8
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e,
para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor
ou instrutor:
• fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá
utilizar;
• gosta que lhe façam perguntas adicionais;
• identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por-
que motivo a classificação foi ou não foi atribuída’;
• tece comentários completos e construtivos, mas de forma agradável (em contraste com um
reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de
ameaça e de nervosismo’)
• dá uma ajuda complementar para encorajar um estudante em dificuldade;
• esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente;
• ajuda o estudante a alcançar os seus objetivos;
• é flexível quando necessário;
• mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso,
talvez numa fase menos interessante para o tutor);
• escreve todas as correções de forma legível e com um nível de pormenorização adequado;
• acima de tudo, devolve os trabalhos rapidamente;
9
Parte III
GNU Free Documentation License
10
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
(Traduzido pelo João S. O. Bueno através do CIPSGA em 2001)
Esta é uma tradução não oficial da Licençaa de Documentação Livre GNU em Português
Brasileiro. Ela não é publicada pela Free Software Foundation, e não se aplica legalmente a dis-
tribuição de textos que usem a GFDL - apenas o texto original em Inglês da GNU FDL faz isso.
Entretanto, nós esperamos que esta tradução ajude falantes de português a entenderem melhor
a GFDL.
This is an unofficial translation of the GNU General Documentation License into Brazilian Por-
tuguese. It was not published by the Free Software Foundation, and does not legally state the
distribution terms for software that uses the GFDL–only the original English text of the GFDL does
that. However, we hope that this translation will help Portuguese speakers understand the GFDL
better.
Licença de Documentação Livre GNU Versão 1.1, Março de 2000
Copyright (C) 2000 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
É permitido a qualquer um copiar e distribuir cópias exatas deste documento de licença, mas
não é permitido alterá-lo.
INTRODUÇÃO
O propósito desta Licença é deixar um manual, livro-texto ou outro documento escrito "livre"no
sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copiá-lo ou redistribui-lo,
com ou sem modificações, comercialmente ou não. Secundariamente, esta Licença mantém
para o autor e editor uma forma de ter crédito por seu trabalho, sem ser considerado responsável
pelas modificações feitas por terceiros.
Esta Licença é um tipo de "copyleft"("direitos revertidos"), o que significa que derivações do
documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licença Pública Ge-
ral (GNU GPL), que é um copyleft para software livre.
Nós fizemos esta Licença para que seja usada em manuais de software livre, por que software
livre precisa de documentação livre: um programa livre deve ser acompanhado de manuais que
provenham as mesmas liberdades que o software possui. Mas esta Licença não está restrita a
manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente
do assunto ou se ele é publicado como um livro impresso. Nós recomendamos esta Licença prin-
cipalmente para trabalhos cujo propósito seja de introdução ou referência.
APLICABILIDADE E DEFINIÇÕES
Esta Licença se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo
detentor dos direitos autorais dizendo que ele pode ser distribuído sob os termos desta Licença.
11
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do público é um
licenciado e é referida como "você".
Uma "Versão Modificada"do Documento se refere a qualquer trabalho contendo o documento
ou uma parte dele, quer copiada exatamente, quer com modificações e/ou traduzida em outra
língua.
Uma "Seção Secundária"é um apêndice ou uma seção inicial do Documento que trata ex-
clusivamente da relação dos editores ou dos autores do Documento com o assunto geral do
Documento (ou assuntos relacionados) e não contém nada que poderia ser incluído diretamente
nesse assunto geral (Por exemplo, se o Documento é em parte um livro texto de matemática, a
Seção Secundária pode não explicar nada de matemática).
Essa relação poderia ser uma questão de ligação histórica com o assunto, ou matérias relaci-
onadas, ou de posições legais, comerciais, filosóficas, éticas ou políticas relacionadas ao mesmo.
As "Seções Invariantes"são certas Seções Secundárias cujos títulos são designados, como
sendo de Seções Invariantes, na nota que diz que o Documento é publicado sob esta Licença.
Os "Textos de Capa"são certos trechos curtos de texto que são listados, como Textos de Capa
Frontal ou Textos da Quarta Capa, na nota que diz que o texto é publicado sob esta Licença.
Uma cópia "Transparente"do Documento significa uma cópia que pode ser lida automatica-
mente, representada num formato cuja especificação esteja disponível ao público geral, cujos
conteúdos possam ser vistos e editados diretamente e sem mecanismos especiais com editores
de texto genéricos ou (para imagens compostas de pixels) programas de pintura genéricos ou
(para desenhos) por algum editor de desenhos grandemente difundido, e que seja passível de
servir como entrada a formatadores de texto ou para tradução automática para uma variedade
de formatos que sirvam de entrada para formatadores de texto. Uma cópia feita em um formato
de arquivo outrossim Transparente cuja constituição tenha sido projetada para atrapalhar ou de-
sencorajar modificações subsequentes pelos leitores não é Transparente. Uma cópia que não é
"Transparente"é chamada de "Opaca".
Exemplos de formatos que podem ser usados para cópias Transparentes incluem ASCII sim-
ples sem marcações, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML
usando uma DTD disponibilizada publicamente, e HTML simples, compatível com os padrões, e
projetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatos
proprietários que podem ser lidos e editados apenas com processadores de texto proprietários,
SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edição não estejam
disponíveis para o público, e HTML gerado automaticamente por alguns editores de texto com
finalidade apenas de saída.
A "Página do Título"significa, para um livro impresso, a página do título propriamente dita,
mais quaisquer páginas subsequentes quantas forem necessárias para conter, de forma legível,
o material que esta Licença requer que apareça na página do título. Para trabalhos que não
tenham uma página do título, "Página do Título"significa o texto próximo da aparição mais proe-
minente do título do trabalho, precedendo o início do corpo do texto.
12
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
FAZENDO CÓPIAS EXATAS
Você pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou não
comercial, desde que esta Licença, as notas de copyright, e a nota de licença dizendo que esta
Licença se aplica ao documento estejam reproduzidas em todas as cópias, e que você não acres-
cente nenhuma outra condição, quaisquer que sejam, às desta Licença.
Você não pode usar medidas técnicas para obstruir ou controlar a leitura ou confecção de
cópias subsequentes das cópias que você fizer ou distribuir. Entretanto, você pode aceitar com-
pensação em troca de cópias. Se você distribuir uma quantidade grande o suficiente de cópias,
você também precisa respeitar as condições da seção 3.
Você também pode emprestar cópias, sob as mesmas condições colocadas acima, e também
pode exibir cópias publicamente.
FAZENDO CÓPIAS EM QUANTIDADE
Se você publicar cópias do Documento em número maior que 100, e a nota de licença do
Documento obrigar Textos de Capa, você precisará incluir as cópias em capas que tragam, clara
e legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, e
Textos da Quarta Capa na capa de trás. Ambas as capas também precisam identificar clara e
legivelmente você como o editor dessas cópias. A capa da frente precisa apresentar o titulo com-
pleto com todas as palavras do título igualmente proeminentes e visíveis. Você pode adicionar
outros materiais às capas. Fazer cópias com modificações limitadas às capas, tanto quanto estas
preservem o título do documento e satisfaçam a essas condições, pode ser tratado como cópia
exata em outros aspectos.
Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma
legível, você deve colocar os primeiros (tantos quantos couberem de forma razoável) na capa
verdadeira, e continuar os outros nas páginas adjacentes.
Se você publicar ou distribuir cópias Opacas do Documento em número maior que 100, você
precisa ou incluir uma cópia Transparente que possa ser lida automaticamente com cada cópia
Opaca, ou informar, em ou com, cada cópia Opaca a localização de uma cópia Transparente
completa do Documento acessível publicamente em uma rede de computadores, a qual o público
usuário de redes tenha acesso a download gratuito e anônimo utilizando padrões públicos de
protocolos de rede. Se você utilizar o segundo método, você precisará tomar cuidados razoavel-
mente prudentes, quando iniciar a distribuição de cópias Opacas em quantidade, para assegurar
que esta cópia Transparente vai permanecer acessível desta forma na localização especificada
por pelo menos um ano depois da última vez em que você distribuir uma cópia Opaca (direta-
mente ou através de seus agentes ou distribuidores) daquela edição para o público.
É pedido, mas não é obrigatório, que você contate os autores do Documento bem antes de
redistribuir qualquer grande número de cópias, para lhes dar uma oportunidade de prover você
com uma versão atualizada do Documento.
13
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
MODIFICAÇÕES
Você pode copiar e distribuir uma Versão Modificada do Documento sob as condições das se-
ções 2 e 3 acima, desde que você publique a Versão Modificada estritamente sob esta Licença,
com a Versão Modificada tomando o papel do Documento, de forma a licenciar a distribuição
e modificação da Versão Modificada para quem quer que possua uma cópia da mesma. Além
disso, você precisa fazer o seguinte na versão modificada:
A. Usar na Página de Título (e nas capas, se houver alguma) um título distinto daquele do Do-
cumento, e daqueles de versões anteriores (que deveriam, se houvesse algum, estarem listados
na seção "Histórico do Documento"). Você pode usar o mesmo título de uma versão anterior se
o editor original daquela versão lhe der permissão;
B. Listar na Página de Título, como autores, uma ou mais das pessoas ou entidades responsá-
veis pela autoria das modificações na Versão Modificada, conjuntamente com pelo menos cinco
dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que
cinco);
C. Colocar na Página de Título o nome do editor da Versão Modificada, como o editor;
D. Preservar todas as notas de copyright do Documento;
E. Adicionar uma nota de copyright apropriada para suas próprias modificações adjacente às
outras notas de copyright;
F. Incluir, imediatamente depois das notas de copyright, uma nota de licença dando ao público
o direito de usar a Versão Modificada sob os termos desta Licença, na forma mostrada no tópico
abaixo;
G. Preservar nessa nota de licença as listas completas das Seções Invariantes e os Textos de
Capa requeridos dados na nota de licença do Documento;
H. Incluir uma cópia inalterada desta Licença;
I. Preservar a seção entitulada "Histórico", e seu título, e adicionar à mesma um item dizendo
pelo menos o título, ano, novos autores e editor da Versão Modificada como dados na Página de
Título. Se não houver uma sessão denominada "Histórico"no Documento, criar uma dizendo o
título, ano, autores, e editor do Documento como dados em sua Página de Título, então adicionar
um item descrevendo a Versão Modificada, tal como descrito na sentença anterior;
J. Preservar o endereço de rede, se algum, dado no Documento para acesso público a uma
cópia Transparente do Documento, e da mesma forma, as localizações de rede dadas no Docu-
mento para as versões anteriores em que ele foi baseado. Elas podem ser colocadas na seção
"Histórico". Você pode omitir uma localização na rede para um trabalho que tenha sido publicado
pelo menos quatro anos antes do Documento, ou se o editor original da versão a que ela se refira
der sua permissão;
K. Em qualquer seção entitulada "Agradecimentos"ou "Dedicatórias", preservar o título da
14
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
seção e preservar a seção em toda substância e fim de cada um dos agradecimentos de contri-
buidores e/ou dedicatórias dados;
L. Preservar todas as Seções Invariantes do Documento, inalteradas em seus textos ou em
seus títulos. Números de seção ou equivalentes não são considerados parte dos títulos da seção;
M. Apagar qualquer seção entitulada "Endossos". Tal sessão não pode ser incluída na Versão
Modificada;
N. Não reentitular qualquer seção existente com o título "Endossos"ou com qualquer outro
título dado a uma Seção Invariante.
Se a Versão Modificada incluir novas seções iniciais ou apêndices que se qualifiquem como
Seções Secundárias e não contenham nenhum material copiado do Documento, você pode optar
por designar alguma ou todas aquelas seções como invariantes. Para fazer isso, adicione seus
títulos à lista de Seções Invariantes na nota de licença da Versão Modificada. Esses títulos preci-
sam ser diferentes de qualquer outro título de seção.
Você pode adicionar uma seção entitulada "Endossos", desde que ela não contenha qual-
quer coisa além de endossos da sua Versão Modificada por várias pessoas ou entidades - por
exemplo, declarações de revisores ou de que o texto foi aprovado por uma organização como a
definição oficial de um padrão.
Você pode adicionar uma passagem de até cinco palavras como um Texto de Capa da Frente
, e uma passagem de até 25 palavras como um Texto de Quarta Capa, ao final da lista de Textos
de Capa na Versão Modificada. Somente uma passagem de Texto da Capa da Frente e uma de
Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade.
Se o Documento já incluir um texto de capa para a mesma capa, adicionado previamente por
você ou por acordo feito com alguma entidade para a qual você esteja agindo, você não pode
adicionar um outro; mas você pode trocar o antigo, com permissão explícita do editor anterior que
adicionou a passagem antiga.
O(s) autor(es) e editor(es) do Documento não dão permissão por esta Licença para que seus
nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer
Versão Modificada.
COMBINANDO DOCUMENTOS
Você pode combinar o Documento com outros documentos publicados sob esta Licença, sob
os termos definidos na seção 4 acima para versões modificadas, desde que você inclua na com-
binação todas as Seções Invariantes de todos os documentos originais, sem modificações, e liste
todas elas como Seções Invariantes de seu trabalho combinado em sua nota de licença.
O trabalho combinado precisa conter apenas uma cópia desta Licença, e Seções Invariantes
Idênticas com multiplas ocorrências podem ser substituídas por apenas uma cópia. Se houver
múltiplas Seções Invariantes com o mesmo nome mas com conteúdos distintos, faça o título de
15
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
cada seção único adicionando ao final do mesmo, em parênteses, o nome do autor ou editor
origianl daquela seção, se for conhecido, ou um número que seja único. Faça o mesmo ajuste
nos títulos de seção na lista de Seções Invariantes nota de licença do trabalho combinado.
Na combinação, você precisa combinar quaisquer seções entituladas "Histórico"dos diver-
sos documentos originais, formando uma seção entitulada "Histórico"; da mesma forma combine
quaisquer seções entituladas "Agradecimentos", ou "Dedicatórias". Você precisa apagar todas as
seções entituladas como "Endosso".
COLETÂNEAS DE DOCUMENTOS
Você pode fazer uma coletânea consitindo do Documento e outros documentos publicados
sob esta Licença, e substituir as cópias individuais desta Licença nos vários documentos com
uma única cópia incluida na coletânea, desde que você siga as regras desta Licença para cópia
exata de cada um dos Documentos em todos os outros aspectos.
Você pode extrair um único documento de tal coletânea, e distribuí-lo individualmente sob
esta Licença, desde que você insira uma cópia desta Licença no documento extraído, e siga esta
Licença em todos os outros aspectos relacionados à cópia exata daquele documento.
AGREGAÇÃO COM TRABALHOS INDEPENDENTES
Uma compilação do Documento ou derivados dele com outros trabalhos ou documentos se-
parados e independentes, em um volume ou mídia de distribuição, não conta como uma Ver-
são Modificada do Documento, desde que nenhum copyright de compilação seja reclamado pela
compilação. Tal compilação é chamada um "agregado", e esta Licença não se aplica aos outros
trabalhos auto-contidos compilados junto com o Documento, só por conta de terem sido assim
compilados, e eles não são trabalhos derivados do Documento.
Se o requerido para o Texto de Capa na seção 3 for aplicável a essas cópias do Documento,
então, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capa
do Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado.
Senão eles precisarão aparecer nas capas de todo o agregado.
TRADUÇÃO
Tradução é considerada como um tipo de modificação, então você pode distribuir traduções
do Documento sob os termos da seção 4. A substituição de Seções Invariantes por traduções
requer uma permissão especial dos detentores do copyright das mesmas, mas você pode incluir
traduções de algumas ou de todas as Seções Invariantes em adição às versões orignais dessas
Seções Invariantes. Você pode incluir uma tradução desta Licença desde que você também in-
clua a versão original em Inglês desta Licença. No caso de discordância entre a tradução e a
16
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
versão original em Inglês desta Licença, a versão original em Inglês prevalecerá.
TÉRMINO
Você não pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expres-
samente especificado sob esta Licença. Qualquer outra tentativa de copiar, modificar, sublicen-
ciar, ou distribuir o Documento é nula, e resultará automaticamente no término de seus direitos
sob esta Licença. Entretanto, terceiros que tenham recebido cópias, ou direitos de você sob esta
Licença não terão suas licenças terminadas, tanto quanto esses terceiros permaneçam em total
acordo com esta Licença.
REVISÕES FUTURAS DESTA LICENÇA
A Free Software Foundation pode publicar novas versões revisadas da Licença de Documen-
tação Livre GNU de tempos em tempos. Tais novas versões serão similares em espirito à versão
presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupações. Veja
http://www.gnu.org/copyleft/.
A cada versão da Licença é dado um número de versão distinto. Se o Documento especificar
que uma versão particular desta Licença "ou qualquer versão posterior"se aplica ao mesmo, você
tem a opção de seguir os termos e condições daquela versão específica, ou de qualquer versão
posterior que tenha sido publicada (não como rascunho) pela Free Software Foundation. Se o
Documento não especificar um número de Versão desta Licença, você pode escolher qualquer
versão já publicada (não como rascunho) pela Free Software Foundation.
ADENDO: Como usar esta Licença para seus documentos
Para usar esta Licença num documento que você escreveu, inclua uma cópia desta Licença
no documento e ponha as seguintes notas de copyright e licenças logo após a página de título:
Copyright (c) ANO SEU NOME.
É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença
de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Soft-
ware Foundation; com as Seções Invariantes sendo LISTE SEUS TÍTULOS, com os Textos da
Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cópia da li-
cença está inclusa na seção entitulada "Licença de Documentação Livre GNU".
Se você não tiver nenhuma Seção Invariante, escreva "sem Seções Invariantes"ao invés de
dizer quais são invariantes. Se você não tiver Textos de Capa da Frente, escreva "sem Textos de
Capa da Frente"ao invés de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os
Textos da Quarta Capa.
Se o seu documento contiver exemplos não triviais de código de programas, nós recomenda-
mos a publicação desses exemplos em paralelo sob a sua escolha de licença de software livre,
17
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
tal como a GNU General Public License, para permitir o seu uso em software livre.
18
Parte IV
Planejamento em desenvolvimento de
sistemas
19
Capítulo 1
Planejamento em desenvolvimento de
sistemas
Um software é muito mais que um programa de computador. É o resultado de um conjunto
de atividades e ferramentas de planejamento, desenvolvimento e gerência, e o estudo e uso das
melhores dessas atividades é conhecido como Engenharia de software.
20
Capítulo 2
Plano de ensino
2.1 Objetivo
Disponibilizar ao usuário conhecimentos acerca de planejamento de sistemas.
2.2 Público Alvo
Usuários finais ou novatos que desejam se iniciar na área de engenharia de software.
2.3 Pré-requisitos
Os usuários deverão ser, necessariamente, familiarizados com o padrão de modelagem UML
e possuir algum conhecimento em programação, além de ser desejavel o conhecimento de projeto
modelado a objeto.
2.4 Descrição
O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle
como ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjunto
de atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas de
acordo com as instruções fornecidas. O material didático estará disponível on-line de acordo com
as datas pré-estabelecidas em cada tópico. Esse assunto é dinâmico e pode ser que alguma
coisa de desatualize com o tempo.
2.5 Metodologia
O curso está dividido da seguinte maneira:
2.6 Cronograma
• Introdução;
21
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
• Práticas de planejamento - Visão geral;
• Práticas de planejamento;
• Introdução às disciplinas de um projeto;
• Disciplinas de um projeto.
As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces-
sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá
uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição,
pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor
do que 6.0, sugerimos que você faça novamente esta lição.
Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições
quanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveis
para que possam ser consultados durante a avaliação final.
Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En-
sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma.
Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá ser
enviada no fórum. Diariamente os monitores darão respostas e esclarecimentos.
2.7 Programa
O curso planejamento desenvolvimento de sistemas oferecerá o seguinte conteúdo:
• estudo das praticas mais corriqueiras em engenharia de software.
2.8 Avaliação
Toda a avaliação será feita on-line.
Aspectos a serem considerados na avaliação:
• Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento;
• Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados.
Instrumentos de avaliação:
• Participação ativa nas atividades programadas.
• Avaliação ao final do curso.
• O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação e
obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo
com a fórmula abaixo:
• Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições
• AF = Avaliações
22
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
2.9 Bibliografia
Este curso foi inspirado nos slides de aula do professor da UnB Doutor Ricardo Starciarini
Puttini da disciplina Metodologia de desenvolvimento de software ministrada no departamento de
engenharia elétrica.
23
Capítulo 3
Introdução
3.1 Conceitos iniciais
Produto: um objeto é desenvolvido tendo em vista as necessidades do cliente (no caso, o
próprio software). Nota: eventualmente no decorrer do curso pode ser usado como sinônimo do
próprio software.
Serviço: atividade realizada por mão-de-obra qualificada também tendo em vista alguma ne-
cessidade específica.
Processo: seqüência de etapas pelo qual a produção de um produto ou serviço passa.
Projeto: é a prática que objetiva a criação de um serviço ou produto.
3.2 Exemplo de sistema de informação
Antes de entrarmos no fascinante mundo da engenharia de software, vamos à motivação para
nosso curso: um sistema!!!! Podemos tomar como exemplo uma loja virtual. Atualmente já se tor-
nou corriqueiro utilizar uma loja virtual, mas há duas gerações atrás... Imagine quão maravilhoso
para uma pessoa que viveu no inicio do século passado é uma loja virtual: você se senta à frente
de uma máquina, manipula-a e dentro de alguns dias tem um produto em casa. Esse exemplo é
interessante pois diversas atividades por trás desse ato de pedir um produto e ele chegar não são
claras para o usuário. Você fornece seu número de cartão de crédito mas por trás disso temos um
outro sistema (banco) que interage com o nosso. Ao pedir seu produto, outro sistema (correios)
é acionado afim de entregá-lo em sua casa.
Um bom projetista deve conceber o produto levando em consideração a interação entre os
diversos sistemas, e ao mesmo tempo projetar o software de forma que essas interações pareçam
o mais transparentes e naturais possíveis para o usuário.
24
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
3.3 Considerações
É importante conceber o software como um produto, todavia trata-se de um produto intangí-
vel. Sendo assim, a prática de desenvolvimento de sistemas necessita de documentos para que
possamos acompanhar sua evolução. Isso causa problemas na medida em que estes documen-
tos necessitam de tempo para sua aprovação. O tempo é algo crítico na produção de software,
portanto nota-se que boas práticas de engenharia de software muitas vezes têm também des-
vantagens. Isso mostra como a produção de software ainda esta "engatinhando"e considerações
a acerca da eficácia de modelos de engenharia de software podem vir à tona, com alguma razão
até.
Deve-se enfatizar o papel de um projeto de software também fora da esfera técnica: um proje-
tista de software deve estar atento a questões éticas, profissionais e sociais. Isso é uma temática
bastante polêmica: como saber o que é certo ou errado num mundo tão complexo como o de
hoje? Apenas como reflexão, jamais com intuito de condenar ninguém, podemos colocar o de-
senvolvimento de sistemas militares em pauta. Vale a pena refletir um pouco sobre algumas
questões como essa.
Como aspectos éticos, não restringindo apenas a esses, pode-se considerar quesitos como:
confidencialidade, competência, transparência, direito de propriedade intelectual e finalidades do
uso do computador.
É de conhecimento de todos que atualmente atividades relacionadas ao desenvolvimento de
sistemas consistem em parte bem significativa do PIB das nações, principalmente daquelas ditas
de primeiro mundo. Além do desenvolvimento, contudo, o que onera muito um software é sua
manutenção, sobretudo para sistemas de vida longa. O planejamento no desenvolvimento de sis-
temas tem como objetivo tornar o desenvolvimento e manutenção do software economicamente
viável.
3.4 Problemas e mitos
Falemos agora de alguns problemas muito comuns que envolvem a atividade de planejamento.
O primeiro é em relação à imprecisão das estimativas de prazo. Isso ocorre, via de regra,
quando no projeto não se dedica tempo para capturar dados sobre a atividade de desenvol-
vimento. Mais adiante veremos práticas que enfatizam a captura desses dados. A discussão
anterior é válida também no que diz respeito a estimativa de custos.
Outro problema freqüente é no que diz respeito à produtividade do pessoal de desenvolvi-
mento, que usualmente não está no mesmo patamar da demanda pelos serviços por eles pres-
tados. Como o que o cliente quer é sempre de certa forma vago, nunca se consegue estimar
com precisão a priori qual a carga de serviço que será demandada pelos profissionais da área de
desenvolvimento.
A qualidade de software também geralmente não é plenamente satisfeita, parâmetros consis-
tentes de garantia de qualidade de software surgiram apenas recentemente.
25
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Como dito anteriormente, a manutenção é bastante cara. Isso é conseqüência de um plane-
jamento que não leva em conta a facilidade de manutenção. Isso deixa mais caro o processo de
fabricação de um software.
O pessoal pode falhar durante o projeto. Gerente sem background em software, falta de
treinamento e principalmente resistência a mudanças aos fatores que devem ser evitados para
afugentar o fracasso do seu projeto.
Existem também um conjunto de lendas acerca do desenvolvimento de software que só ser-
vem para desinformar as partes interessadas no projeto. Seria interessante analisar algumas
dessas lendas.
"Se a equipe está com os prazos atrasados, é conveniente contratar mais programadores e
facilmente tirar o atraso."Análise: contratar mais pessoas, à medida em que estas tem que ser
inseridas no projeto podem atrasar ainda mais. Somente com planejamento isso pode ocorrer.
"Os objetivos devem ser definidos em linhas gerais e com o decorrer do projeto os detalhes
vão sendo acrescentados."Análise: a coleta de requisitos é fundamental, causa primordial de fra-
casso de projetos.
"O cliente pensa: como o próprio nome indica, o software é flexivel e portanto mudanças no
projeto do software podem ser realizadas de forma tranqüila."Análise: não ha nada mais falso, se
uma mudança for solicitada no final do projeto com certeza vai gastar mais tempo.
"O software fica pronto quando o programa funciona."Análise: estatísticas da indústria mos-
tram que aproximadamente 60% dos recursos gastos com o programa ocorrem após a primeira
entrega para o cliente.
"A qualidade do software só pode ser mensurada com o programa funcionando."Análise: o
programa é somente um item do software, que inclui diversos outros produtos durante a constru-
ção e manutenção.
26
Capítulo 4
Práticas de planejamento - Visão geral
4.1 Definição de engenharia de software
Área do conhecimento que se usa de práticas de engenharia para produção sistemática e
econômica de um software confiável e que trabalhe de forma eficiente.
A partir dessa definição, podemos inferir algumas características do software como produto.
Como a definição já indica, o software não deve ser feito de maneira desordenada, sem planeja-
mento. Pelo contrário, valendo-se de práticas de engenharia, procura-se desenvolver o produto
de maneira sistemática, ou seja, de acordo com o método. Isso é essencial em grandes projetos
de software, pois se não houvesse planejamento, qualquer erro poderia colocar todo um projeto
(e muito dinheiro) em risco.
O software também não é como um carro onde se pegam peças, juntam-nas para formar o
produto e depois pode-se vendê-lo em série. De forma geral, um software é feito sob medida
para determinado cliente: cada empresa tem suas necessidades e cabe ao projetista conceber
um sistema que satisfaça-as da maneira mais eficiente possível, ainda que existam softwares de
uso genérico vendidos em grande escala.
4.2 Componentes de um software
Os componentes de um software são:
• instruções: termo um pouco abstrato, relacionado com função e desempenho quando se
executa;
• estrutura de dados: elemento responsável por organizar e manipular adequadamente a
informação nos programas;
• documentos: descrevem o uso dos programas.
27
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
4.3 Procedimentos e atributos de qualidade
Métodos: especificam detalhadamente como construir o software;
Ferramentas: auxílio automatizado aos métodos. Exemplo: ferramenta CASE Jude;
Procedimentos: execuções de cada método em uma determinada seqüência que ao final
produzem certo produto;
Temos os seguintes atributos críticos de qualidade de software:
• Eficiência: o software deve otimizar os recursos do sistema afim de que não haja desperdí-
cio;
• Utilidade: relativo à documentação e interface gráfica;
• Fácil manutenção: com o decorrer do projeto, o software deve evoluir de acordo com mu-
danças no requisito;
• Dependência: um erro no software não deve causar prejuízos.
A prioridade desses atributos varia de produto para produto, cabendo ao projetista dentro do
contexto do ambiente defini-las.
4.4 Etapas de engenharia de software
A engenharia de software pode ser dividida nessas áreas, independentemente do paradigma
utilizado: definição, desenvolvimento e manutenção.
A definição está relacionada com "o quê"o software deve ser; aqui se encaixam práticas
como análise do sistema, análise de requisitos e planejamento de projeto.
Análise do sistema: estabelece a função de cada componente num sistema, atribuindo ao
final, a função que o software realizará.
Planejamento do projeto de software: análise de recursos, custos, riscos além do estabe-
lecimento do trabalho da equipe.
Análise de requisitos: aqui deve-se definir de maneira clara e detalhada a função do ssoftware,
é aqui que de fato se estabelece o que o software deve ser.
No desenvolvimento, por sua vez, o foco já é em "como"o software deve fazer aquilo que
foi determinado na etapa anterior. Ao seu término, o software já deve estar em uso funcional.
Etapas: projeto de software, codificação e testes de software.
Projeto de software: busca reproduzir um modelo para o produto e descrever a arquitetura,
as características da interface, além de algoritmos e estruturas de dados.
28
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Nota: casualmente, o termo projeto também pode ser usado para denominar a engenharia de
software como um todo, desde o início.
Codificação: uma vez nessa etapa, converte-se o projeto em alguma linguagem de progra-
mação para que os computadores possam executar.
Testes: testa-se se o softwarepara verificar se atende aos requisitos e ao mesmo tempo pro-
cura por falhas (bugs) lógicos ou funcionais
Manutenção: aqui, busca-se por mudanças afim de que o produto evolua, pois é muito pro-
vável que o cliente não fique plenamente satisfeito ao final da etapa de desenvolvimento.
Tipos:
• corretiva: correção de defeitos;
• adaptativa: eventuais mudanças no ambiente exigem esse tipo de manutenção;
• extensiva: aumenta as funcionalidades do produto de acordo com as que foram previa-
mente estabelecidas.
Além das etapas listadas abaixo, paralelamente deve-se executar atividades de proteção (con-
trole) do projeto:
• revisão: realizada ao término de cada etapa afim de controle de qualidade;
• documentação: elaboração de documentos que expressam informações completas do pro-
duto, com objetivo de facilitar o seu uso posterior;
• controle de versão: controla as mudanças ocorridas no software ao longo do projeto.
4.5 Melhores práticas
A essa altura do curso o aluno já deve ter se dado conta da complexidade da atividade de
engenharia de software, muito além da programação. Destarte, veremos alguns métodos, co-
nhecidos como melhores práticas que auxiliam a atividade do engenheiro de software. Existem
outras práticas melhores, mas julga-se que o conhecimento destas já é interessante para um
curso introdutório.
4.5.1 Gerência de riscos:
Riscos: algo que pode afetar de forma negativa o projeto, sempre existe a possibilidade de
ocorrer.
Alguns exemplos: falta de pessoal bem-treinado, atrito entre a equipe, não atendimento aos
requisitos mínimos de desempenho dentre diversos tipos de riscos.
29
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Como em toda área de engenharia, deve-se dosar a questão de custo-benefício: a gerência
de riscos também gera custos, ela só deve ser utilizada se as perdas geradas pelos riscos envol-
vidos superam os custos com gerencia de riscos.
A primeira etapa da gerência de riscos é a avaliação, onde se procura a identificação, análise
e priorização dos riscos envolvidos. Feito isso, deve ser realizado o controle: planeja-se como
a gerência de riscos deve agir; depois realiza-se o monitoramento de riscos e quando estes
ocorrem, a solução dos riscos. Tente imaginar novos riscos que um projeto pode apresentar e
visualizar no contexto do projeto como a gerência de riscos funciona de forma prática.
4.5.2 Gerência de riscos
Riscos: algo que pode afetar de forma negativa o projeto, sempre existe a possibilidade de
ocorrer.
Alguns exemplos: falta de pessoal bem-treinado, atrito entre a equipe, não atendimento aos
requisitos mínimos de desempenho dentre diversos tipos de riscos.
Como em toda área de engenharia, deve-se dosar a questão de custo-benefício: a gerência
de riscos também gera custos, ela só deve ser utilizada se as perdas geradas pelos riscos envol-
vidos superam os custos com gerencia de riscos.
A primeira etapa da gerência de riscos é a avaliação, onde se procura a identificação, análise
e priorização dos riscos envolvidos. Feito isso, deve ser realizado o controle: planeja-se como
a gerência de riscos deve agir; depois realiza-se o monitoramento de riscos e quando estes
ocorrem, a solução dos riscos. Tente imaginar novos riscos que um projeto pode apresentar e
visualizar no contexto do projeto como a gerência de riscos funciona de forma prática.
4.5.3 Gerência de configuração
Artefatos: são elementos produzidos ou consumidos em uma etapa do projeto, necessaria-
mente, não tangíveis.
Exemplos: código-fonte, documento de requisitos,material de treinamento, etc.
Tipicamente os artefatos são modificados durante o projeto e à gerência de configuração cabe
o controle dessas mudanças. Por exemplo, identificar a última versão de um programa, evitar uma
modificação não autorizada, controlar a situação em que há duas solicitações concorrentes de
atualização no programa, entre outras situações são exemplos que ilustram a necessidade da
gerencia de configuração.
É uma atividade complexa, pois está relacionada com diversos outros mecanismos, como
controle de versão, mapeamento das modificações ocorridas, controle de acesso de artefatos e
identificação de mudanças em artefatos entre outros.
Na prática, é realizada da seguinte maneira: um artefato para ser alterado é submetido a uma
operação conhecida como "check-out". Uma vez aí, somente uma pessoa pode alterá-lo. É como
se momentaneamente o artefato fosse retirado do sistema, numa comparação bem grosseira.
Uma vez alterado, uma nova versão do artefato é produzida e agora ele volta ao sistema através
de uma operação "check-in".
30
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
4.5.4 Gerência de requisitos
Está relacionado com o recolhimento, análise e gerência das modificações dos requisitos. Po-
dem ocorrer problemas no contexto dos requisitos, tais como mal-entendimento, documentação
incorreta e controle impreciso das modificações de requisitos. A gerência se faz necessária no
sentido em que naturalmente ocorrem mudanças de requisitos ao longo do projeto, mudanças es-
sas geralmente inesperadas e que afetam o palnejamento, desta forma deve-se estar preparado
para elas. A forma com que essa gerência é definida é relativa e depende do cliente, pois ele vai
ser a principal responsável pela mudança de requisitos.
4.5.5 Gerência com uso de métricas
Usar métricas é importante pois é o suporte que serve para compararmos nosso projeto com
algo.Se não temos com o que compará-lo, ficamos de certa forma sem rumo, pois não temos
noção do que nosso projeto deve melhorar. Assim, podemos usar métricas de acordo com dois
parâmetros. O primeiro é a nível de processo: aqui se analisa produtividade, qualidade e efici-
ência na remoção de bugs. Também pode-se avaliar a nível de produto: tamanho, complexidade
do código e funcionalidade. Tendo esses seis elementos como base já é possível ter uma melhor
noção dos rumos de seu projeto.
31
Capítulo 5
Práticas de planejamento
5.1 Planejamento de software
Uma etapa de suma importância da construção do software é a de planejamento. Sem essa
etapa, o termo engenharia de software perde totalmente o sentido, pois o projeto se torna de-
sordenado e sem objetivos claros. As principais partes interessadas nessa etapa são o gerente
de negócio, o gerente de software e a equipe de desenvolvimento. Deve abarcar o resumo do
projeto, planejamento, monitoração e perfis dos profissionais.
No resumo, deve-se estabelecer o nome do projeto, o gerente, a data de início e término
do projeto, os objetivos do projeto, calendário de pagamentos do cliente, compromissos firmados
junto ao cliente entre outras coisas dessa tipo.
No planejamento busca-se estimar os critérios e esforços a serem adotados pela equipe, o
ciclo de vida, os planos de treinamento, o plano de gerenciamento de risco, discutir o ambiente
de desenvolvimento, os desvios em relação ao projeto original considerados aceitáveis, dentre
outros.
No que concerne à monitoração, deve-se designar parte da equipe como responsável por
essa etapa, descrever os procedimentos de monitoração, os aspectos monitorados e a monitora-
ção de retorno do cliente.
As atividades de monitoração são: aplicar os mecanismos de monitoração, executar o projeto,
capturar dados e daí analisá-los e realizar previsões. Dentre os dados que podemos analisar,
lista-se esforço, defeitos e tamanho. Tomemos o dado "esforço"como exemplo; submete-se
cada empregado a um relatório semanal, que deve ser aprovado por um superior e não pode ser
modificado após ser aprovado. Nesse relatório deve constar um código identificador do programa,
do método e da atividade, as horas gastas e uma lista de atividades (diferenciando as planejadas
das inesperadas).
Outro dado imprescindível que deve ser monitorado é os defeitos. Num eventual relatório
sobre este dado, deve aparecer o código do projeto no qual o defeito foi observado, a descrição
precisa do defeito, estágio no qual foi identificado, o nome de quem identificou e o de quem é
reponsável pela correção do defeito e as datas convenientes.
32
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Os seguintes estágios do projeto são os mais propensos a encontrar defeitos, e a maioria
deles são revisões por motivos óbvios: nas revisões de especificação de requisitos, plano do
projeto, do projeto em si, do plano de gerência de configuração, do código e também na fase de
testes.
Quando planejar os perfis dos profissionais deve-se relacionar cada membro, segundo uma
hierarquia estabelecida, atribuindo a cada um responsabilidades e um período específico de par-
ticipação no projeto.
5.2 Modelo de processos
Os processos devem ser modelados para que o gerenciamento se torne viável, e esse modelo
depende de fatores como a natureza do projeto, ferramentas que serão usadas e produtos que
necessitam ser entregues.
Os modelos são fundamentais: distinguem o software profissional de um programa de compu-
tador mais "amador", pois neste último não há distinção entre especificação, projeto e codificação.
Além disso, por maior que seja a boa-vontade das partes interessadas, nunca as especificações
são completas: nesse sentido aparece a importância dos modelos de processo na engenharia de
software.
Antes de seguirmos adiante, vamos exemplificar alguns processos:
• fundamentais: processo de aquisição, fornecimento, desenvolvimento, operação e manu-
tenção;
• apoio: documentação, gerência de configuração, garantia de qualidade, verificação, valida-
ção, revisão conjunta, auditoria e resolução de problemas;
• organizacionais: gerencia, infra-estrutura, melhoria e treinamento.
Funções de um processo:
• oferecer padrão para realização de projetos;
• definir artefatos;
• sugerir práticas de documentação e diretrizes para realização de trabalhos.
Benefícios de um processo bem descrito:
• ajuda na comunicação entre a equipe;
• estabelece funções bem definidas para cada participante;
• torna o projeto mais inteligível por parte da gerência;
• permite que o próprio processo seja reutilizável e que possa evoluir com o passar do tempo;
• permite otimizar o treinamento.
33
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Anteriormente em nosso curso já nos deparamos com a definição de artefato. Aqui esse
conceito volta, pois no decorrer do processo os artefatos são modificados e criados ao longo do
processo. Cabe aqui também diferenciar artefatos técnicos tais como: diagramas, componentes,
etc; de artefatos gerenciais, de função de controle de atividades, como: planos de negócio ou
planos de alocação da equipe.
Durante os processos são estabelecidos perfis de acordo com habilidades de cada membro
da equipe, como: analista de sistemas, revisor,dentre outros. Cada perfil é responsável pela exe-
cução de atividades que resultam em artefatos. Exemplo: revisão dos casos de uso, codificação.
Essas atividades são encadeadas em seqüência de forma que o artefato produzido por uma
seja a entrada de outra. Pode ocorrer uma interação na qual um encadeamento (fluxo) de ativi-
dades seja percorrida múltiplas vezes.
Falemos agora do ciclo de vida de um processo. Processos estáticos são vantajosos no sen-
tido que são mais fáceis de assimilar pela equipe e as estimativas podem ser feitas com mais
previsão. Todavia, se o pessoal estiver bem treinado e bem gerenciado, processos flexíveis tor-
nam o projeto muito mais dinâmico. Para tanto, existem classes de processos definidos dos quais
se podem configurar processos, de acordo com o tamanho e nível de treinamento da equipe e da
importância da aplicação. Essa configuração é regida por um guia de configuração, que sugere
opções, atributos e alternativas de configuração.
Uma prática saúdavel da engenharia de software consiste em manter uma base de dados
para cada processo. A engenharia de software só atinge sua excelência com a prática, portanto
o projetista deve ter uma base de dados com informações de cada projeto, para que este seja
analisado quando concluído e a partir daí tirar-se valiosas conclusões a respeito de erros e acer-
tos no projeto.
Nessa base de dados deve-se guardar informações gerais sobre dados de monitoração (es-
forço, defeitos e tamanho), relatórios sobre erros e acertos e referência para textos e documentos
que foram fonte de pesquisa.
Informações gerais: tamanho da equipe, ferramentas, datas, esforço, riscos.
Esforços e defeitos: lista de esforços e defeitos separados por fases do projeto.
Tamanho: tamanho total do código (número de linhas).
Relatório de erros e acertos: podem ser escritos em subdivisões tais como: recursos
humanos, especificação de requisitos, ferramentas, projeto, teste, revisões, qualidade, gerên-
cia,metodologia dentre outras possíveis.
Processos pessoais (PSP-personal software process): estabelecem ações a serem reali-
zadas por cada pessoa, que vão realizando estas ações em pequenos programas que gradual-
mente são inseridos no processo como um todo.
34
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
5.3 Processo de desenvolvimento
Este processo orienta os desenvolvedores a realizar atividades com o intuito de desenvolver
um software. Aqui entra as etapas de análise de requisitos, projeto e codificação.
Tradicionalmente, este processo traz as seguintes características: organização hierárquica e
centralizada, trabalho em equipe, existência de um ciclo de vida, necessidade de uma adoção
sistemática de processos, ou seja, características que seguem aquilo que estamos estudando ao
longo de nosso curso.
Por ser uma área extensa, costuma-se subdividi-la em diversas subáreas: engenharia de
requisitos, especificação, projetos, testes, gerência de configuração, ou seja, aquelas áreas
que já vimos um pouco a respeito.
Os processos de desenvolvimento são considerados leves se são mais flexíveis, possuem
poucas regras, poucos desenvolvedores com comunicação oral e mesmo ambiente físico de tra-
balho. Exemplo: XP (extreme programming). Esse tipo de processo não é recomendável para
sistemas de grande porte ou para sistemas desenvolvidos por equipes virtuais (fisicamente dis-
tantes).
É interessante no desenvolvimento realizar as tarefas de forma dinâmica, e isto é obtido atra-
vés de práticas bem conhecidas da administração de empresas: agir de forma pró-ativa, comu-
nicação contínua entre a equipe e o cliente entre outras coisas.
Para o caso em que esteja se desenvolvendo software aberto, deve-se levar em conta que os
desenvolvedores podem estar distantes fisicamente. Assim, são criadas comunidades virtu-
ais para seu desenvolvimento, úteis também para uma discussão acerca das experiências com o
uso do software após este ficar pronto. A gerência aqui assume cores participativas, cada um
toma atividades por conta própria para realizar. As ferramentas e processos usados também não
são definidas por uma só pessoa, várias partes participam da decisão. O foco é na entrega no
menor tempo possível, com posteriores melhorias incrementais no produto, incentivadas pelo
"feedback"dado pelos usuários. Outra característica interessante é que em projetos de software
aberto os próprios desenvolvedores usufruem do software final. A maioria das distribuições
são operacionais, mas instáveis, e a estabilidade vem de forma gradual e iterativa. Por fim,
as ferramentas são preferencialmente abertas e a informação é disponibilizada de forma transpa-
rente.
5.4 Ciclos de vida
A vida de um software geralmente é dividida em ciclos, o primeiro para desenvolvimento e os
demais para manutenção. Ao final de cada ciclo obtemos uma versão do produto. O ciclo pode
ser seqüencial ou iterativo.
Ao término de cada ciclo de vida, temos modelos que descrevem a versão do software: mo-
delos de caso de uso, análise, projeto, implementação, implantação, testes e arquitetura. Para
cada ciclo, existem também fases, que resultam em modelos e documentação: concepção, ela-
boração, construção e transição.
35
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
O modelo seqüencial é o clássico da engenharia de software. Nesse tipo de ciclo, as ativida-
des de engenharia de software são executadas passo-a-passo, uma etapa em seguida da outra,
iniciando na análise de requisitos e findando-se com a verificação do produto já desenvolvido.
No final de cada etapa, há uma verificação dos artefatos produzidos: caso julgue-se satisfatório,
passa-se para a seguinte, caso contrário, deve-se refinar mais essa etapa.
O modelo iterativo utiliza-se de outra abordagem: apenas com um conjunto limitado de re-
quisitos (parciais) inicia-se o desenvolvimento, e com o decorrer do projeto novos requisitos são
determinados. Essa abordagem para projetos grandes via de regra se mostra mais eficaz, pois
com o início do desenvolvimento tem-se uma idéia mais madura de quais requisitos o software
deve atender, do foco do projeto e arquitetura utilizada. Os riscos são catalogados logo no começo
do projeto e as perdas estão relacionadas apenas com o custo de cada iteração. Se o modelo
utilizado fosse o seqüencial, mudanças nos requisitos poderiam acarretar em mudanças trágicas
para o projeto, o que não ocorre no caso iterativo, que não só prevê como "pede"mudanças nos
requisitos. Um fato curioso é que se se julgar pertinente, pode-se iniciar uma iteração sem que a
anterior termine.
Em iterações, o planejamento não ocorre de forma única: nas fases de concepção e elabo-
ração, a cada iteração temos que planejá-las, contudo para as demais fases elas só são bem
planejadas nas primeiras iterações, ao final quase não há planejamento substancial. O planeja-
mento leva em conta, obviamente, os resultados das iterações anteriores, onde se avalia o estado
dessa última iteração, além de mais uma vez catalogar riscos para essa iteração.
Como exemplo pode-se citar o modelo espiral, que enfatiza a análise dos riscos e também
uma forte comunicação com o cliente para melhor definição dos requisitos. No modelo espiral,
inicialmente reuni-se com o cliente para definir os requisitos; depois as etapas seguem (com foco
nos riscos), até a liberação. Em seguida é feita uma verificação do cliente, que via de regra exigirá
novos requisitos e de novo passam-se por aquelas etapas, até nova avaliação do cliente. Como
na primeira iteração toda a base do produto já foi feita, cada iteração adicional costuma gastar
menos tempo que a anterior, por isso o modelo é conhecido como espiral. Cabe um alerta: se
utilizar o modelo espiral, o analista de riscos deve ser extremamente eficiente, pois é isso que
sustenta esse modelo.
5.5 Técnicas de quarta geração
A motivação dessas técnicas é tentar especificar um software a um computador em uma
linguagem tão próxima da humana quanto possível, ainda que isso esteja longe do ideal. A
especificação do software deve ser realizada em uma linguagem de alto nível, e disso nasce
o código fonte do software. Para conceber um ambiente que usa técnicas da quarta geração
devemos nos valer das seguintes ferramentas: linguagens não procedimentais para manipulação
de banco de dados, definição das telas, geração de códigos, boa capacidade gráfica, suporte a
planilhas eletrônicas, etc. A expectativa ao se usar esse conjunto de técnicas é ganho em tempo
e produtividade.
36
Capítulo 6
Introdução às disciplinas de um projeto
6.1 Arquitetura
É a arquitetura que dita os elementos mais relevantes de um sistema, muito útil para entender
e lidar com o sistema. Os rumos da arquitetura são ditados por elementos como o software do
sistema, versões antigas, padrões que devem ser seguidos, etc.
Como se estabelece uma arquitetura?
Estabelecida nas fases de concepção e elaboração, primeiro define-se softwares, middleware
e políticas adotadas. Requisitos não funcionais são tratados nessa etapa, bem como caracterís-
ticas bem específicas da aplicação. Casos de uso devem ser analisados para o estabelecimento
da arquitetura. Após se estabelecer a arquitetura, o restante dos casos de uso devem ser de
fato implementados na fase de construção, e uma vez implementados, a arquitetura deve ser
aprimorada.
6.2 Fases
6.2.1 Concepção
Atividade que objetiva uma visão inicial do sistema, contendo objetivos para os usuários, mo-
delo com casos de uso, identificação de riscos, estimativa de custos e um planejamento para a
próxima fase (elaboração).
Nesta fase, deve-se reunir número substancial de informações coletadas antes do projeto,
organizá-las e notar as informações que ainda faltam (tipicamente, vão faltar nesse início infor-
mações sobre requisitos de performance, riscos e custos).
Deve-se formar sua equipe nessa fase inicial: gerente de projeto, desenvolvedores, enge-
nheiro de teste, etc. A concepção foi satisfatória se alguns resultados foram atingidos, como: lista
de requisitos, primeiras versões dos modelos de caso de uso, análise, projeto e arquitetura, lista
parcial de riscos, versão inicial do plano de negócios, etc.
6.2.2 Elaboração
Esta fase objetiva concluir todo o estabelecimento de requisitos, efetivá-los por meio do caso
de uso, estabelecer a arquitetura e estabelecer estratégias para controle de riscos.
37
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
Dentre as ações relacionadas com essa etapa, lista-se planejamento, concluir o restante da
equipe e adequar o ambiente de desenvolvimento.
Ao fim dessa fase, deve-se atingir uma nova versão dos modelos, uma arquitetura básica bem
sólida e descrita, relatórios mais específicos sobre riscos e justificativa econômica.
6.2.3 Construção
Essa é a fase que consome a maioria dos recursos que são gastos ao longo do projeto.
Deve-se executá-la visando a um sistema para operação no ambiente do usuário, coerente com
a arquitetura, aprimorar modelos de análise, projeto e implementação, detalhar os últimos casos
de uso, integrar e testar o sistema.
Deve haver um planejamento da construção de acordo com o fim da elaboração e critérios
subjetivos para avaliação desta fase. Esses critérios devem englobar os seguintes resultados:
plano visando a última fase, software já executável, modelos, arquitetura, manual para os usuários
e atualização do plano de negócios.
6.2.4 Transição
A idéia por trás dessa fase é tomar o software executável da fase anterior, fazer dele uma
versão beta, disponibilizá-lo para um conjunto de usuários que reportarão erros que serão corri-
gidos, resultando numa versão do software. Além disso, deve-se produzir um manual do software
com o objetivo de auxiliar o usuário a se familiarizar ao produto.
Aqui deve-se levar em conta principalmente se os testes feitos com a versão beta estão con-
siderando os requisitos iniciais e se as partes usuário e cliente estão satisfeitos com o produto.
Esta fase deve disponibilizar o software executável, documentos legais, modelos completos,
descrição da arquitetura, os manuais para usuários e administradores, material para treinamento,
etc.
6.3 Disciplinas de um projeto
Consiste nas atividades sistemáticas que devem ser realizadas no decorrer das três fases
vistas anteriormente. Espera-se que as fases sejam mais contextualizadas a partir do estudo das
disciplinas. São elas:
• Coleta e análise de requisitos;
• Projeto;
• Implementação;
• Teste.
Veremos cada uma delas separadamente.
38
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
6.4 Coleta de requisitos
Consiste, basicamente, em descobrir o que o cliente espera que seja desenvolvido. Aparece
nas três primeiras fases. Requisitos são elementos intangíveis que determinam como o sistema
deve responder aos usuários. Não englobam aspectos do projeto. O foco é em determinar o quê
precisa ser feito.
Uma coleta de requisitos eficiente facilita e muito a fase de desenvolvimento: sem ela, prova-
velmente o software executável passaria longe do inicialmente pretendido pelo usuário.
Não é uma atividade trivial pois existem partes diversas interessadas no sistema (cliente,
usuário, administrador, etc) que podem ter interesses conflitantes.
Na concepção, a maioria dos casos de uso são catalogados, e os primordiais detalhados. Na
elaboração a preocupação é com os casos de uso a nível de arquitetura e na construção, os
restantes casos de uso são detalhados.
Fatores que dificultam a coleta de requisitos: mudanças freqüentes nas regras de negócio,
no pessoal e na tecnologia.
Os erros mais comuns na especificação são: incluir aspectos do projeto, detalhamento de
como se deve implementar algo, uso de vocabulário técnico e requisitos vagos.
A coleta de requisitos gira em torno da comunicação. Deve-se interagir com usuários, espe-
cialistas, sua equipe de desenvolvimento, o maior número possível de partes interessadas a fim
de se catalogar os requisitos da forma mais eficiente possível.
Com a coleta de requisitos, é interessante que se gere os seguintes artefatos: modelos de
caso de uso, arquitetura (bem primitiva), glossário e um protótipo da interface com o usuário.
Modelos de caso de uso: é o principal artefato gerado aqui. Deve ser gerado levando em
conta o que o sistema faz para cada tipo de usuário que iterage com ele.
Glossário: é um documento que define termos utilizados na descrição do sistemas, útil para
padronizar uso de conceitos em documentos posteriores.
Protótipo de interface com usuário: facilita a descrição dos relacionamentos entre usuário
e sistema, é como um complemento para os casos de uso, uma espécie de especificação de
interface gráfica.
Essa disciplina apresenta os seguintes perfis:
• especificador do caso de uso: trabalhando em contato com o usuário, descreve minuciosa-
mente os casos de uso;
• projetista das interfaces: define formato das interfaces gráficas, responsável por conceber
alguns protótipos de caso de uso;
• arquiteto: concebe arquitetura para os casos de uso.
39
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
6.5 Análise de requisitos
Nesta disciplina, busca-se analisar os requisitos com uma profundidade maior, e estes são
tratados de forma a tentar conceber a estrutura do sistema.
Aqui, tenta-se sanar algumas coisas que porventura faltaram na disciplina anterior. A intera-
ção entre os diversos casos de uso e possíveis redundâncias encontradas entre eles são apara-
das, e busca-se uma descrição maior do sistema pois na disciplina anterior o uso da linguagem
corriqueira pode ter feito com que algumas características do sistemas não tenham sido bem de-
talhadas.
A seguir acompanhamos a descrição de alguns artefatos gerados na análise:
Modelo
Busca permitir aos desenvolvedores, através de linguagem usada por eles, compreender
como implementar o software, sob o ponto de vista interno do sistema. É um artefato usado
no projeto e no desenvolvimento e estabelece como se implementarão os casos de uso. Pode-se
optar por não produzir este artefato, desde que se adote uma linguagem extremamente precisa
nos casos de uso.
Classe
Artefato também produzido no projeto, aqui ela adquire características mais conceituais. Busca
representar os subsistemas no âmbito do modelo, voltando-se para os requisitos funcionais.
Realização dos casos de uso
Este artefato descreve, através de texto e diagramas, como um caso de uso é implementado
por classes e objetos.
Descrição da arquitetura
É um artefato que descreve os demais artefatos dessa disciplina. O modelo aqui é "que-
brado"em pacotes e descrito num relacionamento entre pacotes. Aqui se descreve também as
principais classes e as mais primordiais realizações dos casos de uso.
Perfis da análise de requisitos:
• arquiteto: perfil responsável pela qualidade do modelo de análise (se está relevante e com-
pleto) e também pela descrição da arquitetura.
• engenheiro de caso de uso: responsável pela integridade das realizações do caso de uso e
pela relevância dos diagramas que descrevem e realizam os casos de uso.
• engenheiro de componentes: é o perfil cuja função é descrever o relacionamento entre as
classes, de forma a garantir que este relacionamento preserve a determinação dos casos
de uso.
40
Capítulo 7
Disciplinas de um projeto
7.1 Projeto
Nesta disciplina, os requisitos devem ser aprofundados, objetivando principalmente "preparar
o terreno"para a implementação. Aqui deve-se ter sempre em mente as restrições devido às
tecnologias usadas, buscar que a captura dos requisitos deva ser feita de modo à implementação
não alterar a idéia do projeto e que ela possa ser feita por equipes independentes.
7.1.1 Artefatos
Modelo, classe, realização de casos de uso como na análise, mas seguindo diretrizes que
buscam atingir os objetivos acima.
Subsistemas de projeto: constituídos por subsistemas como classes e interfaces, ordenam
os artefatos de um modelo.
Modelo de implantação: faz o mapeamento entre o software e o hardware. Vale-se de nós
para representar computadores e de links entre esses nós para representar canais de comunica-
ção. Busca também descrever configurações de teste e simulação.
Descrição da arquitetura: Os artefatos descritos na arquitetura a nível de projeto são: inter-
face de subsistemas, relacionamento entre interfaces, classes, funcionalidades críticas e modelo
de implantação.
7.1.2 Perfis
arquiteto: verifica consistência dos modelos de acordo com o que foi feito nos casos de uso
e análise;
engenheiro de caso de uso, engenheiro de componentes.
De forma suscinta, as atividades relacionadas a essa disciplina são: projeto de caso de
uso, classe, subsistema e arquitetura, projetos esses a nível de orientação a objeto.
41
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
7.2 Implementação
Componentes: é a implementação física de elementos do projeto, sendo que um compo-
nente pode implementar mais de um elemento.
Tipos de componentes: executáveis, tabelas, bibliotecas, arquivos.
Componentes são artefatos.
Visão geral da disciplina: implementa classes do projeto, realiza testes de cada unidade de
componente, desenvolve programas executáveis pela integração de componentes.
Artefatos:
• modelo de implementação: baseado em componentes, descreve relações de dependência
entre eles;
• descrição da arquitetura: decompõe modelo de implementação em subsistemas, compo-
nentes e relacionamentos;
• subsistemas: responsáveis por organizar artefatos do modelo de implementação, suas fun-
cionalidades vem à tona por meio de interfaces.
Perfis:
• arquiteto: mapeia os componentes em nós e verifica se o modelo de implementação está
correto;
• engenheiro de componentes: responsável por manter íntegro cada subsistema e manter o
código dos componentes;
• integrador: o responsável pelo planejamento das interações a nível de análise orientada a
objeto.
Vejamos algumas atividades típicas desta disciplina:
• integração do sistema: através de um planejamento, integra a versão do software que
emerge da implementação;
• implementação de elementos: implementa-se componentes, classes e interfaces;
• implementação de subsistemas: implementa-se os subsistemas certificando-se de que o
plano de integração seja satisfeito;
• testes das unidades: testa-se cada componente do sistema, e avalia-se o resultado destes
testes.
42
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
7.3 Testes
7.3.1 Introdução
Planejamento dos testes são necessários a cada iteração, testes de integração e de sistema.
Busca-se o que testar, como fazer os testes, realizar os testes e analisar resultados.
7.3.2 Artefatos
• modelo de teste: realiza minúcias de como componentes executáveis são testados e em
que contexto acontecem estes testes;
• caso de teste: descreve como testar , especificado de antemão o que deve ser testado;
• procedimento de teste: como colocar em prática os casos de teste;
• componentes de teste: automatiza os procedimentos de teste;
• plano de teste: descreve estratégias de teste com uso de cronogramas;
• defeito: artefato que indica problemas no software, consta de algo que não é normal no
sistema;
• avaliação de teste: análise dos testes.
7.3.3 Perfis
• projetista de teste: é o perfil que controla a relevância dos testes a serem realizados, deter-
minando focos na realização dos testes. Adota um cronograma para realização dos testes
e é ele o responsável pelos procedimentos e casos de teste;
• engenheiro de componente: cuida dos componentes de teste;
• testador: existem dois tipos
• testador de sistema: realiza aqueles testes antes da conclusão da iteração, está mais preo-
cupado com a integração usuário e sistema, por isso não se interessa pelo funcionamento
interno;
• testador de integração: é ele que realiza os testes do funcionamneto interno do sistema, os
testes de integração.
Durante a análise de teste, eventualmente podemos adotar métricas para avaliar a qualidade
dos testes que foram feitos. Além disso, devemos comparar se os resultados obtidos estão de
acordo com o plano de teste.
43
CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF
7.4 Protótipo
Usados quando se quer um modelo do sistema, geralmente em casos onde o cliente define
o software em linhas gerais mas ainda não detalhou especificamente o mecanismo de processa-
mento de dados que ele almeja. Os prototipos servem como apoio para definição dos requisitos.
As fases da construção de um prototipo sao análogas as de um sistema completo, porem
sempre mais rápidas e menos detalhadas.
Os requisitos são definidos de acordo com aquela característica de superficialidade, assim é
realizado um rápido projeto seguido de implementação para que posteriormente cliente e proje-
tista se reúnam e vejam detalhadamente o que o cliente quer, ocorrendo dessa forma o que se
denomina de refinamento de requisitos.
Todavia, cautela deve ser adotada com a estratégia do uso de protótipos pois podemos vir a
ter problemas tanto por parte do cliente como do projetista.
O cliente pode querer que seu produto seja já o protótipo, talvez por pressa, e não entender
que na verdade o software ainda será construído, que melhorias ainda devem ser realizadas.
O desenvolvedor por sua vez pode se acostumar com ideia de prototipo e perder o foco na
qualidade, adotando estrategias que valem para prototipos no software final.
44

Mais conteúdo relacionado

Mais procurados

Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotprojectTiago
 
Squid guard
Squid guardSquid guard
Squid guardTiago
 
Wx python
Wx pythonWx python
Wx pythonTiago
 
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível G
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível GUm estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível G
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível GMarcos Vinícius Godinho
 
Tunelamento
TunelamentoTunelamento
TunelamentoTiago
 
Tcl tk
Tcl tkTcl tk
Tcl tkTiago
 
Quanta
QuantaQuanta
QuantaTiago
 
De javaparapython
De javaparapythonDe javaparapython
De javaparapythonTiago
 
Java applet
Java appletJava applet
Java appletTiago
 

Mais procurados (20)

Apostila cdtc dotproject
Apostila cdtc dotprojectApostila cdtc dotproject
Apostila cdtc dotproject
 
Vim
VimVim
Vim
 
Sql
SqlSql
Sql
 
Squid guard
Squid guardSquid guard
Squid guard
 
Wx python
Wx pythonWx python
Wx python
 
Zope
ZopeZope
Zope
 
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível G
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível GUm estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível G
Um estudo de caso para a avaliação do Scrum sob a Óptica do MPS.BR Nível G
 
Horde
HordeHorde
Horde
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Tunelamento
TunelamentoTunelamento
Tunelamento
 
Qemu
QemuQemu
Qemu
 
Linguagem Ruby
Linguagem RubyLinguagem Ruby
Linguagem Ruby
 
Java Basico
Java BasicoJava Basico
Java Basico
 
Tcl tk
Tcl tkTcl tk
Tcl tk
 
Plone
PlonePlone
Plone
 
Xdmcp
XdmcpXdmcp
Xdmcp
 
Jdbc
JdbcJdbc
Jdbc
 
Quanta
QuantaQuanta
Quanta
 
De javaparapython
De javaparapythonDe javaparapython
De javaparapython
 
Java applet
Java appletJava applet
Java applet
 

Destaque

Curso python
Curso pythonCurso python
Curso pythonTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Como montar um pc
Como montar um pcComo montar um pc
Como montar um pcTiago
 
Arquitetura ibm pc
Arquitetura ibm pcArquitetura ibm pc
Arquitetura ibm pcTiago
 
Cd rom
Cd romCd rom
Cd romTiago
 
Open vpn
Open vpnOpen vpn
Open vpnTiago
 
Pen linux
Pen linuxPen linux
Pen linuxTiago
 
Python gtk
Python gtkPython gtk
Python gtkTiago
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 pythonTiago
 
Post gis
Post gisPost gis
Post gisTiago
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharpTiago
 
Postgre sql
Postgre sqlPostgre sql
Postgre sqlTiago
 

Destaque (13)

Curso python
Curso pythonCurso python
Curso python
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Como montar um pc
Como montar um pcComo montar um pc
Como montar um pc
 
Arquitetura ibm pc
Arquitetura ibm pcArquitetura ibm pc
Arquitetura ibm pc
 
Cd rom
Cd romCd rom
Cd rom
 
Open vpn
Open vpnOpen vpn
Open vpn
 
Pen linux
Pen linuxPen linux
Pen linux
 
Python gtk
Python gtkPython gtk
Python gtk
 
Aula 01 python
Aula 01 pythonAula 01 python
Aula 01 python
 
Post gis
Post gisPost gis
Post gis
 
Mrtg
MrtgMrtg
Mrtg
 
Threading in c_sharp
Threading in c_sharpThreading in c_sharp
Threading in c_sharp
 
Postgre sql
Postgre sqlPostgre sql
Postgre sql
 

Semelhante a Planejamento Desenvolvimento Sistemas

Gerenciamento de projetos
Gerenciamento de projetosGerenciamento de projetos
Gerenciamento de projetosTiago
 
Java basico
Java basicoJava basico
Java basicoTiago
 
Javascript
JavascriptJavascript
JavascriptTiago
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtkTiago
 
Pascal
PascalPascal
PascalTiago
 
Inkscape
InkscapeInkscape
InkscapeTiago
 
Monitoramento
MonitoramentoMonitoramento
MonitoramentoTiago
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem rubyTiago
 
Drivers de dispostivos_linux
Drivers de dispostivos_linuxDrivers de dispostivos_linux
Drivers de dispostivos_linuxTiago
 
Linguagem c
Linguagem cLinguagem c
Linguagem cTiago
 
Jspservlets
JspservletsJspservlets
JspservletsTiago
 
Iptables
IptablesIptables
IptablesTiago
 
Gerenciadores de boot
Gerenciadores de bootGerenciadores de boot
Gerenciadores de bootTiago
 
Drupal
DrupalDrupal
DrupalTiago
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cppTiago
 
Open solaris
Open solarisOpen solaris
Open solarisTiago
 
Nessus
NessusNessus
NessusTiago
 

Semelhante a Planejamento Desenvolvimento Sistemas (20)

Gerenciamento de projetos
Gerenciamento de projetosGerenciamento de projetos
Gerenciamento de projetos
 
Java basico
Java basicoJava basico
Java basico
 
Javascript
JavascriptJavascript
Javascript
 
Programacao gtk
Programacao gtkProgramacao gtk
Programacao gtk
 
Pascal
PascalPascal
Pascal
 
Inkscape
InkscapeInkscape
Inkscape
 
Monitoramento
MonitoramentoMonitoramento
Monitoramento
 
Linguagem ruby
Linguagem rubyLinguagem ruby
Linguagem ruby
 
Drivers de dispostivos_linux
Drivers de dispostivos_linuxDrivers de dispostivos_linux
Drivers de dispostivos_linux
 
Zope
ZopeZope
Zope
 
Ltsp
LtspLtsp
Ltsp
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Jspservlets
JspservletsJspservlets
Jspservlets
 
Iptables
IptablesIptables
Iptables
 
Gerenciadores de boot
Gerenciadores de bootGerenciadores de boot
Gerenciadores de boot
 
Drupal
DrupalDrupal
Drupal
 
Programacao cpp
Programacao cppProgramacao cpp
Programacao cpp
 
Open solaris
Open solarisOpen solaris
Open solaris
 
Nessus
NessusNessus
Nessus
 
Samba
SambaSamba
Samba
 

Mais de Tiago

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodleTiago
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascalTiago
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascalTiago
 
Python bge
Python bgePython bge
Python bgeTiago
 
Curso python
Curso pythonCurso python
Curso pythonTiago
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpTiago
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpTiago
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpTiago
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharpTiago
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantesTiago
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharpTiago
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivosTiago
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafaelTiago
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharpTiago
 
Classes csharp
Classes csharpClasses csharp
Classes csharpTiago
 
C# o basico
C#   o basicoC#   o basico
C# o basicoTiago
 
C# classes
C#   classesC#   classes
C# classesTiago
 
Csharp ebook
Csharp ebookCsharp ebook
Csharp ebookTiago
 
Curso de shell
Curso de shellCurso de shell
Curso de shellTiago
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarTiago
 

Mais de Tiago (20)

Programacao php moodle
Programacao php moodleProgramacao php moodle
Programacao php moodle
 
6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal6572501 ldp-apostila-de-turbo-pascal
6572501 ldp-apostila-de-turbo-pascal
 
Guia rapido de_pascal
Guia rapido de_pascalGuia rapido de_pascal
Guia rapido de_pascal
 
Python bge
Python bgePython bge
Python bge
 
Curso python
Curso pythonCurso python
Curso python
 
Retirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharpRetirar acentos de_determinado_texto_em_c_sharp
Retirar acentos de_determinado_texto_em_c_sharp
 
Remover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharpRemover caracteres especiais_texto_em_c_sharp
Remover caracteres especiais_texto_em_c_sharp
 
Obter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharpObter ip da_internet_em_c_sharp
Obter ip da_internet_em_c_sharp
 
Metodo using no_c_sharp
Metodo using no_c_sharpMetodo using no_c_sharp
Metodo using no_c_sharp
 
Introdução ao c# para iniciantes
Introdução ao c# para iniciantesIntrodução ao c# para iniciantes
Introdução ao c# para iniciantes
 
Interfaces windows em c sharp
Interfaces windows em c sharpInterfaces windows em c sharp
Interfaces windows em c sharp
 
Filestream sistema arquivos
Filestream  sistema arquivosFilestream  sistema arquivos
Filestream sistema arquivos
 
Curso linux professor rafael
Curso linux professor rafaelCurso linux professor rafael
Curso linux professor rafael
 
Controle lpt em_c_sharp
Controle lpt em_c_sharpControle lpt em_c_sharp
Controle lpt em_c_sharp
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
C# o basico
C#   o basicoC#   o basico
C# o basico
 
C# classes
C#   classesC#   classes
C# classes
 
Csharp ebook
Csharp ebookCsharp ebook
Csharp ebook
 
Curso de shell
Curso de shellCurso de shell
Curso de shell
 
Fatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programarFatec sbc lpbd-php_completo_como_programar
Fatec sbc lpbd-php_completo_como_programar
 

Último

GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumAugusto Costa
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxLuizHenriquedeAlmeid6
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaJúlio Sandes
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumPatrícia de Sá Freire, PhD. Eng.
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptxthaisamaral9365923
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasCasa Ciências
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?Rosalina Simão Nunes
 

Último (20)

GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - CartumGÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
GÊNERO TEXTUAL - TIRINHAS - Charges - Cartum
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptxSlides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
Slides Lição 5, CPAD, Os Inimigos do Cristão, 2Tr24, Pr Henrique.pptx
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
 
Universidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comumUniversidade Empreendedora como uma Plataforma para o Bem comum
Universidade Empreendedora como uma Plataforma para o Bem comum
 
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx“Sobrou pra mim” - Conto de Ruth Rocha.pptx
“Sobrou pra mim” - Conto de Ruth Rocha.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Recurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de PartículasRecurso Casa das Ciências: Sistemas de Partículas
Recurso Casa das Ciências: Sistemas de Partículas
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?E agora?! Já não avalio as atitudes e valores?
E agora?! Já não avalio as atitudes e valores?
 

Planejamento Desenvolvimento Sistemas

  • 1. Planejamento Em Desenvolvimento de Sistemas 2 de Setembro de 2008
  • 2. Conteúdo I Sobre essa apostila 3 II Informações Básicas 5 III GNU Free Documentation License 10 IV Planejamento em desenvolvimento de sistemas 19 1 Planejamento em desenvolvimento de sistemas 20 2 Plano de ensino 21 2.1 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Público Alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Pré-requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.4 Descrição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.6 Cronograma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.7 Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.8 Avaliação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.9 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3 Introdução 24 3.1 Conceitos iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.2 Exemplo de sistema de informação . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Considerações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.4 Problemas e mitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 Práticas de planejamento - Visão geral 27 4.1 Definição de engenharia de software . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Componentes de um software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.3 Procedimentos e atributos de qualidade . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.4 Etapas de engenharia de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.5 Melhores práticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5.1 Gerência de riscos: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.5.2 Gerência de riscos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.5.3 Gerência de configuração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 1
  • 3. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 4.5.4 Gerência de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.5.5 Gerência com uso de métricas . . . . . . . . . . . . . . . . . . . . . . . . . . 31 5 Práticas de planejamento 32 5.1 Planejamento de software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Modelo de processos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 Processo de desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.4 Ciclos de vida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.5 Técnicas de quarta geração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 6 Introdução às disciplinas de um projeto 37 6.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2 Fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2.1 Concepção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2.2 Elaboração . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6.2.3 Construção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.2.4 Transição . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.3 Disciplinas de um projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.4 Coleta de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.5 Análise de requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 7 Disciplinas de um projeto 41 7.1 Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.1.1 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.1.2 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 7.2 Implementação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.3 Testes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.3.2 Artefatos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.3.3 Perfis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 7.4 Protótipo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2
  • 4. Parte I Sobre essa apostila 3
  • 5. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Conteúdo O conteúdo dessa apostila é fruto da compilação de diversos materiais livres publicados na in- ternet, disponíveis em diversos sites ou originalmente produzido no CDTC em http://www.cdtc.org.br. O formato original deste material bem como sua atualização está disponível dentro da licença GNU Free Documentation License, cujo teor integral encontra-se aqui reproduzido na seção de mesmo nome, tendo inclusive uma versão traduzida (não oficial). A revisão e alteração vem sendo realizada pelo CDTC (suporte@cdtc.org.br), desde outubro de 2006. Criticas e sugestões construtivas são bem-vindas a qualquer tempo. Autores A autoria deste conteúdo, atividades e avaliações é de responsabilidade de Gabriel Gianelli Pena (gabriel@cdtc.org.br) . O texto original faz parte do projeto Centro de Difusão de Tecnolgia e Conhecimento, que vem sendo realizado pelo ITI em conjunto com outros parceiros institucionais, atuando em conjunto com as universidades federais brasileiras que tem produzido e utilizado Software Livre, apoiando inclusive a comunidade Free Software junto a outras entidades no país. Informações adicionais podem ser obtidas atréves do email ouvidoria@cdtc.org.br, ou da home page da entidade, através da URL http://www.cdtc.org.br. Garantias O material contido nesta apostila é isento de garantias e o seu uso é de inteira responsabi- lidade do usuário/leitor. Os autores, bem como o ITI e seus parceiros, não se responsabilizam direta ou indiretamente por qualquer prejuízo oriundo da utilização do material aqui contido. Licença Copyright ©2006,Gabriel Gianelli Pena (gabriel@cdtc.org.br) . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Chapter being SOBRE ESSA APOS- TILA. A copy of the license is included in the section entitled GNU Free Documentation License. 4
  • 7. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Sobre o CDTC Objetivo Geral O Projeto CDTC visa a promoção e o desenvolvimento de ações que incentivem a dissemina- ção de soluções que utilizem padrões abertos e não proprietários de tecnologia, em proveito do desenvolvimento social, cultural, político, tecnológico e econômico da sociedade brasileira. Objetivo Específico Auxiliar o Governo Federal na implantação do plano nacional de software não-proprietário e de código fonte aberto, identificando e mobilizando grupos de formadores de opinião dentre os servidores públicos e agentes políticos da União Federal, estimulando e incentivando o mercado nacional a adotar novos modelos de negócio da tecnologia da informação e de novos negócios de comunicação com base em software não-proprietário e de código fonte aberto, oferecendo treinamento específico para técnicos, profissionais de suporte e funcionários públicos usuários, criando grupos de funcionários públicos que irão treinar outros funcionários públicos e atuar como incentivadores e defensores de produtos de software não proprietários e código fonte aberto, ofe- recendo conteúdo técnico on-line para serviços de suporte, ferramentas para desenvolvimento de produtos de software não proprietários e de seu código fonte livre, articulando redes de terceiros (dentro e fora do governo) fornecedoras de educação, pesquisa, desenvolvimento e teste de pro- dutos de software livre. Guia do aluno Neste guia, você terá reunidas uma série de informações importantes para que você comece seu curso. São elas: • Licenças para cópia de material disponível • Os 10 mandamentos do aluno de Educação a Distância • Como participar dos fóruns e da wikipédia • Primeiros passos É muito importante que você entre em contato com TODAS estas informações, seguindo o roteiro acima. Licença Copyright ©2006, Gabriel Gianelli Pena (gabriel@cdtc.org.br) . 6
  • 8. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Software Foundation; com o Capítulo Invariante SOBRE ESSA APOSTILA. Uma cópia da licença está inclusa na seção entitulada "Licença de Docu- mentação Livre GNU". Os 10 mandamentos do aluno de educação online • 1. Acesso a Internet: ter endereço eletrônico, um provedor e um equipamento adequado é pré-requisito para a participação nos cursos a distância. • 2. Habilidade e disposição para operar programas: ter conhecimentos básicos de Informá- tica é necessário para poder executar as tarefas. • 3. Vontade para aprender colaborativamente: interagir, ser participativo no ensino a distân- cia conta muitos pontos, pois irá colaborar para o processo ensino-aprendizagem pessoal, dos colegas e dos professores. • 4. Comportamentos compatíveis com a etiqueta: mostrar-se interessado em conhecer seus colegas de turma respeitando-os e fazendo ser respeitado pelo mesmo. • 5. Organização pessoal: planejar e organizar tudo é fundamental para facilitar a sua revisão e a sua recuperação de materiais. • 6. Vontade para realizar as atividades no tempo correto: anotar todas as suas obrigações e realizá-las em tempo real. • 7. Curiosidade e abertura para inovações: aceitar novas idéias e inovar sempre. • 8. Flexibilidade e adaptação: requisitos necessário a mudança tecnológica, aprendizagens e descobertas. • 9. Objetividade em sua comunicação: comunicar-se de forma clara, breve e transparente é ponto-chave na comunicação pela Internet. • 10. Responsabilidade: ser responsável por seu próprio aprendizado. O ambiente virtual não controla a sua dedicação, mas reflete os resultados do seu esforço e da sua colaboração. Como participar dos fóruns e Wikipédia Você tem um problema e precisa de ajuda? Podemos te ajudar de 2 formas: A primeira é o uso dos fóruns de notícias e de dúvidas gerais que se distinguem pelo uso: O fórum de notícias tem por objetivo disponibilizar um meio de acesso rápido a informações que sejam pertinentes ao curso (avisos, notícias). As mensagens postadas nele são enviadas a 7
  • 9. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF todos participantes. Assim, se o monitor ou algum outro participante tiver uma informação que interesse ao grupo, favor postá-la aqui. Porém, se o que você deseja é resolver alguma dúvida ou discutir algum tópico específico do curso, é recomendado que você faça uso do Fórum de dúvidas gerais que lhe dá recursos mais efetivos para esta prática. . O fórum de dúvidas gerais tem por objetivo disponibilizar um meio fácil, rápido e interativo para solucionar suas dúvidas e trocar experiências. As mensagens postadas nele são enviadas a todos participantes do curso. Assim, fica muito mais fácil obter respostas, já que todos podem ajudar. Se você receber uma mensagem com algum tópico que saiba responder, não se preocupe com a formalização ou a gramática. Responda! E não se esqueça de que antes de abrir um novo tópico é recomendável ver se a sua pergunta já foi feita por outro participante. A segunda forma se dá pelas Wikis: Uma wiki é uma página web que pode ser editada colaborativamente, ou seja, qualquer par- ticipante pode inserir, editar, apagar textos. As versões antigas vão sendo arquivadas e podem ser recuperadas a qualquer momento que um dos participantes o desejar. Assim, ela oferece um ótimo suporte a processos de aprendizagem colaborativa. A maior wiki na web é o site "Wikipé- dia", uma experiência grandiosa de construção de uma enciclopédia de forma colaborativa, por pessoas de todas as partes do mundo. Acesse-a em português pelos links: • Página principal da Wiki - http://pt.wikipedia.org/wiki/ Agradecemos antecipadamente a sua colaboração com a aprendizagem do grupo! Primeiros Passos Para uma melhor aprendizagem é recomendável que você siga os seguintes passos: • Ler o Plano de Ensino e entender a que seu curso se dispõe a ensinar; • Ler a Ambientação do Moodle para aprender a navegar neste ambiente e se utilizar das ferramentas básicas do mesmo; • Entrar nas lições seguindo a seqüência descrita no Plano de Ensino; • Qualquer dúvida, reporte ao Fórum de Dúvidas Gerais. Perfil do Tutor Segue-se uma descrição do tutor ideal, baseada no feedback de alunos e de tutores. O tutor ideal é um modelo de excelência: é consistente, justo e profissional nos respectivos valores e atitudes, incentiva mas é honesto, imparcial, amável, positivo, respeitador, aceita as idéias dos estudantes, é paciente, pessoal, tolerante, apreciativo, compreensivo e pronto a ajudar. 8
  • 10. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF A classificação por um tutor desta natureza proporciona o melhor feedback possível, é crucial, e, para a maior parte dos alunos, constitui o ponto central do processo de aprendizagem.’ Este tutor ou instrutor: • fornece explicações claras acerca do que ele espera, e do estilo de classificação que irá utilizar; • gosta que lhe façam perguntas adicionais; • identifica as nossas falhas, mas corrige-as amavelmente’, diz um estudante, ’e explica por- que motivo a classificação foi ou não foi atribuída’; • tece comentários completos e construtivos, mas de forma agradável (em contraste com um reparo de um estudante: ’os comentários deixam-nos com uma sensação de crítica, de ameaça e de nervosismo’) • dá uma ajuda complementar para encorajar um estudante em dificuldade; • esclarece pontos que não foram entendidos, ou corretamente aprendidos anteriormente; • ajuda o estudante a alcançar os seus objetivos; • é flexível quando necessário; • mostra um interesse genuíno em motivar os alunos (mesmo os principiantes e, por isso, talvez numa fase menos interessante para o tutor); • escreve todas as correções de forma legível e com um nível de pormenorização adequado; • acima de tudo, devolve os trabalhos rapidamente; 9
  • 11. Parte III GNU Free Documentation License 10
  • 12. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF (Traduzido pelo João S. O. Bueno através do CIPSGA em 2001) Esta é uma tradução não oficial da Licençaa de Documentação Livre GNU em Português Brasileiro. Ela não é publicada pela Free Software Foundation, e não se aplica legalmente a dis- tribuição de textos que usem a GFDL - apenas o texto original em Inglês da GNU FDL faz isso. Entretanto, nós esperamos que esta tradução ajude falantes de português a entenderem melhor a GFDL. This is an unofficial translation of the GNU General Documentation License into Brazilian Por- tuguese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GFDL–only the original English text of the GFDL does that. However, we hope that this translation will help Portuguese speakers understand the GFDL better. Licença de Documentação Livre GNU Versão 1.1, Março de 2000 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA É permitido a qualquer um copiar e distribuir cópias exatas deste documento de licença, mas não é permitido alterá-lo. INTRODUÇÃO O propósito desta Licença é deixar um manual, livro-texto ou outro documento escrito "livre"no sentido de liberdade: assegurar a qualquer um a efetiva liberdade de copiá-lo ou redistribui-lo, com ou sem modificações, comercialmente ou não. Secundariamente, esta Licença mantém para o autor e editor uma forma de ter crédito por seu trabalho, sem ser considerado responsável pelas modificações feitas por terceiros. Esta Licença é um tipo de "copyleft"("direitos revertidos"), o que significa que derivações do documento precisam ser livres no mesmo sentido. Ela complementa a GNU Licença Pública Ge- ral (GNU GPL), que é um copyleft para software livre. Nós fizemos esta Licença para que seja usada em manuais de software livre, por que software livre precisa de documentação livre: um programa livre deve ser acompanhado de manuais que provenham as mesmas liberdades que o software possui. Mas esta Licença não está restrita a manuais de software; ela pode ser usada para qualquer trabalho em texto, independentemente do assunto ou se ele é publicado como um livro impresso. Nós recomendamos esta Licença prin- cipalmente para trabalhos cujo propósito seja de introdução ou referência. APLICABILIDADE E DEFINIÇÕES Esta Licença se aplica a qualquer manual ou outro texto que contenha uma nota colocada pelo detentor dos direitos autorais dizendo que ele pode ser distribuído sob os termos desta Licença. 11
  • 13. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF O "Documento"abaixo se refere a qualquer manual ou texto. Qualquer pessoa do público é um licenciado e é referida como "você". Uma "Versão Modificada"do Documento se refere a qualquer trabalho contendo o documento ou uma parte dele, quer copiada exatamente, quer com modificações e/ou traduzida em outra língua. Uma "Seção Secundária"é um apêndice ou uma seção inicial do Documento que trata ex- clusivamente da relação dos editores ou dos autores do Documento com o assunto geral do Documento (ou assuntos relacionados) e não contém nada que poderia ser incluído diretamente nesse assunto geral (Por exemplo, se o Documento é em parte um livro texto de matemática, a Seção Secundária pode não explicar nada de matemática). Essa relação poderia ser uma questão de ligação histórica com o assunto, ou matérias relaci- onadas, ou de posições legais, comerciais, filosóficas, éticas ou políticas relacionadas ao mesmo. As "Seções Invariantes"são certas Seções Secundárias cujos títulos são designados, como sendo de Seções Invariantes, na nota que diz que o Documento é publicado sob esta Licença. Os "Textos de Capa"são certos trechos curtos de texto que são listados, como Textos de Capa Frontal ou Textos da Quarta Capa, na nota que diz que o texto é publicado sob esta Licença. Uma cópia "Transparente"do Documento significa uma cópia que pode ser lida automatica- mente, representada num formato cuja especificação esteja disponível ao público geral, cujos conteúdos possam ser vistos e editados diretamente e sem mecanismos especiais com editores de texto genéricos ou (para imagens compostas de pixels) programas de pintura genéricos ou (para desenhos) por algum editor de desenhos grandemente difundido, e que seja passível de servir como entrada a formatadores de texto ou para tradução automática para uma variedade de formatos que sirvam de entrada para formatadores de texto. Uma cópia feita em um formato de arquivo outrossim Transparente cuja constituição tenha sido projetada para atrapalhar ou de- sencorajar modificações subsequentes pelos leitores não é Transparente. Uma cópia que não é "Transparente"é chamada de "Opaca". Exemplos de formatos que podem ser usados para cópias Transparentes incluem ASCII sim- ples sem marcações, formato de entrada do Texinfo, formato de entrada do LaTex, SGML ou XML usando uma DTD disponibilizada publicamente, e HTML simples, compatível com os padrões, e projetado para ser modificado por pessoas. Formatos opacos incluem PostScript, PDF, formatos proprietários que podem ser lidos e editados apenas com processadores de texto proprietários, SGML ou XML para os quais a DTD e/ou ferramentas de processamento e edição não estejam disponíveis para o público, e HTML gerado automaticamente por alguns editores de texto com finalidade apenas de saída. A "Página do Título"significa, para um livro impresso, a página do título propriamente dita, mais quaisquer páginas subsequentes quantas forem necessárias para conter, de forma legível, o material que esta Licença requer que apareça na página do título. Para trabalhos que não tenham uma página do título, "Página do Título"significa o texto próximo da aparição mais proe- minente do título do trabalho, precedendo o início do corpo do texto. 12
  • 14. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF FAZENDO CÓPIAS EXATAS Você pode copiar e distribuir o Documento em qualquer meio, de forma comercial ou não comercial, desde que esta Licença, as notas de copyright, e a nota de licença dizendo que esta Licença se aplica ao documento estejam reproduzidas em todas as cópias, e que você não acres- cente nenhuma outra condição, quaisquer que sejam, às desta Licença. Você não pode usar medidas técnicas para obstruir ou controlar a leitura ou confecção de cópias subsequentes das cópias que você fizer ou distribuir. Entretanto, você pode aceitar com- pensação em troca de cópias. Se você distribuir uma quantidade grande o suficiente de cópias, você também precisa respeitar as condições da seção 3. Você também pode emprestar cópias, sob as mesmas condições colocadas acima, e também pode exibir cópias publicamente. FAZENDO CÓPIAS EM QUANTIDADE Se você publicar cópias do Documento em número maior que 100, e a nota de licença do Documento obrigar Textos de Capa, você precisará incluir as cópias em capas que tragam, clara e legivelmente, todos esses Textos de Capa: Textos de Capa da Frente na capa da frente, e Textos da Quarta Capa na capa de trás. Ambas as capas também precisam identificar clara e legivelmente você como o editor dessas cópias. A capa da frente precisa apresentar o titulo com- pleto com todas as palavras do título igualmente proeminentes e visíveis. Você pode adicionar outros materiais às capas. Fazer cópias com modificações limitadas às capas, tanto quanto estas preservem o título do documento e satisfaçam a essas condições, pode ser tratado como cópia exata em outros aspectos. Se os textos requeridos em qualquer das capas for muito volumoso para caber de forma legível, você deve colocar os primeiros (tantos quantos couberem de forma razoável) na capa verdadeira, e continuar os outros nas páginas adjacentes. Se você publicar ou distribuir cópias Opacas do Documento em número maior que 100, você precisa ou incluir uma cópia Transparente que possa ser lida automaticamente com cada cópia Opaca, ou informar, em ou com, cada cópia Opaca a localização de uma cópia Transparente completa do Documento acessível publicamente em uma rede de computadores, a qual o público usuário de redes tenha acesso a download gratuito e anônimo utilizando padrões públicos de protocolos de rede. Se você utilizar o segundo método, você precisará tomar cuidados razoavel- mente prudentes, quando iniciar a distribuição de cópias Opacas em quantidade, para assegurar que esta cópia Transparente vai permanecer acessível desta forma na localização especificada por pelo menos um ano depois da última vez em que você distribuir uma cópia Opaca (direta- mente ou através de seus agentes ou distribuidores) daquela edição para o público. É pedido, mas não é obrigatório, que você contate os autores do Documento bem antes de redistribuir qualquer grande número de cópias, para lhes dar uma oportunidade de prover você com uma versão atualizada do Documento. 13
  • 15. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF MODIFICAÇÕES Você pode copiar e distribuir uma Versão Modificada do Documento sob as condições das se- ções 2 e 3 acima, desde que você publique a Versão Modificada estritamente sob esta Licença, com a Versão Modificada tomando o papel do Documento, de forma a licenciar a distribuição e modificação da Versão Modificada para quem quer que possua uma cópia da mesma. Além disso, você precisa fazer o seguinte na versão modificada: A. Usar na Página de Título (e nas capas, se houver alguma) um título distinto daquele do Do- cumento, e daqueles de versões anteriores (que deveriam, se houvesse algum, estarem listados na seção "Histórico do Documento"). Você pode usar o mesmo título de uma versão anterior se o editor original daquela versão lhe der permissão; B. Listar na Página de Título, como autores, uma ou mais das pessoas ou entidades responsá- veis pela autoria das modificações na Versão Modificada, conjuntamente com pelo menos cinco dos autores principais do Documento (todos os seus autores principais, se ele tiver menos que cinco); C. Colocar na Página de Título o nome do editor da Versão Modificada, como o editor; D. Preservar todas as notas de copyright do Documento; E. Adicionar uma nota de copyright apropriada para suas próprias modificações adjacente às outras notas de copyright; F. Incluir, imediatamente depois das notas de copyright, uma nota de licença dando ao público o direito de usar a Versão Modificada sob os termos desta Licença, na forma mostrada no tópico abaixo; G. Preservar nessa nota de licença as listas completas das Seções Invariantes e os Textos de Capa requeridos dados na nota de licença do Documento; H. Incluir uma cópia inalterada desta Licença; I. Preservar a seção entitulada "Histórico", e seu título, e adicionar à mesma um item dizendo pelo menos o título, ano, novos autores e editor da Versão Modificada como dados na Página de Título. Se não houver uma sessão denominada "Histórico"no Documento, criar uma dizendo o título, ano, autores, e editor do Documento como dados em sua Página de Título, então adicionar um item descrevendo a Versão Modificada, tal como descrito na sentença anterior; J. Preservar o endereço de rede, se algum, dado no Documento para acesso público a uma cópia Transparente do Documento, e da mesma forma, as localizações de rede dadas no Docu- mento para as versões anteriores em que ele foi baseado. Elas podem ser colocadas na seção "Histórico". Você pode omitir uma localização na rede para um trabalho que tenha sido publicado pelo menos quatro anos antes do Documento, ou se o editor original da versão a que ela se refira der sua permissão; K. Em qualquer seção entitulada "Agradecimentos"ou "Dedicatórias", preservar o título da 14
  • 16. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF seção e preservar a seção em toda substância e fim de cada um dos agradecimentos de contri- buidores e/ou dedicatórias dados; L. Preservar todas as Seções Invariantes do Documento, inalteradas em seus textos ou em seus títulos. Números de seção ou equivalentes não são considerados parte dos títulos da seção; M. Apagar qualquer seção entitulada "Endossos". Tal sessão não pode ser incluída na Versão Modificada; N. Não reentitular qualquer seção existente com o título "Endossos"ou com qualquer outro título dado a uma Seção Invariante. Se a Versão Modificada incluir novas seções iniciais ou apêndices que se qualifiquem como Seções Secundárias e não contenham nenhum material copiado do Documento, você pode optar por designar alguma ou todas aquelas seções como invariantes. Para fazer isso, adicione seus títulos à lista de Seções Invariantes na nota de licença da Versão Modificada. Esses títulos preci- sam ser diferentes de qualquer outro título de seção. Você pode adicionar uma seção entitulada "Endossos", desde que ela não contenha qual- quer coisa além de endossos da sua Versão Modificada por várias pessoas ou entidades - por exemplo, declarações de revisores ou de que o texto foi aprovado por uma organização como a definição oficial de um padrão. Você pode adicionar uma passagem de até cinco palavras como um Texto de Capa da Frente , e uma passagem de até 25 palavras como um Texto de Quarta Capa, ao final da lista de Textos de Capa na Versão Modificada. Somente uma passagem de Texto da Capa da Frente e uma de Texto da Quarta Capa podem ser adicionados por (ou por acordos feitos por) qualquer entidade. Se o Documento já incluir um texto de capa para a mesma capa, adicionado previamente por você ou por acordo feito com alguma entidade para a qual você esteja agindo, você não pode adicionar um outro; mas você pode trocar o antigo, com permissão explícita do editor anterior que adicionou a passagem antiga. O(s) autor(es) e editor(es) do Documento não dão permissão por esta Licença para que seus nomes sejam usados para publicidade ou para assegurar ou implicar endossamento de qualquer Versão Modificada. COMBINANDO DOCUMENTOS Você pode combinar o Documento com outros documentos publicados sob esta Licença, sob os termos definidos na seção 4 acima para versões modificadas, desde que você inclua na com- binação todas as Seções Invariantes de todos os documentos originais, sem modificações, e liste todas elas como Seções Invariantes de seu trabalho combinado em sua nota de licença. O trabalho combinado precisa conter apenas uma cópia desta Licença, e Seções Invariantes Idênticas com multiplas ocorrências podem ser substituídas por apenas uma cópia. Se houver múltiplas Seções Invariantes com o mesmo nome mas com conteúdos distintos, faça o título de 15
  • 17. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF cada seção único adicionando ao final do mesmo, em parênteses, o nome do autor ou editor origianl daquela seção, se for conhecido, ou um número que seja único. Faça o mesmo ajuste nos títulos de seção na lista de Seções Invariantes nota de licença do trabalho combinado. Na combinação, você precisa combinar quaisquer seções entituladas "Histórico"dos diver- sos documentos originais, formando uma seção entitulada "Histórico"; da mesma forma combine quaisquer seções entituladas "Agradecimentos", ou "Dedicatórias". Você precisa apagar todas as seções entituladas como "Endosso". COLETÂNEAS DE DOCUMENTOS Você pode fazer uma coletânea consitindo do Documento e outros documentos publicados sob esta Licença, e substituir as cópias individuais desta Licença nos vários documentos com uma única cópia incluida na coletânea, desde que você siga as regras desta Licença para cópia exata de cada um dos Documentos em todos os outros aspectos. Você pode extrair um único documento de tal coletânea, e distribuí-lo individualmente sob esta Licença, desde que você insira uma cópia desta Licença no documento extraído, e siga esta Licença em todos os outros aspectos relacionados à cópia exata daquele documento. AGREGAÇÃO COM TRABALHOS INDEPENDENTES Uma compilação do Documento ou derivados dele com outros trabalhos ou documentos se- parados e independentes, em um volume ou mídia de distribuição, não conta como uma Ver- são Modificada do Documento, desde que nenhum copyright de compilação seja reclamado pela compilação. Tal compilação é chamada um "agregado", e esta Licença não se aplica aos outros trabalhos auto-contidos compilados junto com o Documento, só por conta de terem sido assim compilados, e eles não são trabalhos derivados do Documento. Se o requerido para o Texto de Capa na seção 3 for aplicável a essas cópias do Documento, então, se o Documento constituir menos de um quarto de todo o agregado, os Textos de Capa do Documento podem ser colocados em capas adjacentes ao Documento dentro do agregado. Senão eles precisarão aparecer nas capas de todo o agregado. TRADUÇÃO Tradução é considerada como um tipo de modificação, então você pode distribuir traduções do Documento sob os termos da seção 4. A substituição de Seções Invariantes por traduções requer uma permissão especial dos detentores do copyright das mesmas, mas você pode incluir traduções de algumas ou de todas as Seções Invariantes em adição às versões orignais dessas Seções Invariantes. Você pode incluir uma tradução desta Licença desde que você também in- clua a versão original em Inglês desta Licença. No caso de discordância entre a tradução e a 16
  • 18. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF versão original em Inglês desta Licença, a versão original em Inglês prevalecerá. TÉRMINO Você não pode copiar, modificar, sublicenciar, ou distribuir o Documento exceto como expres- samente especificado sob esta Licença. Qualquer outra tentativa de copiar, modificar, sublicen- ciar, ou distribuir o Documento é nula, e resultará automaticamente no término de seus direitos sob esta Licença. Entretanto, terceiros que tenham recebido cópias, ou direitos de você sob esta Licença não terão suas licenças terminadas, tanto quanto esses terceiros permaneçam em total acordo com esta Licença. REVISÕES FUTURAS DESTA LICENÇA A Free Software Foundation pode publicar novas versões revisadas da Licença de Documen- tação Livre GNU de tempos em tempos. Tais novas versões serão similares em espirito à versão presente, mas podem diferir em detalhes ao abordarem novos porblemas e preocupações. Veja http://www.gnu.org/copyleft/. A cada versão da Licença é dado um número de versão distinto. Se o Documento especificar que uma versão particular desta Licença "ou qualquer versão posterior"se aplica ao mesmo, você tem a opção de seguir os termos e condições daquela versão específica, ou de qualquer versão posterior que tenha sido publicada (não como rascunho) pela Free Software Foundation. Se o Documento não especificar um número de Versão desta Licença, você pode escolher qualquer versão já publicada (não como rascunho) pela Free Software Foundation. ADENDO: Como usar esta Licença para seus documentos Para usar esta Licença num documento que você escreveu, inclua uma cópia desta Licença no documento e ponha as seguintes notas de copyright e licenças logo após a página de título: Copyright (c) ANO SEU NOME. É dada permissão para copiar, distribuir e/ou modificar este documento sob os termos da Licença de Documentação Livre GNU, Versão 1.1 ou qualquer versão posterior publicada pela Free Soft- ware Foundation; com as Seções Invariantes sendo LISTE SEUS TÍTULOS, com os Textos da Capa da Frente sendo LISTE, e com os Textos da Quarta-Capa sendo LISTE. Uma cópia da li- cença está inclusa na seção entitulada "Licença de Documentação Livre GNU". Se você não tiver nenhuma Seção Invariante, escreva "sem Seções Invariantes"ao invés de dizer quais são invariantes. Se você não tiver Textos de Capa da Frente, escreva "sem Textos de Capa da Frente"ao invés de "com os Textos de Capa da Frente sendo LISTE"; o mesmo para os Textos da Quarta Capa. Se o seu documento contiver exemplos não triviais de código de programas, nós recomenda- mos a publicação desses exemplos em paralelo sob a sua escolha de licença de software livre, 17
  • 19. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF tal como a GNU General Public License, para permitir o seu uso em software livre. 18
  • 20. Parte IV Planejamento em desenvolvimento de sistemas 19
  • 21. Capítulo 1 Planejamento em desenvolvimento de sistemas Um software é muito mais que um programa de computador. É o resultado de um conjunto de atividades e ferramentas de planejamento, desenvolvimento e gerência, e o estudo e uso das melhores dessas atividades é conhecido como Engenharia de software. 20
  • 22. Capítulo 2 Plano de ensino 2.1 Objetivo Disponibilizar ao usuário conhecimentos acerca de planejamento de sistemas. 2.2 Público Alvo Usuários finais ou novatos que desejam se iniciar na área de engenharia de software. 2.3 Pré-requisitos Os usuários deverão ser, necessariamente, familiarizados com o padrão de modelagem UML e possuir algum conhecimento em programação, além de ser desejavel o conhecimento de projeto modelado a objeto. 2.4 Descrição O curso será realizado na modalidade Educação a Distância e utilizará a Plataforma Moodle como ferramenta de aprendizagem. O curso tem duração de uma semana e possui um conjunto de atividades (lições, fóruns, glossários, questionários e outros) que deverão ser executadas de acordo com as instruções fornecidas. O material didático estará disponível on-line de acordo com as datas pré-estabelecidas em cada tópico. Esse assunto é dinâmico e pode ser que alguma coisa de desatualize com o tempo. 2.5 Metodologia O curso está dividido da seguinte maneira: 2.6 Cronograma • Introdução; 21
  • 23. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF • Práticas de planejamento - Visão geral; • Práticas de planejamento; • Introdução às disciplinas de um projeto; • Disciplinas de um projeto. As lições contém o contéudo principal. Elas poderão ser acessadas quantas vezes forem neces- sárias, desde que esteja dentro da semana programada. Ao final de uma lição, você receberá uma nota de acordo com o seu desempenho. Responda com atenção às perguntas de cada lição, pois elas serão consideradas na sua nota final. Caso sua nota numa determinada lição for menor do que 6.0, sugerimos que você faça novamente esta lição. Ao final do curso será disponibilizada a avaliação referente ao curso. Tanto as notas das lições quanto a da avaliação serão consideradas para a nota final. Todos os módulos ficarão visíveis para que possam ser consultados durante a avaliação final. Aconselhamos a leitura da "Ambientação do Moodle"para que você conheça a plataforma de En- sino a Distância, evitando dificuldades advindas do "desconhecimento"sobre a mesma. Os instrutores estarão a sua disposição ao longo de todo curso. Qualquer dúvida deverá ser enviada no fórum. Diariamente os monitores darão respostas e esclarecimentos. 2.7 Programa O curso planejamento desenvolvimento de sistemas oferecerá o seguinte conteúdo: • estudo das praticas mais corriqueiras em engenharia de software. 2.8 Avaliação Toda a avaliação será feita on-line. Aspectos a serem considerados na avaliação: • Iniciativa e autonomia no processo de aprendizagem e de produção de conhecimento; • Capacidade de pesquisa e abordagem criativa na solução dos problemas apresentados. Instrumentos de avaliação: • Participação ativa nas atividades programadas. • Avaliação ao final do curso. • O participante fará várias avaliações referente ao conteúdo do curso. Para a aprovação e obtenção do certificado o participante deverá obter nota final maior ou igual a 6.0 de acordo com a fórmula abaixo: • Nota Final = ((ML x 7) + (AF x 3)) / 10 = Média aritmética das lições • AF = Avaliações 22
  • 24. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 2.9 Bibliografia Este curso foi inspirado nos slides de aula do professor da UnB Doutor Ricardo Starciarini Puttini da disciplina Metodologia de desenvolvimento de software ministrada no departamento de engenharia elétrica. 23
  • 25. Capítulo 3 Introdução 3.1 Conceitos iniciais Produto: um objeto é desenvolvido tendo em vista as necessidades do cliente (no caso, o próprio software). Nota: eventualmente no decorrer do curso pode ser usado como sinônimo do próprio software. Serviço: atividade realizada por mão-de-obra qualificada também tendo em vista alguma ne- cessidade específica. Processo: seqüência de etapas pelo qual a produção de um produto ou serviço passa. Projeto: é a prática que objetiva a criação de um serviço ou produto. 3.2 Exemplo de sistema de informação Antes de entrarmos no fascinante mundo da engenharia de software, vamos à motivação para nosso curso: um sistema!!!! Podemos tomar como exemplo uma loja virtual. Atualmente já se tor- nou corriqueiro utilizar uma loja virtual, mas há duas gerações atrás... Imagine quão maravilhoso para uma pessoa que viveu no inicio do século passado é uma loja virtual: você se senta à frente de uma máquina, manipula-a e dentro de alguns dias tem um produto em casa. Esse exemplo é interessante pois diversas atividades por trás desse ato de pedir um produto e ele chegar não são claras para o usuário. Você fornece seu número de cartão de crédito mas por trás disso temos um outro sistema (banco) que interage com o nosso. Ao pedir seu produto, outro sistema (correios) é acionado afim de entregá-lo em sua casa. Um bom projetista deve conceber o produto levando em consideração a interação entre os diversos sistemas, e ao mesmo tempo projetar o software de forma que essas interações pareçam o mais transparentes e naturais possíveis para o usuário. 24
  • 26. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 3.3 Considerações É importante conceber o software como um produto, todavia trata-se de um produto intangí- vel. Sendo assim, a prática de desenvolvimento de sistemas necessita de documentos para que possamos acompanhar sua evolução. Isso causa problemas na medida em que estes documen- tos necessitam de tempo para sua aprovação. O tempo é algo crítico na produção de software, portanto nota-se que boas práticas de engenharia de software muitas vezes têm também des- vantagens. Isso mostra como a produção de software ainda esta "engatinhando"e considerações a acerca da eficácia de modelos de engenharia de software podem vir à tona, com alguma razão até. Deve-se enfatizar o papel de um projeto de software também fora da esfera técnica: um proje- tista de software deve estar atento a questões éticas, profissionais e sociais. Isso é uma temática bastante polêmica: como saber o que é certo ou errado num mundo tão complexo como o de hoje? Apenas como reflexão, jamais com intuito de condenar ninguém, podemos colocar o de- senvolvimento de sistemas militares em pauta. Vale a pena refletir um pouco sobre algumas questões como essa. Como aspectos éticos, não restringindo apenas a esses, pode-se considerar quesitos como: confidencialidade, competência, transparência, direito de propriedade intelectual e finalidades do uso do computador. É de conhecimento de todos que atualmente atividades relacionadas ao desenvolvimento de sistemas consistem em parte bem significativa do PIB das nações, principalmente daquelas ditas de primeiro mundo. Além do desenvolvimento, contudo, o que onera muito um software é sua manutenção, sobretudo para sistemas de vida longa. O planejamento no desenvolvimento de sis- temas tem como objetivo tornar o desenvolvimento e manutenção do software economicamente viável. 3.4 Problemas e mitos Falemos agora de alguns problemas muito comuns que envolvem a atividade de planejamento. O primeiro é em relação à imprecisão das estimativas de prazo. Isso ocorre, via de regra, quando no projeto não se dedica tempo para capturar dados sobre a atividade de desenvol- vimento. Mais adiante veremos práticas que enfatizam a captura desses dados. A discussão anterior é válida também no que diz respeito a estimativa de custos. Outro problema freqüente é no que diz respeito à produtividade do pessoal de desenvolvi- mento, que usualmente não está no mesmo patamar da demanda pelos serviços por eles pres- tados. Como o que o cliente quer é sempre de certa forma vago, nunca se consegue estimar com precisão a priori qual a carga de serviço que será demandada pelos profissionais da área de desenvolvimento. A qualidade de software também geralmente não é plenamente satisfeita, parâmetros consis- tentes de garantia de qualidade de software surgiram apenas recentemente. 25
  • 27. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Como dito anteriormente, a manutenção é bastante cara. Isso é conseqüência de um plane- jamento que não leva em conta a facilidade de manutenção. Isso deixa mais caro o processo de fabricação de um software. O pessoal pode falhar durante o projeto. Gerente sem background em software, falta de treinamento e principalmente resistência a mudanças aos fatores que devem ser evitados para afugentar o fracasso do seu projeto. Existem também um conjunto de lendas acerca do desenvolvimento de software que só ser- vem para desinformar as partes interessadas no projeto. Seria interessante analisar algumas dessas lendas. "Se a equipe está com os prazos atrasados, é conveniente contratar mais programadores e facilmente tirar o atraso."Análise: contratar mais pessoas, à medida em que estas tem que ser inseridas no projeto podem atrasar ainda mais. Somente com planejamento isso pode ocorrer. "Os objetivos devem ser definidos em linhas gerais e com o decorrer do projeto os detalhes vão sendo acrescentados."Análise: a coleta de requisitos é fundamental, causa primordial de fra- casso de projetos. "O cliente pensa: como o próprio nome indica, o software é flexivel e portanto mudanças no projeto do software podem ser realizadas de forma tranqüila."Análise: não ha nada mais falso, se uma mudança for solicitada no final do projeto com certeza vai gastar mais tempo. "O software fica pronto quando o programa funciona."Análise: estatísticas da indústria mos- tram que aproximadamente 60% dos recursos gastos com o programa ocorrem após a primeira entrega para o cliente. "A qualidade do software só pode ser mensurada com o programa funcionando."Análise: o programa é somente um item do software, que inclui diversos outros produtos durante a constru- ção e manutenção. 26
  • 28. Capítulo 4 Práticas de planejamento - Visão geral 4.1 Definição de engenharia de software Área do conhecimento que se usa de práticas de engenharia para produção sistemática e econômica de um software confiável e que trabalhe de forma eficiente. A partir dessa definição, podemos inferir algumas características do software como produto. Como a definição já indica, o software não deve ser feito de maneira desordenada, sem planeja- mento. Pelo contrário, valendo-se de práticas de engenharia, procura-se desenvolver o produto de maneira sistemática, ou seja, de acordo com o método. Isso é essencial em grandes projetos de software, pois se não houvesse planejamento, qualquer erro poderia colocar todo um projeto (e muito dinheiro) em risco. O software também não é como um carro onde se pegam peças, juntam-nas para formar o produto e depois pode-se vendê-lo em série. De forma geral, um software é feito sob medida para determinado cliente: cada empresa tem suas necessidades e cabe ao projetista conceber um sistema que satisfaça-as da maneira mais eficiente possível, ainda que existam softwares de uso genérico vendidos em grande escala. 4.2 Componentes de um software Os componentes de um software são: • instruções: termo um pouco abstrato, relacionado com função e desempenho quando se executa; • estrutura de dados: elemento responsável por organizar e manipular adequadamente a informação nos programas; • documentos: descrevem o uso dos programas. 27
  • 29. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 4.3 Procedimentos e atributos de qualidade Métodos: especificam detalhadamente como construir o software; Ferramentas: auxílio automatizado aos métodos. Exemplo: ferramenta CASE Jude; Procedimentos: execuções de cada método em uma determinada seqüência que ao final produzem certo produto; Temos os seguintes atributos críticos de qualidade de software: • Eficiência: o software deve otimizar os recursos do sistema afim de que não haja desperdí- cio; • Utilidade: relativo à documentação e interface gráfica; • Fácil manutenção: com o decorrer do projeto, o software deve evoluir de acordo com mu- danças no requisito; • Dependência: um erro no software não deve causar prejuízos. A prioridade desses atributos varia de produto para produto, cabendo ao projetista dentro do contexto do ambiente defini-las. 4.4 Etapas de engenharia de software A engenharia de software pode ser dividida nessas áreas, independentemente do paradigma utilizado: definição, desenvolvimento e manutenção. A definição está relacionada com "o quê"o software deve ser; aqui se encaixam práticas como análise do sistema, análise de requisitos e planejamento de projeto. Análise do sistema: estabelece a função de cada componente num sistema, atribuindo ao final, a função que o software realizará. Planejamento do projeto de software: análise de recursos, custos, riscos além do estabe- lecimento do trabalho da equipe. Análise de requisitos: aqui deve-se definir de maneira clara e detalhada a função do ssoftware, é aqui que de fato se estabelece o que o software deve ser. No desenvolvimento, por sua vez, o foco já é em "como"o software deve fazer aquilo que foi determinado na etapa anterior. Ao seu término, o software já deve estar em uso funcional. Etapas: projeto de software, codificação e testes de software. Projeto de software: busca reproduzir um modelo para o produto e descrever a arquitetura, as características da interface, além de algoritmos e estruturas de dados. 28
  • 30. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Nota: casualmente, o termo projeto também pode ser usado para denominar a engenharia de software como um todo, desde o início. Codificação: uma vez nessa etapa, converte-se o projeto em alguma linguagem de progra- mação para que os computadores possam executar. Testes: testa-se se o softwarepara verificar se atende aos requisitos e ao mesmo tempo pro- cura por falhas (bugs) lógicos ou funcionais Manutenção: aqui, busca-se por mudanças afim de que o produto evolua, pois é muito pro- vável que o cliente não fique plenamente satisfeito ao final da etapa de desenvolvimento. Tipos: • corretiva: correção de defeitos; • adaptativa: eventuais mudanças no ambiente exigem esse tipo de manutenção; • extensiva: aumenta as funcionalidades do produto de acordo com as que foram previa- mente estabelecidas. Além das etapas listadas abaixo, paralelamente deve-se executar atividades de proteção (con- trole) do projeto: • revisão: realizada ao término de cada etapa afim de controle de qualidade; • documentação: elaboração de documentos que expressam informações completas do pro- duto, com objetivo de facilitar o seu uso posterior; • controle de versão: controla as mudanças ocorridas no software ao longo do projeto. 4.5 Melhores práticas A essa altura do curso o aluno já deve ter se dado conta da complexidade da atividade de engenharia de software, muito além da programação. Destarte, veremos alguns métodos, co- nhecidos como melhores práticas que auxiliam a atividade do engenheiro de software. Existem outras práticas melhores, mas julga-se que o conhecimento destas já é interessante para um curso introdutório. 4.5.1 Gerência de riscos: Riscos: algo que pode afetar de forma negativa o projeto, sempre existe a possibilidade de ocorrer. Alguns exemplos: falta de pessoal bem-treinado, atrito entre a equipe, não atendimento aos requisitos mínimos de desempenho dentre diversos tipos de riscos. 29
  • 31. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Como em toda área de engenharia, deve-se dosar a questão de custo-benefício: a gerência de riscos também gera custos, ela só deve ser utilizada se as perdas geradas pelos riscos envol- vidos superam os custos com gerencia de riscos. A primeira etapa da gerência de riscos é a avaliação, onde se procura a identificação, análise e priorização dos riscos envolvidos. Feito isso, deve ser realizado o controle: planeja-se como a gerência de riscos deve agir; depois realiza-se o monitoramento de riscos e quando estes ocorrem, a solução dos riscos. Tente imaginar novos riscos que um projeto pode apresentar e visualizar no contexto do projeto como a gerência de riscos funciona de forma prática. 4.5.2 Gerência de riscos Riscos: algo que pode afetar de forma negativa o projeto, sempre existe a possibilidade de ocorrer. Alguns exemplos: falta de pessoal bem-treinado, atrito entre a equipe, não atendimento aos requisitos mínimos de desempenho dentre diversos tipos de riscos. Como em toda área de engenharia, deve-se dosar a questão de custo-benefício: a gerência de riscos também gera custos, ela só deve ser utilizada se as perdas geradas pelos riscos envol- vidos superam os custos com gerencia de riscos. A primeira etapa da gerência de riscos é a avaliação, onde se procura a identificação, análise e priorização dos riscos envolvidos. Feito isso, deve ser realizado o controle: planeja-se como a gerência de riscos deve agir; depois realiza-se o monitoramento de riscos e quando estes ocorrem, a solução dos riscos. Tente imaginar novos riscos que um projeto pode apresentar e visualizar no contexto do projeto como a gerência de riscos funciona de forma prática. 4.5.3 Gerência de configuração Artefatos: são elementos produzidos ou consumidos em uma etapa do projeto, necessaria- mente, não tangíveis. Exemplos: código-fonte, documento de requisitos,material de treinamento, etc. Tipicamente os artefatos são modificados durante o projeto e à gerência de configuração cabe o controle dessas mudanças. Por exemplo, identificar a última versão de um programa, evitar uma modificação não autorizada, controlar a situação em que há duas solicitações concorrentes de atualização no programa, entre outras situações são exemplos que ilustram a necessidade da gerencia de configuração. É uma atividade complexa, pois está relacionada com diversos outros mecanismos, como controle de versão, mapeamento das modificações ocorridas, controle de acesso de artefatos e identificação de mudanças em artefatos entre outros. Na prática, é realizada da seguinte maneira: um artefato para ser alterado é submetido a uma operação conhecida como "check-out". Uma vez aí, somente uma pessoa pode alterá-lo. É como se momentaneamente o artefato fosse retirado do sistema, numa comparação bem grosseira. Uma vez alterado, uma nova versão do artefato é produzida e agora ele volta ao sistema através de uma operação "check-in". 30
  • 32. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 4.5.4 Gerência de requisitos Está relacionado com o recolhimento, análise e gerência das modificações dos requisitos. Po- dem ocorrer problemas no contexto dos requisitos, tais como mal-entendimento, documentação incorreta e controle impreciso das modificações de requisitos. A gerência se faz necessária no sentido em que naturalmente ocorrem mudanças de requisitos ao longo do projeto, mudanças es- sas geralmente inesperadas e que afetam o palnejamento, desta forma deve-se estar preparado para elas. A forma com que essa gerência é definida é relativa e depende do cliente, pois ele vai ser a principal responsável pela mudança de requisitos. 4.5.5 Gerência com uso de métricas Usar métricas é importante pois é o suporte que serve para compararmos nosso projeto com algo.Se não temos com o que compará-lo, ficamos de certa forma sem rumo, pois não temos noção do que nosso projeto deve melhorar. Assim, podemos usar métricas de acordo com dois parâmetros. O primeiro é a nível de processo: aqui se analisa produtividade, qualidade e efici- ência na remoção de bugs. Também pode-se avaliar a nível de produto: tamanho, complexidade do código e funcionalidade. Tendo esses seis elementos como base já é possível ter uma melhor noção dos rumos de seu projeto. 31
  • 33. Capítulo 5 Práticas de planejamento 5.1 Planejamento de software Uma etapa de suma importância da construção do software é a de planejamento. Sem essa etapa, o termo engenharia de software perde totalmente o sentido, pois o projeto se torna de- sordenado e sem objetivos claros. As principais partes interessadas nessa etapa são o gerente de negócio, o gerente de software e a equipe de desenvolvimento. Deve abarcar o resumo do projeto, planejamento, monitoração e perfis dos profissionais. No resumo, deve-se estabelecer o nome do projeto, o gerente, a data de início e término do projeto, os objetivos do projeto, calendário de pagamentos do cliente, compromissos firmados junto ao cliente entre outras coisas dessa tipo. No planejamento busca-se estimar os critérios e esforços a serem adotados pela equipe, o ciclo de vida, os planos de treinamento, o plano de gerenciamento de risco, discutir o ambiente de desenvolvimento, os desvios em relação ao projeto original considerados aceitáveis, dentre outros. No que concerne à monitoração, deve-se designar parte da equipe como responsável por essa etapa, descrever os procedimentos de monitoração, os aspectos monitorados e a monitora- ção de retorno do cliente. As atividades de monitoração são: aplicar os mecanismos de monitoração, executar o projeto, capturar dados e daí analisá-los e realizar previsões. Dentre os dados que podemos analisar, lista-se esforço, defeitos e tamanho. Tomemos o dado "esforço"como exemplo; submete-se cada empregado a um relatório semanal, que deve ser aprovado por um superior e não pode ser modificado após ser aprovado. Nesse relatório deve constar um código identificador do programa, do método e da atividade, as horas gastas e uma lista de atividades (diferenciando as planejadas das inesperadas). Outro dado imprescindível que deve ser monitorado é os defeitos. Num eventual relatório sobre este dado, deve aparecer o código do projeto no qual o defeito foi observado, a descrição precisa do defeito, estágio no qual foi identificado, o nome de quem identificou e o de quem é reponsável pela correção do defeito e as datas convenientes. 32
  • 34. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Os seguintes estágios do projeto são os mais propensos a encontrar defeitos, e a maioria deles são revisões por motivos óbvios: nas revisões de especificação de requisitos, plano do projeto, do projeto em si, do plano de gerência de configuração, do código e também na fase de testes. Quando planejar os perfis dos profissionais deve-se relacionar cada membro, segundo uma hierarquia estabelecida, atribuindo a cada um responsabilidades e um período específico de par- ticipação no projeto. 5.2 Modelo de processos Os processos devem ser modelados para que o gerenciamento se torne viável, e esse modelo depende de fatores como a natureza do projeto, ferramentas que serão usadas e produtos que necessitam ser entregues. Os modelos são fundamentais: distinguem o software profissional de um programa de compu- tador mais "amador", pois neste último não há distinção entre especificação, projeto e codificação. Além disso, por maior que seja a boa-vontade das partes interessadas, nunca as especificações são completas: nesse sentido aparece a importância dos modelos de processo na engenharia de software. Antes de seguirmos adiante, vamos exemplificar alguns processos: • fundamentais: processo de aquisição, fornecimento, desenvolvimento, operação e manu- tenção; • apoio: documentação, gerência de configuração, garantia de qualidade, verificação, valida- ção, revisão conjunta, auditoria e resolução de problemas; • organizacionais: gerencia, infra-estrutura, melhoria e treinamento. Funções de um processo: • oferecer padrão para realização de projetos; • definir artefatos; • sugerir práticas de documentação e diretrizes para realização de trabalhos. Benefícios de um processo bem descrito: • ajuda na comunicação entre a equipe; • estabelece funções bem definidas para cada participante; • torna o projeto mais inteligível por parte da gerência; • permite que o próprio processo seja reutilizável e que possa evoluir com o passar do tempo; • permite otimizar o treinamento. 33
  • 35. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Anteriormente em nosso curso já nos deparamos com a definição de artefato. Aqui esse conceito volta, pois no decorrer do processo os artefatos são modificados e criados ao longo do processo. Cabe aqui também diferenciar artefatos técnicos tais como: diagramas, componentes, etc; de artefatos gerenciais, de função de controle de atividades, como: planos de negócio ou planos de alocação da equipe. Durante os processos são estabelecidos perfis de acordo com habilidades de cada membro da equipe, como: analista de sistemas, revisor,dentre outros. Cada perfil é responsável pela exe- cução de atividades que resultam em artefatos. Exemplo: revisão dos casos de uso, codificação. Essas atividades são encadeadas em seqüência de forma que o artefato produzido por uma seja a entrada de outra. Pode ocorrer uma interação na qual um encadeamento (fluxo) de ativi- dades seja percorrida múltiplas vezes. Falemos agora do ciclo de vida de um processo. Processos estáticos são vantajosos no sen- tido que são mais fáceis de assimilar pela equipe e as estimativas podem ser feitas com mais previsão. Todavia, se o pessoal estiver bem treinado e bem gerenciado, processos flexíveis tor- nam o projeto muito mais dinâmico. Para tanto, existem classes de processos definidos dos quais se podem configurar processos, de acordo com o tamanho e nível de treinamento da equipe e da importância da aplicação. Essa configuração é regida por um guia de configuração, que sugere opções, atributos e alternativas de configuração. Uma prática saúdavel da engenharia de software consiste em manter uma base de dados para cada processo. A engenharia de software só atinge sua excelência com a prática, portanto o projetista deve ter uma base de dados com informações de cada projeto, para que este seja analisado quando concluído e a partir daí tirar-se valiosas conclusões a respeito de erros e acer- tos no projeto. Nessa base de dados deve-se guardar informações gerais sobre dados de monitoração (es- forço, defeitos e tamanho), relatórios sobre erros e acertos e referência para textos e documentos que foram fonte de pesquisa. Informações gerais: tamanho da equipe, ferramentas, datas, esforço, riscos. Esforços e defeitos: lista de esforços e defeitos separados por fases do projeto. Tamanho: tamanho total do código (número de linhas). Relatório de erros e acertos: podem ser escritos em subdivisões tais como: recursos humanos, especificação de requisitos, ferramentas, projeto, teste, revisões, qualidade, gerên- cia,metodologia dentre outras possíveis. Processos pessoais (PSP-personal software process): estabelecem ações a serem reali- zadas por cada pessoa, que vão realizando estas ações em pequenos programas que gradual- mente são inseridos no processo como um todo. 34
  • 36. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 5.3 Processo de desenvolvimento Este processo orienta os desenvolvedores a realizar atividades com o intuito de desenvolver um software. Aqui entra as etapas de análise de requisitos, projeto e codificação. Tradicionalmente, este processo traz as seguintes características: organização hierárquica e centralizada, trabalho em equipe, existência de um ciclo de vida, necessidade de uma adoção sistemática de processos, ou seja, características que seguem aquilo que estamos estudando ao longo de nosso curso. Por ser uma área extensa, costuma-se subdividi-la em diversas subáreas: engenharia de requisitos, especificação, projetos, testes, gerência de configuração, ou seja, aquelas áreas que já vimos um pouco a respeito. Os processos de desenvolvimento são considerados leves se são mais flexíveis, possuem poucas regras, poucos desenvolvedores com comunicação oral e mesmo ambiente físico de tra- balho. Exemplo: XP (extreme programming). Esse tipo de processo não é recomendável para sistemas de grande porte ou para sistemas desenvolvidos por equipes virtuais (fisicamente dis- tantes). É interessante no desenvolvimento realizar as tarefas de forma dinâmica, e isto é obtido atra- vés de práticas bem conhecidas da administração de empresas: agir de forma pró-ativa, comu- nicação contínua entre a equipe e o cliente entre outras coisas. Para o caso em que esteja se desenvolvendo software aberto, deve-se levar em conta que os desenvolvedores podem estar distantes fisicamente. Assim, são criadas comunidades virtu- ais para seu desenvolvimento, úteis também para uma discussão acerca das experiências com o uso do software após este ficar pronto. A gerência aqui assume cores participativas, cada um toma atividades por conta própria para realizar. As ferramentas e processos usados também não são definidas por uma só pessoa, várias partes participam da decisão. O foco é na entrega no menor tempo possível, com posteriores melhorias incrementais no produto, incentivadas pelo "feedback"dado pelos usuários. Outra característica interessante é que em projetos de software aberto os próprios desenvolvedores usufruem do software final. A maioria das distribuições são operacionais, mas instáveis, e a estabilidade vem de forma gradual e iterativa. Por fim, as ferramentas são preferencialmente abertas e a informação é disponibilizada de forma transpa- rente. 5.4 Ciclos de vida A vida de um software geralmente é dividida em ciclos, o primeiro para desenvolvimento e os demais para manutenção. Ao final de cada ciclo obtemos uma versão do produto. O ciclo pode ser seqüencial ou iterativo. Ao término de cada ciclo de vida, temos modelos que descrevem a versão do software: mo- delos de caso de uso, análise, projeto, implementação, implantação, testes e arquitetura. Para cada ciclo, existem também fases, que resultam em modelos e documentação: concepção, ela- boração, construção e transição. 35
  • 37. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF O modelo seqüencial é o clássico da engenharia de software. Nesse tipo de ciclo, as ativida- des de engenharia de software são executadas passo-a-passo, uma etapa em seguida da outra, iniciando na análise de requisitos e findando-se com a verificação do produto já desenvolvido. No final de cada etapa, há uma verificação dos artefatos produzidos: caso julgue-se satisfatório, passa-se para a seguinte, caso contrário, deve-se refinar mais essa etapa. O modelo iterativo utiliza-se de outra abordagem: apenas com um conjunto limitado de re- quisitos (parciais) inicia-se o desenvolvimento, e com o decorrer do projeto novos requisitos são determinados. Essa abordagem para projetos grandes via de regra se mostra mais eficaz, pois com o início do desenvolvimento tem-se uma idéia mais madura de quais requisitos o software deve atender, do foco do projeto e arquitetura utilizada. Os riscos são catalogados logo no começo do projeto e as perdas estão relacionadas apenas com o custo de cada iteração. Se o modelo utilizado fosse o seqüencial, mudanças nos requisitos poderiam acarretar em mudanças trágicas para o projeto, o que não ocorre no caso iterativo, que não só prevê como "pede"mudanças nos requisitos. Um fato curioso é que se se julgar pertinente, pode-se iniciar uma iteração sem que a anterior termine. Em iterações, o planejamento não ocorre de forma única: nas fases de concepção e elabo- ração, a cada iteração temos que planejá-las, contudo para as demais fases elas só são bem planejadas nas primeiras iterações, ao final quase não há planejamento substancial. O planeja- mento leva em conta, obviamente, os resultados das iterações anteriores, onde se avalia o estado dessa última iteração, além de mais uma vez catalogar riscos para essa iteração. Como exemplo pode-se citar o modelo espiral, que enfatiza a análise dos riscos e também uma forte comunicação com o cliente para melhor definição dos requisitos. No modelo espiral, inicialmente reuni-se com o cliente para definir os requisitos; depois as etapas seguem (com foco nos riscos), até a liberação. Em seguida é feita uma verificação do cliente, que via de regra exigirá novos requisitos e de novo passam-se por aquelas etapas, até nova avaliação do cliente. Como na primeira iteração toda a base do produto já foi feita, cada iteração adicional costuma gastar menos tempo que a anterior, por isso o modelo é conhecido como espiral. Cabe um alerta: se utilizar o modelo espiral, o analista de riscos deve ser extremamente eficiente, pois é isso que sustenta esse modelo. 5.5 Técnicas de quarta geração A motivação dessas técnicas é tentar especificar um software a um computador em uma linguagem tão próxima da humana quanto possível, ainda que isso esteja longe do ideal. A especificação do software deve ser realizada em uma linguagem de alto nível, e disso nasce o código fonte do software. Para conceber um ambiente que usa técnicas da quarta geração devemos nos valer das seguintes ferramentas: linguagens não procedimentais para manipulação de banco de dados, definição das telas, geração de códigos, boa capacidade gráfica, suporte a planilhas eletrônicas, etc. A expectativa ao se usar esse conjunto de técnicas é ganho em tempo e produtividade. 36
  • 38. Capítulo 6 Introdução às disciplinas de um projeto 6.1 Arquitetura É a arquitetura que dita os elementos mais relevantes de um sistema, muito útil para entender e lidar com o sistema. Os rumos da arquitetura são ditados por elementos como o software do sistema, versões antigas, padrões que devem ser seguidos, etc. Como se estabelece uma arquitetura? Estabelecida nas fases de concepção e elaboração, primeiro define-se softwares, middleware e políticas adotadas. Requisitos não funcionais são tratados nessa etapa, bem como caracterís- ticas bem específicas da aplicação. Casos de uso devem ser analisados para o estabelecimento da arquitetura. Após se estabelecer a arquitetura, o restante dos casos de uso devem ser de fato implementados na fase de construção, e uma vez implementados, a arquitetura deve ser aprimorada. 6.2 Fases 6.2.1 Concepção Atividade que objetiva uma visão inicial do sistema, contendo objetivos para os usuários, mo- delo com casos de uso, identificação de riscos, estimativa de custos e um planejamento para a próxima fase (elaboração). Nesta fase, deve-se reunir número substancial de informações coletadas antes do projeto, organizá-las e notar as informações que ainda faltam (tipicamente, vão faltar nesse início infor- mações sobre requisitos de performance, riscos e custos). Deve-se formar sua equipe nessa fase inicial: gerente de projeto, desenvolvedores, enge- nheiro de teste, etc. A concepção foi satisfatória se alguns resultados foram atingidos, como: lista de requisitos, primeiras versões dos modelos de caso de uso, análise, projeto e arquitetura, lista parcial de riscos, versão inicial do plano de negócios, etc. 6.2.2 Elaboração Esta fase objetiva concluir todo o estabelecimento de requisitos, efetivá-los por meio do caso de uso, estabelecer a arquitetura e estabelecer estratégias para controle de riscos. 37
  • 39. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF Dentre as ações relacionadas com essa etapa, lista-se planejamento, concluir o restante da equipe e adequar o ambiente de desenvolvimento. Ao fim dessa fase, deve-se atingir uma nova versão dos modelos, uma arquitetura básica bem sólida e descrita, relatórios mais específicos sobre riscos e justificativa econômica. 6.2.3 Construção Essa é a fase que consome a maioria dos recursos que são gastos ao longo do projeto. Deve-se executá-la visando a um sistema para operação no ambiente do usuário, coerente com a arquitetura, aprimorar modelos de análise, projeto e implementação, detalhar os últimos casos de uso, integrar e testar o sistema. Deve haver um planejamento da construção de acordo com o fim da elaboração e critérios subjetivos para avaliação desta fase. Esses critérios devem englobar os seguintes resultados: plano visando a última fase, software já executável, modelos, arquitetura, manual para os usuários e atualização do plano de negócios. 6.2.4 Transição A idéia por trás dessa fase é tomar o software executável da fase anterior, fazer dele uma versão beta, disponibilizá-lo para um conjunto de usuários que reportarão erros que serão corri- gidos, resultando numa versão do software. Além disso, deve-se produzir um manual do software com o objetivo de auxiliar o usuário a se familiarizar ao produto. Aqui deve-se levar em conta principalmente se os testes feitos com a versão beta estão con- siderando os requisitos iniciais e se as partes usuário e cliente estão satisfeitos com o produto. Esta fase deve disponibilizar o software executável, documentos legais, modelos completos, descrição da arquitetura, os manuais para usuários e administradores, material para treinamento, etc. 6.3 Disciplinas de um projeto Consiste nas atividades sistemáticas que devem ser realizadas no decorrer das três fases vistas anteriormente. Espera-se que as fases sejam mais contextualizadas a partir do estudo das disciplinas. São elas: • Coleta e análise de requisitos; • Projeto; • Implementação; • Teste. Veremos cada uma delas separadamente. 38
  • 40. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 6.4 Coleta de requisitos Consiste, basicamente, em descobrir o que o cliente espera que seja desenvolvido. Aparece nas três primeiras fases. Requisitos são elementos intangíveis que determinam como o sistema deve responder aos usuários. Não englobam aspectos do projeto. O foco é em determinar o quê precisa ser feito. Uma coleta de requisitos eficiente facilita e muito a fase de desenvolvimento: sem ela, prova- velmente o software executável passaria longe do inicialmente pretendido pelo usuário. Não é uma atividade trivial pois existem partes diversas interessadas no sistema (cliente, usuário, administrador, etc) que podem ter interesses conflitantes. Na concepção, a maioria dos casos de uso são catalogados, e os primordiais detalhados. Na elaboração a preocupação é com os casos de uso a nível de arquitetura e na construção, os restantes casos de uso são detalhados. Fatores que dificultam a coleta de requisitos: mudanças freqüentes nas regras de negócio, no pessoal e na tecnologia. Os erros mais comuns na especificação são: incluir aspectos do projeto, detalhamento de como se deve implementar algo, uso de vocabulário técnico e requisitos vagos. A coleta de requisitos gira em torno da comunicação. Deve-se interagir com usuários, espe- cialistas, sua equipe de desenvolvimento, o maior número possível de partes interessadas a fim de se catalogar os requisitos da forma mais eficiente possível. Com a coleta de requisitos, é interessante que se gere os seguintes artefatos: modelos de caso de uso, arquitetura (bem primitiva), glossário e um protótipo da interface com o usuário. Modelos de caso de uso: é o principal artefato gerado aqui. Deve ser gerado levando em conta o que o sistema faz para cada tipo de usuário que iterage com ele. Glossário: é um documento que define termos utilizados na descrição do sistemas, útil para padronizar uso de conceitos em documentos posteriores. Protótipo de interface com usuário: facilita a descrição dos relacionamentos entre usuário e sistema, é como um complemento para os casos de uso, uma espécie de especificação de interface gráfica. Essa disciplina apresenta os seguintes perfis: • especificador do caso de uso: trabalhando em contato com o usuário, descreve minuciosa- mente os casos de uso; • projetista das interfaces: define formato das interfaces gráficas, responsável por conceber alguns protótipos de caso de uso; • arquiteto: concebe arquitetura para os casos de uso. 39
  • 41. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 6.5 Análise de requisitos Nesta disciplina, busca-se analisar os requisitos com uma profundidade maior, e estes são tratados de forma a tentar conceber a estrutura do sistema. Aqui, tenta-se sanar algumas coisas que porventura faltaram na disciplina anterior. A intera- ção entre os diversos casos de uso e possíveis redundâncias encontradas entre eles são apara- das, e busca-se uma descrição maior do sistema pois na disciplina anterior o uso da linguagem corriqueira pode ter feito com que algumas características do sistemas não tenham sido bem de- talhadas. A seguir acompanhamos a descrição de alguns artefatos gerados na análise: Modelo Busca permitir aos desenvolvedores, através de linguagem usada por eles, compreender como implementar o software, sob o ponto de vista interno do sistema. É um artefato usado no projeto e no desenvolvimento e estabelece como se implementarão os casos de uso. Pode-se optar por não produzir este artefato, desde que se adote uma linguagem extremamente precisa nos casos de uso. Classe Artefato também produzido no projeto, aqui ela adquire características mais conceituais. Busca representar os subsistemas no âmbito do modelo, voltando-se para os requisitos funcionais. Realização dos casos de uso Este artefato descreve, através de texto e diagramas, como um caso de uso é implementado por classes e objetos. Descrição da arquitetura É um artefato que descreve os demais artefatos dessa disciplina. O modelo aqui é "que- brado"em pacotes e descrito num relacionamento entre pacotes. Aqui se descreve também as principais classes e as mais primordiais realizações dos casos de uso. Perfis da análise de requisitos: • arquiteto: perfil responsável pela qualidade do modelo de análise (se está relevante e com- pleto) e também pela descrição da arquitetura. • engenheiro de caso de uso: responsável pela integridade das realizações do caso de uso e pela relevância dos diagramas que descrevem e realizam os casos de uso. • engenheiro de componentes: é o perfil cuja função é descrever o relacionamento entre as classes, de forma a garantir que este relacionamento preserve a determinação dos casos de uso. 40
  • 42. Capítulo 7 Disciplinas de um projeto 7.1 Projeto Nesta disciplina, os requisitos devem ser aprofundados, objetivando principalmente "preparar o terreno"para a implementação. Aqui deve-se ter sempre em mente as restrições devido às tecnologias usadas, buscar que a captura dos requisitos deva ser feita de modo à implementação não alterar a idéia do projeto e que ela possa ser feita por equipes independentes. 7.1.1 Artefatos Modelo, classe, realização de casos de uso como na análise, mas seguindo diretrizes que buscam atingir os objetivos acima. Subsistemas de projeto: constituídos por subsistemas como classes e interfaces, ordenam os artefatos de um modelo. Modelo de implantação: faz o mapeamento entre o software e o hardware. Vale-se de nós para representar computadores e de links entre esses nós para representar canais de comunica- ção. Busca também descrever configurações de teste e simulação. Descrição da arquitetura: Os artefatos descritos na arquitetura a nível de projeto são: inter- face de subsistemas, relacionamento entre interfaces, classes, funcionalidades críticas e modelo de implantação. 7.1.2 Perfis arquiteto: verifica consistência dos modelos de acordo com o que foi feito nos casos de uso e análise; engenheiro de caso de uso, engenheiro de componentes. De forma suscinta, as atividades relacionadas a essa disciplina são: projeto de caso de uso, classe, subsistema e arquitetura, projetos esses a nível de orientação a objeto. 41
  • 43. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 7.2 Implementação Componentes: é a implementação física de elementos do projeto, sendo que um compo- nente pode implementar mais de um elemento. Tipos de componentes: executáveis, tabelas, bibliotecas, arquivos. Componentes são artefatos. Visão geral da disciplina: implementa classes do projeto, realiza testes de cada unidade de componente, desenvolve programas executáveis pela integração de componentes. Artefatos: • modelo de implementação: baseado em componentes, descreve relações de dependência entre eles; • descrição da arquitetura: decompõe modelo de implementação em subsistemas, compo- nentes e relacionamentos; • subsistemas: responsáveis por organizar artefatos do modelo de implementação, suas fun- cionalidades vem à tona por meio de interfaces. Perfis: • arquiteto: mapeia os componentes em nós e verifica se o modelo de implementação está correto; • engenheiro de componentes: responsável por manter íntegro cada subsistema e manter o código dos componentes; • integrador: o responsável pelo planejamento das interações a nível de análise orientada a objeto. Vejamos algumas atividades típicas desta disciplina: • integração do sistema: através de um planejamento, integra a versão do software que emerge da implementação; • implementação de elementos: implementa-se componentes, classes e interfaces; • implementação de subsistemas: implementa-se os subsistemas certificando-se de que o plano de integração seja satisfeito; • testes das unidades: testa-se cada componente do sistema, e avalia-se o resultado destes testes. 42
  • 44. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 7.3 Testes 7.3.1 Introdução Planejamento dos testes são necessários a cada iteração, testes de integração e de sistema. Busca-se o que testar, como fazer os testes, realizar os testes e analisar resultados. 7.3.2 Artefatos • modelo de teste: realiza minúcias de como componentes executáveis são testados e em que contexto acontecem estes testes; • caso de teste: descreve como testar , especificado de antemão o que deve ser testado; • procedimento de teste: como colocar em prática os casos de teste; • componentes de teste: automatiza os procedimentos de teste; • plano de teste: descreve estratégias de teste com uso de cronogramas; • defeito: artefato que indica problemas no software, consta de algo que não é normal no sistema; • avaliação de teste: análise dos testes. 7.3.3 Perfis • projetista de teste: é o perfil que controla a relevância dos testes a serem realizados, deter- minando focos na realização dos testes. Adota um cronograma para realização dos testes e é ele o responsável pelos procedimentos e casos de teste; • engenheiro de componente: cuida dos componentes de teste; • testador: existem dois tipos • testador de sistema: realiza aqueles testes antes da conclusão da iteração, está mais preo- cupado com a integração usuário e sistema, por isso não se interessa pelo funcionamento interno; • testador de integração: é ele que realiza os testes do funcionamneto interno do sistema, os testes de integração. Durante a análise de teste, eventualmente podemos adotar métricas para avaliar a qualidade dos testes que foram feitos. Além disso, devemos comparar se os resultados obtidos estão de acordo com o plano de teste. 43
  • 45. CDTC Centro de Difusão de Tecnologia e Conhecimento Brasília/DF 7.4 Protótipo Usados quando se quer um modelo do sistema, geralmente em casos onde o cliente define o software em linhas gerais mas ainda não detalhou especificamente o mecanismo de processa- mento de dados que ele almeja. Os prototipos servem como apoio para definição dos requisitos. As fases da construção de um prototipo sao análogas as de um sistema completo, porem sempre mais rápidas e menos detalhadas. Os requisitos são definidos de acordo com aquela característica de superficialidade, assim é realizado um rápido projeto seguido de implementação para que posteriormente cliente e proje- tista se reúnam e vejam detalhadamente o que o cliente quer, ocorrendo dessa forma o que se denomina de refinamento de requisitos. Todavia, cautela deve ser adotada com a estratégia do uso de protótipos pois podemos vir a ter problemas tanto por parte do cliente como do projetista. O cliente pode querer que seu produto seja já o protótipo, talvez por pressa, e não entender que na verdade o software ainda será construído, que melhorias ainda devem ser realizadas. O desenvolvedor por sua vez pode se acostumar com ideia de prototipo e perder o foco na qualidade, adotando estrategias que valem para prototipos no software final. 44