• Nenhum resultado encontrado

ES 02 - Processos de Software

N/A
N/A
Protected

Academic year: 2021

Share "ES 02 - Processos de Software"

Copied!
46
0
0

Texto

(1)

Régis Simão 1/46

Processos de Software

Processos de Software

(2)

Processos de Software

Agenda

 Introdução

 Modelos de processos de software  Iteração de processo

 Especificação de software

 Projeto e implementação de software  Validação de software

 Evolução de software

 Apoio automatizado ao processo  Bibliografia

(3)

Régis Simão 3/46

Processos de Software

Introdução

 Objetivos

 Introduzir modelos de processos de software

 Descrever alguns de modelos de processos e quando eles devem ser

usados

 Descrever modelos de processos para engenharia de requisitos,

desenvolvimento de software, teste e evolução

 Introduzir a tecnologia CASE para suportar as atividades de processos de

(4)

Processos de Software

Introdução

 Um conjunto estruturado de atividades necessárias ao desenvolvimento de um produto de software

 Especificação  Projeto

 Validação  Evolução

 Um modelo de processo de software é uma representação abstrata de um processo. Ele apresenta uma descrição de um processo sob alguma

perspectiva particular

 Modelos de processos de software são chamados também de ciclo de vida de processos

(5)

Régis Simão 5/46

Processos de Software

Modelos de Processos de Software

 Modelos Genéricos

 Modelo em “cascata” (Waterfall)

 Fases distintas e separadas para especificação e desenvolvimento

 Desenvolvimento evolucionário

 Especificação e desenvolvimento intercalados

 Desenvolvimento orientado a reuso ou Engenharia baseada em

Componentes

 O sistema é montado a partir de componentes existentes

 Desenvolvimento formal de sistemas

 Um modelo matemático do sistema é formalmente transformado em uma

(6)

Processos de Software

Modelos de Processos de Software – Modelo em cascata

Definição de Requisitos Projeto de Software Implementação e teste de unidade Integração e teste de sistema Operação e Manutenção

(7)

Régis Simão 7/46

Processos de Software

Modelos de Processos de Software – Modelo em cascata

 Fases

 Análise e definição de requisitos  Projeto de Software de Sistemas  Implementação e testes de unidade  Integração e testes de sistema

 Operação e manutenção

 A desvantagem do modelo em cascata é a dificuldade de acomodar

mudanças após o processo está adiantado

(8)

Processos de Software

Modelos de Processos de Software – Modelo em cascata

 Problemas

 Divisão inflexível do projeto em estágio distintos

 Dificuldade de respostas às mudanças de requisitos dos clientes

 Assim, este modelo é somente apropriado quando os requisitos são bem

(9)

Régis Simão 9/46

Processos de Software

Modelos de Processos de Software – Desenvolvimento evolucionário

 Tipos

 Desenvolvimento exploratório

 O objetivo é trabalhar com os cliente, a fim de explorar seus requisitos e

entregar um sistema final. Deveria ser iniciado com requisitos bem entendidos

 Fazer protótipos descartáveis

 O objetivo é entender os requisitos do sistema. Deveria ser iniciado com

(10)

Processos de Software

Modelos de Processos de Software – Desenvolvimento evolucionário

Versões intermediárias Versões intermediárias Descrição do esboço Especificação Desenvolvimento Validação Versão inicial Versões intermediárias Versão final

(11)

Régis Simão 11/46

Processos de Software

Modelos de Processos de Software – Desenvolvimento evolucionário

 Problemas

 Falta de visibilidade do processo, o progresso é medido através da

geração de produtos regulares

 Sistemas são freqüentemente mal estruturados

 Habilidades especiais (por exemplo: linguagens para prototipagem

rápida) podem ser necessárias

 Aplicabilidade

 Para sistemas interativos de tamanhos pequenos e médios

(12)

Processos de Software

Modelos de Processos de Software – Desenvolvimento orientado a

reuso

 Baseado em reuso sistemático, onde sistemas são integrados a partir de componentes existentes na empresa ou COTS (commercial-off-the-shelf).  Estágios do processo:

 Análise de componentes  Modificação de requisitos  Projeto do sistema com reuso  Desenvolvimento e integração

 Esta técnica está ganhado mais ênfase, mas ainda existem poucas experiências com ela

(13)

Régis Simão 13/46

Processos de Software

Modelos de Processos de Software – Desenvolvimento orientado a

reuso

Especificação de requisitos Análise dos componentes Modificação de requisitos Projeto do sistema com reuso Desenvolvimento e integração Validação do sistema

(14)

Processos de Software

Modelos de Processos de Software – Desenvolvimento orientado a

reuso

 Vantagens

 Reduz a quantidade de software a ser desenvolvimento, reduzindo o

custo e os riscos

 Leva a uma entrega mais rápida do software

 Desvantagens

 Preconiza a existência de uma biblioteca de componentes

 Conflitos entre os requisitos do cliente e os componentes disponíveis  Gestão mais complexa na evolução dos componentes e da aplicação

(15)

Régis Simão 15/46

Processos de Software

Modelos de Processos de Software – Desenvolvimento formal de

sistemas

 Baseado na transformação de uma especificação matemática formal em diferentes representações até um programa executável

 Transformações formais preservam a corretude, pois cada transformação é como uma prova formal, que mostra que o programa está em

conformidade com a especificação

 Exemplo: Abordagem Cleanroom da IBM, 1987. Desenvolve-se e prova-se matematicamente, não há testes

(16)

Processos de Software

Modelos de Processos de Software – Desenvolvimento formal de

sistemas

Definição de Requisitos Especificação formal Transformação formal Integração e testes de sistema Desenvolvimento formal de sistemas

Especificação formal Programa executável R1 R2 R3 P1 P2 P3 P4 Transformações formais TN: Transformação formal RN: Representação matemática

PN: Provas de corretude das transformações

(17)

Régis Simão 17/46

Processos de Software

Modelos de Processos de Software – Desenvolvimento formal de

sistemas

 Problemas

 Necessidade de conhecimento e treinamento especializado para aplicar a

técnica

 Dificuldade de formalmente especificar alguns aspectos do sistema, tais

como interface do usuário

 Aplicabilidade

 Sistemas críticos, especialmente aquele que requerem segurança e

(18)

Processos de Software

Iteração de processo

 Os requisitos do sistema SEMPRE evoluem durante o projeto, assim a iteração do processo, onde os estágio iniciais são retrabalhados, é sempre parte do processo de grandes sistemas

 Iteração pode ser aplicado a qualquer um dos modelos genéricos  Existem duas técnicas relacionadas:

 Desenvolvimento incremental  Desenvolvimento em espiral

(19)

Régis Simão 19/46

Processos de Software

Iteração de processo – Desenvolvimento incremental

 No lugar de entregar o sistema como uma única entrega, o

desenvolvimento e a entrega são divididos em incrementos, onde cada incremento entrega parte das funcionalidades solicitadas

 Requisitos dos usuários são priorizados e os requisitos de prioridades mais altos são incluídos nos incrementos iniciais

 Um vez que o desenvolvimento de um incremento é iniciado, os requisitos são congelados, embora os requisitos continuem a evoluir nos

(20)

Processos de Software

Iteração de processo – Desenvolvimento incremental

Definir esboço dos requisitos Atribuir requisitos aos incrementos Projetar arquitetura do sistema Desenvolver incremento do sistema Validar

incremento Integrar incremento

Validar sistema

Sistema incompleto

Sistema final

(21)

Régis Simão 21/46

Processos de Software

Iteração de processo – Desenvolvimento incremental

 Vantagens

 Funcionalidades que acrescentam maiores valores para o usuário são

entregues mais cedo, a cada incremento

 Os incrementos iniciais agem como protótipos que ajudam a elicitar

requisitos para os incrementos seguintes

 Os serviços de prioridades mais altas tendem a receber mais testes

 Extreme Programming (XP)

 Uma nova técnica para construir software baseado no desenvolvimento e

na entrega de incrementos muito pequenos de funcionalidade

 Apoia-se no aumento constante de código, no envolvimento do usuário

(22)

Processos de Software

Iteração de processo – Desenvolvimento em espiral

 O processo é representado como uma espiral, ao invés de uma seqüência de atividades com algum retorno de uma atividade para outra

 Cada volta na espiral representa uma fase no processo

 Não há fases fixas, como especificação ou projeto, as atividades na espiral são escolhidas dependendo do que é necessário

(23)

Régis Simão 23/46

Processos de Software

Iteração de processo – Desenvolvimento em espiral

R is k a n a ly s is R i s k a n a l y s i s R is k a n a ly s is R i s k a n a ly s i s P ro t o -t y p e 1 P ro t o t y p e 2 P ro t o t y p e 3 O p e r a -ti o n a l p r o t oy p e C o n c e p t o f O p e r a ti o n S im u l a t i o n s , m o d e ls , b e n c h m a r k s S /W re q u i r e m e n t s R e q u i r e m e n t v a li d a ti o n D e s i g n V & V P ro d u c t d e s i g n D e ta i l e d d e s i g n C o d e U n i t t e s t I n t e g r a t i o n t e s t A c c e p ta n c e te s t S e rv i c e D e v e lo p , v e r i f y n e x t -l e v e l p ro d u c t E v a lu a te a lt e rn a t iv e s id e n t if y , r e s o l v e r is k s D e te r m in e o b j e c t iv e s a lte r n a t iv e s a n d c o n s tr a in t s P la n n e x t p h a s e I n te g r a ti o n a n d t e s t p la n D e v e l o p m e n t p l a n R e q u i r e m e n t s p l a n L i fe - c y c le p l a n R E V I E W

(24)

Processos de Software

Iteração de processo – Desenvolvimento em espiral

 Cada laço da espiral é dividido em quatro setores:

 Definição de Objetivos

 São identificados os objetivos específicos de cada fase

 Avaliação e redução dos riscos

 Riscos são avaliados e as atividades são selecionadas para reduzir ou

eliminar os riscos mais altos

 Desenvolvimento e validação

 Um modelo de desenvolvimento é escolhido, podendo ser qualquer um dos

modelos genéricos

 Planejamento

(25)

Régis Simão 25/46

Processos de Software

Especificação de Software

 É o processo de estabelecer o que serviços são necessários e as restrições de desenvolvimento e operação de sistemas

 Processo de engenharia de sistemas:

 Estudo da viabilidade

 Elicitação e análise de requisitos  Especificação de requisitos

(26)

Processos de Software

Especificação de Software – Processo de engenharia de requisitos

Estudo de viabilidade Levantamento e análise de requisitos Especificação de requisitos Validação de requisitos Relatório de viabilidade Modelo de sistemas Requisitos do usuário e do sistema Documentação de requisitos

(27)

Régis Simão 27/46

Processos de Software

Projeto e Implementação de Software

 É o processo de converter a especificação do sistema em um sistema executável

 Projeto de software

 Projetar uma estrutura de software que atenda as especificações

 Implementação

 Traduzir a estrutura em um programa executável

 As atividades de projeto e implementação estão muito relacionadas e podem ser intercaladas

(28)

Processos de Software

Projeto e Implementação de Software – Processo de projeto

Projeto de arquitetura Especificação de requisitos Especificação abstrata Arquitetura de sistema Especificação de Software Especificação de interface Especificação de componentes Especificação de estruturas de dados Especificação de algoritmos Projeto de interface Projeto de componentes Projeto de estruturas de dados Projeto de algoritmos

(29)

Régis Simão 29/46

Processos de Software

Projeto e Implementação de Software – Métodos de projeto

 Técnica sistemática para o desenvolvimento do projeto de software  O projeto é geralmente documentado como um conjunto de modelos

gráficos

 Possíveis modelos:

 Modelo de fluxo de dados

 Modelo de relacionamento de entidades ou modelo de

entidade-relacionamento (MER)

 Modelo estrutural

(30)

Processos de Software

Projeto e Implementação de Software – Programação e depuração

 São as técnicas de traduzir um projeto em programa e remover erros do programa

 Programar é uma atividade pessoal, não existe um processo de programação geral

 Os programadores realizam algum testes de programas para descobrir falhas no programa e remover estas falhas no processo de depuração

(31)

Régis Simão 31/46

Processos de Software

Projeto e Implementação de Software – Processo de depuração

Localizar erro

Projetar

solução do erro Reparar erro

Refazer testes do programa

(32)

Processos de Software

Validação de Software

 Verificação e validação destinam-se a mostrar que um sistema está de acordo com suas especificações e que ele atende as expectativas do cliente

 Envolve checar e rever os processos e testar o sistema

 Testar sistema envolve executar o sistema com casos de testes que são derivados da especificação do dados reais a serem processados pelo sistema

(33)

Régis Simão 33/46

Processos de Software

Validação de Software – Processo de teste

Teste de unidade Teste de módulo Teste de subsistema Teste de sistema Teste de aceitação

(34)

Processos de Software

Validação de Software – Estágios de Teste

 Teste de unidade

 Componentes individuais são testados

 Teste de módulo

 Coleções relacionadas de componentes são testadas

 Teste de subsistema

 Módulos são integrados em subsistemas e testados. O foco deve ser o

teste de interface

 Teste de sistema

 Testar o sistema como um todo. Testar as propriedades emergentes

 Teste de aceitação

(35)

Régis Simão 35/46

Processos de Software

Validação de Software – Fases de teste no processo de software

Especificação de requisitos Especificação de sistema Projeto de sistema Projeto detalhado Teste de aceitação Teste de integração de sistema Teste de integração de subsistema Operação Teste de integração de subsistema Plano de teste de aceitação Plano de teste de integração de sistema Plano de teste de integração de subsistema

(36)

Processos de Software

Evolução de Software

 Software é inerentemente flexível e pode ser alterado

 A medida que os requisitos mudam devido a circunstâncias de negócio, o software que suporta o negócio deve também evoluir e mudar

 Embora tenha existido uma demarcação entre desenvolvimento e evolução, é altamente irrelevante a medida que menos sistemas são completamente novos

(37)

Régis Simão 37/46

Processos de Software

Evolução de Software

Definir requisitos do sistema Avaliar sistemas existentes Propor mudanças de sistema Modificar sistemas Sistemas existentes Novo sistema

(38)

Processos de Software

Apoio Automatizado ao Processo

 Engenharia de software auxiliada por computador (CASE) é o nome dado ao software utilizado para apoiar as atividades de processo de software: desenvolvimento e evolução

 Atividades automatizadas:

 Editor gráfico para desenvolvimento de modelos de sistemas  Dicionário de dados para gerenciar entidades do projeto

 Construtor de interfaces gráficas (interfaces de usuário)  Depuradores para apoiar a busca de falhas no sistema

(39)

Régis Simão 39/46

Processos de Software

Apoio Automatizado ao Processo – Tecnologia CASE

 A tecnologia CASE tem permitido uma melhoria significante no processo de software, mas não na ordem de magnitude que foi previsto

 Construir software requer criatividade, isto não pode ser automatizado  Construir software é uma atividade de time e, em grandes projetos, muito

tempo é gasto em iterações das pessoas. Tecnologia CASE não suportam bem estas comunicações

(40)

Processos de Software

Apoio Automatizado ao Processo – Classificação CASE

 Classificação ajuda a entender os diferentes tipos de ferramentas CASE e os seus suportes às atividades do processo

 Perspectiva funcional

 Ferramentas são classificadas de acordo com sua função específica

 Perspectiva de processo

 Ferramentas são classificadas de acordo com a atividade que elas

apóiam

 Perspectiva de integração

 Ferramentas são classificadas de acordo com a maneira como são

organizadas em unidades integradas, que fornecem apoio a uma ou mais atividades de processo

(41)

Régis Simão 41/46

Processos de Software

Apoio Automatizado ao Processo – Classificação Funcional de

Ferramentas CASE

(42)

Processos de Software

Apoio Automatizado ao Processo – Classificação Ferramentas CASE

com base em Atividades

(43)

Régis Simão 43/46

Processos de Software

Apoio Automatizado ao Processo – Integração CASE

 Ferramentas

 Suportam tarefas individuais do processo, tais como checagem de

consistência do projeto, edição de texto, etc

 Workbenches

 Suportam uma fase do processo, tais como especificação ou projeto.

Normalmente, incluem um número de ferramentas integradas

 Ambientes

 Suportam todas as atividades ou uma substancial parte de todo o

processo de software. Normalmente incluem vários workbenches integrados

(44)

Processos de Software

Apoio Automatizado ao Processo – Ferramentas, Workbenches e

Ambientes

(45)

Régis Simão 45/46

Processos de Software

Bibliografia

 Sommerville, Ian. Engenharia de Software, 8a. edição. Addison Wesley, 2007

(46)

Processos de Software

Referências

Documentos relacionados

Além de serem gravados no cartão, os dados são transmitidos através de um módulo de rádio frequência transmissor para um receptor do modelo, onde há um outro PIC capaz de

São muitos os problemas ambientais causados pelo crescimento urbano, o poder público não acompanha esse crescimento com investimentos em obras de infraestrutura, são ocupados

– dificuldade em mensurar a dimensão do problema , em trabalhar a diversidade de manifestações no extenso território nacional e em pautar o assunto nos diferentes espaços públicos

É bastante conhecido, que a melhoria da eficiência na aplicação envolve a escolha adequada do equipamento de aplicação, com ponta de pulverização que produza

Microglanis lundbergi is distinguished from all congeners by the presence of a forked caudal fin with a deep notch between upper and lower lobes (vs. rounded, emarginated, or

Estima-se que a diversidade de espécies na Mata Atlântica e no Brasil seja muito maior e o baixo número de táxons conhecidos se dá por falta de identificação ao

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no

Tais questões abertas abordaram: histórico do primeiro artigo em inglês quantos e quais artigos, nível de dificuldade na redação dos mesmos; suporte na preparação do mesmo que tipo