• Nenhum resultado encontrado

03-13EngSoft(DesenvolvimentoRápidodeSoftware-RAD)

N/A
N/A
Protected

Academic year: 2021

Share "03-13EngSoft(DesenvolvimentoRápidodeSoftware-RAD)"

Copied!
28
0
0

Texto

(1)

Engenharia de Software

Prof. Wilkerson de L. Andrade

Versão resumida e traduzida dos slides originais produzidos por Ian Sommerville, Software Engineering, 7th edition. Chapter 17.

Estes slides foram adaptados dos slides gentilmente cedidos pela professora Patrícia D. L. Machado (DSC/UFCG).

(2)

Desenvolvimento Rápido de

Software (RAD)

• Devido a ambientes de negócio sofrerem mudanças constantes, negócios precisam lidar efetivamente com novas oportunidades e competição.

• Neste sentido, desenvolvimento e entrega rápida são fatores críticos.

• Negócios podem aceitar software de baixa qualidade se entrega rápida de

funcionalidade essencial for possível e necessária.

(3)

RAD e Requisitos

• Devido às mudanças no ambiente, é

usualmente impossível atingir um nível alto de estabilidade em um conjunto consistente de requisitos.

• Desta forma, um modelo cascata é inadequado. Uma abordagem para o

desenvolvimento iterativo pode ser a única forma de entregar o software dentro das

(4)

Características de Processos de RAD

• Processos de especificação, design e

implementação são concorrentes. Não existe especificação detalhada e documentação de projeto é minimizada.

• O sistema é desenvolvido como uma série de incrementos. Usuários avaliam cada

incremento e propõem novos incrementos.

• Interfaces de usuário são usualmente desenvolvidas usando desenvolvimento interativo.

(5)

Problemas de RAD

Problemas de Gerenciamento

▫ É difícil medir progresso e encontrar problemas, pois não

existe documentação para demonstrar o que tem sido feito.

Problemas de Contrato

▫ Sem uma especificação, formas alternativas de contrato

precisam ser usadas.

Problemas de Validação

▫ Sem uma especificação fica mais difícil testar o sistema.

Problemas de Manutenção

▫ Modificações contínuas tendem a corromper a estrutura

do software, aumentando os custos para modificação e evolução.

(6)

Métodos Ágeis

• Motivados pelos custos associados a

aplicação de métodos convencionais de design:

▫ Enfoque em código ao invés de design;

▫ Abordagem iterativa para desenvolvimento de

software;

▫ Voltados a entrega e evolução rápida de software.

• Provavelmente mais adequados a sistemas de pequeno/médio porte.

(7)

Princípios de Métodos Ágeis

Princípio Descrição

Customer involvement Clientes devem ser profundamente envolvidos no processo de desenvolvimento. Seu papel é fornecer e priorizar novos

requisites do sistema e avaliar as iterações do sistema.

Incremental delivery O software é desenvolvido em incrementos e o cliente especifica os requisitos a serem incluídos em cada incremento.

People not process As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Os membros da equipe devem desenvolver suas próprias maneiras de trabalhar em processos prescritivos.

Embrace change Tenha em mente que os requisitos vão mudar, por isto projete o sistema para acomodar estas mudanças.

Maintain simplicity Concentre-se na simplicidade do software que está sendo desenvolvido e do processo de desenvolvimento. Sempre que possível, trabalhe ativamente para eliminar a complexidade do sistema.

Envolvimento do cliente

Entrega incremental

Pessoas, não processo

Expectativa de mudanças

(8)

Problemas com Métodos Ágeis

• Dificuldade em manter o interesse de clientes

envolvidos no processo.

• Membros da equipe podem não ter as

habilidades/motivações necessárias para o

envolvimento intenso que caracteriza métodos ágeis.

• Priorização de mudanças pode ser dificultada,

considerando vários stakeholders.

• Manter simplicidade requer trabalho extra.

(9)

Extreme Programming (XP)

• Método ágil mais conhecido e utilizado.

• Abordagem extrema de um processo iterativo:

▫ Novas versões podem ser construídas várias

vezes por dia;

▫ Incrementos são entregues a clientes a cada 2

semanas;

▫ Todos os testes precisam ser executados para

cada versão operacional do software (build) e apenas aceita se os testes passam.

(10)

Ciclo de Release de XP

Selecionar user

stories para esta

versão Quebrar as user stories em tarefas Planejar versão/release Desenvolver/ integrar/testar software Liberar software Avaliar o sistema

(11)

XP: Práticas 1

Planejamento Incremental

Os requisitos são registrados em cartões de histórias e as histórias a serem incluídas em um release são determinadas pelo tempo disponível e sua prioridade relativa.

Pequenos releases O conjunto mínimo útil de funcionalidades que agrega valor ao negócio é desenvolvido primeiro. Releases do sistema são

freqüentes e adicionam funcionalidade de forma incremental ao primeiro release.

Design simples É realizado um design suficiente para atender aos requisitos atuais e nada mais

Test first development Um framework automatizado de teste de unidade é usado para escrever os testes para uma nova parte da funcionalidade antes que esta seja implementada.

Refactoring Espera-se que todos os desenvolvedores recriem o código continuamente tão logo os aprimoramentos do código forem encontrados. Isso torna o código mais simples e fácil de manter.

(12)

XP: Práticas 2

Desenvolvedores trabalham em pares, um checando o trabalho do outro e possibilitando sempre um bom trabalho conjunto.

Os pares de desenvolvedores trabalham em todas as partes do sistema, de forma que todos os desenvolvedores conheçam e entendam todo o

código. Todos são capazes de modificar qualquer parte do sistema. Tão logo o trabalho em uma tarefa seja concluído, este é integrado ao sistema como um todo. Depois de qualquer integração, todos os testes

unitários devem ser realizados

Um representante do usuário final do sistema (cliente) deve estar disponível em tempo integral para apoiar a equipe de XP. No processo de XP, o cliente é um membro da equipe e é o responsável por levantar

os requisitos que serão implementados.

Programação em pares

Produção coletiva

Integração contínua

Ritmo sustentável

Cliente on-site

Grandes quantidades de horas extras não são consideradas aceitáveis, no médio prazo, há uma redução na qualidade do código e da

(13)

Cenários de Requisitos

• Em XP, requisitos são expressos por meio de cenários ou user stories.

• Usualmente escritos em cartões.

User Stories são divididas em tarefas. Estas tarefas são a base para escalonamento e

estimativa de custos.

• O cliente escolhe as user stories para

inclusão na próxima release com base nas prioridades delas e em estimativas de custo.

(14)

Story card para Download de

Documentos

Downloading and printing an article

First, you select the article that you want from a displayed list. You then have to tell the system how you will pay for it - this can either be through a subscription, through a company account or by credit card.

After this, you get a copyright form from the system to fill in and, when you have submitted this, the article you want is downloaded onto your computer.

You then choose a printer and a copy of the article is printed. You tell the system if printing has been successful.

If the article is a print-only article, you canÕt keep the P DF version so it is automatically deleted from your computer.

Fazendo download e imprimindo um artigo

Primeiro, selecione o que você deseja de uma lista. Você então deve informar ao sistema como será feito o pagamento - pode ser através de uma

assinatura, através de empresas ou cartão de credito.

Após isso, preencha o formulário de licença e quando submetê-lo, o artigo selecionado por você será baixado em seu computador.

Você então escolhe uma impressora e uma cópia do artigo será impressa. Você informa ao sistema se a impressão foi bem sucedida.

Se o artigo é somente para impressão, você não pode ficar com a versão em PDF, daí ele será automaticamente deletado do seu computador.

(15)

XP e Mudanças

• Design que permita acomodar mudanças é importante no desenvolvimento de software. Em algumas situações, é altamente recomendável empregar tempo e esforço

investigando possibilidades de mudanças, visto que pode reduzir custos posteriores no ciclo de vida do software.

• Entretanto XP prega que isto não é importante já que mudanças não podem ser previstas de forma confiável.

• Como alternativa, XP propõe melhoria contínua de código (refactoring) para facilitar a acomodação de mudanças

quando precisarem ser implementadas.

É importante observar que refactoring é caro e o nível de confiabilidade pode ser baixo, levando a introdução de defeitos. Depende da qualidade do código e dos testes.

(16)

Teste em XP

• Teste Primeiro – desenvolvimento

incremental de testes a partir de cenários.

• Envolvimento de usuários no

desenvolvimento e validação de testes.

• Testes automáticos são usados para

executar todos os componentes de teste cada vez que uma nova release é

(17)

Tarefas para Download de

Documentos

Task 1: Implement principal workf low

Task 2: Implement article catalog and selection Task 3: Implement payment collection

P ayment may be made in 3 different ways. The user selects which way they wish to pay. If the user

has a library subscription, then they can input the subscriber key which should be checked by the

system. Alternatively, they can input an organisational account number. If this is valid, a debit of the cost of the article is posted to this account. Finally, they may input a 16 digit credit card number and expiry date. This should be checked for validity and, if valid a debit is posted to that credit card account.

O Pagamento pode ser feito de três diferentes formas. O usuário escolherá em qual das formas deseja pagar. Se o

usuário tem assinatura do serviço, ele então entra com a chave de permissão que será, então, checada pelo sistema.

Por outro lado, ele também pode entrar com o número da conta de uma empresa. Se a conta é valida,

o débito do artigo será postado nessa conta. Finalmente, o usuário pode entrar com os 16 dígitos do número de um

cartão de credito, além de sua data de expiração. Caso a operação seja válida, o valor será debitado

na conta do cartão de crédito. Tarefa 1: Implementar o fluxo principal de trabalho

Tarefa 2: Implementar o catálogo de artigos e a seleção deles

(18)

Descrição de Casos de Teste

Test 4: Test credit card validity Input:

A string representing the credit card number and two integers representing the month and year when the card expires

Tests:

Check that all bytes in the string are digits

Check that the month lies between 1 and 12 and the year is greater than or equal to the current year.

Using the first 4 digits of the credit card number, check that the card issuer is valid by looking up the

card issuer table. Check credit card validity by submitting the card number and expiry date information to the card

issuer Output:

OK or error message indicating that the card is invalid

Teste 4: Testar a validade do cartão de credito

Uma “string” representando o número do cartão de credito e dois inteiros representando o mês e o ano de quando o cartão expira.

Checar se todos os bytes na “string” são dígitos.

Checar se o mês dado está entre 1 e 12 e se o ano dado é maior que o ano corrente.

Usando os 4 primeiros dígitos do número do cartão checar se o emissor do cartão é valido.

Checar a validade do cartão submetendo o número e a data de expiração para o emissor.

(19)

Teste Primeiro

• Escrever testes antes do código ajuda a

esclarecer requisitos antes de serem implementados.

• Testes são escritos como programas tal que

possam ser executados automaticamente. O teste possui uma checagem de que foi

executado corretamente.

• Testes novos e anteriores são automaticamente

executados quando novas funcionalidades são adicionadas a fim de checar se novas

(20)

Programação em Pares

• Em XP, programadores trabalham em pares,

sentam juntos para desenvolver código.

• Isto ajuda a desenvolver um senso comum para

o código e difundir conhecimento na equipe.

• Serve como um processo de revisão informal já

que cada linha de código é examinada por mais de 1 pessoa.

Encoraja refactoring já que todo o time pode se

beneficiar com isto.

• Métricas sugerem que a produtividade é similar

a de 2 pessoas trabalhando independentemente.

(21)

RAD em Geral

• Métodos ágeis têm recebido bastante

atenção, mas outras abordagens têm sido usadas há muitos anos.

• Estas são projetadas para o

desenvolvimento de aplicações de negócio focadas em dados, programação e

apresentação de informações a partir de um banco de dados.

(22)

RAD: Ferramentas

• Linguagem de Programação de BD

• Gerador de Interface

• Sistemas de Escritório

(23)

Reuso de COTS

• Uma abordagem efetiva para o

desenvolvimento rápido é o uso, configuração e associação de sistemas de prateleira

off-the-shelf.

• Por exemplo, um sistema para gerenciamento

de requisitos poderia ser construído usando:

▫ Uma base de dados para armazenar requisitos;

▫ Um processador de textos para capturar requisitos e

formatar relatórios;

(24)

Prototipação de Software

• Um protótipo é uma versão inicial de um

sistema usado para demonstrar conceitos e experimentar opções de design.

• Um protótipo pode ser usado em:

▫ Processo de engenharia de requisitos para

ajudar na elucidação e validação de requisitos;

▫ Processo de design para explorar opções e

desenvolver a UI;

Processo de teste para executar testes

(25)

Benefícios da Prototipação

• Melhora a usabilidade do sistema.

• Ajuda a identificar as necessidades reais dos usuários

• Melhora a qualidade do projeto.

• Melhora a manutenibilidade.

(26)

Teste Back-to-Back

Dados de teste Protótipo do Sistema O Sistema sendo desenvolvido Comparador de resultados Relatório de diferenças

(27)

O Processo de Prototipação

Estabelecer objetivos do Protótipo Plano da Prototipação Definir funcionalidades do Protótipo Definição Geral Desenvolver o Protótipo Protótipo executável Avaliar o Protótipo Relatório de avaliação

(28)

Protótipos Descartáveis

• Protótipos devem ser descartados após o desenvolvimento, pois não são uma boa base para um sistema de produção:

▫ Pode ser impossível ajustar o sistema para atender a requisitos não funcionais. Por quê?

▫ Protótipos normalmente não possuem

documentação;

▫ A estrutura do protótipo é usualmente degradada

pelas mudanças rápidas e constantes;

▫ Usualmente não vai atender a normas e padrões

Referências

Documentos relacionados

Para evitar, em uma proposta de pesquisa, confundir premissas, lampejos e hipóteses de trabalho com hipóteses de pesquisa, talvez a melhor tática, para o

Para essa implementação deve-se observar que muitos sistemas têm sido construídos baseados exclusivamente em requisitos técnicos, deixando a arquitetura implícita

Sendo assim, a automação residencial pode prover meios para controlar todos os sistemas da residência como sistema de ar condicionado e aquecimento, home- office, contemplando

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

 Buscar nos manuais pedagógicos, orientações para tentar solucionar o problema de pesquisa do presente trabalho. Ou seja, elucidar que propostas de ensino em

Sabendo-se que o tamanho e o peso das plaquetas, hemácias e leucócitos determinam o protocolo mais efetivo para concentrar plaquetas em cada espécie (LÓPEZ et al.,

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por