• Nenhum resultado encontrado

Processos de Software

N/A
N/A
Protected

Academic year: 2021

Share "Processos de Software"

Copied!
49
0
0

Texto

(1)

Engenharia de Software

Processos de Software

Universidade Federal da Paraíba – Campus IV Centro de Ciências Aplicadas e Educação

Departamento de Ciências Exatas

Prof. Jorge Dias

www.jorgediasjr.com

(2)

Alguns Problemas no Desenvolvimento de

Software...

 Alguns projetos são cancelados mesmo antes de começar;  O tempo de desenvolvimento e o custo são bem maiores do

que o estimado;

 Os sistemas não funcionam como planejado;  A qualidade é baixa;

 A manutenção e a reutilização são difíceis e custosas;  Os problemas são proporcionais à complexidade dos

(3)

Custo da Mudança ...

(4)

Mas... Como obter qualidade?

“A qualidade de um sistema é fortemente influenciada pela qualidade do processo utilizado para adquiri-lo,

(5)

Processos

 Para criar um produto, seguimos uma sequencia de etapas para

completar um conjunto de tarefas.

Processo:

 Conjunto de tarefas ordenadas

 Série de etapas que envolvem atividades, restrições e recursos para

alcançar a saída desejada

 Geralmente envolve um conjunto de ferramentas e técnicas

Ativ 1 Ativ 2 Ativ 3

Processo Saída

(6)

Processo de Software

 Conjunto de atividades para se desenvolver um software.  Permitem capturar experiências e passá-las adiante.

(7)

Processo de Software

“Conjunto de práticas realizadas para atingir um determinado

propósito; pode incluir ferramentas, métodos, materiais

e/ou pessoas” SEI

“Um processo define quem está fazendo o quê, quando e como

(8)

Ciclo de Vida

 Quando o processo envolve a elaboração de um produto, pode

ser chamado de ciclo de vida.

Ciclo de vida do software

 Descreve a vida do software desde a concepção até a implementação,

(9)
(10)
(11)

Processo de Software

 Existem quatro atividades fundamentais em qualquer processo de software:

Especificação: Definição das funcionalidades e

restrições.

Desenvolvimento: Produção do software.

Validação: Validação do software para verificar se é o que

o cliente precisa.

Evolução: Evolução do software para atender mudanças

(12)

Processo de Desenvolvimento de Software

 Características das atividades:

 bem definidas;  com responsáveis;

 com artefatos de entrada e saída;

 com dependências entre as mesmas e ordem de execução;  com “modelo de ciclo de vida”.

(13)

Processo de Desenvolvimento de Software

 Processo de software pode ser composto por:

 Fases/atividades (entradas e saídas)

 procedimentos/métodos

 ferramentas, utilizados para construir um produto de software.  Paradigmas de desenvolvimento

 Orientado a Objetos

 Orientado a componentes  Orientado a Serviços

(14)

Processo de Desenvolvimento de Software

 Processo de software padrão pode ser dividido nos seguintes

sub-processos:

Processos Fundamentais (Análise de Negócio, Requisitos,

Análise e Projeto, Implementação,Testes e Implantação);

Processos de Apoio (Gerência de Projetos, Garantia da

Qualidade, Gerência de Configuração e Mudança, Medição e Análise);

Processos Organizacionais (Infra-estrutura, Treinamento,

(15)

Modelos de Processos de Software ou

Modelos de Ciclo de Vida do Software

(16)

Modelos de Processos de Software

 Cada modelo representa um processo sob determinada

perspectiva

 São bem genéricos

 Podemos ver como paradigmas de processo  Podem ser ampliadas e adaptadas

(17)

Modelo Cascata (Royce, 1970)

 Foi o primeiro a ser adotado pelos desenvolvedores

 Possui um conjunto de fases bem definidas que correspondem às

etapas do ciclo de vida do software

 Não há mistura de fases: uma fase só começa quando a anterior

termina

 Ao final de cada fase, um ou mais documentos devem ser

(18)
(19)

Modelo Cascata – Principais características

19

Atividades:

 Análise e Engenharia de Sistemas:

 Envolve a coleta dos requisitos em nível de sistema;

 Busca a compreensão do sistema como um todo, incluindo hardware,

software, bancos de dados e pessoas envolvidas;

 Análise de Requisitos e Software:

 Intensifica e concentra a definição dos requisitos do software;  O resultado será utilizado nas etapas posteriores de Projeto,

(20)

Modelo Cascata – Principais características

Atividades:

 Projeto:

 Transforma os requisitos da análise, o modelo lógico, em modelo

físico;

 Define a arquitetura do software, detalhes procedimentais e de

interface, dentre outros;

 Codificação:

(21)

Modelo Cascata – Principais características

21

Atividades:

 Testes:

 Realiza os testes do sistema (aspectos lógicos internos e aspectos

funcionais externos);

 Manutenção:

 Constrói alterações no software que visem a solução de erros,

(22)

Modelo em V

 Criado pelo Ministério de Defesa da Alemanha, em 1992.  É uma variação do modelo cascata

 Demonstra que as atividades de teste estão relacionadas com a

(23)

Desenvolvimento Evolucionário

(Prototipação)

23

 Capacita o desenvolvedor a criar um modelo do software que

será implementado;

 Tem o objetivo de resolver problemas ou limitações existentes

na análise de requisitos, antes do início da implementação do software;

 O protótipo pode ser apresentado ao cliente na forma de papel

ou modelo executável no computador, retratando a interface do software;

 Com o protótipo, o cliente poderá verificar se os requisitos

especificados são os desejados ou reformulá-los se houver necessidade.

(24)

Desenvolvimento Evolucionário

(Prototipação)

(25)

Desenvolvimento Evolucionário

 Há duas abordagens

Desenvolvimento exploratório

 O protótipo evolui junto com os requisitos do

sistema e se transforma no próprio sistema final

Desenvolvimento de protótipos descartáveis

 O protótipo é usado apenas para ajudar na definição

(26)

Desenvolvimento Evolucionário

Desenvolvimento exploratório

Um sistema inicial é feito a partir dos requisitos

que foram bem entendidos e que são prioritários

para a aplicação

A implementação é exposta a comentários dos

usuários para ser aperfeiçoada ao longo de vários

estágios

(27)

Desenvolvimento Evolucionário

Desenvolvimento exploratório

 À medida que vão surgindo novos requisitos para o

sistema, o protótipo vai sendo modificado (desenvolvimento sob demanda)

 Os padrões de qualidade (segurança, confiabilidade,

usabilidade) devem ser levados em consideração desde o começo pois devem estar presentes na versão final

(28)

Desenvolvimento Evolucionário

Desenvolvimento exploratório

Vantagens

 Sistemas que atendem à necessidade imediata dos

clientes

 Resultados concretos rapidamente

 Envolvimento dos usuários ao longo de todo o

projeto (contribuições)

(29)

Desenvolvimento Evolucionário

Desenvolvimento exploratório

Desvantagens

 A rápida evolução dos protótipos dificulta a

produção de documentação

 Excesso de mudanças no código pode comprometer a

estrutura do sistema; a longo prazo, o sistema pode precisar ser substituído ou completamente reescrito

(30)

Desenvolvimento Evolucionário

Desenvolvimento exploratório

Desvantagens

 A mudança de membros da equipe pode tornar a

compreensão do sistema difícil (falta de documentação)

 Dificuldade para estipular valores de contrato, uma

vez que a especificação não é formalizada

(31)

Desenvolvimento Evolucionário

Desenvolvimento de protótipos descartáveis

 O objetivo é compreender melhor os requisitos do cliente através

de protótipos experimentais

 Apenas os requisitos que não estão claros são prototipados

(32)

Desenvolvimento Orientado a Reuso

Também conhecido como Desenvolvimento Baseado

em Componentes ou CBSE (Component-Based Software

Engineering)

Uma base de componentes de software obtidos de

terceiros ou produzidos internamente é utilizada

pelos desenvolvedores na produção da aplicação

 Os componentes têm diferentes níveis de abstração

(33)

Desenvolvimento Orientado a Reuso

Especificação de Requisitos Análise de Componentes Modificação de Requisitos

Projeto de Sistema com Reuso

Desenvolvimento e Integração

Validação de Sistema

(34)

Desenvolvimento Orientado a Reuso

Vantagens

 Reduzir riscos e custos (menos código)  Redução de prazos de entrega

Desvantagens

 Adequação dos requisitos aos componentes pode resultar em

sistemas que não satisfaçam os clientes

 A organização não tem controle sobre os componentes de terceiros

(o código muitas vezes não está disponível e não se conhece sua qualidade)

(35)

Desenvolvimento Orientado a Reuso

 Computação Orientada a Serviços

 Evolução do CBSE

(36)

Desenvolvimento Iterativo

Mudanças são inevitáveis em qualquer software

As atividades do processo precisam ser repetidas

 Entrega incremental

(37)

Desenvolvimento Incremental

 Modelo Cascata + Modelo Evolucionário

 As funcionalidades gerais do sistema são definidas e são

planejados vários estágios de entrega de versões de acordo com a prioridade das funcionalidades para o negócio

(38)

Desenvolvimento Incremental

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

(39)

Desenvolvimento iterativo e incremental

Requisitos Projeto Codificação Implantação 1 Requisitos Projeto Codificação Implantação 1 2 Requisitos Projeto Codificação Implantação 1 2 3 Versão 1 Funcionalidade 1 Versão 1 + Funcionalidade 2 Versão 3 + Funcionalidade 3

(40)

Desenvolvimento Iterativo e Incremental

Vantagens

 O cliente recebe resultados rapidamente (vantagem para o negócio)  Risco menor de fracasso do sistema (problemas isolados, não gerais)  Funcionalidades mais importantes são entregues primeiro (testadas

(41)

Desenvolvimento Iterativo e Incremental

Desvantagens

 Dificuldade para mapear requisitos em incrementos

 Incrementos devem ser pequenos e devem produzir

funcionalidades completas

 Incrementos devem ter aproximadamente o mesmo tamanho e o

(42)

Modelo Espiral (Boehm, 1988)

 Desenvolvido para abranger as melhores características do ciclo de vida clássico e da prototipação;

 Acrescenta um novo elemento: a análise de riscos;

 O processo é representado como uma espiral em vez de uma seqüência de atividades;

(43)

Modelo Espiral

(44)

Modelo Iterativo: Espiral

Definição dos objetivos, alternativas e restrições: Objetivos

específicos para a fase são identificados, alternativas para realizar os objetivos e restrições são encontradas

Avaliação e redução de risco: Os riscos principais são

identificados, analisados e buscam-se meios para reduzir estes riscos

Desenvolvimento e validação: Um modelo apropriado para o

desenvolvimento é escolhido, que pode ser qualquer um dos modelos de ciclo de vida

(45)

Qual o melhor processo de software?

 A escolha do Processo de Software que será adotado em um

projeto dependerá de vários fatores

 cultura e características do cliente e da empresa desenvolvedora de

software

 tipo de aplicação

 experiência dos desenvolvedores

 Um processo na prática envolve características de vários dos

(46)

Exemplo de Processos

 RUP (Rational Unified Process)  Metodologias ágeis

 Scrum, XP, etc…

 Processos focados em paradigmas  UML Components, Catalysis…  SOMA (IBM)

(47)

Fábricas de Software

“Um processo estruturado, controlado e melhorado de forma

contínua, considerando abordagens de engenharia industrial, orientado para o atendimento a múltiplas demandas de natureza e

escopo distintas, visando à geração de produtos de software,

conforme os requisitos documentados dos usuários e/ou clientes, da forma mais produtiva e econômica possível”

Introdução – Aula 01 [47/23]

(48)

Fábricas de Software

 O termo Fábrica de Software foi empregado pela primeira vez em

1969, pela japonesa Hitachi, mas só começou a ficar popular no início dos anos 90

 Características:

 Ter processos claros e depender mais deles do que das pessoas, de

forma a ter resultados mais previsíveis

 Aplicar conceitos da indústria em geral em ambientes de

desenvolvimento de software, de forma a aumentar a produtividade

e diminuir prazos e custos.

(49)

Fábricas de Software

 Existem fábricas especializadas somente na codificação ...  Os requisitos devem ser entregues

de forma padronizada

 ... Assim como existem fábricas que englobam as várias fases de

um processo de desenvolvimento

 Necessidade de utilização de melhores práticas de frameworks como

CMMI, PMP, MPS.BR, UML/UP, dentre outros

Introdução – Aula 01 [49/23]

Referências

Documentos relacionados

Para tal, o presente artigo resulta de um trabalho de investigação de caráter exploratório e transversal (n = 102), realizado num Serviço de Urgência Geral, com

insights into the effects of small obstacles on riverine habitat and fish community structure of two Iberian streams with different levels of impact from the

Taking into account the theoretical framework we have presented as relevant for understanding the organization, expression and social impact of these civic movements, grounded on

De maneira sucinta, porém objetiva, este artigo, propôs dirimir possíveis controvérsias à visão do Tratado da Amizade, bem como explicitar relevantes avanços no

Outras possíveis causas de paralisia flácida, ataxia e desordens neuromusculares, (como a ação de hemoparasitas, toxoplasmose, neosporose e botulismo) foram descartadas,

Esta organização internacional tenta impedir o desaparecimento das tradições alimentares locais, contrariar o desinteresse dos indivíduos pela alimentação, alertar para a origem

Para eficiência biológica, de forma geral, utiliza-se a comparação de produtividades entre sistemas (monocultivo e cultivo consorciado), sendo avaliados a partir de

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for