0% acharam este documento útil (0 voto)
1 visualizações34 páginas

Process Os de Software

O documento aborda os processos de software, destacando a importância da engenharia de software na solução de problemas práticos que afetam qualidade e produtividade. Ele diferencia entre processos de software e modelos de processo, explicando que não existem processos universalmente aplicáveis, pois cada empresa adapta seus processos com base em suas necessidades específicas. Além disso, discute abordagens de melhoria de processos, incluindo metodologias ágeis e dirigidas por planos, e a relevância da maturidade do processo na qualidade do desenvolvimento de software.

Enviado por

thiagobeleren
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
1 visualizações34 páginas

Process Os de Software

O documento aborda os processos de software, destacando a importância da engenharia de software na solução de problemas práticos que afetam qualidade e produtividade. Ele diferencia entre processos de software e modelos de processo, explicando que não existem processos universalmente aplicáveis, pois cada empresa adapta seus processos com base em suas necessidades específicas. Além disso, discute abordagens de melhoria de processos, incluindo metodologias ágeis e dirigidas por planos, e a relevância da maturidade do processo na qualidade do desenvolvimento de software.

Enviado por

thiagobeleren
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Universidade Federal Rural da Amazônia

Instituto Ciberespacial – ICIBE

Processos de Software
Profa Klissiomara Dias
[Link]@[Link]
Problemas práticos da produção de software
impactam em...

Qualidade

Produtividade
A Engenharia de Software propõe soluções
para esses problemas através de...

Estágios de
desenvolvimento

Guidelines
Processos Algumas áreas de conhecimento
(SWEBOK)

Boas práticas
Métodos Ferramentas
Processos de Software
• Um Processo de Software é um conjunto de atividades
relacionadas que levam à produção de um sistema de
software
• Processos de software reais são sequências intercaladas de
atividades técnicas, colaborativas e gerenciais, cujo objetivo
global é especificar, projetar, implementar e testar um
sistema de software

Ian sommervile, Software Engineering , 10ª ed


Processos de software

Atividades Técnicas

Atividades Colaborativas

Atividades Gerenciais
Processos de Software X Modelos de
Processo de Software
• Um Modelo de Processo de Software é uma representação simplificada, genérica
e abstrata de um processo de software
• Um modelo de processo serve como base para o desenvolvimento de processos
de software que a indústria utiliza
• Modelos de processo de software são conhecidos por diferentes denominações:
Ciclo de vida do software, paradigmas de desenvolvimento de software, são
exemplos de como modelos de processo são denominados
• Algumas fontes utilizam modelos de processo e processos como sinônimos, de forma
equivocada
• Na prática um modelo de processo serve como framework para a construção de processos de
software. Um processo de software é baseado em um ou mais modelos de processo e, por
esse motivo, são conceitos relacionados. Porém, são conceitos diferentes
• Exemplos de modelos de processo: Cascata, iterativo e incremental, desenvolvimento
exploratório (prototipação), desenvolvimento baseado em componentes (RAD), espiral, etc
Não existem processos de software
universalmente aplicáveis
• Processos de software são complexos
• Como processos intelectuais e criativos, dependem da tomada de decisão e
julgamento das pessoas
• O processo utilizado nas diferentes empresas depende de vários
fatores, entre os principais
• Tipo de software e características do sistema que será (ou está sendo)
desenvolvido
• Requisitos do cliente
• Habilidades do time de desenvolvimento
Não existem processos universalmente
aplicáveis...

Cliente Ambiente em que o software


Requisitos que regulam o software será utilizado

Tipo de Software
Habilidades do time de desenvolvimento
Uma vez que não existe um processo
universal...
• A maioria das empresas produtoras de software concebem seus próprios
processos de desenvolvimento
• Geralmente baseada em características de processos existentes na indústria ou
processos novos, adequados às características dos projetos da empresa
• Preocupação com melhoria de processo, deve ser contínua

• Por exemplo, em Sistemas críticos em segurança é necessário um processo


de desenvolvimento muito estruturado e que registros detalhados sejam
mantidos  Processos Dirigidos por Planos
• Já em Sistemas de negócios, em cenários com requisitos que mudam
rapidamente, talvez seja melhor adotar um processo mais flexível e ágil 
Processos Ágeis
O processo “correto”, portanto, depende...
• Do cliente
• Dos requisitos que regulam o software
• Do ambiente em que o software será utilizado
• Do tipo de software
• Das habilidades do time de desenvolvimento
Exemplos de sistemas que normalmente usam
processos baseados no modelo em cascata*
• Sistemas Críticos em Segurança, por exemplo, é necessário um
conhecimento detalhado sobre os requisitos e uma grande
quantidade de documentação, antes de começar sua implementação
• Sistemas de controle de tráfego aéreo
• Sistemas de controle de usinas nucleares
• Sistemas de segurança em aeroportos
• Sistemas de controle de tráfego ferroviário
• Sistemas de controle de barragens
• Sistemas de defesa militar
• ...
(*) Outros tipos de projetos que podem se beneficiar desse modelo são sistemas com requisitos definidos e não dinâmicos (ex:
reengenharia de um software de qualquer porte), bem como sistemas de pequeno porte com requisitos que tenham natureza definitiva e,
portanto, são conhecidos com antecedência (ex: módulo de triagem em uma clínica, que possui protocolo pré-estabelecido).
Exemplos de sistemas que normalmente
usam processos baseados em componentes
• Sistemas de Negócio, desenvolvidos cada vez mais por meio de
configuração de sistemas pré-existentes e da integração entre eles, para
criação do novo sistema
• Sistema de Gestão Empresarial (ERP - Enterprise Resource Planning)
• Sistema de Gerenciamento de Relacionamento com o Cliente (CRM - Customer
Relationship Management)
• Sistema de Gestão de Recursos Humanos (HRMS - Human Resource Management
System)
• Sistema de Gerenciamento de Cadeia de Suprimentos (SCM - Supply Chain
Management):
• Sistema de Automação de Vendas
• Sistema de Business Intelligence (BI)
• ...
Exemplos de sistemas que normalmente usam
processos baseados no modelo Iterativo e
Incremental
• Produtos de Software em geral (Sistemas/Aplicativos do dia a dia)
• Navegadores da web
• Sistemas operacionais
• Suítes de produtividade
• Software de edição de imagem
• Software de gerenciamento de projetos
• Software de segurança cibernética
• Aplicativos de redes sociais
• ...
Atividades comuns a todo processo de
software
• Especificação
• A funcionalidade do software e as restrições sobre sua operação devem ser
definidas
• Desenvolvimento
• O software deve ser desenvolvido para atender à especificação
• Validação (e Verificação)
• O software deve ser validado para garantir que atenda ao que o cliente deseja
(bem como está correto, de acordo com a especificação realizada)
• Evolução
• O software deve evoluir para atender às mudanças nas necessidades dos
clientes
Elementos que compõem todo processo
de software Projetos com mais
chances de sucesso
• Modelos de ciclo de vida (um ou combinação)
• Atividades e subatividades
• Sequência correta de atividades
• Condições que devem ser satisfeitas antes e depois
• Artefatos de entrada e saída das atividades
• Responsáveis (papéis)
• Boas práticas
• Notações • Gerentes do projeto
• Guias • Gerentes de configuração
• Padrões • Líderes técnicos
• Ferramentas • Analistas
• Programadores
• Arquitetos de Software
• Testadores do software
Algumas áreas de
• ...
processo
Processos podem ser categorizados de duas
formas
• Processos Dirigidos por Planos. Alguns exemplos:
• Processo Unificado
• Produção de software
• Microsoft Solutions Framework (MSF)
• Produção de Software
• Information Technology Infraestructure Library (ITIL)
• concentra-se na gestão dos serviços de TI, incluindo o suporte e a operação de sistemas
e aplicativos
• Etc.

• Processos Ágeis. Alguns exemplos:


• XP, Scrum, Agile Modeling, DAD, SAFe, DSDM, Kanban, etc
Exemplos de Processos Dirigidos por Planos

Processo Unificado (IBM RUP) Microsoft Solutions Information Technology


Framework (MSF) Infraestructure Library (ITIL)
Exemplos de Processos Ágeis
Melhoria de Processos
Melhoria de Processos de Software
• É o ato de compreender os processos existentes e realizar
mudanças nesses processos para aumentar a qualidade do
produto e/ou reduzir custos e tempo de desenvolvimento
• Muitas empresas de software recorreram à melhoria de
processos de software como forma de aprimorar a qualidade
de seus softwares, reduzir custos ou acelerar seus processos
de desenvolvimento
• Demanda constante da indústria por software melhor e mais
barato
• Prazos mais apertados
Abordagens para melhorias e mudanças de
processos
• Abordagem de maturidade do processo
• Processos Dirigidos por Planos
• Foco em: Melhoria dos processos e Gerenciamento de Projetos
• Foco em: Introdução de práticas recomendadas na Engenharia de
Software

• Abordagem ágil
• Processos Ágeis
• Foco em: Código (não exclui documentação)
• Foco em: Minimização dos custos gerais do processo com formalidade e
documentação
Foco das abordagens para melhorias e
mudanças de processos
• Abordagem de maturidade do processo
• Adota o conceito de níveis de maturidade
• O nível de maturidade do processo reflete o grau em que boas práticas
técnicas e de gestão foram adotadas nos processos de desenvolvimento
de software da organização
• Os objetivos primários dessa abordagem são a maior qualidade do
produto e a previsibilidade do processo
• Introdução de práticas recomendadas na Engenharia de Software
• Normalmente, requer “custos” mais elevados no sentido de que são introduzidas
atividades que visam atingir os objetivos primários
• Abordagem Cíclica: Medição do processo, Análise do processo e
Mudança no processo
Abordagem de Maturidade do processo
Medição

Sem dados concretos sobre um processo ou sobre


o software desenvolvido, é impossível avaliar o
valor da melhoria do processo

Mudança Análise
Abordagem de Maturidade do processo
• Medição do Processo
• Um ou mais atributos do processo ou produto de software são
medidos. Ex: Tempo de duração das atividades e/ou processos,
Recursos exigidos, Número de ocorrências de um evento particular
(defeitos, conflitos de integração de código, rotatividade da
equipe, etc)
• Essas medições formam um ponto de partida que permitem
decidir se as melhorias dos processos foram eficazes. A medida
que se introduzem mais melhorias, os mesmos atributos devem
ser reavaliados, uma vez que se espera que tenha havido alguma
alteração positiva
Abordagem de Maturidade do processo
• Análise do Processo
• O processo atual é avaliado a fim de identificar os pontos fracos e
gargalos. Os modelos de processo que o descrevem podem ser
desenvolvidos durante esse estágio. A análise pode ser focada ao
considerar características do processo para análise (ex: rapidez,
robustez, etc)
• Mudança no Processo
• Mudanças são propostas para abordar alguns dos pontos fracos
identificados. Elas são introduzidas e o ciclo continua coletando
dados sobre sua eficácia
O conceito de Maturidade do processo
• Introduzido na década de 80 pelo Software Enginnering Institute (SEI)
• A maturidade dos processos de uma empresa de software reflete seu gerenciamento de
processos, sua medição e o uso que ela faz de práticas recomendadas em engenharia de software
• Objetivo:
• Ideia introduzida para que o Departamento de Defesa dos EUA (DoD) pudesse avaliar a capacidade
e qualidade dos processos de Engenharia de Software das empresas parceiras produtoras de
software para o setor de defesa
• Limitação de contratos à empresas que atingissem um nível exigido de maturidade do processo
• Vários modelos de melhoria de processos foram desenvolvidos e evoluíram desde então,
com os fundamentos derivados do conceito maturidade do processo
• Em geral, os modelos de maturidade mais conhecidos internacionalmente são adotados
apenas por grandes empresas de software, em função do alto custo
• Mas há no brasil alternativa, derivada nesses modelos, para empresas de software de porte
variado
Alguns Exemplos de Modelos que Apoiam a Melhoria de
Processos de Software, baseados na abordagem de
Maturidade do Processo
• Capability Maturity Model Integration (CMMI)
• NormasISO/IEC 15504 (SPICE)
• Norma ISO/IEC 12207
• Personal software process (PSP)
• Team Software Process (TSP)
• Six Sigma
• [Link] (Melhoria de Processo do Software Brasileiro)
Abordagem Ágil
• Características primárias dos métodos ágeis: entrega rápida da
funcionalidade e rapidez de resposta para os requisitos mutáveis
do cliente
• Se concentram no código que está sendo desenvolvido e
minimizam (nunca excluem) deliberadamente a formalidade e a
documentação
• Aqui, a filosofia da melhoria é que os melhores processos são
aqueles com custos gerais mais baixos
• Se concentra no desenvolvimento iterativo e na redução dos custos
gerais do processo de software
• Incluem cerimônias como parte da iteração, para avaliação e melhorias
Alguns Exemplos de Modelos que Apoiam a
Melhoria de Processos de Software, baseados na
abordagem ágil
• Spotify Model
• Scrum Maturity Model (SMM)
• Disciplined Agile Delivery (DAD)
• Agile Marketing Capability (AMC)
• Agile Fluency Model

Esses modelos não são tão formalizados quanto o CMMI ou o [Link], mas
oferecem estruturas para entender e melhorar continuamente a aplicação de
práticas ágeis nas equipes e organizações
Resumo sobre processos de
software
Processos não são excludentes, podendo envolver
características de diferentes modelos
• Na prática, a maior parte dos processos de software se baseia em um
modelo genérico, mas frequentemente incorpora características de outros
modelos
• Isso vale particularmente para a engenharia de grandes sistemas
• Faz sentido combinar as melhores características de diferentes processos
• Grandes sistemas demandam ter conhecimento suficiente dos requisitos para
projetar sua arquitetura, não dá para fazer de forma incremental
• Em geral, sistemas dessa natureza são compostos por subsistemas
• Subsistemas de um sistema maior, podem usar qualquer abordagem (processo) de
desenvolvimento
• Processos (independente da abordagem) devem passar por melhoria
contínua
Apesar de não existem processos universais, várias
tentativas têm sido feitas nesse sentido...
• Um dos processos mais conhecidos com essa característica é o
Processo Unificado
• Processo flexível
• Pode ser instanciado de diferentes maneiras, servindo principalmente como
um framewok de processos, mas em nível menos abstrato que modelos de
processos tradicionais
• Combina diferentes modelos de processo existentes
• Foi adotado por grandes empresas de software, por exemplo IBM e por
empresa parceiras dos seus produtos
• Várias instâncias derivadas do processo unificado: EUP, DAD, OUM, AUP, BUP,
OpenUP, EssUP, etc
Em linhas gerais, os processos podem ser
categorizados de duas formas
• Processos Dirigidos por Planos. Alguns exemplos:
• Processo Unificado
• Produção de software
• Microsoft Solutions Framework (MSF)
• Produção de Software
• Information Technology Infraestructure Library (ITIL)
• concentra-se na gestão dos serviços de TI, incluindo o suporte e a operação de sistemas
e aplicativos
• Etc.

• Processos Ágeis. Alguns exemplos:


• XP, Scrum, Agile Modeling, SAFe, DSDM, Kanban, etc
Exercício
• Faça uma investigação sobre os modelos de maturidade de processo
CMMI e [Link] e tente identificar diferenças e semelhanças, caso
existam

Você também pode gostar