Buscar

Introdução à Engenharia de Software

Prévia do material em texto

41
Introdução à Engenharia de Software – As Principais Disciplinas
Introdução à 
Engenharia de Software
Unidade II – As Principais Disciplinas
Pedro de Alcântara dos Santos Neto
pasn@ufpi.edu.br
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Processo para Aplicativos 
Extensíveis Interativos:
Øprocesso de desenvolvimento de 
software;
Øfoco educacional;
Øorientado a objetos;
Øbaseado em paradigmas de 
grande difusão:
– UML, CMM, UP, IEEE 
software standards.
42
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Objetivos de um processo educacional:
Øexposição às técnicas mais relevantes;
Øtreinamento eficaz e eficiente.
§ Públicos:
Øcursos acadêmicos;
Øprogramas de treinamento;
Øorganizações em via de melhoria de processos.
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Nomenclatura do Praxis.
ØFase:
– divisão maior de um processo;
– para fins gerenciais;
– corresponde aos pontos principais de aceitação;
– por parte do cliente.
43
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Fases do Praxis.
ØConcepção:
– decisão de desenvolver um produto;
ØElaboração:
– dimensionamento firme;
ØConstrução:
– entrega de produto completo;
ØTransição:
– passagem ao ambiente de uso.
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Nomenclatura do Praxis.
ØFluxo:
– subprocesso caracterizado por um tema;
– Podem ser Técnicos
» Requisito, Análise, Desenho, Implementação, Teste
– ou Gerenciais
» Gestão de projetos, Gestão da qualidade
44
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
Iter.\ Fluxo RQ AN DS TS IM GP GQ ES EP Total %
LR 5,50% 3,00% 0,70% 0,10% 0,30% 0,30% 0,10% 0,00% 0,00% 10,00%
AR 2,00% 7,50% 3,50% 0,40% 1,00% 0,40% 0,20% 0,00% 0,00% 15,00%
DI 0,30% 1,50% 8,50% 4,00% 5,00% 0,40% 0,30% 0,00% 0,00% 20,00%
L1 0,20% 0,20% 2,00% 4,00% 8,00% 0,40% 0,20% 0,00% 0,00% 15,00%
L2 0,20% 0,20% 2,00% 4,00% 8,00% 0,40% 0,20% 0,00% 0,00% 15,00%
L3 0,10% 0,10% 1,00% 3,20% 5,00% 0,40% 0,20% 0,00% 0,00% 10,00%
L4 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00% 0,00%
TA 0,00% 0,00% 0,00% 3,00% 1,60% 0,20% 0,20% 0,00% 0,00% 5,00%
TB 0,00% 0,00% 0,00% 3,00% 1,00% 0,20% 0,20% 0,60% 0,00% 5,00%
OP 0,00% 0,00% 0,00% 3,00% 0,60% 0,20% 0,20% 1,00% 0,00% 5,00%
Total % 8,30% 12,50% 17,70% 24,70% 30,50% 2,90% 1,80% 1,60% 0,00% 100,00%
Introdução à Engenharia de Software – As Principais Disciplinas
üPRAXIS
§ Detalhando um pouco mais o Praxis
ØDividido em Fases
– Que possuem iterações
– Cada iteração tem um script que diz o que deve ser 
feito...
– Isso inclui o detalhamento das atividades a serem 
executadas
– Cada atividade faz parte de um dos fluxos
45
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito
§ Objetivo de uma especificação de requisitos:
Øenunciado completo, claro e preciso dos requisitos de 
um produto de software;
§ mais complexo no caso de produtos novos:
Ømais difícil para os usuários identificar características 
de maior valor;
Ømais difícil para os desenvolvedores entender o que os 
usuários desejam.
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito
§ Conteúdo da ERSw.
ØFuncionalidade: o que o produto deverá fazer?
ØInterfaces externas: como o produto interage com
– as pessoas;
– o hardware do sistema;
– outros produtos? 
46
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito 
§ Conteúdo da ERSw.
ØDesempenho: quais os requisitos de -
– velocidade de processamento;
– tempo de resposta;
– outros parâmetros de desempenho?
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito 
§ Conteúdo da ERSw.
ØOutros atributos: que considerações devem ser 
observadas sobre:
– portabilidade;
– manutenibilidade;
– confiabilidade?
47
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito 
§ Conteúdo da ERSw.
ØRestrições de desenho impostas pela aplicação: existem 
padrões a serem seguidos, como:
– linguagem de implementação;
– ambientes de operação?
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito 
§ Requisitos devem ter alta qualidade
Øcorretos;
Øprecisos;
Øcompletos;
Øconsistentes;
Øpriorizados;
Øverificáveis;
Ømodificáveis;
Ørastreáveis.
48
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito
§ Atividades.
ØDeterminação do contexto:
– levantamento dos aspectos dos processos de negócio ou de 
um sistema maior;
– relevantes para a determinação dos requisitos do produto.
ØDefinição do escopo:
– delimitação dos problemas que o produto se propõe 
resolver.
ØDefinição dos requisitos:
– produção de lista dos requisitos funcionais e não funcionais;
– descritos de forma sucinta;
– sem entrar-se em detalhes.
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito
§ Atividades.
ØDetalhamento dos requisitos de interface:
– detalhamento dos aspectos das interfaces do produto 
que os usuários consideram como requisitos.
ØDetalhamento dos requisitos funcionais:
– detalhamento dos casos de uso;
– representam fatias de funcionalidade do produto.
ØDetalhamento dos requisitos não funcionais:
– detalhamento dos requisitos de desempenho e outros;
– necessários para que o produto atinja a qualidade 
desejada.
49
Introdução à Engenharia de Software – As Principais Disciplinas
üRequisito
§ Atividades.
ØClassificação dos requisitos:
– determinação das prioridades relativas dos requisitos;
– avaliação da estabilidade;
– avaliação da complexidade de implementação.
ØRevisão dos requisitos:
– determinação do atendimento dos critérios de 
qualidade de requisitos;
– verificação da clareza e legibilidade da Especificação 
dos Requisitos do Software.
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Objetivos:
Ømodelar conceitos relevantes;
– do domínio do problema;
– de forma precisa;
Øverificar qualidade dos requisitos;
– obtidos através do fluxo de Requisitos;
Ødetalhar requisitos;
– em nível adequado aos desenvolvedores. 
§ Em resumo...
ØModelar os requisitos identificados em um formato mais próximo 
do formato utilizado pelos profissionais de informática
410
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Descrição e verificação dos requisitos funcionais:
Øcasos de uso:
– comportamento esperado do produto como um todo;
Øclasses:
– conceitos do mundo da aplicação;
– relevantes para a descrição precisa dos requisitos;
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Atividades de análise:
ØIdentificação das classes:
– identificação das classes do produto;
– Com base nos fluxos dos casos de uso;
– e outros documentos relevantes. 
ØOrganização das classes:
– organização das classes em pacotes lógicos;
– atribuição de estereótipos;
– conforme papel que desempenham no modelo.
411
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Atividades de análise:
ØIdentificação dos relacionamentos:
– determinação dos relacionamentos;
– entre objetos das classes identificadas. 
ØIdentificação dos atributos:
– levantamento dos atributos;
– propriedades do conceito expresso pela classe.
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Atividades de análise:
ØRevisão da análise:
– validação dos resultados da Análise;
– e dos correspondentes resultados de Requisitos.
412
Introdução à Engenharia de Software – As Principais Disciplinas
üAnálise 
§ Muito importante!
ØNa Análise devemos modelar os conceitos identificados nos 
requisitos
– Tudo isso no contexto do PROBLEMA identificado
ØNo Desenho devemos modelar os conceitos identificados em uma 
SOLUÇÃO para o problema 
– Nesse caso o contexto é o da SOLUÇÃO
ØA principal diferenção é justamente essa!
– Devemos definir a tecnologia 
» Qual será o banco de dados e a forma de utilizá-lo?
» Qual será a tecnologia das interfaces(Html, Swing, ...)?
» Como será autenticação (biometria, senhas, ...)?
– Essas questões só devem surgir no desenho e não na análise
» Justamente por causa do foco de cada uma!
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Aspectos a considerar:
Øatendimento dos requisitos não funcionais:
– desempenho;
– confiabilidade;
– usabilidade;
– manutenibilidade;
– portabilidade;
Ødefinição de classes e outros elementos:
– em nível de implementação;
413
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Aspectos a considerar:
Ødecomposição em componentes:
– construção relativamente independente;
– divisão de trabalho, uma vez que provavelmente 
teremos uma equipe atuando na construção;
Ødefinição adequada das interfaces entre componentes:
– redução do acoplamento, que é a dependência entre as 
partes que compõe um produto;
» Quanto menor, melhor...
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Aspectos a considerar:
Ødocumentação das decisões:
– comunicação com os implementadores;
Øreutilização:
– componentes, mecanismos e outros artefatos;
– aumento da produtividade e confiabilidade;
Øsuporte a métodos e ferramentas de geração de 
código:
– aumento da produtividade e confiabilidade.
414
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Desenho � Implementação:
Øatividades de desenho:
– realizadas por grupos pequenos de profissionais 
experientes;
– difícil de dividir em atividades paralelas;
Øatividades de implementação:
– podem ser delegadas a profissionais não 
necessariamente proficientes em Desenho;
– mas conhecedores do ambiente de implementação;
– treinados nas respectivas técnicas;
– paralelismo de implementação pode resultar de bom 
desenho. 
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Atividades:
ØDesenho arquitetônico:
– aspectos estratégicos de desenho externo e interno;
– divisão do produto em subsistemas;
– escolha de tecnologias mais adequadas. 
ØDesenho das interfaces:
– desenho em detalhe das interfaces reais do produto;
– em seu ambiente definitivo de implementação. 
415
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Atividades:
ØDetalhamento dos casos de uso:
– resolução de detalhes dos fluxos dos casos de uso;
– considerando os componentes reais das interfaces;
– considerando todos os fluxos alternativos.
ØDesenho das entidades:
– transformação das classes de entidade do Modelo de Análise;
– nas classes correspondentes do Modelo de Desenho.
ØDesenho da persistência:
– desenho das estruturas externas de armazenamento 
persistente;
– arquivos e bancos de dados.
Introdução à Engenharia de Software – As Principais Disciplinas
üDesenho 
§ Atividades:
ØDesenho das liberações:
– como a implementação do produto será dividida;
– entre as Liberações.
ØRevisão do desenho:
– validação dos resultados do Desenho;
– confronto com os resultados dos Requisitos e da 
Análise.
416
Introdução à Engenharia de Software – As Principais Disciplinas
üImplementação 
§ Tarefas da implementação:
Øplanejamento detalhado da implementação;
– das unidades de cada liberação;
Øimplementação das classes e outros elementos do 
modelo de desenho;
– em unidades de implementação;
– geralmente arquivos de código-fonte;
Introdução à Engenharia de Software – As Principais Disciplinas
ü Implementação 
§ Tarefas da implementação:
Øverificação das unidades;
– revisões;
– inspeções;
» Atividades de garantia da qualidade que verificam, a partir da 
leitura de especialistas, sua conformidade e adequação
– testes de unidade;
» Criação de programas que verificam se outros programas 
funcionam corretamente
Øcompilação e ligação das unidades;
Ø integração das unidades entre si;
Ø integração das unidades com componentes reutilizados;
– adquiridos de terceiros;
– reaproveitados de projetos anteriores;
417
Introdução à Engenharia de Software – As Principais Disciplinas
üImplementação 
§ Tarefas da implementação:
Øintegração das unidades:
– com resultados das iterações anteriores;
Øverificação da integração;
Øconfecção da documentação de uso do produto:
– manuais de usuários;
– ajuda on-line;
– sítios Web integrados ao produto;
– material de treinamento;
– demonstrações e outros recursos.
Introdução à Engenharia de Software – As Principais Disciplinas
üImplementação 
§ Atividades.
ØCodificação:
– traduz desenho detalhado;
– no código de uma ou mais linguagens de programação;
ØInspeção de implementação:
– verifica o desenho detalhado e o código;
– para eliminar os defeitos de implementação;
418
Introdução à Engenharia de Software – As Principais Disciplinas
üImplementação 
§ Atividades.
ØTestes de unidade:
– verifica a funcionalidade das unidades implementadas;
ØIntegração:
– liga as unidades implementadas;
– com os componentes construídos em iterações 
anteriores.
Introdução à Engenharia de Software – As Principais Disciplinas
üImplementação 
§ Atividades especiais.
ØPrototipagem:
– confecção de código provisório;
– para realizar experimentos de validação de requisitos 
ou desenho.
ØDocumentação de usuário:
– confecção de manual do usuário;
– e outros tipos de documentos para usuários.
419
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Teste consiste na verificação dinâmica do 
funcionamento de um programa em um conjunto 
finito de casos de teste, cuidadosamente 
selecionado dentro de um domínio infinito de 
entradas, contra seu funcionamento esperado.
ØDinâmico – Execução
ØFinito – Existem muitos casos de teste
ØSelecionado – Técnicas diferem na seleção
ØEsperado – Funcionamento deve ser verificado
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Terminologia
ØElementos do Teste
– Procedimento de Teste
» Documentação especificando uma seqüência de ações para 
execução de um teste.
– Caso de Teste
» Documentação especificando entradas, resultados esperados, e 
um conjunto de condições de execução para um item de teste.
– Plano de Teste
» Documento que descreve o escopo, abordagem, recursos e 
agenda para as atividades de teste, identificando os itens de 
teste, as construções a serem testadas, as tarefas envolvidas, 
executores e riscos associados.
IEEE STD 829-1983
420
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Procedimentos de teste:
Øcontêm seqüência de ações que devem ser executadas;
– para realizar grupo de testes semelhantes;
Øcorrespondem a roteiros importantes de casos de uso 
de desenho;
Øpode ser executados de forma manual ou automática;
Øtestes automatizados podem ser codificados:
– em linguagem de script de ferramenta de automação de 
testes; 
– na própria linguagem de implementação, dentro de 
pacote de classes de teste.
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Procedimentos de teste:
Identificação MERCI-ETF-GU-PT-IU 
Objetivo Verificar se a inclusão de um usuário é feita corretamente. 
Requisitos especiais Nenhum. 
Fluxo 1. Acionar Novo. 
2. Preencher Nome, Login, Senha. 
3. Selecionar Grupos do Usuário. 
4. Acionar Salvar. 
 
421
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Casos de teste:
Øcontêm para cada instância de teste:
– valores de entradas;
– valores esperados de saídas;
Øvalores de entrada escolhidos:
– critérios que maximizam a cobertura do teste;
Ø também podem ser automatizados;
– podem ser embutidos em scripts ou classes de teste;
– como os procedimentos;
– podem ser obtidos de arquivos ou bancos de dados de casos de 
teste.
Introdução à Engenharia de Software – As Principais Disciplinas
ü Teste 
§ Caso 
de teste
Identificação MERCI-ETF-GU-CT-AU1 
Itens a testar Processamento correto de alteração de usuário. 
Campo Valor 
Nome Joaquim Pereira 
Login joaquim 
Senha senha01 
Entradas 
Grupos do Usuário Gestor de Compras 
Campo Valor 
Nome Joaquim Pereira 
Senha senha01(oculto como *******) 
Saídas esperadas 
Grupos do Usuário Gestor de Compras 
Ambiente Banco de dados de teste. 
Procedimentos 1. Inclusão de Usuário - MERCI-ETF-GU-PT-AU 
2. Pesquisa de Usuário - MERCI-ETF-GU-PT-PU 
Dependências Banco de dados de teste deve ter um usuário com o login dado. Por exemplo, pode ter sido 
executado o caso de teste Inclusão de usuário 1 (MERCI-ETF-GU-CT-IU1). 
 
422
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste: atividades
Planejamento
Desenho
Implementação
Execução
Verificação
Balanço Final
Objetivos do Teste – O quê testar?
Determinação de estratégias para
delimitar os objetivos
Geração de Procedimentos
e Casos de Teste
Execução dos Casos de Teste
Determinar se os objetivos
foram atendidos
Registrar lições aprendidas,
gerando um relatório final
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Atividades de preparação.
ØPlanejamento:
– define itens a testar, aspectos gerenciais e recursos 
necessários;
– para a execução da bateria de testes.
ØDesenho:
– completa as especificações dos testes da bateria;
– procedimentos e casos de teste. 
423
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Atividades de realização.
ØImplementação:
– monta o ambiente de teste;
– implementando os componentes de teste;
– instalando e configurando os itens a testar.
ØExecução:
– executa os testes da bateria;
– produzindo os relatórios resultantes
Introdução à Engenharia de Software – As Principais Disciplinas
üTeste 
§ Atividades de realização.
ØVerificação do término:
– inspeciona os testes;
– determinando se estão satisfeitas condições de 
completeza e sucesso. 
ØBalanço final:
– realiza o balanço final dos testes da bateria;
– registrando as conclusões e lições aprendidas.
424
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão de Projetos 
§ Visão geral da gestão de projetos
ØGestão de requisitos
ØPlanejamento de projetos
ØControle de Projetos
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão de Projetos 
§ Definição dos Subfluxos
Subfluxo Descrição Área do CMM
Gestão de 
requisitos
Controle das alterações e rastreamento dos 
requisitos.
RM
Planejamento de 
projetos
Elaboração de planos de projetos, por meio de 
estimativas de tamanho, esforço, prazo e 
riscos.
SPP, ISM
Controle de 
projetos
Acompanhamento do progresso e dos riscos 
dos projetos, com execução de procedimentos 
corretivos, quando necessários.
PTO, ISM, IC
425
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão de Projetos 
§ Processo subsidiário:
ØContratação de projetos.
– Executado por outra empresa mas que deve ser 
controlado por quem realiza a contratação...
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão de Requisitos 
§ Atividades.
ØCadastramento dos requisitos:
– lançamento dos requisitos e itens derivados no cadastro 
dos requisitos.
ØMonitoração dos requisitos:
– acompanhamento do estado dos requisitos.
ØAlteração dos requisitos:
– análise de solicitações de alteração de requisitos;
– realização da alteração, se aprovada. 
426
Introdução à Engenharia de Software – As Principais Disciplinas
üPlanejamento de Projetos 
§ Atividades.
ØInstanciação do Processo
ØEstimativa de Tamanho
ØEstimativa de Esforço
ØEstimativa de Recurso
ØEstimativa de Cronograma
ØEstimativa de Riscos
ØFechamento
Introdução à Engenharia de Software – As Principais Disciplinas
üControle de Projetos 
§ Atividades.
ØMonitoração do Escopo
– Registrar alterações em requisitos e medir a 
estabilidade.
ØMedição de Progresso
– Calcular progresso do projeto x prazo.
ØMonitoração dos Riscos
– Acompanhar o que pode acontecer e o que aconteceu, 
com seu impacto registrado.
427
Introdução à Engenharia de Software – As Principais Disciplinas
üControle de Projetos 
§ Atividades.
ØFechamento da Iteração 
– Conclui um ciclo de desenvolvimento, garantindo os 
artefatos e planeja a próxima.
ØFechamento do Projeto
– Conclui o projeto, gerando relatório final.
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão da Qualidade
§ Objetivo
ØAuxiliar o trabalho das diversas equipes;
ØVerificar as atividades realizadas e os resultados
obtidos, visando a consistência e o padrões desejados;
Øfornecer informações sobre o status dos projetos e sua
conformidade com a qualidade desejada.
428
Introdução à Engenharia de Software – As Principais Disciplinas
üGestão da Qualidade
§ Atividades
ØPlanejamento
– Definição de pontos de verificação e padrões a serem
seguidos.
ØAuditoria
– Realização das verificações previstas
ØVerificação da organização
– Verificação de itens relacionados a outras equipes não
ligadas ao projeto diretamente
Introdução à Engenharia de Software – As Principais Disciplinas
Introdução à 
Engenharia de Software
Unidade II – As Principais Disciplinas
Pedro de Alcântara dos Santos Neto
pasn@ufpi.edu.br

Continue navegando