Académique Documents
Professionnel Documents
Culture Documents
software
Engenharia de Software
Prof. Isabella Santos
Engenharia de Software
• É uma disciplina da engenharia dedicada a todos os
aspectos da produção de software.
• Engenheiros de software devem adotar uma
abordagem sistemática e organizada para o seu
trabalho e usar técnicas e ferramentas
apropriadas, de acordo com o problema a ser
resolvido, e com as restrições e recursos
disponíveis.
• Responsabilidade profissional e ética.
Fonte: Ian Sommerville
Uma Visão Genérica da E.S.
Análise do Planejamento Análise de
De nição Sistema do Projeto Requisitos
de Software
O Que?
Projeto do Codi cação Testes
Processo de Desenvolvi Software
Software mento
O Como?
A Obrigação ...
Engenharia de Software
Engenharia de Software
• Métodos e Técnicas: detalhes de como fazer
• Metodologias: como aplicar
• Ferramentas: automatizam os métodos, dão
apoio a utilização. CASE =>
(ComputerAided Software Engineering):
Ferramentas integradas para desenvolver
software.
abrange um conjunto de três elementos fundamentais:
Métodos, Ferramentas e Procedimentos
Principais metas: melhorar a qualidade de produtos
de software, aumentar a produtividade do pessoal
técnico e aumentar a satisfação do cliente.
Engenharia de Software
conjunto de etapas que envolve
métodos
ferramentas
procedimentos
Essas etapas são conhecidas como componentes de CICLO
DE VIDA DE SOFTWARE
ou Processo de Software
Engenharia de Software
Conceitos Básicos
Ciclo de Vida do Software
O ciclo de vida de um software descreve as fases pelas quais o
software passa desde a sua concepção até ficar sem uso algum.
Ciclo de Vida do Desenvolvimento de
Sistemas
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
• Abordagens para o desenvolvimento de sistema:
▫ Clássica;
▫ Espiral;
▫ Prototipação.
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
Ciclo de Vida Clássico – Problemas
O uso da implementação bottomup é uma das
maiores fraquezas deste ciclo de vida, pois:
▫ Nada está terminado até que se complete todas
as fases. Se houver um atraso e o prazo final
coincidir com a fase de testes, não se terá nada
para apresentar ao usuário.
▫ Os erros mais comuns são encontrados no início
do período de testes, enquanto os mais sérios são
encontrados apenas no final.
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
Ciclo de Vida Clássico – Problemas
cont...
▫ A localização do módulo que contém o erro pode
ser extremamente difícil se este for detectado
durante o teste de sistema.
• Uma segunda fraqueza é a organização das fases
de forma sequencial, ou seja, a fase de Análise
somente teria início após a conclusão da fase de
Levantamento de Dados e assim por diante.
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
• Ciclo de Vida da Prototipação – distinção entre o SI
Real e o Protótipo.
▫ Sistemas reais têm a intenção de uso operacional e
devem seguir determinados padrões no que diz
respeito a sua qualidade, segurança, desempenho,
capacidade, robustez e facilidade de manutenção.
▫ Em contraste, protótipos visam clareza na
visualização de determinados aspectos de um sistema
sobre os quais há incerteza. Protótipos são usados
para verificar a precisão das hipóteses feitas sobre
esses aspectos.
▫ Assim, diferente dos sistemas reais, os protótipos são
tipicamente incompletos e não têm a intenção de
funcionar sem falhas (toleráveis).
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
• Ciclo de Vida Prototipação– Problemas
▫ O cliente vê o protótipo e tem pressa para colocá
lo em funcionamento, não levando em
consideração a qualidade global do sistema;
▫ Muitas vezes o desenvolvedor quer colocar o
protótipo em funcionamento rapidamente, com
isso, um sistema operacional ou linguagem de
programação imprópria pode ser usada,
simplesmente porque está à disposição e é
conhecida.
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
• Ciclo de Vida Espiral – Atividades:
▫ Planejamento: é a determinação dos objetivos,
alternativas e restrições do projeto.
▫ Análise dos Riscos: é a análise das alternativas e
a resolução dos riscos.
▫ Engenharia: desenvolvimento do produto.
▫ Avaliação feita pelo Cliente: é a avaliação dos
resultados obtidos nas atividades da engenharia.
Abordagens - Ciclo de Vida do
Desenvolvimento de Sistemas
• Ciclo de Vida Espiral – Problemas
▫ O modelo Espiral trabalha bem com sistemas
desenvolvidos dentro da própria empresa, mas os sistemas
terceirizados não possuem a mesma flexibilidade para
obter alterações possíveis;
▫ Em geral, os passos do processo do modelo Espiral
necessitam que todos os participantes do desenvolvimento
do sistema estejam operando conscientemente no contexto.
Alguns exemplos disso são os detalhes que devem aparecer
mais minuciosamente, os objetivos, as técnicas para
estimar e sincronizar o esquema do projeto.
Ciclo de Vida do Desenvolvimento de
Sistemas
• Os sistemas de computadores são complexos e
geralmente ligam vários sistemas tradicionais
potencialmente fornecidos por diferentes
fornecedores de software.
• Para gerenciar esse nível de complexidade, uma
série de modelos ou metodologias de SDLC
foram criadas, como o "modelo em cascata",
"espiral", "desenvolvimento ágil de software“ e
"incremental“.
Metodologias - Ciclo de Vida do
Desenvolvimento de Sistemas
• O Ciclo de Vida de Desenvolvimento de Sistemas
pode ser descrito ao longo do espectro desde o ágil
ao iterativo e sequencial.
Metodologias:
▫ Metodologias Ágeis;
▫ Metodologias interativas;
▫ Método de desenvolvimento de sistemas dinâmicos;
▫ Modelos sequênciais;
▫ Prototipagem.
Metodologias - Ciclo de Vida do
Desenvolvimento de Sistemas
• Metodologias Ágeis
▫ Focam em processos leves que permitem
mudanças rápidas ao longo do ciclo de
desenvolvimento.
• Exemplo: SCRUM e XP
Metodologias - Ciclo de Vida do
Desenvolvimento de Sistemas
• Metodologias iterativas e o método de
desenvolvimento de sistemas dinâmicos
▫ Focam no escopo de projeto limitado e na
ampliação ou melhoria de produtos através de
várias iterações.
• Exemplo: Rational Unified Process – RUP e
Espiral
Metodologias - Ciclo de Vida do
Desenvolvimento de Sistemas
• Modelos sequênciais
▫ Focam em planejamento completo e correto para
conduzir grandes projetos e nos riscos para
resultados bem sucedidos e previsíveis.
• Exemplo: modelo cascata
Metodologias - Ciclo de Vida do
Desenvolvimento de Sistemas
• Prototipagem
▫ Descreve uma abordagem que tenta satisfazer as
necessidades do usuário focalizando a interface
do usuário. Os estágios do projeto e de
desenvolvimento, no que concerne à interface de
usuários, repetemse até que o usuário esteja
satisfeito.
Ciclo de Vida de Projetos de
Desenvolvimento de Sistemas
A Seleção de um Caminho
• A melhor abordagem para um determinado projeto
depende, em grande parte, da natureza do projeto e
da natureza da organização.
▫ A abordagem em cascata funciona melhor com
projetos de grande porte, complexos, que têm
numerosos interessados, afetam a empresa toda e não
podem ser facilmente divididos em subprojetos. Ela
também funciona bem com organizações que têm
uma cultura formal e uma estrutura hierárquica.
Ciclo de Vida de Projetos de
Desenvolvimento de Sistemas
A Seleção de um Caminho – cont..
▫ A abordagem em espiral e a programação ágil funcionam
bem nas organizações dinâmicas, que podem tolerar a
ambiguidade e necessitam obter resultados rapidamente.
▫ O caminho em espiral pode apresentar melhores
resultados quando adotado para projetos que se dividem
facilmente em subprojetos e para projetos mais simples,
em especial o desenvolvimento de sistemas de usuário
único ou que afetam um pequeno departamento.
▫ A programação ágil é bemsucedida em ambiente onde as
necessidades do usuário são difíceis de especificar ou
mudam rapidamente.
Ciclo de Vida de Projetos de
Desenvolvimento de Sistemas
A Seleção de um Caminho – cont..
▫ A prototipagem funciona melhor para projetos de
pequeno e médio portes. Ela funciona bem onde a
cultura suporta equipes funcionalmente mistas. A
prototipagem pode ser combinada com a
abordagem em espiral e ser usada para um ou
mais dos subprojetos em um desenvolvimento em
espiral.
Processo
- Atualmente já está consolidada a idéia que construir
software é um processo iterativo, que tem como resultado a
incorporação do conhecimento coletado
- Revendo as atividades...
Modelo de Processo
Genérico
Cinco atividades de uma metodologia de
processo genérica:
1) Comunicação: é importante se comunicar com os
interessados (clientes, usuários, etc.) para
levantamento das necessidades do software.
2) Planejamento: é preciso “criar um mapa da
jornada”. O planejamento ajudar a antever os
passos da jornada e possibilita a preparação prévia.
Neste mapa devem constar: tarefas técnicas, riscos
prováveis, recursos que serão necessários, produtos
resultantes, cronograma de trabalho, etc.
Modelo de Processo
Genérico
Cinco atividades de uma metodologia de
processo genérica:
Importante: essas 5 atividades metodológicas
genéricas poderão ser utilizadas em sistemas
pequenos, sistemas grandes, sistemas web, etc. Mas
os detalhes do processo de software serão bem
diferentes em cada caso.
Modelo de Processo
Genérico
... Voltando ao modelo de processo
genérico
- Um aspecto deste processo precisa ser definido: o
fluxo do processo
1) Modelo Cascata
2) Modelos de Processo Incremental
3) Modelos de Processo Evolucionário (Prototipação e Espiral)
Modelo Cascata
- Representação do modelo cascata:
Comunicação
Inicio do
projeto
Planejament
Levantamento o
de necessidades Estimativas
Cronograma Modelagem
Acomp. Análise
Projeto Construção
Codificação
Entrega
Testes
Entrega
Suporte
Feedback
Modelo Incremental
Modelo Incremental:
projeto)
Construção (codificação,
teste)
Emprego (entrega,
feedback)
Incremento n°
“n”
Incremento
n° 3
Incremento
n° 2
Incremento Entrega do
n° 1 “n”°
software
Entrega do incremento
3°
Entrega do incremento
2°
Entrega do incremento
1°
incremento
Cronograma do
Projeto
Modelo Evolucionário
Modelos de Processo Evolucionário:
Entrega e Construção
feedback de um
protótipo
Modelo Evolucionário
Planejame
nto
Estimativa de
Modelo Espiral custos
Cronograma
Análise de riscos
- Representação do
Modelag
Modelo Espiral: em
Análise
Projeto
Comunica
ção
Construç
ão
Empre Codificação
go
Entrega Testes
Feedback
Modelos de Processo Especializado
- Baseado em Componentes
- Orientado a Aspectos
PSP
• Todos os Engenheiros de Software são diferentes, de modo que cada
um deverá fazer o seu planeamento, tendo como base os seus
conhecimentos e preferências.
• Para melhorar a sua qualidade e performance, o Engenheiro de
Software deve usar processos bem definidos e bem avaliados.
• O Engenheiro de Software deve sentirse pessoalmente
responsabilizados pela qualidade dos seus produtos, para que
produza trabalhos com elevada qualidade.
• É mais fácil previnir os erros/defeitos do que procurálos/corrigilos.
• A maneira correcta é sempre a mais fácil e barata de executar uma
tarefa.
PSP
• Para que um Engenheiro de Software faça um
trabalho da maneira correta, este deve planejar o
trabalho antes de se comprometer ou de começar.
• Para isso, devem utilizar um processo bem definido.
▫ Para que possam ter um conhecimento exato das suas
capacidades e performance, devem medir o tempo
que perdem em cada passo do seu trabalho, os
defeitos que introduziram ou retiraram e, não menos
importante, o tamanho dos produtos que produzem.
PSP
- Para fazer funcionar um PSP que não
funciona, 5 atividades estruturais são
definidas:
1) Planejamento
2) Projeto de alto nível
3) Revisão de projeto de alto nível
4) Desenvolvimento
5) Autópsia
PSP - Planejamento
- Isolamento de requisitos
• Formando Equipes: Preparar a equipe para
receber o processo TSP.
• Trabalho de Equipe: Após a equipe está
preparada, a mesma começa a usar o
processo TSP.
Engenharia de Software
• O que é Engenharia de Requisitos?
Conceitos
• O que é Stakeholder?
▫ É uma pessoa ou uma organização que tem algum
impacto direto ou indireto sobre os requisitos do
sistema.
ER
• Importância da ER
ER
ER
ER
ER - Processo
ER - Processo
• Estudos de viabilidade
ER
• Etapa: Elicitação
▫ O engenheiro de requisitos precisa extrair, sugar
todas as informações possíveis dos Stakeholders e
identificar os requisitos através de pesquisas.
▫ Para etapa de identificação, levantamento e
detalhamento de requisitos, podem ser utilizadas
diversas técnicas como:
⚫ Entrevistas;
⚫ Workshop;
⚫ JAD (Join Application Design);
⚫ Brainstorming;
⚫ Entre outros...
ER
• Etapa: Elicitação
▫ A escolha da técnica depende:
⚫ Tipo e complexidade da aplicação;
⚫ Perfil da equipe de desenvolvimento;
⚫ Perfil do cliente;
⚫ Criticidade da aplicação e da tecnologia.
ER – Pirâmide de Requisitos
ER
• Etapa: Elicitação – Tipos de Requisitos
▫ Requisitos funcionais RF
▫ Requisitos nãofuncionais RNF
ER
• Etapa: Elicitação – Base de Requisitos não
funcionais
ER
• Etapa: Elicitação – Tipos de Requisitos
▫ Requisitos funcionais RF
⚫ Exemplo: o sistema deve prover um formulário de
entrada para a entrada dos resultados dos testes
clínicos de um paciente.
▫ Requisitos nãofuncionais – RNF
⚫ Exemplo: O sistema deve emitir um recibo para o
cliente, com o tempo máximo de 8 segundos após a
transação (performance).
ER
• Etapa Documentação
▫ É importante registrar as informações coletadas e
identificadas na etapa de levantamento de
requisitos de forma adequada.
• Para documentar requisitos podem ser
utilizadas:
▫ Linguagem natural e modelos formais, utilizando
UML, como por exemplo, diagrama de estado,
sequência, casos de uso e especificações de casos
de uso.
ER
• Etapa: Documentação – Documentos de
Requisitos.
▫ Componentes típicos dos documentos de
requisitos:
⚫ Informação de título e autor do documento (com a
logo da empresa);
⚫ Propósito e escopo do documento;
⚫ Identificação dos Stakeholders e aprovadores do
documento;
⚫ Overview do sistema.
ER
• Etapa: Documentação – Documentos de
Requisitos.
ER
• Etapa: Documentação – Documentos de
Requisitos.
Exemplo
ER
• Etapa Validação de negociação
▫ Deve ser garantida a qualidade dos requisitos,
validando se estão corretos. Por isso é importante
negociar com o cliente o que realmente é
necessário para o produto.
▫ Para negociar e validar os requisitos é importante
ter a avaliação de um especialista, de modo que
possa ser verificado se o que foi levantado condiz
com o que foi solicitado.
ER
• Etapa Gerenciamento
▫ Compreende todas as medidas que são
necessárias às exigências de estrutura para que as
outras 3 etapas da ER possa ocorrer.
▫ Gerenciar consiste em manter os dados
consistentes e com qualidade garantindo que eles
possam ser implementados. É uma etapa
ortogonal as outras 3 visto que trabalha
garantindo a execução destas.
DÚVIDAS?
Exercícios – Quiz!!!
Descreva os estágios do ciclo de vida do
desenvolvimento do sistema.
Exercícios – Quiz!!!
Descreva as principais abordagens do
desenvolvimento de sistema.
Exercícios – Quiz!!!
Quais são os 3 modelos prescritivos e
escrevas sobre cada um deles?
Exercícios – Quiz!!!
Quais são a 4 atividades da engenharia de
requisitos? Escreva sobre cada uma
dessas atividades.
Exercícios – Quiz!!!
Qual a diferença entre PSP e TSP?
DESEMPATE
Exercícios – Quiz!!!
Quais atividades pertence a PSP?
Escreva sobre cada uma delas..