processos de software

44
Processos de Software Centro de Informática - Universidade Federal de Pernambuco Kiev Gama [email protected] Slides originais elaborados por Ian Sommerville e adaptado pelos profs. Márcio Cornélio, Vinicius Garcia e Kiev Gama O autor permite o uso e a modificação dos slides para fins didáticos

Upload: ejun10r

Post on 14-Sep-2015

226 views

Category:

Documents


2 download

DESCRIPTION

Engenharia de Software - Processos de Software

TRANSCRIPT

  • Processos de Software

    Centro de Informtica - Universidade Federal de Pernambuco

    Kiev Gama

    [email protected]

    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