Buscar

Engenharia deSofware - Aula 3 - Processo de Desenv de Sftw e UML

Prévia do material em texto

1 
Teoria de Engenharia de 
Software 
 
Aula 3 
Processo de Desenvolvimento de Software e UML 
Prof. Rafael Targino 
rtargino@unicarioca.edu.br 
 
2 
O conteúdo desta aula foi parcialmente 
baseado nos slides disponíveis para o livro: 
Engenharia de Software 
Engenharia de Software – Conceitos e Práticas 
Raul Sidnei Wazlawick, Elsevier, 1a edição, 2013 
 
2 
3 
Resumo da Última Aula 
• A Importância do Software 
– O Software Pervasivo 
– A Evolução do Software 
– Características do Software 
• A Crise do Software 
– Casos de Insucesso 
– Mitos do Software 
– Causas 
• Engenharia de Software 
– Elementos da Engenharia de Software 
– Processos, Métodos e Ferramentas 
– Processo de Desenvolvimento de Software 
 
 
Engenharia de Software 
4 
Conteúdo da Aula 
• O que é um Processo? 
• Processo de Desenvolvimento de Software 
– Cascata 
– Modelo V 
– Modelo Evolucionário 
– Prototipação 
– Iterativo e Incremental 
– Espiral 
– RUP 
– Metodologias Ágeis 
• UML 
• Ferramentas 
 
 
Engenharia de Software 
3 
5 
O que é um Processo? 
• Processo é um conjunto de atividades que 
são executadas de forma sequencial para 
atingir algum objetivo 
– Atividades Interdependentes 
– Com responsáveis 
– Com entradas e saídas definidas 
Engenharia de Software 
6 
Exemplo Receita de Bolo 
1. Bata as claras em neve e reserve 
2. Bata bem as gemas com a margarina e o açúcar 
3. Adicione o leite e farinha aos poucos sem parar de 
bater 
4. Por último agregue as claras em neve e o fermento 
5. Unte uma forma grande de furo central com 
manteiga e farinha 
6. Coloque a massa na forma 
7. Asse em forno médio, pré - aquecido, por 
aproximadamente 40 minutos 
 
Engenharia de Software 
4 
7 
Representação Receita de Bolo em 
Diagrama 
Engenharia de Software 
Bater as 
Claras 
Bater as 
Gemas 
Adicionar o 
Leite e 
Farinha 
Adicionar as 
Claras 
Untar 
Forma 
Colocar no 
Forno 
8 
Qual a Vantagem de se ter uma 
Receita de Bolo? 
• Ensinar como se faz o bolo 
• Diminuir o risco de dar alguma coisa errada 
• O produto final sempre ser o mesmo (ou 
muito parecido) 
• Se o bolo ficar muito bom, a receita pode ser 
compartilhada com outras pessoas 
 
Engenharia de Software 
5 
9 
Qual a vantagem de um Processo de 
Desenvolvimento de Software? 
• Ensinar como se faz o software 
• Diminuir o risco de dar alguma coisa errada 
• O produto final sempre ser o mesmo – no 
caso, sempre ser um produto de qualidade 
de acordo com as especificações do usuário 
• Se o software for desenvolvido no tempo e 
custo esperado, o processo pode ser seguido 
em outros projetos 
 
Engenharia de Software 
10 
O que é um Processo ? 
• Um processo na Engenharia de Software é 
formado por um conjunto de passos 
(atividades) parcialmente ordenados, 
relacionados com artefatos, pessoas, 
recursos, estruturas organizacionais e 
restrições, tendo como objetivo produzir e 
manter os produtos de software finais 
requeridos. 
 
Engenharia de Software 
• Um processo na Engenharia de Software é 
formado por um conjunto de passos 
(atividades) parcialmente ordenados, 
relacionados com artefatos, pessoas, 
recursos, estruturas organizacionais e 
restrições, tendo como objetivo produzir e 
manter os produtos de software finais 
requeridos. 
 
6 
11 
Artefatos 
• Qualquer subproduto produzido durante o 
desenvolvimento do software 
• Pode ser um documento, uma lista, um 
diagrama, um desenho, um código fonte, um 
relatório de teste, etc. 
 
Engenharia de Software 
Artefatos de 
Entrada 
Artefatos de 
Saída 
12 
Atividades - Um Conjunto de Passos 
parcialmente ordenados 
• Uma descrição, que deve dizer em palavras 
simples e diretas o que deve ser feito para 
que a atividade seja realizada 
• Normalmente produz um artefato de saída a 
partir dos artefatos de entrada 
 
Engenharia de Software 
Atividade 
Artefatos de 
Entrada 
Artefatos de 
Saída 
7 
13 
Pessoas 
• Cada uma das atividades são executadas por 
uma ou mais pessoas desempenhando um 
Papel específico 
• Uma pessoa pode assumir vários Papéis 
Engenharia de Software 
Atividade 
Artefatos de 
Entrada 
Artefatos de 
Saída 
Pessoas 
14 
Recursos 
• O que será utilizado na execução de uma 
atividade 
– Consumíveis 
– Não Consumíveis 
Engenharia de Software 
Atividade 
Artefatos de 
Entrada 
Artefatos de 
Saída 
Recursos 
Pessoas 
8 
15 
Restrições 
• Restrições sobre como as atividades podem 
ser executadas 
• Estabelecem limites 
 
Engenharia de Software 
Atividade 
Artefatos de 
Entrada 
Artefatos de 
Saída 
Recursos Restrições 
Pessoas 
16 
Representar e Descrever Processos 
• A melhor maneira para representar um 
processo é através da utilização de modelos 
e diagramas 
• A melhor maneira para descrever um 
processo mais detalhado é através de um 
documento estruturado 
Engenharia de Software 
9 
17 
Exemplo: Representando um 
Processo com Diagramas 
Engenharia de Software 
18 
Exemplo: Descrevendo um Processo 
com Documentos Estruturados 
 
Engenharia de Software 
10 
19 
Exemplo: Descrevendo um Processo com 
Documentos Estruturados 
Engenharia de Software 
20 
Exercícios 
• No contexto dos usuários finais de um 
sistema de gestão acadêmica universitária, 
informe uma pessoa que pode assumir dois 
papéis diferentes na utilização do sistema 
• Considerando o professor na atividade de 
“Ministrar Aula” defina exemplos de: 
– Artefatos de Entrada 
– Responsável pela Atividade (pessoa) 
– Participante da Atividade (pessoa) 
– Recursos 
– Restrições 
– Artefatos de Saída 
Engenharia de Software 
11 
21 
Conteúdo da Aula 
• O que é um Processo? 
• Processo de Desenvolvimento de Software 
– Cascata 
– Modelo V 
– Modelo Evolucionário 
– Prototipação 
– Iterativo e Incremental 
– Espiral 
– RUP 
– Metodologias Ágeis 
• UML 
• Ferramentas 
 
 
Engenharia de Software 
22 
Processo de Desenvolvimento de 
Software 
• Um Processo de desenvolvimento define: 
– O que 
– Quando 
– Como 
• Também chamado de Metodologia 
 
Engenharia de Software 
12 
Padrões 
Genéricos 
de 
Processos 
Engenharia de Software 
Fluxo de Processo Linear 
Fluxo de Processo Iterativo 
Fluxo de Processo Evolucionário 
Fluxo de Processo Paralelo 
24 
Questões que determinam a escolha 
de um processo 
• Quão bem os analistas e o cliente podem conhecer os 
requisitos do sistema? 
• Quão bem é compreendida a arquitetura do sistema? 
• Qual o grau de confiabilidade necessário em relação 
ao cronograma? 
• Quanto planejamento é efetivamente necessário? 
• Qual o grau de risco que este projeto apresenta? 
• Será necessário entregar partes do sistema 
funcionando antes de terminar o projeto todo? 
• Será desenvolvido um único sistema ou uma família 
de sistemas semelhantes? 
• Qual o tamanho do projeto? 
 
Engenharia de Software 
13 
25 
Papéis e Atividades no Desenvolvimento de 
Software 
Usuários 
Problema 
Entendimento 
do problema 
Verificação 
&Validação 
Projeto da Solução 
Testes 
Time de Desenvolvimento 
Programadores 
Testadores 
Designers 
Gerente de Projetos 
Analistas de Sistemas 
Arquitetos de Software 
Implantação 
Levantamento 
de Requisitos 
Análise de 
Requisitos 
Projeto Implementação Testes Implantação 
Desenvolvimento 
do Sistema 
26 
Modelo de Ciclo de Vida em 
Cascata 
• Método sistemáticoe sequencial 
• O resultado de uma fase se constitui na entrada 
da outra 
• Também conhecido como Modelo Clássico 
14 
27 
Problemas Modelo de Ciclo de Vida em 
Cascata 
• Rigidez do processo 
• Projetos reais raramente seguem um fluxo 
seqüencial 
• Assume que é possível declarar 
detalhadamente todos os requisitos antes do 
início das demais fases do desenvolvimento. 
– propagação de erros pelas as fases do processo. 
• Uma versão de produção do sistema não 
estará pronta até que o ciclo do projeto de 
desenvolvimento chegue ao final. 
 
28 
Modelo V 
Engenharia de Software 
15 
29 
Modelo V 
• Permite, em caso de anomalia, delimitar um 
retorno às etapas precedentes 
• Enfatiza a importância de considerar as 
atividades de testes durante o processo, ao 
invés de um teste posterior após o término 
do processo 
• Pode-se obter a retroalimentação mais 
rapidamente 
• Ajuda a desenvolver novos requisitos 
• Melhora a qualidade do produto resultante. 
 
Engenharia de Software 
30 
Modelo Evolucionário 
• Tem com base a ideia de desenvolver uma 
implementação inicial, expor o resultado ao 
comentário do usuário e fazer seu 
aprimoramento por meio de muitas versões, 
até que tenha sido desenvolvido; 
 
Engenharia de Software 
16 
31 
Modelo Evolucionário 
• A especificação, desenvolvimento e 
validação são executados concorrentemente 
 
Engenharia de Software 
32 
Modelo Evolucionário 
• Pode ser: 
– Exploratório: tem como objetivo trabalhar com 
o cliente a fim de explorar seus requisitos e 
entregar um sistema final. São feitas partes 
inicias e acrescentadas novas de acordo com o 
desenvolvimento. 
– Protótipos descartáveis: tenta compreender os 
melhor os requisitos a partir de protótipos e 
então desenvolver uma especificação de 
requisitos completa. 
 
Engenharia de Software 
17 
33 
Modelo Evolucionário 
• Problemas: 
– O processo não é visível: como o sistema é 
desenvolvido rapidamente, não há tempo de 
documentar as versões; 
– Os sistemas são mal-estruturados: mudanças 
constantes podem corromper a estrutura do 
software; 
– Requer ferramentas e técnicas especiais: que 
nem sempre são disponíveis ou são aplicáveis ao 
caso. 
 
Engenharia de Software 
34 
Prototipação 
18 
35 
Prototipação 
• Tem como objetivo de assegurar que os 
requisitos do sistema foram bem entendidos. 
• Técnica frequentemente aplicada quando: 
– há dificuldades no entendimento dos requisitos 
do sistema 
– há requisitos que precisam ser mais bem 
entendidos 
– O próprio usuário não tem compreensão completa 
do problema 
 
 
Engenharia de Software 
36 
Prototipação 
 
Engenharia de Software 
19 
37 
Novo Modelo de Ciclo de Vida 
 
Vamos assumir nossa incompetência em 
planejamento a longo prazo e vamos dividir o 
planejamento em pequenos pedaços 
chamados de iteração! 
 
 Ciclo de Vida Incrementa e Iterativo 
38 
Vários Mini-Cascatas 
• Cada cascata é uma iteração... 
I t e r a ç ã o 1 I t e r a ç ã o 2 I t e r a ç ã o 3 
20 
39 
Modelo Iterativo e Incremental 
• Dividir para conquistar 
• O desenvolvimento ocorre em várias 
iterações, cada uma delas resultando em 
extensão de funcionamento e/ou maior 
conhecimento do sistema 
• As funcionalidades mais críticas devem ser 
tratadas nas primeiras iterações 
 
Engenharia de Software 
Modelo Iterativo e Incremental 
Incremental 
Iterativo 
21 
41 
Modelo Iterativo e Incremental 
• Vantagens 
– Antecipa possíveis problemas no 
desenvolvimento de software através de 
versões preliminares 
– Entrega acelerado dos serviços ao cliente 
– Engajamento do usuário do sistema com o 
processo de desenvolvimento 
– Redução do risco de lançar o projeto no 
mercado fora da data planejada. Identificando 
os riscos numa fase inicial o esforço 
despendido para gerenciá-los ocorre cedo, 
quando as pessoas estão sob menos pressão 
do que numa fase final de projeto. 
 
42 
Modelo Iterativo e Incremental 
• Desvantagens 
–Passa a ter uma camada a mais de 
gerenciamento, que é o controle e a 
ordem de cada iteração 
–Problemas Contratuais pois o software 
desenvolvido pode caminhar para um 
produto muito diferente do que foi 
contratado 
 
Engenharia de Software 
22 
43 
Processo em Espiral – preocupação explícita 
com os riscos do projeto de 
desenvolvimento 
Processo em Espiral – uma volta da espiral 
representa uma única fase de 
desenvolvimento de software 
23 
45 
Processo em Espiral 
• O processo é representado por uma espiral 
ao invés de ser representado como uma 
sequencia de atividades 
• Cada volta da espiral (loop) representa uma 
única fase de desenvolvimento de software 
• Capacita o desenvolvedor e o cliente a 
entender e a reagir aos riscos em cada etapa 
evolutiva 
• Engloba as melhores características do ciclo 
de vida Clássico como o da Prototipação 
adicionando um novo elemento: a Análise de 
Riscos 
Engenharia de Software 
46 
Processo em Espiral: Setores da 
Espiral 
1. Planejamento 
– O projeto é revisado e a próxima fase da espiral é 
planejada 
2. Análise de Risco 
– Os riscos são avaliados e são adotadas as atividades para 
reduzir os ricos principais 
3. Engenharia ou Desenvolvimento 
– É escolhido um modelo de desenvolvimento para o sistema, 
que pode ser qualquer um dos modelos genéricos 
4. Análise do Cliente / Definição dos Objetivos 
– Identificam-se os objetivos específicos da próxima fase 
 
Engenharia de Software 
24 
47 
RUP 
48 
Métodos Ágeis 
25 
49 
Conclusão 
• A maneira de construir software evoluiu 
bastantes nas últimas décadas 
– Definição cada vez mais detalhada dos 
Processos 
– Inclusão de técnicas adicionais para garantir o 
sucesso de cada uma das fases 
– Utilização de iterações cada vez menores 
 
50 
Questões de Concursos 
Dentro da Engenharia de Software, encontramos uma 
gama de conceitos. Embasado nisso, analise as 
assertivas e assinale a alternativa que aponta a(s) 
correta(s) sobre Processos de Software. 
 
I. Podemos definir um processo de software como um 
conjunto de atividades relacionadas que levam à 
produção de um produto de software. 
 
II. A definição das funcionalidades do software e as 
restrições a seu funcionamento devem ser definidas 
na produção de um software. Essa atividade está 
incluída no processo de software. 
 
26 
51 
Questões de Concursos 
III. A validação de software também é uma atividade 
presente no processo de software. 
IV. Os processos de software são complexos e, como 
todos os processos intelectuais e criativos, dependem 
de pessoas para tomar decisões e fazer julgamentos. 
Não existe um processo ideal, a maioria das 
organizações desenvolve seus próprios processos de 
desenvolvimento de software. 
 a) Apenas I. 
 b) Apenas I e III. 
 c) Apenas I e IV. 
 d) Apenas II, III e IV. 
 e) I, II, III e IV. 
 
52 
Questões de Concursos 
Um modelo de processo de software é uma representação 
abstrata de um processo de software. Nesse contexto, analise 
os dois métodos abaixo, amplamente utilizados na prática 
atual da engenharia de software. 
 
I- Abordagem que considera as atividades fundamentais do 
processo, compreendendo especificação,desenvolvimento, 
validação e evolução, e as representa como fases de processo 
separadas, tais como especificação de requisitos, projeto de 
software, implementação, teste, e assim por diante. 
 
II- Abordagem que intercala as atividades de especificação, 
desenvolvimento e validação, sendo um sistema desenvolvido 
rapidamentebaseado em especificações abstratas, quando, 
então, é refinado com as entradas do cliente para produzir um 
sistema que satisfaça as suas necessidades. 
 
Engenharia de Software 
27 
53 
Questões de Concursos 
• Essas definições caracterizam duas abordagens, 
respectivamente denominadas Métodos de 
Processos: 
 
a) em blocos e baseado em componentes 
b) em interações e baseado em módulos estruturados 
c) em protótipos e baseado em validações sucessivas 
d) em espiral e baseado na implementação 
incremental 
e) em cascata e baseado no desenvolvimento 
evolucionário 
 
Engenharia de Software 
54 
Conteúdo da Aula 
• O que é um Processo? 
• Processo de Desenvolvimento de Software 
– Cascata 
– Modelo V 
– Modelo Evolucionário 
– Prototipação 
– Iterativo e Incremental 
– Espiral 
– RUP 
– Metodologias Ágeis 
• UML 
• Ferramentas 
 
 
Engenharia de Software 
28 
55 
Paradigma 
• Um paradigma é uma forma de abordar um 
problema. 
• No contexto da modelagem de um sistema de 
software, um paradigma tem a ver com a forma 
pela qual esse sistema é entendido e construído. 
• A primeira abordagem usada para modelagem de 
sistemas de software foi o paradigma 
estruturado. 
– Uso da técnica de decomposição funcional 
– “divida sucessivamente um problema completo em 
subproblemas” 
• Hoje em dia, praticamente suplantou o paradigma 
anterior, o paradigma da orientação a objetos... 
 
Engenharia de Software 
56 
Fundamentos da Orientação a 
Objetos 
• Através de sua analogia biológica, Alan Kay 
definiu os fundamentos da orientação a 
objetos. 
1. Qualquer coisa é um objeto. 
2. Objetos realizam tarefas através da requisição de 
serviços a outros objetos. 
3. Cada objeto pertence a uma determinada classe. 
Uma classe agrupa objetos similares. 
4. A classe é um repositório para comportamento 
associado ao objeto. 
5. Classes são organizadas em hierarquias. 
 
Engenharia de Software 
29 
57 
Propostas para Modelagem 
Orientada a Objetos 
• Na primeira metade da década de 90 
surgiram várias propostas de técnicas para 
modelagem de sistemas segundo o 
paradigma orientado a objetos. 
• Houve uma grande proliferação de propostas 
para modelagem orientada a objetos. 
– diferentes notações gráficas para modelar uma 
mesma perspectiva de um sistema. 
– cada técnica tinha seus pontos fortes e fracos. 
 
Engenharia de Software 
58 
UML (Linguagem de Modelagem 
Unificada) 
• “A UML é a linguagem padrão para 
visualizar, especificar, construir e 
documentar os artefatos de software de um 
sistema.” 
• Unificação de diversas notações anteriores. 
• Mentores: Booch, Rumbaugh e Jacobson 
– “Três Amigos” 
– IBM Rational (www.rational.com) 
 
Engenharia de Software 
30 
59 
UML (Linguagem de Modelagem 
Unificada) 
• UML é... 
– uma linguagem visual. 
– independente de linguagem de programação. 
– independente de processo de desenvolvimento. 
• UML não é... 
– uma linguagem programação (mas possui 
versões!). 
– uma técnica de modelagem. 
60 
UML (Linguagem de Modelagem 
Unificada) 
• Um processo de desenvolvimento que utilize a UML 
como linguagem de modelagem envolve a criação 
de diversos documentos. 
– Estes documentos, denominados artefatos de software, 
podem ser textuais ou gráficos. 
• Os artefatos gráficos produzidos de um sistema OO 
são definidos através dos diagramas da UML. 
31 
61 
Elementos Essenciais - Estruturais 
 
Engenharia de Software 
Cliente
<<entity>>
-razaoSocial: String
-cpf: String
+getRazaoSocial()
+setRazaoSocial(razaoSocial: String)
Classe 
Cliente
Objeto 
Interface 
Web Server
Nó 
ocv.dll
Componente 
Relacionamentos 
IImprimivel
62 
Elementos Essenciais - 
Comportamentais 
 
Engenharia de Software 
Operador
Programar produçãoConectando
Caso de uso 
Ator 
Estados Mensagens 
32 
63 
Elementos Essenciais - Agrupamento 
 
Engenharia de Software 
Banco de Dados
Regras de negócio
Interface
Pacotes 
64 
Diagramas da UML 
• Um diagrama na UML é uma apresentação de uma 
coleção de elementos gráficos que possuem um 
significado predefinido. 
– No contexto de desenvolvimento de software, 
correspondem a desenhos gráficos que seguem algum 
padrão lógico. 
33 
65 
Diagramas da UML 2.0 
66 
Diagramas da UML 2.0 – Mais Usados 
na Fase de Análise de Sistemas 
34 
67 
• Diagrama de Casos de Uso de um sistema de uma biblioteca 
Exemplo de Diagrama de Casos de 
Uso 
Engenharia de Software 
68 
• Diagrama de Estados de um Livro em um sistema de uma 
biblioteca 
Diagrama de Estados 
Engenharia de Software 
35 
69 
Exemplo de Diagrama de Casos de 
Uso 
Engenharia de Software 
• Diagrama de Classes de uma loja de CDs e Livros 
70 
Diagramas da UML 2.0 – Mais Usados 
na Fase de Projeto de Sistemas 
36 
71 
Exemplo de Diagrama de Sequência 
 
Engenharia de Software 
72 
Conteúdo da Aula 
• O que é um Processo? 
• Processo de Desenvolvimento de Software 
– Cascata 
– Modelo V 
– Modelo Evolucionário 
– Prototipação 
– Iterativo e Incremental 
– Espiral 
– RUP 
– Metodologias Ágeis 
• UML 
• Ferramentas 
 
 
Engenharia de Software 
37 
73 
Ferramentas de Suporte 
• O desenvolvimento de um software pode ser 
facilitado através do uso de ferramentas que 
auxiliam: 
– na construção de modelos, 
– na integração do trabalho de cada membro da 
equipe, 
– no gerenciamento do andamento do 
desenvolvimento, etc. 
 
Engenharia de Software 
74 
Ferramentas CASE 
• Utilizadas para efetuar a modelagem dos 
sistemas 
• As mais utilizadas hoje em dia são as que 
suportam os diagramas da UML 
– Comercial e “Edições da Comunidade” 
• MagicDraw 
• Poseidon 
• Enterprise Architect 
• Rational Rose 
• Jude 
• Omondo Eclipse UML 
– Open source 
• Umbrello 
• ArgoUML 
• Dia 
 
Engenharia de Software 
38 
75 
Exemplo 
Engenharia de Software 
76 
Exemplo 
 
Engenharia de Software

Continue navegando