Post on 10-Jan-2016
description
Engenharia de Software I
Prof. Josué Froner
Introdução
Objetivo: apresentar conceitos sobre ciclo de vida do software, reutilização, medição, ferramentas e ambientes integrados, trabalhar a distinção entre engenharia de software e ciência da computação;
Elementos fundamentais
Métodos Ferramentas Procedimentos
metas: melhorar a qualidade de produtos de software, aumentar a produtividade do pessoal técnico e aumentar a satisfação do cliente
Métodos
Detalhes de como fazer para construir software
Tarefas básicas: Planejamento e estimativa de projeto; Análise de requisitos de software e de sistemas; Projeto da estrutura de dados; Arquitetura de programa; Algoritmo de processamento; Codificação; Testes; Manutenção.
Ferramentas
Suporte, apoio aos métodos; Computer – Aided Software
Engineering CASE – combinação de software,
hardware e BD sobre ES
Procedimento
Ligação entre ferramentas e métodos;Definem a seqüência de aplicação dos métodos, a exigência de entrega de produtos, o controle relacionados a qualidade Métodos, Ferramentas e Procedimento estão presentes em etapas da engenharia de software, assim como Paradigmas
Uma abordagem de sistema
Um projeto é composto por hardware e software interagindo com: usuários, partes de hardware, BD, sistemas computadorizados
CLIENTE
DESENVOLVEDORUSUÁRIO
Financia o desenvolvimento do sistema
necessidadesObrigações contratuais
necessidades
Sistema de software
Utiliza o sistema
Uma abordagem de sistema
Identificar, conhecer os elementos de um sistema: nomear as partes do sistema
Verificar como as partes se relacionam Podemos chamar os elementos de objetos
ou entidades Conhecer as relações e fronteiras do
sistema Verificar se há sistemas inter-
relacionados (fronteiras)Auxilia o conhecimento sobre o projeto
Projeto de Software é um processo
Processo : conjunto de tarefas ordenadas, etapas que envolvem atividades, restrições e recursos almejando um fim;
Descrição da principais atividades; Utilização de recursos, tempo de uso e
finalizações, geração de produtos intermediários e finais;
Pode ser subdivido, ter hierarquia, sequenciação de atividades e seus objetivos;
As atividades desenvolvidas devem ser controladas, assim como o suo de recursos
Concepção – implementação – entrega – utilização – manutenção
Fator importante pois dá consistência e estrutura a um conjunto de atividades
Conjunto de procedimentos Sequenciação de execução – reutilização Experiência para o futuro Documentação facilitada
Processo ciclo de vida
Paradigmas de ES
Abordagem filosófica da construção de soft. Ciclo de vida clássico; Prototipação; Modelo Espiral; Técnicas de 4ª Geração
Combinação de Paradigmas
ou processo de software
O paradigma está relacionado
A natureza do projeto e da aplicação
Aos métodos e ferramentas a serem usados
Aos controles e produtos que precisam ser entregues
Ciclo de vida Clássico
Conhecido como modelo em cascata-linear e sequencial;
modelo mais antigo e o mais amplamente usado da engenharia de software
modelado em função do ciclo da engenharia convencional
requer uma abordagem sistemática, seqüencial ao desenvolvimento de software
Cascata
Engenharia de Engenharia de SistemasSistemas
Engenharia de Engenharia de SistemasSistemas
Análise de Análise de Requisitos Requisitos
Análise de Análise de Requisitos Requisitos
Projeto Projeto Projeto Projeto
Codificação Codificação Codificação Codificação
Testes Testes Testes Testes
ManutençãoManutenção ManutençãoManutenção
Levantamento de requisitos
Compreensão do domínio da informação, função, desempenho e interface
Múltiplos passos: est. Dados, arquit, procedim e caract. de interface documentação
Lógicos e funcionais
Reaplicação do processo
Detalhes modelo cascata
ANÁLISE E ENGENHARIA DE SISTEMAS envolve a coleta de requisitos em nível do sistema,
pequena quantidade de projeto e análise de alto nível visão essencial quando o software deve fazer interface
com outros elementos (hardware, pessoas e banco de dados
ANÁLISE DE REQUISITOS DE SOFTWARE processo de coleta dos requisitos é intensificado e
concentrado especificamente no software deve-se compreender o domínio da informação, a função,
desempenho e interfaces exigidos os requisitos (para o sistema e para o software) são
documentados e revistos com o cliente
PROJETO se concentra em 4 atributos do programa:
Estrutura de Dados, Arquitetura de Software, Detalhes Procedimentais e caracterização de Interfaces;
tradução dos requisitos do software para um conjunto de representações que possam ser avaliadas quanto à qualidade, antes que a codificação se inicie. É documental;
CODIFICAÇÃO transformação das representações do projeto
para uma linguagem computacional resultando em instruções e procedimentos executáveis pelo computador
TESTES aspectos lógicos internos do software,
garantir teste das instruções; aspectos funcionais externos, para descobrir
erros e garantir que a entrada produza resultados esperados
MANUTENÇÃO o software deverá sofrer mudanças depois
que for entregue ao cliente causas das mudanças: erros, adaptação do
software para acomodar mudanças em seu ambiente externo e exigência do cliente para acréscimos funcionais e de desempenho
Problemática levantada
projetos reais raramente seguem o fluxo seqüencial que o modelo propõe
logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural
o cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento
Prototipação
processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído.
idealmente, o modelo (protótipo) serve como um mecanismo para identificar os requisitos de software.
apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes
Demonstração Prototipação
fim
início
construção produto
refinamento protótipo
avaliação protótipo
construção protótipo
projeto rápido
obtenção dos
requisitos
Prototipação: atividades
Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais
Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída
Construção Protótipo: implementação do projeto rápido
Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo
Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido.
Ocorre neste ponto um processo de iteração que pode conduzir a 1a. atividade até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito
Construção Produto: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade.
Problemática levantada
desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final.
cliente não sabe que o software que ele vê não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia que a versão final do software vai ser construída e "força" a utilização do protótipo como produto final.
Espiral
engloba as melhores características do ciclo de vida Clássico e da Prototipação, adicionando um novo elemento: a Análise de Risco
segue a abordagem de passos sistemáticos do Ciclo de Vida Clássico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real
usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos
Espiral - gráficoAnálise dos riscos
EngenhariaAvaliação do cliente
Planejamento
Avaliação do cliente
Planejamento baseado nos comentários do cliente
Coleta inicial dos requisitos e planejamento do projeto
Análise dos riscos baseada nos requisitos iniciais
Análise dos riscos baseada na reação do cliente
DECISÃO
Protótipo de software inicial
Nível seguinte do protótipoSistema finalizado
Fases - Espiral
Planejamento: determinação dos objetivos, alternativas e restrições
Análise de Risco: análise das alternativas e identificação / resolução dos riscos
Construção: desenvolvimento do produto no nível seguinte
Avaliação do Cliente: avaliação do produto e planejamento das novas fases
Observações
é, atualmente, a abordagem mais realística para o desenvolvimento de software em grande escala;
usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva;
pode ser difícil convencer os clientes que uma abordagem "evolutiva" é controlável;
exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso;
o modelo é relativamente novo e não tem sido amplamente usado
Técnicas de 4ª Geração
Concentra-se na capacidade de se especificar o software a uma máquina em um nível que esteja próximo à linguagem natural.
Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem
de alto nível e o código fonte seja gerado automaticamente a
partir dessas especificações
Gráfico – F4G
Obtenção dos Requisitos
Obtenção dos Requisitos
Estratégia do “Projeto”
Estratégia do “Projeto”
Implementação usando 4GL
Implementação usando 4GL
Testes Testes
Modelo Incremental
O projeto de software constitui-se da possibilidade de entregar ao cliente um conjunto mínimo do sistema que seja usável, sendo que o processo continuará ao longo do ciclo de vida do software através de incrementos adicionados ao software.
Obs: as vantagens incluem fornecer logo ao cliente um sistema e novas versões de trabalho
Modelo de processo de software-MPS
Composto por: Tarefas Artefatos (arquivos, dados...) Atores Decisões Modelagem de utiliza notação como
elipse, retângulos, figuras e losangos formando fluxograma e/ou diagramas
Combinando Paradigmasobtenção dos requisitos
preliminares
modelo espiraltécnicas 4G
protomodelagemanálise dos requisitos
projeto
codificação
testes
manutenção
protomodelagemno. interação
protomodelagemno. interação
técnicas 4G
modelo espiralno. interação
sistema completo
Atividades do Ciclo de Vida
Viabilidade – desenvolvimento proposto é viável; Análise de mercado – existe mercado potencial para
o produto? Requisitos – quais funcionalidades o software
deverá ter? refinamento dos requisitos – obtem-se os requisitos
do usuário Análise de domínio – quais tarefas e estruturas são
comuns ao problema? Planejamento do projeto – como o software será
desenvolvido Estimativas de custo – qual o custo do projeto Cronograma – cronologia de datas do
desenvolvimento;
Mais atividades
Garantia da qualidade – determina atividades que irão auxiliar a garantir a qualidade do produto;
Estrutura de decomposição de trabalho – determinação de subtarefas no decorrer do desenvolvimento;
Projeto – determina como o software deverá prover as funcionalidades;
Projeto arquitetural – projeta a estrutura do sistema; Projeto de interface – especifica as interfaces entre as
partes do sistema; Detalhamento do projeto – projeta os algoritimos para
cada parte
Mais atividades
Implementação – construção do software através de código;
Teste: de unidade, de integração, do sistema, alpha, beta, de aceitação, de regressão;
Entrega – o cliente recebe um software eficiente que soluciona suas necessidades;
Instalação – disponibiliza o software no ambiente operacional do cliente;
Treinamento – ensina a operação aos usuários; Help desk – responde a questões do usuário; Manutenção – atualização e evolução – garantia de
usabilidade constante
Documentos gerados
Contrato de trabalho, especificação dos
requisitos de software, modelagem de
objetos, cenários de casos de
uso, cronograma do
projeto, plano de testes de
software, testes de aceitação,
projeto de software, projeto arquitetural, projeto detalhado, plano da garantia da
qualidade do software (SQA),
manual do usuário, código fonte, relatório de teste, relatório de falhas
MÉTODO E METODOLOGIA
Não são sinônimos; metodologia envolve princípios
filosóficos que guiam uma gama de métodos que utilizam ferramentas e práticas diferenciadas para realizar algo
exemplificando
A exemplo disso, pode-se citar a Metodologia Estruturada, a qual é composta por vários métodos, tal como Análise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD), e Análise Essencial. E tanto a Análise Estruturada quanto a Análise Essencial utilizam-se da ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do sistema.
Metodologias Estruturadas Análise Estruturado Projeto Estruturado Análise Essencial SADT Outras Metodologias Rational Unified Process (RUP) Microsoft Solution Framework (MSF Metodologias Ágeis Feature Driven Development (FDD) Enterprise Unified Process (EUP) Scrum
Crystal (Crystal Clear, Crystal Orange, Crystal Orange Web)
Programação Extrema (XP) Outras Metodologias Rational Unified Process (RUP) Microsoft Solution Framework
(MSF Metodologias Ágeis Feature Driven Development
(FDD) Enterprise Unified Process (EUP) Scrum Crystal (Crystal Clear, Crystal
Orange, Crystal Orange Web) Programação Extrema (XP)
Referências
PRESSMAN, ROGER.S.ENGENHARIA DE SOFTWARE. SÃO PAULO: MAKRON, 2006
JURAN, J. GRYNA, FRANK. CONTROLE DA QUALIDADE: COMPONENTES BÁSICOS DA FUNÇÃO QUALIDADE - V.2 - SÃO PAULO : MAKRON, 1991.
PFLEEGER, SHARI L. ENGENHARIA DE SOFTWARE: TEIORIA E PRÁTICA. 2.ED.SÃO PAULO: PRENTICE HALL, 2004.
FAIRLEY, RICHARD. SOFTWARE ENGINEERING CONCEPTS. SINGAPORE: MCGRAW-HILL, 1985.
http://www.er.les.inf.puc-rio.br/ http://www.sei.cmu.edu/ e
http://www.sei.cmu.edu/pub/documents/92.reports/pdf/tr34.92.pdf http://engenhariadesoftware.blogspot.com/2007/02/o-que-
software.html
Tarefa
Para cada um dos seguinte documento, indique a fase do ciclo de vida do software - modelo cascata - em que são desenvolvidos: manual final do usuário, projeto arquitetural, plano de SQA, especificação de módulos, código fonte, seqüência de trabalho, plano de teste, manual de usuário preliminar, projeto detalhado, estimativas de custo, plano de projeto, relatório de teste, documentações.