Baixe o app para aproveitar ainda mais
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
Compartilhar