Processos de Software
description
Transcript of Processos de Software
-
Processos de Software
Centro de Informtica - Universidade Federal de Pernambuco
Kiev Gama
Slides originais elaborados por Ian Sommerville e adaptado pelos profs. Mrcio Cornlio, Vinicius Garcia e Kiev Gama
O autor permite o uso e a modificao dos slides para fins didticos
-
O processo de software
Um conjunto estruturado de atividades, procedimentos, artefatos e ferramentas necessrios para o desenvolvimento de um sistema de software Atividades: Especificao, Projeto, Validao, Evoluo
Exemplos: Processo Unificado (RUP), Programao Extrema, UML Components
Um modelo de processo de software apresenta a descrio de um processo de uma perspectiva particular, normalmente focando apenas em algumas atividades.
2
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Modelos genricos de processo de software
O modelo cascata Fases separadas e distintas de especificao e
desenvolvimento.
Engenharia de software baseada em componentes O sistema montado a partir de componentes existentes.
Desenvolvimento iterativo Sistema desenvolvido atravs de vrias etapas
Existem muitas variantes destes modelos Ex: desenvolvimento formal onde um processo semelhante
ao cascata usado, mas a especificao formal refinada durante os vrios estgios para um projeto implementvel.
3
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Modelo cascata
4
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Resposta ao modelo code-and-fix vigente na dcada de 70
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Fases do modelo cascata
Anlise e definio de requisitos
Projeto de sistema e software
Implementao e teste de unidade
Integrao e teste de sistema
Operao e manuteno
Primeiro modelo a organizar as atividades de desenv.
Uma fase tem de estar completa antes de passar para a prxima. Sadas das fases so acordadas contratualmente!
Todas as fases envolvem atividades de validao
5
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Problemas do modelo cascata
Particionamento inflexvel do projeto em estgios Dificulta a resposta aos requisitos de mudana do
cliente.
Documentos completamente elaborados so necessrios para fazer as transies entre estgios
Apropriado somente quando os requisitos so bem compreendidos e quando as mudanas so raras Poucos sistemas de negcio tm requisitos estveis.
6
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Desenvolvimento evolucionrio
Implementao inicial, exposio do resultado aos comentrios do usurio e refinamento desse resultado em verses
Especificao, desenvolvimento e validao so intercaladas
Dois tipos Desenvolvimento exploratrio: explora requisitos
e entrega um sistema final
Prototipao throwaway: objetivo compreender os requisitos do cliente
7
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Desenvolvimento evolucionrio
Vantagem: especificao desenvolvida de forma incremental
Problemas:
Processo no visvel
Sistemas podem ser mal estruturados devido mudana contnua
8
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Desenvolvimento Exploratrio
Idia geral: Desenvolvimento da primeira verso do sistema o
mais rpido possvel
Modificaes sucessivas at que o sistema seja considerado adequado
Aps o desenvolvimento de cada uma das verses do sistema ele mostrado aos usurios para comentrios
Adequado para o desenvolvimento de sistemas onde difcil ou impossvel se fazer uma especificao detalhada do sistema
9
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Prototipao Descartvel
Como na programao exploratria, a primeira fase prev o desenvolvimento de um programa para o usurio experimentar No entanto, o objetivo aqui estabelecer os requisitos
do sistema O software deve ser reimplementado na fase seguinte
A construo de prottipos com os quais os usurios possam brincar uma idia bastante atrativa: Para sistemas grandes e complicados Quando no existe um sistema anterior ou um sistema
manual que ajude a especificar os requisitos
10
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Prototipao Descartvel
Os objetivos do prottipo devem estar bem claros antes do incio da codificao. Possveis objetivos: Entender os requisitos dos usurios Definir a interface com os usurios Demonstrar a viabilidade do sistemas para os
gerentes.
Uma deciso importante a ser tomada escolher o que ser e o que no ser parte do prottipo No economicamente vivel implementar todo o
sistema! Os objetivos do prottipo so o ponto de partida
11
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Engenharia de software baseada em componentes
Baseado em reuso sistemtico onde sistemas so integrados a partir de componentes existentes ou de sistemas COTS (Commercial-of-the-shelf)
Estgios do processo Anlise de componentes; Modificao de requisitos; Projeto de sistema com reuso; Desenvolvimento e integrao.
Esta abordagem est se tornando cada vez mais usada medida que padres de componentes tm surgido.
Reuso acidental vs. Reuso planejado
12
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Processos Iterativos
Requisitos de sistema SEMPRE evoluem no curso de um projeto
Algum retrabalho necessrio
A abordagem iterativa pode ser aplicada a qualquer um dos modelos genricos de processo
Duas abordagens (relacionadas) Entrega incremental;
Desenvolvimento espiral.
Essncia: especificao desenvolvida em conjunto com o software
13
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Entrega incremental
O sistema entregue ao cliente em incrementos Cada incremento fornece parte da funcionalidade
Os requisitos so priorizados Requisitos de prioridade mais alta so includos nos
incrementos iniciais.
Uma vez que o desenvolvimento de um incremento iniciado, os requisitos so congelados Os requisitos para os incrementos posteriores podem
continuar evoluindo (e incluir requisitos j implementados!)
14
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Desenvolvimento incremental
15
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Vantangens do desenvolvimento incremental
Incrementos podem ser entregues regularmente ao cliente e, desse modo, a funcionalidade de sistema disponibilizada mais cedo.
Os incrementos iniciais agem como prottipos para elicitar os requisitos para incrementos posteriores do sistema.
Riscos menores de falha geral do projeto.
Os servios de sistema de mais alta prioridade tendem a receber mais testes.
16
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Problemas do desenvolvimento incremental
Incrementos pequenos exigem mapeamento entre requisitos e incremento de tamanho adequado
Dificuldade de identificar os recursos comuns exigidos por todos os incrementos
17
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Extreme programming
Uma abordagem baseada no desenvolvimento e na entrega de incrementos de funcionalidade muito pequenos.
Baseia-se no aprimoramento constante do cdigo, em testes automatizados, no envolvimento do usurio na equipe e no desenvolvimento em pares.
18
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Desenvolvimento espiral
O processo representado como uma espiral ao invs de uma sequncia de atividades com realimentao.
Cada loop na espiral representa uma fase no processo.
Sem fases definidas, tais como especificao ou projeto os loops na espiral so escolhidos dependendo do que requisitado.
Os riscos so explicitamente avaliados e resolvidos ao longo do processo.
19
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Modelo espiral do processo de software
20
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Setores do modelo espiral
Definio de objetivos Objetivos especficos para a fase so identificados.
Avaliao e reduo de riscos Riscos so avaliados e atividades so realizadas para reduzir os
riscos-chave.
Desenvolvimento e validao Um modelo de desenvolvimento para o sistema, que pode ser
qualquer um dos modelos genricos, escolhido.
Planejamento O projeto revisado e a prxima fase da espiral planejada.
Processo de Desenvolvimento vs. Processo de
Gerenciamento
21
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Transformao Formal
Idia geral:
Uma especificao formal (definio matemtica, no ambgua) do software desenvolvida e posteriormente transformada em um programa atravs de regras que preservam a corretude da especificao
22
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
esp. 2 esp. 1 implement.
-
Transformao Formal
A grande motivao por trs da ideia de refinamento formal a possibilidade de gerar programas que so corretos por construo O prprio processo de desenvolvimento deve
garantir que o programa faz exatamente o que foi especificado
Este modelo tem sido aplicado ao desenvolvimento de sistemas crticos, especialmente naqueles onde a segurana um fator crtico (ex: sistema de controle de ferrovias)
23
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
ISO 12207 Processos de Ciclo de vida do Software Norma internacional que identifica quais os
processos no ciclo de vida do software
Processos fundamentais Aquisio
Fornecimento
Desenvolvimento
Operao
Manuteno
O que chamado de processo nesta norma, seria mais ou menos correspondente ao que visto como atividade em Sommerville
24
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Atividades de um processo de desenvolvimento (Sommerville)
Especificao de software
Projeto e implementao de software
Validao de software
Evoluo de software
25
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Especificao de software
O processo para definir quais servios so necessrios e identificar as restries de operao e de desenvolvimento do sistema.
Processo de engenharia de requisitos Estudo de viabilidade;
Realizado antes do projeto ser iniciado
Elicitao e anlise de requisitos;
Especificao de requisitos; Requisitos do usurio (mais abstrato) e requisitos do sistema
(descrio detalhada de funcioalidades)
Validao de requisitos.
26
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
O processo de engenharia de requisitos
27
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Tambm pode envolver a prototipao de partes do
sistema! Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Projeto e implementao de software
o processo de converso da especificao em um sistema de software
Projeto de software Projetar uma estrutura de software que atenda
especificao.
Implementao Transformar essa estrutura em um programa
executvel.
As atividades de projeto e implementao so fortemente relacionadas e podem ser intecaladas.
28
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Modelo genrico do processo de projeto de sistema
29
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Atividades especficas do processo de projeto
Projeto de arquitetura
Subsistemas e relacionamento
Especificao abstrata
Especificao abstrata de servios e restries de subsistemas
Projeto de interfaces entre componentes
Projeto de componente
Projeto de estrutura de dados
Projeto de algoritmo
30
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Mtodos estruturados
Abordagens sistemticas para projetar sistemas de software Project (gerenciamento) vs. Design
(desenvolvimento)
O projeto , em geral, documentado como um conjunto de modelos grficos
Modelos possveis Modelo de objeto; Modelo de sequncia; Modelo de transio de estado; Modelo estruturado; Modelo de fluxo de dados.
31
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Programao e depurao
a transformao de um projeto em um programa e a remoo de defeitos desse programa.
Programao uma atividade pessoal no h processo genrico de programao. H algumas prticas, porm, que so
universalmente consideradas boas
Programadores realizam alguns testes para descobrir defeitos no programa e removem esses defeitos no processo de depurao
32
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Validao de software
Verificao e validao (V & V) tm a inteno de mostrar que um sistema est em conformidade com a sua especificao e que atende aos requisitos do cliente
Verificao: construmos o sistema corretamente? Exs: inspeo de cdigo, anlise esttica
Validao: construmos o sistema correto? Exs: testes, animao de especificaes
Testes envolvem a execuo do sistema com casos de teste que so derivados da especificao do sistema e de dados reais a ser processados por ele.
33
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Estgios de teste
Teste de componente ou unidade Os componentes individuais so testados
independentemente; Esses componentes podem ser funes ou classes de
objetos, ou grupos coerentes dessas entidades.
Teste de sistema Teste de sistema como um todo. O teste das propriedades
emergentes particularmente importante. Busca erros que resultam de interaes no previstas entre
componentes
Teste de aceitao Teste com dados do cliente para verificar se o sistema
atende s suas necessidades, ou seja, pode revelar problemas de requisitos
34
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Fases de teste
35
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Evoluo de software
O software inerentemente flexvel e pode mudar
Requisitos mudam devido a diversos fatores e o software deve acompanhar essas mudanas
Processos antigos separavam explicitamente desenvolvimento de evoluo Processos e mtodos iterativos (XP, RUP, Espiral)
normalmente no fazem uma sepao explcita
Evoluo pode se dever a diversas razes: Correes (patches) Mudanas de requisitos Melhoria de funcionalidades pr-existentes
36
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Evoluo de software
37
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
(Rational) Unified Process
um (modelo de?) processo moderno baseado na UML Tenta cobrir todos os aspectos do desenvolvimento de
software
Fortemente focado na documentao do sistema Normalmente descrito a partir de trs
perspectivas: Uma perspectiva dinmica que mostra as fases ao
longo do tempo; Uma perspectiva esttica que mostra atividades de
processo; Uma perspectiva prtica que sugere bons princpios e
prticas de desenvolvimento
38
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Modelo de fases do RUP
39
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Centrado no gerenciamento de projetos
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Fases do RUP
Concepo
Estabelecer o business case para o sistema.
Elaborao
Desenvolver um entendimento do domnio do problema, arquitetura do sistema e identificar riscos
Construo
Projeto, programao, teste de sistema e documentao
Transio
Implantar o sistema no seu ambiente operacional.
40
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Fases do RUP
41
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Workflows estticos
42
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
Ian Sommerville, Engenharia de Software, 8. edio. Captulo 4
-
Boas prticas do RUP
Desenvolver o software iterativamente
Gerenciar requisitos
Usar arquiteturas baseadas em componentes
Modelar o software visualmente
Verificar a qualidade de software
Controlar as mudanas do software
43
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE
-
Leituras recomendadas
SOMMERVILLE, I. Engenharia de Software. 9. Ed. So Paulo: Pearson Education, 2011
Captulo 4
Referncia adicional
Barry W. Boehm. A Spiral Model of Software Development and Enhancement. IEEE Computer, vol. 21, nmero 5, Maio de 1988.
http://dx.doi.org/10.1109/2.59
44
[if682] Engenharia de Software e Sistemas - EC - CIn - UFPE