Você está na página 1de 12

6/15/2020

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE Tópicos


CENTRO DE TECNOLOGIA
CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES

• Objetivos
• Processos de software
• Atividades fundamentais
• Modelos de processo de software
Modelos de processos de
desenvolvimento de software

Disciplina: Engenharia de software


Hertz Wilton de Castro Lins

Engenharia de software 2

Objetivos Processo de software

• Apresentar o conceito de processo de software


• Um processo
• Introduzir modelos de processo de software – Segundo o IEEE, é uma seqüência de passos executados com um determinado
• Apresentação do RUP objetivo;
• Atividades de processo – Segundo o PMBOK, é um conjunto de ações e atividades inter-relacionadas, realizadas
para obter um conjunto especificado de produtos, resultados ou serviços.

– Conjunto coerente de atividades para especificação, concepção, execução e


teste de sistemas de software.
• Especificação, Design, Validação e Evolução
• Um modelo de processo de software é uma representação abstrata de um processo.

Engenharia de software 3 Engenharia de software 4

1
6/15/2020

Processo de software Atividades do processo

• Pelo fato de software, como todo capital, ser conhecimento incorporado, e pelo fato de que • Especificação de Software
este conhecimento ser, inicialmente disperso, tácito, latente e em considerável medida
• Projeto e implementação de Software
incompleto, o desenvolvimento de software é um processo de aprendizado social.
• Esse processo é um diálogo no qual o conhecimento, que deverá tornar-se o software, é • Validação de Software
coletado, reunido e incorporado ao software.
• Evolução de Software
• Tal processo possibilita a interação entre usuários e projetistas e ferramentas em evolução
(tecnologia). Trata-se de um processo iterativo no qual a própria ferramenta em evolução
serve como meio de comunicação, com cada nova iteração do dialogo extraindo mais
conhecimento útil das pessoas envolvidas.

Howard Baetjer
Software as Capital: An Economic Perspective on Software Engineering, 1997

Engenharia de software 5 Engenharia de software 6

Atividades do processo Atividades de processo

• Especificação de Software ou Engenharia de requisitos • Processo de engenharia de requisitos


– É o processo para compreender e definir quais serviços são necessários e
identificar as restrições de operação e de desenvolvimento do sistema Estudo de
viabilidade Elicitação e análise
de Requisitos Especificação
– Estagio Crítico de Requisitos Validação
de Requisitos
• Erros neste estágio conduzem a problemas posteriores no projeto e na
implementação do sistema

Relatório
de Viabilidade Modelos
Requisitos de
de Sistema
Usuário e
de Sistema
Documento
De Requisitos

Engenharia de software 7 Engenharia de software 8

2
6/15/2020

Atividades de processo O Processo de Projeto de Software

• Projeto e implementação de software Especificação


de Requisitos
– O processo de converter a especificação do sistema em um sistema executável Atividades de Projeto
– Atividades
Projeto
• Projeto de arquitetura Estrutura geral, componentes principais e seus Projeto de Projeto de Projeto de de
Arquitetura interface Componente Banco de
relacionamentos, subsistemas, módulos. dados

• Projeto de Interface Definição das interfaces entre os componentes do


sistema.
• Projeto de Componente Definição de cada componente e seu funcionamento
• Projeto de banco de dados Projeto das estruturas de dados e sua Especificação
Arquitetura Especificação Especificação
de banco de
de Sistema de Interface de Componente
representação em um banco de dados. dados

Produtos de Projeto

Engenharia de software 9 Engenharia de software 10

Validação de software Validação de software

• Verificação e validação destinam-se a demonstrar que o sistema está em • Validação

conformidade com a sua especificação e cumpre os requisitos do cliente. – Estamos construindo o produto correto?”
– O sistema atende às expectativas do cliente/usuário
• Envolve verificar e analisar processos do sistema e testes.
• Verificação
• Sistema de testes envolve executar o sistema com casos de teste que
• Estamos construindo o produto corretamente?”
são obtidos a partir da especificação dos dados reais que serão
– O software está de acordo com suas especificações
processado pelo sistema.
– As especificações do software nem sempre estão de acordo com as expectativas dos
usuários

Engenharia de software 11 Engenharia de software 12

3
6/15/2020

O processo de teste Fases de teste no processo de software

Especificação
Especificação
De Projeto de Projeto
de
Requisitos Sistema detalhado
Sistema

Teste de Teste de Teste de


Componente Sistema Aceitação Teste de Teste de Código e
Teste de Teste de
Integração Integração
aceitação Unidade e
de sistema de subsistema
módulo

Plano de teste Plano de teste


Operação Plano de teste
de de
de
Integração Integração
aceitação
de sistema de subsistema

Engenharia de software 13 Engenharia de software 14

Processo de software

• O que um modelo de processo define?


– Um conjunto de tarefas a serem executadas
– A entrada e saida de cada tarefa

• Modelos de processo – As pré condições e pós conhdiçõoes de cada tarefa.


– A ordem e o fluxo de cada tarefa.

Engenharia de software 15 Engenharia de software 16

4
6/15/2020

Modelos de processo de software Modelos de processo de software

• Modelo em cascata
• Modelo em Cascata
Definição  Resultado de uma fase alimenta a outra
– Separa e distingue as fases de especificação e desenvolvimento De Requisitos
 Mais antigo

• Desenvolvimento incremental  Modelado em função do ciclo da engenharia


Projeto de
convencional
– Especificação e desenvolvimento são intercaladas Sistema e Software

• Engenharia de Software orientado a reuso Implementação


e teste de Unidade
– Baseia-se na existência de um numero significante de componentes, e enfoca
o processo de desenvolvimento na integração dos mesmos.
Integração
e teste de sistema
• RUP

• Modelos de maturidade Operação


e
Manuntenção

Engenharia de software 17 Engenharia de software 18

O Modelo em “Cascata” O Modelo em “Cascata”

• Principais estágios
• Principais estágios: – Implementação e Testes de Unidade:Durante este estágio, o projeto do
– Análise e Definição de Requisitos:as funções, as restrições e os objetivos do software é compreendido como um conjunto de programas ou unidades de
sistema são estabelecidos por meio de consulta aos usuários do sistema. Em programa. O teste de unidade envolve verificar se cada uma das unidades
seguida, são definidos em detalhes e servem como uma especificação do atendem à sua especificação
sistema.

– Integração e Teste de sistemas: as unidades de programa ou programas


– Projeto de Sistemas e Software:o processo de projeto de sistemas agrupa os individuais são integrados e testados como um sistema completo a fim de
requisitos em sistemas de hardware e software. Envolve a identificação e a garantir que os requisitos de software foram atendidos. Depois do teste, o
descrição das abstrações fundamentais do sistema de software e suas relações. software é entregue ao cliente.

Engenharia de software 19 Engenharia de software 20

5
6/15/2020

O Modelo em “Cascata” Modelos de processo de software

• Principais estágios • Modelo em cascata


– Operação e manutenção: O sistema é instalado e colocado em operação. – Indicação
Envolve corrigir erros que não foram descobertos em estágios anteriores, • Requisitos do sistema estão claros
melhorando a implementação e descobrindo novos requisitos. • Requisitos não sejam alterados radicalmente durante o processo de desenvolvimento.

– Problemas
• Particionamento Inflexível do projeto em fases distintas
• Isso torna difícil responder à evolução das necessidades dos clientes
• Portanto, este modelo é apropriado apenas quando os requisitos são bem
compreendidos.
• Logo no início é difícil (raro) estabelecer explicitamente todos os requisitos

Benefícios?

Engenharia de software 21 Engenharia de software 22

Desenvolvimento incremental Desenvolvimento incremental

• Especificação e desenvolvimento são intercaladas • Indicações


• Neste modelo a entrega é dividida em incrementos onde cada incremento – O modelo incremental é mais apropriado para sistemas pequenos
implementa um subconjunto de funcionalidades do sistema. – As novas versões podem ser planejadas de modo que os riscos técnicos
• Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são possam ser administrados.
congelados embora possam mais tarde continuar a evoluir .

Engenharia de software 23 Engenharia de software 24

6
6/15/2020

Entrega incremental Desenvolvimento incremental

• Vantagens
– O custo de acomodar as mudanças nos requisitos do cliente é reduzido.
Definir Requisitos Atribuir Requisitos Projetar Arquitetura
Iniciais aos Incrementos de Sistema – È mais fácil obter feedback dos clientes sobre o desenvolvimento realizado. Onde existe
uma dificuldade natural dos clientes de avaliar a evolução do software através de
documentos.
Desenvolver Incremento Validar Integrar Validar
De Sistema Incremento Incremento Sistema – Possibilidade de obter entrega e implementação rápida de software útil ao cliente.
• Desvantagens
Sistema Final
– O processo com ou um todo não é visível.

Sistema Incompleto – A estrutura do sistema tende a se degradar com a adição de novos incrementos.
– Não é indicado para sistemas muito grandes.

Engenharia de software 25 Engenharia de software 26

Engenharia de Software orientada a reuso Engenharia de Software orientada a reuso


(componentes)
• Baseada na sistemática dareutilização, algumas vezes estes componentes são • Fases.
sistemas comerciais independentes que podem fornecer uma funcionalidade
específica.
• Componente
Especificação Analise Modificação de Projeto de Sistema
– Unidade de software cuja funcionalidade e dependências são completamente
de Requisitos de Componentes Requisitos Com reuso
definidas por um conjunto de interfaces publicas.
– Podem ser implantados com uma unidade executável.
Desenvolvimento Validação
E Integração De Sistema

Engenharia de software 27 Engenharia de software 28

7
6/15/2020

Engenharia de Software orientada a reuso Engenharia de software orienta a reuso

• Tipos de componentes de software utilizados em um processo orientado a reuso. • Vantagens


– Web services, disponíveis para invocação remota. – Reduzir a quantidade de software a ser desenvolvido
– Coleções de objetos integrados a partir de frameworks como J2EE ou .NET. – Reduzir custos e riscos
– Sistemas de software stand-alone configurados para uso em ambiente – Entrega mais rápida
particular. • Considerações
– Bibliotecas. – O componente atende ao requisito?
– Conhecimento prévio das funcionalidades do componente
– Facilidade de substituição do componente no momento da alteração do
sistema.
Resultados dependem da robustez da
– Interação entre componentes
biblioteca de componentes

Engenharia de software 29 Engenharia de software 30

RUP RUP

O RUP tem duas


• O RUP, abreviação de Rational Unified Process, é um processo proprietário de
dimensões:
Engenharia de software criado pelaRational Software Corporation, adquirida pela
– o eixo horizontal representa o
IBM.
tempo e mostra os aspectos
• Ele oferece uma abordagem baseada em disciplinas para atribuir tarefas e
do ciclo de vida do processo
responsabilidades dentro de uma organização de desenvolvimento.
à medida que se desenvolve
• Sua meta é garantir a produção de software de alta qualidade que atenda às
– o eixo vertical representa as
necessidades dos usuários dentro de um cronograma e de um orçamento
disciplinas, que agrupam as
previsíveis.
atividades de maneira lógica,
por natureza.

Engenharia de software 31 Engenharia de software 32

8
6/15/2020

RUP RUP

• Fases • Concepção

– Concepção: ênfase no escopo do sistema – A fase de concepção contém os workflows necessários que as partes

– Elaboração: ênfase na arquitetura interessadas (stakeholders) concordem com os objetivos, arquitetura, e o


planejamento do projeto.
– Construção: ênfase no desenvolvimento
• Elaboração
– Transição: ênfase na implantação
– A fase de elaboração será apenas para o projeto do sistema, buscando
complementar o levantamento / documentação dos casos de uso, voltado para
a arquitetura do sistema, revisa a modelagem do negócio para os projetos e
inicia a versão do manual do usuário. Deve-se aceitar: Visão geral do produto
(incremento + integração) está estável? ; O plano do projeto é confiável? ;
Custos são admissíveis?

Engenharia de software 33 Engenharia de software 34

RUP RUP

• Construção • Aspectos
– Na fase de construção, começa o desenvolvimento físico do software, – Não é adequado para todos os tipos de desenvolvimento

produção de códigos, testes alfa e beta. Deve-se aceitar testes, e processos de – Desenvolvimento iterativo.

testes estáveis, e se os códigos do sistema constituem baseline".


" • Vantagens:
• Transição – Processo robusto e bem definido com a geração de artefatos importantes;

– Nesta fase ocorre a entrega ("deployment") do software, é realizado o plano de – Registro constante do fluxo do projeto

implantação e entrega, acompanhamento e qualidade do software. Produtos – Os maiores riscos são atacados primeiro, diminuindo as chances de fracasso do projeto

(releases, versões) devem ser entregues, e ocorrer a satisfação do cliente. • Desvantagens:


– Complexo para projetos de pequeno porte
– Exige experiência da equipe.

Engenharia de software 35 Engenharia de software 36

9
6/15/2020

Iconix Outros Modelos

• Prototipação
O ICONIX é um processo baseado em modelagem com UML.
• Espiral
Possui uma característica exclusiva chamadaTraceability of Requiriments
• Baseado em aspectos
(Rastreabilidade dos Requisitos), que através de seus mecanismos, permite
• Agentes
checar em todas as fases se os requisitos estão sendo atendidos .
Ele se destaca por ter um processo não tão burocrático como o RUP, ou seja,
não gera tanta documentação. E apesar de ser um processo simples como o XP,
não deixa a desejar na Análise e Projeto (Design).

Engenharia de software 37 Engenharia de software 38

Pontos Chave Como escolher um modelo

• Processos de Software são atividades envolvidas na produção de um sistema de


software.  Natureza do projeto e da aplicação

• Todos os processos de software incluem especificação, projeto e implementação,


validação e evolução de software.  Métodos e ferramentas a serem usados

• Modelos Genéricos de processo descrevem a organização dos processos de


software.  Controles e produtos que precisam ser entregues

Engenharia de software 39 Engenharia de software 40

10
6/15/2020

Como escolher um modelo Como escolher um modelo

• Sistemas Críticos • Tipo de software (sistema de informação, sistema de tempo real),


– Sugerido um modelo de processo mais estruturado / rigoroso como o Modelo Cascata – Natureza do projeto
ou RUP.
• Domínio da aplicação
• Sistemas de Negócios
• Paradigma de desenvolvimento (estruturado, orientado a objetosetc),
– (requisitos mudam com frequência) Sugerido um modelo de processo ágil e flexível
• Tamanho e complexidade do sistema
como o Desenvolvimento Incremental ou o Baseado em Reuso.
• Estabilidade dos requisitos,
• Prazos inflexíveis
• Características da equipe.
– Modelo incremental

Engenharia de software 41 Engenharia de software 42

Técnicas de 4a Geração Avaliação e aperfeiçoamento de processos

• Concentra-se na capacidade de se especificar o software a uma máquina em um nível que • Abordagens


esteja próximo à linguagem natural.
– CMMI
• Engloba um conjunto de ferramentas de software que possibilitam que:
• Modelo de avaliação de processos através de etapas
 O sistema seja especificado em uma linguagem de alto nível e
– SPICE (ISO/IEC 15504)
 O código fonte seja gerado automaticamente a partir dessas especificações
• É um conjunto de normas técnicas para o processo de desenvolvimento de
software e gestão de negócios.
– Iso 9001:2000
• criação de novos produtos,

Engenharia de software 43 Engenharia de software 44

11
6/15/2020

Perguntas Sites

• Por que adotar um modelo de processos? • https://sei.cmu.edu

• Qual a relação entre a qualidade do software e o processo de software? – https://sei.cmu.edu/publications/annual-reviews/index.cfm

Engenharia de software 45 Engenharia de software 46

12

Você também pode gostar