Post on 15-Oct-2015
Engenharia de Software I
Prof. Josu Froner
Introduo
Objetivo: apresentar conceitos sobre ciclo de vida do software, reutilizao, medio, ferramentas e ambientes integrados, trabalhar a distino entre engenharia de software e cincia da computao;
Elementos fundamentais
Mtodos
Ferramentas
Procedimentos
metas: melhorar a qualidade de produtos de software, aumentar a produtividade do pessoal tcnico e aumentar a satisfao do cliente
Mtodos
Detalhes de como fazer para construir software
Tarefas bsicas: Planejamento e estimativa de projeto;
Anlise de requisitos de software e de sistemas;
Projeto da estrutura de dados;
Arquitetura de programa;
Algoritmo de processamento;
Codificao;
Testes;
Manuteno.
Ferramentas
Suporte, apoio aos mtodos;
Computer Aided Software Engineering
CASE combinao de software, hardware e BD sobre ES
Procedimento
Ligao entre ferramentas e mtodos;
Definem a seqncia de aplicao dos mtodos, a exigncia de entrega de produtos, o controle relacionados a qualidade
Mtodos, Ferramentas e Procedimento esto presentes em etapas da engenharia de software, assim como Paradigmas
Uma abordagem de sistema
Um projeto composto por hardware e software interagindo com: usurios, partes de hardware, BD, sistemas computadorizados
CLIENTE
DESENVOLVEDOR USURIO
Financia o
desenvolvimento do
sistema
necessidades Obrigaes 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 relaes 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, restries e recursos almejando um fim;
Descrio da principais atividades;
Utilizao de recursos, tempo de uso e finalizaes, gerao de produtos intermedirios e finais;
Pode ser subdivido, ter hierarquia, sequenciao de atividades e seus objetivos;
As atividades desenvolvidas devem ser controladas, assim como o suo de recursos
Concepo implementao entrega utilizao manuteno
Fator importante pois d consistncia e estrutura a um conjunto de atividades
Conjunto de procedimentos Sequenciao de execuo reutilizao
Experincia para o futuro
Documentao facilitada
Processo ciclo de vida
Paradigmas de ES
Abordagem filosfica da construo de soft.
Ciclo de vida clssico;
Prototipao;
Modelo Espiral;
Tcnicas de 4 Gerao
Combinao de Paradigmas
ou processo de software
O paradigma est relacionado
A natureza do projeto e da aplicao
Aos mtodos e ferramentas a serem usados
Aos controles e produtos que precisam ser entregues
Ciclo de vida Clssico
Conhecido como modelo em cascata-linear e sequencial;
modelo mais antigo e o mais amplamente usado da engenharia de software
modelado em funo do ciclo da engenharia convencional
requer uma abordagem sistemtica, seqencial ao desenvolvimento de software
Cascata
Engenharia de
Sistemas Anlise de
Requisitos Projeto
Codificao
Testes
Manuteno
Levantamento de requisitos
Compreenso do domnio da informao, funo, desempenho e interface
Mltiplos passos: est. Dados, arquit, procedim e caract. de interface documentao
Lgicos e funcionais
Reaplicao do processo
Detalhes modelo cascata
ANLISE E ENGENHARIA DE SISTEMAS
envolve a coleta de requisitos em nvel do sistema, pequena quantidade de projeto e anlise de alto nvel
viso essencial quando o software deve fazer interface com outros elementos (hardware, pessoas e banco de dados
ANLISE DE REQUISITOS DE SOFTWARE
processo de coleta dos requisitos intensificado e concentrado especificamente no software
deve-se compreender o domnio da informao, a funo, desempenho e interfaces exigidos
os requisitos (para o sistema e para o software) so documentados e revistos com o cliente
PROJETO se concentra em 4 atributos do programa:
Estrutura de Dados, Arquitetura de Software, Detalhes Procedimentais e caracterizao de Interfaces;
traduo dos requisitos do software para um conjunto de representaes que possam ser avaliadas quanto qualidade, antes que a codificao se inicie. documental;
CODIFICAO transformao das representaes do projeto para
uma linguagem computacional resultando em instrues e procedimentos executveis pelo computador
TESTES aspectos lgicos internos do software, garantir
teste das instrues; aspectos funcionais externos, para descobrir erros
e garantir que a entrada produza resultados esperados
MANUTENO o software dever sofrer mudanas depois que for
entregue ao cliente causas das mudanas: erros, adaptao do
software para acomodar mudanas em seu ambiente externo e exigncia do cliente para acrscimos funcionais e de desempenho
Problemtica levantada
projetos reais raramente seguem o fluxo seqencial que o modelo prope
logo no incio difcil estabelecer explicitamente todos os requisitos. No comeo dos projetos sempre existe uma incerteza natural
o cliente deve ter pacincia. Uma verso executvel do software s fica disponvel numa etapa avanada do desenvolvimento
Prototipao
processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construdo.
idealmente, o modelo (prottipo) 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 no identificou requisitos de entrada, processamento e sada com detalhes
Demonstrao Prototipao
fim
incio
construo
produto
refinamento
prottipo
avaliao
prottipo
construo
prottipo
projeto
rpido
obteno
dos
requisitos
Prototipao: atividades
Obteno dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos so conhecidos e as reas que necessitam de definies adicionais
Projeto Rpido: representao dos aspectos do software que so visveis ao usurio (abordagens de entrada e formatos de sada
Construo Prottipo: implementao do projeto rpido
Avaliao do Prottipo: cliente e desenvolvedor avaliam o prottipo
Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido.
Ocorre neste ponto um processo de iterao que pode conduzir a 1a. atividade at que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito
Construo Produto: identificados os requisitos, o prottipo deve ser descartado e a verso de produo deve ser construda considerando os critrios de qualidade.
Problemtica levantada
desenvolvedor freqentemente faz uma implementao comprometida (utilizando o que est disponvel) com o objetivo de produzir rapidamente um prottipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas no so apropriadas para o produto final.
cliente no sabe que o software que ele v no considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. No aceita bem a idia que a verso final do software vai ser construda e "fora" a utilizao do prottipo como produto final.
Espiral
engloba as melhores caractersticas do ciclo de vida Clssico e da Prototipao, adicionando um novo elemento: a Anlise de Risco
segue a abordagem de passos sistemticos do Ciclo de Vida Clssico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real
usa a Prototipao, em qualquer etapa da evoluo do produto, como mecanismo de reduo de riscos
Espiral - grfico
Anlise dos riscos
Engenharia Avaliao do cliente
Planejamento
Avaliao do cliente
Planejamento baseado nos comentrios do cliente
Coleta inicial dos requisitos e planejamento do projeto
Anlise dos riscos baseada nos requisitos iniciais
Anlise dos riscos baseada na reao do cliente
DECISO
Prottipo de software inicial
Nvel seguinte do prottipo
Sistema finalizado
Fases - Espiral
Planejamento: determinao dos objetivos, alternativas e restries
Anlise de Risco: anlise das alternativas e identificao / resoluo dos riscos
Construo: desenvolvimento do produto no nvel seguinte
Avaliao do Cliente: avaliao do produto e planejamento das novas fases
Observaes
, atualmente, a abordagem mais realstica 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 difcil convencer os clientes que uma abordagem "evolutiva" controlvel;
exige considervel experincia na determinao de riscos e depende dessa experincia para ter sucesso;
o modelo relativamente novo e no tem sido amplamente usado
Tcnicas de 4 Gerao
Concentra-se na capacidade de se especificar o software a uma mquina em um nvel que esteja prximo linguagem natural.
Engloba um conjunto de ferramentas de software que possibilitam que:
o sistema seja especificado em uma linguagem de alto nvel e
o cdigo fonte seja gerado automaticamente a partir dessas especificaes
Grfico F4G
Obteno dos
Requisitos Estratgia do
Projeto Implementao
usando 4GL Testes
Modelo Incremental
O projeto de software constitui-se da possibilidade de entregar ao cliente um conjunto mnimo do sistema que seja usvel, sendo que o processo continuar ao longo do ciclo de vida do software atravs de incrementos adicionados ao software.
Obs: as vantagens incluem fornecer logo ao cliente ma sistema e novas verses de trabalho
Modelo de processo de software-MPS
Composto por:
Tarefas
Artefatos (arquivos, dados...)
Atores
Decises
Modelagem de utiliza notao como elipse, retngulos, figuras e losangos formando fluxograma e/ou diagramas
Combinando Paradigmas obteno dos requisitos
preliminares
modelo espiral
tcnicas
4G
protomodelagem
anlise dos
requisitos
projeto
codificao
testes
manuteno
protomodelagem
no. interao
protomodelagem
no. interao
tcnicas
4G
modelo espiral
no. interao
sistema completo
Atividades do Ciclo de Vida
Viabilidade desenvolvimento proposto vivel; Anlise de mercado existe mercado potencial para
o produto? Requisitos quais funcionalidades o software dever
ter? refinamento dos requisitos obtem-se os requisitos
do usurio Anlise de domnio quais tarefas e estruturas so
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 iro auxiliar a garantir a qualidade do produto;
Estrutura de decomposio de trabalho determinao 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
Implementao construo do software atravs de cdigo;
Teste: de unidade, de integrao, do sistema, alpha, beta, de aceitao, de regresso;
Entrega o cliente recebe um software eficiente que soluciona suas necessidades;
Instalao disponibiliza o software no ambiente operacional do cliente;
Treinamento ensina a operao aos usurios;
Help desk responde a questes do usurio;
Manuteno atualizao e evoluo garantia de usabilidade constante
Documentos gerados
Contrato de trabalho,
especificao dos requisitos de software,
modelagem de objetos,
cenrios de casos de uso,
cronograma do projeto,
plano de testes de software,
testes de aceitao,
projeto de software,
projeto arquitetural,
projeto detalhado,
plano da garantia da qualidade do software (SQA),
manual do usurio,
cdigo fonte,
relatrio de teste,
relatrio de falhas
MTODO E METODOLOGIA
No so sinnimos;
metodologia envolve princpios filosficos que guiam uma gama de mtodos que utilizam ferramentas e prticas diferenciadas para realizar algo
exemplificando
A exemplo disso, pode-se citar a Metodologia Estruturada, a qual composta por vrios mtodos, tal como Anlise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD), e Anlise Essencial. E tanto a Anlise Estruturada quanto a Anlise Essencial utilizam-se da ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do sistema.
Metodologias Estruturadas
Anlise Estruturado
Projeto Estruturado
Anlise 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)
Programao 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) Programao Extrema (XP)
Referncias
PRESSMAN, ROGER.S.ENGENHARIA DE SOFTWARE. SO PAULO: MAKRON, 2006
JURAN, J. GRYNA, FRANK. CONTROLE DA QUALIDADE: COMPONENTES BSICOS DA FUNO QUALIDADE - V.2 - SO PAULO : MAKRON, 1991.
PFLEEGER, SHARI L. ENGENHARIA DE SOFTWARE: TEIORIA E PRTICA. 2.ED.SO 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 so desenvolvidos: manual final do usurio, projeto arquitetural, plano de SQA, especificao de mdulos, cdigo fonte, seqncia de trabalho, plano de teste, manual de usurio preliminar, projeto detalhado, estimativas de custo, plano de projeto, relatrio de teste, documentaes.