Você está na página 1de 21

Engenharia de Software (Pressman e Sommerville)  Software aberto: são aqueles em que muitas pessoas

podem contribuir para o seu desenvolvimento.


Software: são programas de computador e documentação
associada (tudo o que acompanha o programa). Produtos de Riscos de projeto: riscos que afetam o cronograma ou os
software podem ser desenvolvidos para um cliente específico ou recursos de projeto.
para o mercado em geral. Consiste em instruções que quando Riscos de produto: riscos que afetam a qualidade ou o
executadas fornecem características, funções e desempenho desempenho do software que está sendo desenvolvido.
desejados. Riscos de negócio: os riscos que afetam a organização que
desenvolve ou adquire o software.
Um bom software deve prover a funcionalidade e o desempenho
requeridos pelo usuário; além disso, deve ser confiável e fácil de Modelo de processo de software: é uma representação
manter e usar. (Manutenibilidade, Confiança e Proteção, simplificada de um processo de software. Cada modelo
Eficiência e Aceitabilidade) representa uma perspectiva particular de um processo e,
portanto, fornece informações parciais sobre ele.
Atenção!! Software é desenvolvido, e não fabricado ou
manufaturado. Tipos de Modelo (Tradicionais ou Prescritivos)
Atenção!! Software não se desgasta, porém se deteriora e sofre
constantes modificações. Neste modelo, a ordem e a consistência do projeto são questões
Atenção!! A maior parte dos softwares é desenvolvida de forma dominantes. Cada modelo de projeto também prescreve um fluxo
personalizada, sob encomenda. de trabalho, ou seja, a forma pela qual os elementos do processo
estão inter-relacionados.
Engenharia de Software: é a disciplina de engenharia que se
preocupa com todos os aspectos de produção de software. Modelo Cascata (dirigido a planos)(SOMMERVILLE E PRESSMAN):
também chamado de ciclo de vida clássico e linear, sugere uma
Abordagem em camadas abordagemsequencial e sistemática para o desenvolvimento de
software, começando com o levantamento das necessidades e
avançando pelas fases de planejamento, modelagem,
construção, emprego e suporte contínuo do software concluido.

 Foco na qualidade: sustenta a engenharia de software.


 Processo: define uma metodologia que deve ser
estabelecida para a entrega efetiva de tecnologia de ES.
Constitui a base para o controle do gerenciamento de
projetos de software e estabelece o contexto no qual são
aplicados métodos técnicos.
 Métodos: fornecem as informações técnicas para
desenvolver software. Envolvem uma ampla gama de Análise – Definição da arquitetura – Projeto – Implementação –
tarefas que incluem – comunicação, análise de requisitos, Testes com validação – Manutenção.
modelagem de projeto, construção de programas e teste e
suporte. O estágio seguinte não deve ser iniciado até que a fase anterior
 Ferramentas: fornecem suporte automatizado ou semi seja concluída. Na prática, esses estágios se soprepõem e
automatizado para o processo e para os métodos. alimentam uns aos outros de informações. Em principio, o modelo
cascata deve ser usado apenas quando os requisitos são bem
Campos de aplicação de software compreendidos e pouco provavelmente venham a ser
 Software de sistema: programas para atender a outros radicalmente alterados durante o desenvolvimento do sistema.
programas – compiladores, SO, drivers.
 Software de aplicação: programas sob medida que Modelo Incremental (dirigido a planos, ágil ou
solucionam uma necessidade específica do negócio. ambos)(SOMMERVILLE E PRESSMAN): essa abordagem intercala as
 Software científico (de engenharia): algoritmo para atividades de especificação, desenvolvimento e validação. O
processamento númerico pesado. sistema é desenvolvido como uma série de versões
 Software embutido: residente em um produto ou sistema e (incrementos), de maneira que cada versão adicione alguma
utilizado para implementar e controlar características e funcionalidade à anterior.
função para o usuário final e para o próprio sistema.
 Software para linha de produtos: projetado para prover
capacidade específica de utilização por muitos clientes
diferentes.
 Aplicações web: abarca uma gama de aplicações.
 Software de inteligência artificial: faz uso de algoritmos não
numéricos para solucionar problemas complexos que não
são passíveis de computação ou de análise direta.
 Computação mundial aberta.
 Netsourcing: softwares simples que podem ser utilizados
via internet.
Baseia-se na ideia de desenvolver uma implementação inicial, Utilizados quando se opta por uma abordagem de ES
expô-la aos comentários dos usuários e continuar por meio da especializada ou definida de forma restrita.
criação de várias versões até que um sistema adequado seja
desenvolvido. Engenharia de software orientada à reuso(SOMMERVILLE): é
baseada na existência de um número significativo de
Modelo Evolucionário(PRESSMAN): são iterativos. Permitem componentes reusáveis. O processo de desenvolvimento do
desenvolver versões cada vez mais completas do software. São sistema concentra-se na integração desses componentes em um
divididos em: sistema já existente em vez de desenvolver um sistema a partir
 Prototipação: mecanismo para identificar requisitos de do zero.(Também chamada de Integração e Configuração)
software. Utilizado para entender requisitos e apropriado
quando o cliente não tem detalhes dos requisitos. O
paradigma da prototipação auxilia os interessados a
compreender melhor o que está para ser construído. Cria-
se um protótipo em que os envolvidos conseguem ter uma
prévia de como o sistema ficará – tipos: prototipação
evolucionária e prototipação descartável.
 Análise de componentes: dada a especificação de
requisitos, é feita uma busca por componentes para
implementar essa especificação.
 Modificação (alteração) de requisitos: durante esse
estágio, os requisitos são analisados usando-se
informações sobre os componentes que foram descobertos.
Em seguida, estes serão modificados para refletir os
componentes disponíveis.
 Projeto do sistema com reúso: durante esse estágio, o
framework do sistema é projetado ou algo existente é
reusado.
 Desenvolvimento e integração: softwares que não podem
ser adquiridos externamente são desenvolvidos e os
 Espiral: acopla a natureza iterativa da prototipação com os componentes e sistemas COTS (prateleira) são integrados
aspectos sistemáticos e controlados do modelo cascata. para criar o novo sistema.
Abordagem cíclica guiadas por riscos, aumenta
incrementalmente o grau de definição e implementação de Desenvolvimento baseado em componentes(PRESSMAN): são
um sistema. componentes de software comerciais de prateleira ou COTS,
desenvolvido por vendedores que oferecem produtos e
disponibilizam a funcionalidade almejada juntamente com as
interfaces definidas. Esse modelo incorpora muitas características
do modelo espiral e é evolucionário em sua natureza,
demandando uma abordagem iterativa para a criação de
software. O modelo de desenvolvimento baseado em
componentes desenvolve aplicações a partir de componentes de
software pré-empacotados. Utiliza fortemente a UML.

Modelo Concorrente(PRESSMAN): permite à equipe de software


representar elementos concorrentes e iterativos de qualquer um
dos modelos de processo descritos. Define uma série de eventos
que irão disparar transições de estado para estado para cada
uma das atividades, ações ou tarefas de ES. Equipe envolvida
em várias atividades simultâneas. Métodos formais(PRESSMAN): baseados em técnicas matemáticas.
Promessa de um software “livre de defeitos”, é aplicado a
sistemas críticos e utiliza a notação Z.

Desenvolvimento orientado a aspectos(PRESSMAN): é um


paradigma de ES relativamente novo que oferece uma
abordagem metodológica e de processos para definir, especificar,
projetar e construir aspectos. Tem como característica não
influenciar apenas uma parte de um componente, mas sim o
sistema como um todo. É uma alternativa para resolver
problemas que não são solucionados pelos demais métodos de
desenvolvimento.
Tipos de Modelo (Especializados) Processo de Software: conjunto de atividades relacionadas que
levam à produção de um produto de software. Os softwares
podem ser desenvolvidos do zero ou estendidos a partir de um  Projeto de banco de dados: projeta-se as estruturas de
software já existente. dados do sistema.

Atividades fundamentais da Engenharia de Software Validação de software: teste de programa, em que o sistema é
 Especificação do software: clientes e engenheiros definem executado com dados de testes simulados, é a principal técnica.
o software a ser produzido e as restrições de sua operação. Também pode envolver processos de verificação, como
(DEFINIÇÕES, RESTRIÇÕES E FUNCIONALIDADES) inspeções e revisões, em cada estágio do processo de software,
 Projeto e implementação (Desenvolvimento) do software: o desde a definição dos requisitos de usuários até o
software é projetado e programado. (PRODUZIR O SOFTWARE desenvolvimento do programa.
DE ACORDO COM AS ESPECIFICAÇÕES)
 Validação do software: o software é verificado para garantir
que é o que o cliente quer (escopo). (GARANTIR QUE ATENDE
ÀS NECESSIDADES DOS CLIENTES)
 Evolução do software: o software é modificado para refletir
a mudança de requisitos do cliente e do mercado. (EVOLUIR
PARA REFLETIR MUDANÇAS SOLICITADAS)

Espeficificação de software: possuem quatro atividades  Teste de componente: os componentes do sistema são
principais do processo de engenharia de requisitos. testados pelas pessoas que o desenvolveram. Cada
componente é testado de forma independente, separado
dos outros.
 Teste de sistema: componentes do sistema são integrados
para criar um sistema completo. Esse processo se
preocupa em encontrar os erros resultantes das interações
inesperadas entre componentes e problemas de interface
do componente. Tambem visa mostrar que o sistema
satisfaz seus requisitos funcionais e não funcionais, bem
como testar as propriedades emergentes do sistema.
 Teste de aceitação (teste alfa): é o estágio final do processo
de testes. O sistema é testado com dados fornecidos pelos
clientes e não com dados advindos de testes simulados.
 Estudo de viabilidade: é feita uma estimativa acerca da Podem revelar erros e omissões na definição dos requisitos
possibilidade de se satisfazerem as necessidades do do sistema e problemas de requisitos.
usuário identificado usando-se tecnologias atuais de
software e hardware. Baseline é uma configuração de software especialmente criada
 Elicitação e análise de requisitos: esse é o processo de para uma situação específica e aprovada em determinado
derivação dos requisitos do sistema por meio da momento do ciclo de vida de software para servir de base a
observação dos sistemas existentes, além de discussões desenvolvimentos posteriores.
com os potenciais usuários e compradores, entre outros.
 Especificação de requisitos: é a atividade de traduzir as O Rational Unified Process – RUP é um exemplo de modelo de
informações obtidas durante a atividade de análise em um processo moderno, derivado de trabalhos sobre a UML e o
documento que defina um conjunto de requisitos. Tipos: Unified Software Development Process associado. É um bom
requisitos do usuário e requsitos de sistema. exemplo de processo híbrido (incremental, iterativo e
 Validação de requisitos: essa atividade verifica os requisitos prototipação). Ele reúne elementos de todos os modelos de
quando a realismo, consistência e completude. processo genéricos. É o principal framework de processos
utilizado atualmente.
Projeto e implementação (Desenvolvimento) do software  É iterativo e incremental.
 Guiado por casos de uso.
 Centrado na arquitetura.
 Orientado a objetos.
 Planejado por riscos.

Principios chaves do RUP:


 Adaptar processos: “RUP é muito pesado” – Dimensionar
corretamente o processo para a empresa. Não é obrigatório
usar todos os papéis e os artefatos. Varia de projeto a
projeto.
 Balancear prioridades dos interessados: “Meu requisito é
mais importante” – alinha aplicativos às necessidades do
negócio e dos usuários. Otimiza o valor do negócio. Define-
se nas fases iniciais o que é prioritário e balanceia cada
 Projeto de arquitetura: pode-se identificar a estrutura geral
uma das necessidades.
do sistema, os componentes principais (subsistemas ou
 Colaborar através de equipes: incrementar a produtividade
módulos), seus relacionamentos e como eles são
do time, ter senso de responsabilidade comum. Não deve
distribuídos.
existir equipe de “testes” ou equipe de “desenvolvedores”.
 Projeto de interface: define-se as interfaces entre os
 Demonstrar valor iterativamente: reduzir riscos prematuros,
componentes do sistema.
adquirir concordância entre os interessados, execução de
 Projeto de componente: toma-se cada componente do
vários ciclos e obter feedback.
sistema e projeta seu funcionamento.
 Elevar nível de abstração: forma de se lidar com um plano de projeto avaliando os possíveis riscos, as
complexidades. Utiliza componentes ou linguagens de alto estimativas de custo e prazos, estabelecendo as
nível e UML para representação das abstrações. prioridades, o levantamento dos requisitos do sistema e
 Focalizar continuamento na qualidade: assegura que toda a a análise preliminar. Nesta fase, deve haver
equipe esteja comprometida com a qualidade do produto. concordância dos stakeholders quanto ao escopo do
Testa de forma contínua e conduz revisões. projeto.
 Elaboração: analisar de forma mais detalhada o
É descrito em três perspectivas: domínio do problema, revisando os riscos que o projeto
 Perspectiva dinâmica: mostra as fases do modelo ao longo pode sofrer. A arquitetura do projeto inicia-se com sua
do tempo. forma básica elaborada. Indagações como "O plano do
 Perspectiva estática: mostra as atividades/disciplinas projeto é confiável?", "Os custos são admissíveis?" são
realizadas no processo. esclarecidas nesta fase.
 Perspectiva prática: sugere boas práticas a serem usadas  Construção: desenvolver ou adquirir componentes de
durante o processo. software. O principal objetivo desta fase é codificação
do software, com foco nos componentes e outros
Descreve seis boas práticas: recursos do sistema.
 Desenvolver software iterativamente;  Transição: disponibilizar o sistema de forma que seja
 Gerenciar os requisitos; compreendido pelo usuário final. As atividades desta
 Usar arquiteturas baseadas em componentes; fase incluem o treinamento dos usuários finais e a
 Modelar o software visualmente; realização de testes da versão beta do sistema visando
 Verificar a qualidade do software; e garantir a sua qualidade.
 Controlar as mudanças do software.

O RUP é um processo de engenharia de software. Ele oferece


uma abordagem baseada em disciplinas para atribuir tarefas e
responsabilidades dentro de uma organização de
desenvolvimento. Sua meta é garantir a produção de software de
alta qualidade que atenda às necessidades dos usuários dentro
de um cronograma e de um orçamento previsíveis.Caracterizam-
se por ser dirigido por casos de uso, centrado na arquitetura,
iterativo e incremental, além de ter foco em riscos.

O Processo Unificado e diversos métodos atuais de


desenvolvimento iterativo encorajam um planejamento das
iterações iniciais de um projeto de forma a priorizar requisitos que
envolvam a identificação e controle de maiores riscos e/ou que
envolvam características que o cliente mais se preocupa.

Produto de trabalho: abstração geral que representa algum


resultado de um processo.
 Artefato: produtos de trabalho tangíveis e bem definidos.  Concepção/Iniciação(Marco: objetivos do ciclo de vida):
 Entrega: produto de trabalho que provê uma descrição e seu objetivo é estabelecer o escopo, estimar custo, tempo e
definição para o empacotamento de outro produto de riscos, identificar casos de uso críticos e principais e propor
trabalho. ao menos uma opção de arquitetura. Objetiva atingir o
 Resultado: descreve produtos de trabalho intangíveis como consenso sobre os objetivos do ciclo de vida do projeto.
um resultado ou um estado.
Principais artefatos:
Papéis: define o comportamento e as responsabilidades no  Visão: características mais importantes do sistema.
processo. É a definição abstrata de um conjunto de atividades  Caso de negócio: informações sobre o ponto de vista
executadas. Pode ser desempenhado por uma pessoa ou grupo do negócio.
de pessoas.  Lista de riscos.
 Plano de desenvolvimento de software: todas as
Atividades/Tarefas: unidade de trabalho desempenhada por um informações necessárias ao gerenciamento do
papel. Define o trabalho que será executado. Composta por projeto.
passos, entradas e saídas e com uma finalidade específica.  Plano de iteração: planejar a passagem pelas
disciplinas.
“Papéis executam atividades que geram produtos de trabalho”.  Casos de desenvolvimento: documentar decisões de
adaptações do projeto.
É um modelo constituído de fases que identifica quatro fases  Modelo de casos de uso: descrever os requisitos
distintas no processo de software, estreitamente relacionadas ao funcionais do sistema.
negócio e não a assuntos técnicos. Cada uma concluída por um  Glossário: termos importantes utilizados no projeto.
marco principal. Uma passagem pelas quatros fases é
considerado um ciclo de desenvolvimento. Indicam a ênfase  Elaboração (Marco: arquitetura do ciclo de vida): suas
que é dada ao projeto em um momento específico. metas são desenvolver uma compreensão do problema
dominante, estabelecer um framework da arquitetura para o
 Concepção/Iniciação: abranger as tarefas de sistema, desenvolver o plano de projeto e identificar os
comunicação com o cliente e o planejamento. É feito maiores riscos do projeto. (modelo de requisitos do sistema)
 Implantação: cria-se uma versão do produto e instala-se no
Principais artefatos: local de trabalho dos usuários. Desenvolver materiais de
 Protótipos: utilizados como forma de reduzir o risco. treinamento.
 Lista de riscos (atualizada e revisada).  Gerenciamento de configuração e mudanças: esse
 Documento de arquitetura: visão geral de arquitetura workflow serve como apoio à gerência do projeto em
abrangente do sistema. relação às mudanças no sistema.
 Modelo de projeto: descreve a realização dos casos  Gerenciamento de projetos: esse workflow de apoio
de uso. gerencia o processo de desenvolvimento de software.
 Modelo de dados: descreve a representação lógica e  Ambiente: esse workflow relaciona-se à disponibilização de
física dos dados do sistema. ferramentas de software adequadas para a equipe de
 Conjunto de testes: testes implementados e desenvolvimento.
executados para validar a estabilidade.
 Modelo de caso de uso (80% concluído). Desenvolvimento ágil: não é indicado para todos os projetos,
produtos, pessoas e situações. O ponto chave é que o processo
 Modelo de domínio.
se molda às necessidades das pessoas e equipes, e não o
inverso. Valoriza mais:
 Construção (Marco: Capacidade operacional inicial):
 Individuos e interações do que processos e ferramentas;
envolve projeto, programaçao e testes do sistema.
 Software em funcionamento do que documentação
Esclarecer requisitos restantes; concluir o desenvolvimento
abrangente;
do sistema com base na arquitetura definida; ênfase no
 Colaboração do cliente do que negociação de contrato;
gerenciamento de recursos para otimizar custos,
 Respostas a mudanças do que seguir um plano.
programação e qualidade; atingir versões alfa e beta e alto
grau de paralelismo. (sistema de software já funcionando)
Embora os métodos ageis sejam todos baseados na noção de
desenvolvimento e entrega incremental, eles propõem diferentes
Principais artefatos:
processos para alcançar tal objetivo. No entanto, compartilham
 “O sistema”: sistema executável, pronto para começar
um conjunto de principios, com base no manifesto ágil:
o teste beta.
 Envolvimento do cliente;
 Plano de implementação: alinhar as equipes de
 Entrega incremental;
implantação para disponibilizar o software.
 Pessoas, não processos;
 Conjunto de testes: testes implementados e
executados para validar a estabilidade dos releases.  Aceitar as mudanças;
 Material de suporte do usuário: manuais e outros  Manter a simplicidade.
materiais de treinamento. Rascunho preliminar com
base em casos de uso. Abordagens ágeis de desenvolvimento de software consideram
o projeto e a implementação como atividades centrais no
 Transição (Marco: Release do produto): implica processo de software. Eles incorporam outras atividades, como
transferência do sistema da comunidade de elicitação de requisitos e testes no projeto e na implementação.
desenvolvimento para a comunidade de usuários e em seu
funcionamento em um ambiente real.

Principais artefatos:
 Notas de release: texto com informações sobre a
versão.
 Artefatos de instalação: o que é necessário ter para Abordagem dirigida a planos identifica estágios distintos do
disponibilizar o sistema no ambiente alvo. processo de software com saídas associadas a cada estágio. As
 Material de treinamento: guias de usuário e manuais saídas de um estágio são usadas como base para o
do sistema. planejamento da atividade do processo a seguir.

Disciplina (Workflow): mostra todas as atividades que devem ser


realizadas para produzir um determinado conjunto de artefatos.
Divididas em engenharia – modelagem de negócios, requisitos,
análise e design, implementação, teste e implantação – e suporte
– gerenciamento de projeto, gerenciamento de mudanças e
ambiente.
 Modelagem de negócios: os processos de negócios são
modelados com a utilização de casos de uso de negócio. Em uma abordagens dirigida a planos, ocorrem iterações no
 Requisitos: os casos de uso são desenvolvidos para âmbito das atividades com documentos formais, usados para
modelar os requisitos do software. Definir uma interface de estabelecer a comunicação entre os estágios do processo. Em
usuário para o sistema, possuindo, como uma de suas uma abordagem ágil, iterações ocorrem em todas as atividades,
tarefas, desenvolver a visão geral para o sistema. portanto, os requisitos e o projeto são desenvolvidos em conjunto,
 Análise e projeto: cria-se um modelo de projeto com base e não separadamente.
em modelos de arquitetura, de componente, de objeto e de
sequência. XP – Extreme Programming: trata-se de uma metodologia ágil
 Implementação: os componentes do software são para equipes pequenas e médias desenvolvendo software com
implementados. requisitos vagos e em constante mudança. Nela, os requisitos
 Teste: o teste é um processo iterativo e é efetuado em são expressos como cenários (chamados de histórias de
conjunto com a implementação do sistema. (validação) usuário), que são implementados diretamente como uma série de
tarefas. Os programadores trabalham em pares e desenvolvem Scrum: é um método ágil geral, mas seu foco está no
testes para cada tarefa antes de escreverem o código. gerenciamento do desenvolvimento iterativo, ao invés das
abordagens técnicas específicas da ES ágil.

No Scrum, existem três fases:


 A primeira é uma fase de planejamento geral, em que se
estabelecem os objetivos gerais do projeto e da arquitetura
do software.
 A segunda, ocorre uma série de ciclos sprint, sendo que
cada ciclo desenvolve um incremento do sistema.
 A terceira, encerra o projeto, completa a documentação
exigida e avalia as lições aprendidas com o projeto.
Práticas do XP

 Planejamento incremental: os requisitos são gravados em


cartões de história e as histórias que serão incluídas em um
release são determinadas pelo tempo disponível e sua
relativa prioridade. Os desenvolvedores dividem essas
histórias em “tarefas”.
 Pequenos releases: em primeiro lugar, desenvolve-se um
conjunto minimo de funcionalidades útil, que fornece o valor
do negócio. Releases do sistema são frequentes e
gradualmente adicionam funcionalidade ao primeiro Sprint: é uma unidade de planejamento na qual o trabalho a ser
release. feito é avaliado, os recursos para o desenvolvimento são
 Projeto simples: cada projeto é realizado para atender às selecionados e o software é implementado. As principais
necessidades atuais, e nada mais. caracteristicas desse processo são:
 Desenvolvimento test-first: um framework de testes  Sprints são de comprimento fixo, normalmente duas a
iniciais automatizados é usado para escrever os testes para quatro semanas. Eles correspondem ao desenvolvimento
uma nova funcionalidade antes que a funcionalidade em si de um release do sistema em XP.
seja implementada.  O ponto de partida para o planejamento é o backlog do
 Refatoração: todos os desenvolvedores devem refatorar o produto, que é a lista do trabalho a ser feito no projeto.
código continuamente assim que encontrarem melhorias de  A fase de seleção envolve todos da equipe do projeto que
código. Isso mantém o código simples e manutenível. trabalham com o cliente para selecionar os recursos e a
 Programação em pares: os desenvolvedores trabalham funcionalidade a ser desenvolvida durante a sprint.
em pares, verificando o trabalho dos outros e prestando  Uma vez que todos estejam de acordo, a equipe se
apoio para um bom trabalho sempre. organiza para desenvolver o software. Reuniões diárias
 Propriedade coletiva: os pares de desenvolvedores rápidas (máximo de 15 minutos), envolvendo todos da
trabalham em todas as áreas do sistema, de modo que não equipe, são realizadas para analisar os progressos e, se
se desenvolvam ilhas de expertise. Todos os necessário, repriorizar o trabalho. Nessa etapa, a equipe
conhecimentos e todos os desenvolvedores assumem está isolada do cliente e da organização, com todas as
responsabilidade por todo o código. Qualquer um pode comunicação canalizadas por meio do chamado Scrum
mudar qualquer coisa. Master.
 Integração contínua: assim que o trabalho em uma tarefa  No fim, o trabalho é revisto e apresentado aos stakeholders.
é concluído, ele é integrado ao sistema como um todo. O próximo ciclo da sprint começa em seguida.
Após essa integração, todos os testes de unidade do
sistema devem passar. Scrum Master: é um facilitador, que organiza reuniões diárias,
 Ritmo sustentável: grandes quantidades de horas extras controla o backlog de trabalho, registra decisões, mede o
não são aceitáveis, pois o resultado final, muitas vezes, é a progresso comparado ao backlog e se comunica com os clientes
redução da qualidade do código e da produtividade a médio e a gerência externa à equipe. Seu papel é proteger a equipe de
prazo. desenvolvimento de distrações externas.
 Cliente no local: um representante do usuário final do
sistema deve estar disponível todo o tempo à equipe de XP. Product Owner: define as funcionalidades do produto, mantêm
os itens do backlog atualizados e priorizados, aceita ou rejeita o
Spike: incremento em que nenhum tipo de programação é que foi produzido e sempre está disponível para esclarecer
realizado. dúvidas.

Histórias do usuário: conjunto de fases escritas pelo cliente e Requisitos: são as descrições do que o sistema deve fazer, os
desenvolvedores em linguagem comum para capturar os serviços que oferece e as restrições a seu funcionamento. O
requisitos. processo de descobrir, analisar, documentar e verificar esses
serviços e restrições é chamado de engenharia de requisitos.
Valores do XP  Requisitos de usuário: são declarações, em uma linguagem
 Comunicação; natural com diagramas, de quais serviços o sistema deverá
 Simplicidade; fornecer a seus usuários e as restrições com as quais este
 Feedback; deve operar. (declaração abstrata de alto nível)
 Coragem (disciplina);  Requisitos de sistema: são descrições mais detalhadas das
 Respeito. funções, serviços e restrições operacionais do sistema de
software. (descrição detalhada e formal de uma função do
sistema)
4) Negociação: negociar as necessidades conflitantes, definir
prioridades e custo em conjunto com os recursos
necessários.
5) Especificação: apresentação formal do dados obtidos até o
momento. É o “documento” que irá guiar o desenvolvimento
futuro.
6) Validação: avaliação dos artefatos quanto a qualidade.
Examina-se a especificação para garantir que todos os
requisitos tenham sido declarados de acordo com os
padrões estabelecidos.
Stakeholder: pessoa ou papel que é de alguma forma afetada 7) Gestão de requisitos: visa identificar, controlar e ratrear
pelo projeto. requisitos e modificações nos requisitos ao longo do
projeto.
Requisitos funcionais: são declarações de serviços que o
sistema deve fornecer, de como o sistema deve reagir a entradas Os processos de engenharia de requisitos podem incluir quatro
específicas e de como o sistema deve se comportar em atividades de alto nível. Elas visam avaliar se o sistema é útil para
determinadas situações. Podem explicitar o que o sistema não a empresa (estudo de viabilidade), descobrindo requisitos
deve fazer. Exemplo: um usuário deve ser capaz de pesquisar (elicitação e análise), convertendo-os em alguma formapadrão
listas de agendamentos para todas as clínicas. (especificação), e verificar se os requisitos realmente definem o
sistema que o cliente quer (validação). É um processo iterativo
Requisitos não funcionais: são restrições aos serviços ou em que as atividades são intercaladas.
funções oferecidos pelo sistema. Em geral, aplicam-se ao sistema
como um todo. Não estão diretamente relacionados aos serviços Engenharia de requisitos (SOMMERVILLE)
específicos oferecidos para os usuários, mas podem estar
relacionados às propriedades emergentes do sistema, como 2) Elicitação e análise de requisitos: nessa atividade, os
confiabilidade, tempo de resposta e ocupação de área. Deixar de engenheiros de software trabalham com clientes e usuários
atender a um requisito não funcional pode significar a inutilizaçaõ finais do sistema para obter informações sobre o domínio
de todo o sistema. São divididos em: da aplicação, os serviços que o sistema deve oferecer, o
 Requisitos de produto: especificam ou restringem o desempenho do sistema, restrições de hardware e assim
comportamento do software – requisitos de desempenho por diante.
quanto à rapidez e utilização de memória requerida,
requisitos de confiabilidade que estabelecem a taxa
aceitável de falhas, requisitos de proteção e requisitos de
usabilidade.
 Requisitos organizacionais: são os requisitos gerais de
sistemas derivados das políticas e procedimentos da
organização do cliente e do desenvolvedor – requisitos de
processo operacional que definem como o sistema será
usado, requisitos de processo de desenvolvimento que
especificam a linguagem de programação, o ambiente ou
normas e requisitos ambientais.  Descoberta de requisitos: essa é a atividade de
 Requisitos externos: derivam de fatores externos ao interação com os stakeholders do sistema para
sistema e seu processo de desenvolvimento – requisitos descobrir seus requisitos. Os requisitos de domínio dos
reguladores, requisitos legais e requisitos éticos. stakeholder se da documentação também são
descobertos durante essa atividade.
Requisito de domínio: podem ser tanto funcionais e não  Classificação e organização de requisitos: essa
funcionais, e refletem as características com relação ao domínio atividade toma a coleção de requisitos não
ao qual está inserido. estruturados, agrupa requisitos relacionados e os
organiza em grupos coerentes.
Metas estabelecem boas intenções, mas podem causar  Priorização e negociação de requisitos: essa
problemas para os desenvolvedores do sistema, uma vez que atividade está relacionada com a priorização de
deixam margem para interpretação e, consequentemente, para requisitos e em encontrar e resolver os conflitos por
disputas, quando da entrega do sistema. meio da negociação de requisitos. Normalmente, os
stakeholders precisam se encontrar para resolver as
Engenharia de requisitos (PRESSMAN): abrange sete tarefas diferenças e chegar a um acordo sobre os requisitos.
distintas, algumas podendo ocorrer em paralelo e sendo todas  Especificação de requisitos: os requisitos são
adaptáveis à necessidade do projeto. documentados e inseridos no próximo ciclo da espiral.
Documentos formais ou informais de requisitos podem
1) Concepção: objetiva entender o problema, quais os ser produzidos.
envolvidos, a natureza da solução e inicia o processo de
comunicação entre eles. (estudo de viabilidade) A elicitação e análise de requisitos é um processo iterativo, com
2) Levantamento: descobrir objetivos do sistema e do produto feedback contínuo de cada atividade para as outras atividades. O
– como o produto atende às necessidades da empresa e ciclo do processo começa com a descoberta de requisitos e
como será utilizado no dia a dia. (problemas de escopo, de termina com sua documentação. O entendimento do analista de
entendimento e de volatilidade) requisitos melhora a cada rodada do ciclo. Quando se completa o
3) Elaboração: refinamento das informações obtidas e documento de requisitos, o ciclo termina.
inclusão de modelagem de cenários e das classes.
Técnicas de Elicitação  Prototipação: um modelo executável do sistema
 Descoberta de requisitos: é o processo de reunir é demonstrado para os usuários finais e clientes.
informações sobre o sistema requerido e os sistemas  Geração de casos de teste: requisitos devem
existentes e separar dessas informações os requisitos ser testáveis. Se é dificil projetar casos de testes,
de usuário e de sistema. então os requisitos serão dificeis de serem
 Entrevistas: formais ou informais com stakeholders do implementados.
sistema. Podem ser fechadas ou abertas.
 Cenários: descrições de exemplos de sessões de Gestão de requisitos: é o processo de compreensão e controle
interação – exemplos da vida real. das mudanças nos requisitos do sistema.
 Casos de uso: técnica de descoberta de requisitos.  O planejamento é o primeiro estágio essencial no processo
Identifica os atores envolvidos em uma interação e dá de gerenciamento de requisitos, e determina o nível de
nome ao tipo de interação. São documentados por um detalhamento requerido no GR.
diagrama de casos de uso de alto nível. O conjunto de  O gerenciamento de mudanças deve ser aplicado a todas
casos de uso representa todas as possíveis iterações as mudanças propostas aos requisitos de um sistema.
que serão descritas nos requisitos do sistema. Avalia os benefícios da implementação de novos requisitos
 Etnografia: técnica de observação que pode ser usada justificam os custos de implementação.
para compreender os processos operacionais e ajudar
a extrair os requisitos de apoio para esses processos. Qualidade de software é um conceito multifacetado que pode ser
(trabalho do dia a dia) O analista faz uma imersão no descrito seguindo 5 pontos de vista diferentes:
ambiente de trabalho em que o sistema será usado. É  Visão trancendental: a qualidade é algo que se
particularmente eficaz para descobrir dois tipos de reconhece imediatamente, mas não consegue definir
requisitos – requisitos derivados da maneira como as explicitamente.
pessoas realmente trabalham e requisitos derivados da  Visão do usuário: vê a qualidade em termos das metas
cooperação e conhecimento das atividades de outras específicas de um usuário final.
pessoas.  Visão do fabricante: define qualidade em termos da
especificação original do produto.
3) Especificação de requisitos: é o processo de escrever os  Visão do produto: a qualidade pode ser ligada a
requisitos de usuário e de sistema em um documento de caracteristicas inerentes de um produto.
requisitos. Idealmente, os requisitos de usuário e de  Visão baseada em valor: mede a qualidade tomando
sistema devem ser claros, inequívocos, de fácil como base o quanto um cliente estaria disposto a pagar
compreensão, completos e consistentes. Pode ser um por um produto.
documento formal, um modelo gráfico, um modelo
matemático ou uma coleção de cenários de uso. Qualidade de projeto no desenvolvimento de software engloba
 Documento de Requisitos de Software (SRS – um grau de atendimento às funções e características
Software Requirements Specification): declaração especificadas no modelo de requisitos.
formal do que os desenvolvedores deverão
implementar. Deve incluir tantos os requisitos de Qualidade de conformidade focaliza o grau em que a
usuário para um sistema, quanto uma implementação segue o projeto e o sistema resultante atende
especificação detalhada dos requisitos do suas necessidades e as metas de desempenho.
sistema.
Qualidade de software pode ser definida como uma gestão de
4) Validação de requisitos: processo pelo qual se verifica se os qualidade efetiva aplicada de modo a criar um produto útil que
requisitos definem o sistema que o cliente realmente quer. forneça valor mensurável para aqueles que o produzem e para
Ela se sobrepõem à analise, uma vez que está preocupada aqueles que o utilizam.
em encontrar problemas com os requisitos. Evita que erros
em um documento de requisitos possam gerar alto custo de Dimensões de qualidade de Garvin
retrabalho.  Qualidade de desempenho.
 Qualidade dos recursos.
Durante esse processo, diferentes tipos de verificação  Confiabilidade.
devem ser efetuados com os requisitos no documento de  Conformidade.
requisitos. Incluem (tipos de problemas comuns):  Durabilidade.
 Verificações de validade/corretude: a função era  Facilidade de manutenção.
exatamente aquela?  Estética.
 Verificações de consistencia: diferentes requisitos  Percepção.
não podem entrar em conflito.
 Verificações de completude: todos os requisitos Fatores de qualidade de McCall, são divididos em:
necessários devem ter sido incluídos.
 Verificações de realismo: os requisitos incluídos
devem poder realmente ser implementados.
 Verificabilidade/Testabilidade: os requisitos
devem poder ser validados sobre o sistema
implementado.

Técnicas de validação (V&V)


 Revisões de requisitos: os requisitos são
analisados sistematicamente por uma equipe de
revisores que verifica erros e inconsistências.
Operação do Produto
 CORREÇÃO: o quanto um programa satisfaz a sua Para obter software de alta qualidade, devem ocorrer quatro
especificação e atende aos objetivos da missão do cliente. atividades:
 CONFIABILIDADE: o quanto se pode esperar que um  Processo e prática comprovados de engenharia de
programa realize a função pretendida com a precisão software;
exigida.  Gerenciamento consistente de projetos;
 EFICIÊNCIA: a quantidade de recursos computacionais e  Controle global de qualidade; e
código exigidos por um programa para desempenhar sua  A presença de uma infraestrutura para garantir a
função. qualidade.
 INTEGRIDADE: o quanto o acesso ao software ou dados por
pessoas não autorizadas pode ser controlado. Custos da qualidade: inclui todos os custos necessários para a
 USABILIDADE: esforço necessário para aprender, operar, busca da qualidade ou para a execução de atividades
preparar a entrada de dados e interpretar a saída de um relacionadas à qualidade, assim como os custos causados pela
programa. falta de qualidade. São divididos em:
 Custo de prevenção: incluem o custo de atividades de
Revisão do Produto gerenciamento, necessárias para planejar e coordenar
 FACILIDADE DE MANUTENÇÃO: esforço necessário para todas as atividades de controle e garantia da qualidade,
localizar e corrigir um erro em um programa. o custo de atividades técnicas adicionais para
 FLEXIBILIDADE: esforço necessário para modificar um desenvolver modelos completos de requisitos e de
programação em operação. projeto, custos de planejamento de testes e o custo de
 TESTABILIDADE: esforço necessário para testar um todo o treinamento associado a essas atividades.
programar de modo a garantir que ele desempenhe a  Custo da avaliação: incluem atividades para a
função pretendida. compreensão aprofundada da condição do produto “a
primeira vez de” cada processo. Estão inseridos os
Transição do Produto custos de avaliação técnica, custo para coleta de dados
 PORTABILIDADE: esforço necessário para transferir o e métricas, custoss de testes e depurações.
programa de um ambiente de hardware/software para outro.  Custo de falhas: são aqueles que desapareceriam
 REUSABILIDADE: o quanto um programa (ou partes de um caso nenhum erro tivesse surgido antes ou depois da
programa) pode ser reutilizado em outras aplicações – entrega de um produto a clientes. Podem ser
relacionado com o empacotamento e o escopo das funções subdivididos em falhas internas (ocorrem quando se
que o programa executa. detecta um erro em um produto antes da entrega) e
 INTEROPERABILIDADE: esforço necessário para integrar um falhas externas (associado aos defeitos encontrados
sistema a outro. após o produto ter sido entregue ao cliente).

Fatores de qualidade ISO 9126:foi desenvolvido como uma Um Sistema de Gestão da Qualidade compreende atividades
tentativa de identificar os atributos fundamentais de qualidade de pelas quais uma organização identifica seus objetivos e
softwrae. determina os processos e recursos necessários para alcançar os
 Funcionalidade: o grau com que o software satisfaz ás resultados desejados. Seus princípios são: foco no cliente,
necessidades declaradas. liderança, engajamento das pessoas, abordagem de processo,
 Confiabilidade: a quantidade de tempo que o software melhoria contínua, tomada de decisão baseada em evidência e
fica dispon[ivel para uso. gestão dos relacionamentos com as partes interessadas.
 Usabilidade: o grau de facilidade de utilização do
software. Existem quatro subcategorias de Gerência de Qualidade de
 Eficiência: o grau de otimização do uso, pelo software, Software:
dos recursos do sistema.  Planejamento da Qualidade de Software.
 Facilidade de manutenção: a facilidade com a qual uma  Garantia da Qualidade de Software.
correção pode ser realizada no software.  Controle da Qualidade de Software.
 Portabilidade: a facilidade com a qual um softwrae pode  Melhoria da Qualidade de Software.
ser transposto de um ambiente a outro.
O Controle de Qualidade é a aplicação desses processos de
qualidade visando eliminar os produtos que não atingiram o nível
de qualidade exigido.

A Garantia da Qualidade(QA, do inglês quality assurance) é a


definição de processos e padrões que devem conduzir a produtos
de alta qualidade e a introdução de processos de qualidade na
fabricação. Além disso, a garantia da qualidade consiste em um
conjunto de funções de auditoria e de relatórios que possibilita
uma avaliação da efetividade e da completude das ações de
controle de qualidade. O objetivo da garantia da qualidade é
fornecer ao pessoal técnico e administrativo os dados
necessários para serem informados sobre a qualidade do
produto, ganhando, portanto, entendimento e confiança de que as
ações para atingir a qualidade desejada do produto estão
funcionando.
Uma parte importante da garantia de qualidade é a definição ou Revisões informais: podem ser um simples teste de mesa ou
seleção de padrões que devem ser aplicados no processo de uma reunição informal, e já pode ser considerada uma revisão.
desenvolvimento de software ou produtos de software. Como
parte desse processo de QA, devem ser escolhidas ferramentas e Revisões técnicas formais: é a atividade de controle da
métodos para suportar o uso desses padrões. Uma vez que os qualidade de software realizada por engenheiros. Os objetivos
padrões foram selecionados para uso, processos específicos de são descobrir erros na função, lógica, implementação; verificar se
projeto devem ser definidos para monitorar o uso dos padrões e o software atende aos requisitos; garantir que o software foi
verificar se eles foram seguidos. representado de acordo com os padrões; obter software que seja
 Padrões de produto: aplicam-se ao produto de software desenvolvido de maneira uniforme e tornar os processos mais
que está sendo desenvolvido. Eles incluem padrões de gerenciáveis.
documentos — como a estrutura dos documentos de
requisitos; padrões de documentação — como um Verificação: refere-se ao conjunto de tarefas que garantem que o
cabeçalho de comentário padrão para uma definição de software implementa corretamente uma função específica.
classe de objeto; e padrões de codificação — os quais
definem como uma linguagem de programação deve Validação: refere-se a um conjunto de tarefas que asseguram
ser usada. que o software foi criado e pode ser rastreado segundo os
 Padrões de processo: definem os processos que devem requisitos do cliente.
ser seguidos durante o desenvolvimento de software.
A verificação e a validação incluem uma ampla gama de
As revisões de software são como um filtro para a gestão da atividades de Garantia de Qualidade de Software (SQA), como
qualidade. Isso significa que as revisões são aplicadas em várias revisões técnicas, auditorias de qualidade e configuração,
etapas durante o processo de engenharia de software e servem monitoramento de desempenho, simulação, estudo de
para revelar erros e defeitos que podem ser eliminados. viabilidade, revisão de documentação, revisão de base de dados,
análise de algoritmo, teste de desenvolvimento, teste de
Um bug de software é um erro, falta, falha ou defeito em um usabilidade, teste de qualificação, teste de aceitação e teste de
programa de computador ou sistema que faz com que produza instalação.
um resultado incorreto ou inesperado, ou se comportar de
maneiras inesperadas. Dito isso, vejamos as diferenças entre O teste proporciona o último elemento a partir da qual a
essas terminologias: qualidade pode ser estimada e os erros podem ser descobertos.
 Falha: é o comportamento operacional do software diferente
do esperado pelo usuário. É um comportamento inesperado O papel de um Grupo Independente de Teste (ITG) é remover
do software. Basicamente, é a incapacidade do sistema em os problemas associados ao próprio desenvolvedor executar os
executar a função esperada. testes. Eles trabalham juntos durante todo o projeto de software
 Falta: Uma etapa ou definição de dados incorreta em um para garantir que testes completos sejam realizados.
software que se torna o motivo do comportamento
imprevisto do aplicativo. Pode ser uma condição acidental Estratégias de Testes de Software
que não está documentada e você somente a descobre  Teste de Unidade (Código): concentra-se em cada
quanto é executada. unidade, como um componente, classe ou objeto do
 Defeito: É uma inconsistência no software, algo que foi webapp.
implementado de maneira incorreta, causando uma  Teste de Integração (Projeto): o foco está no projeto e
anomalia no produto. Ele ocorre em uma linha de código, construção da arquitetura de software.
como uma instrução errada ou um comando incorreto. O  Teste de Validação (Requisitos): os requisitos
defeito é a causa de um erro, porém se uma linha de código estabelecidos como parte dos requisitos de
que contém o defeito nunca executar, o defeito não vai modelagem são validados em relação ao software
provocar um erro. criado.
 Erro: Erro humano produzindo resultado incorreto. O erro  Teste de Sistema (Engenharia de Sistemas): o software
evidencia o defeito, ou seja, quando há diferença entre o e outros elementos são testados como um todo.
valor obtido e o valor esperado constitui um erro.
Um teste nunca termina, o encargo simplesmente passa do
Métricas de revisão engenheiro para o usuário final. Todas as vezes que o usuário
 Esforço de preparação (EP): o esforço (homem/hora) executa o programa no compurador, o programa está sendo
exigido para revisar um produto resultante antes da testado.
reunião de revisão.
 Esforço de avaliação (EA): o esforço (homem/hora0 que A abordagem da Engenharia de Software de Sala Limpa
é despendido durante a revisão em si. sugere técnicas de uso estatístico que executa uma série de
 Reformulação esforço (RE): o esforço (homem/hora) testes derivados de uma amostragem estatística de todas as
dedicado à correção dos erros revelados durante a execuções possíveis do programa por todos os usuários em uma
revisão. população escolhida.
 Tamanho do artefato de software: uma medida do
tamanho do artefato de software que foi revisto. Uma estratégia de teste de software terá sucesso quando os
 Erros secundários encontrados: número de erros testadores de software:
encontrados que podem ser classificados como tal. 1) Especificarem os requisitos do produto de uma maneira
 Erros graves encontrados: número de erros quantificável, muito antes de começar o teste.
encontrados que podem ser classificados como tal. 2) Definirem explicitamente os objetivos do teste em
 Densidade de erros: representa os erros encontrados termos mensuráveis.
por unidade do artefato de software revisto. 3) Entenderem os usuários do software e desenvolverem
um perfil para cada categoria de usuário.
4) Desenvolverem um plano de teste que enfatize o teste A validação é conseguida por meio de uma série de testes que
do ciclo rápido. demonstram conformidade com os requisitos. Um plano de teste
5) Criarem software robusto que seja projetado para descreve as classes de testes a serem conduzidas e um
testar-se a si próprio. procedimento de test define casos de teste específicos
6) Usarem revisões técnicas eficazes como filtro antes destinados a garantir que todos os requisitos funcionais sejam
do teste. satisfeitos, todas as características comportamentais sejam
7) Executarem revisões técnicas para avaliar a estratégia obtidas, requisitos de desempenho, documentação, e outros
de teste e os próprios casos de teste. requisitos como compatibilidade, recuperação e manutenibilidade.
8) Desenvolverem abordagem de melhora contínua para
o processo de teste. Um elemento importante do processo de validação é a revisão de
configuração que garante que todos os elementos da
Teste de unidade (software convencional): focaliza o esforço de configuração do software tenham sido adequadamente
verificação na menor unidade de projeto do software (o desenvolvidos, estejam catalogados e tenham os detalhes
componente ou módulo). Focaliza a lógica interna de necessários para amparar as atividades de suporte.
processamento e as estruturas de dados dentro dos limites de um
componente. Esse teste é simplificado quando um componente  Teste alfa: os usuários do software trabalham com a
com alta coesão é projetado. equipe de desenvolvimento para testar o software no
local do desenvolvedor.
Teste de integração: é uma técnica sistemática para construir a  Teste beta: um release do software é disponibilizado
arquitetura de software ao mesmo tempo que conduz testes para aos usuários para que possam experimentar e levantar
descobrir erros associados com as interfaces. O objetivo é os problemas que eles descobriram com os
construir uma estrutura de programa determinada pelo projeto a desenvolvedores do sistema.
partir de componentes testados em unidades.  Teste de aceitação: os clientes testam um sistema para
 Teste de integração descendente (top/down): decidir se está ou não pronto para ser aceito pelos
abordagem incremental para a construção da desenvolvedores de sistemas e implantado no ambiente
arquitetura de software. Os módulos são integrados do cliente.
deslocando-se para baixo através da hierarquia de
controle, começando com o módulo principal. Verifica Teste de sistema: é uma série de diferentes testes, cuja
os principais pontos de controle ou decisão antecipada finalidade primária é exercitar totalmente o sistema. Todos
no processo de teste. funcionam no sentido de verificar se os elementos do sistema
 Teste de integração ascendente (bottom/up): começa foram integrados adequadamente e executam as funções a eles
com a construção e o teste módulos atômicos. Os alocadas.
componentes são combinados em agregados (clusters)  Teste de recuperação: força o software a falhar de
e cada um dos clusters é testado usando um várias formas e verifica se a recuperação é executada
pseudocontrolador. corretamente.
 Teste de regressão: cada vez que um novo módulo é  Teste de segurança: tenta verificar se os mecanismos
acrescentado como parte do teste de integração, o de proteção incorporados ao sistema vão de fato
software muda. Esse teste é a reexecução do mesmo protegê-lo contra caesso indevido.
subconjunto de testes que já foram executados para  Teste de esforço (estresse): servem para colocar os
assegurar que as alterações não tenham propagado programas em situações anormais. Usa o sistema de
efeitos colaterais indesejados. maneira que demande recursos em quantidade,
É impraticável e ineficiente reexecutar todos os testes. frequência ou volumes anormais.
Com isso, o conjunto de testes de regressão contém  Teste de desempenho: é feito em todas as etapas no
três classes diferentes de caso de teste: processo de teste.Os testes de desempenho precisam
1) Amostra representativa dos testes que usam ser projetados para assegurar que o sistema possa
todas as funções de software. processar a carga a que se destina. Isso normalmente
2) Testes adicionais que focalizam as funções envolve a execução de uma série de testes em que
de software que podem ser afetadas pela você aumenta a carga até que o desempenho do
alteração. sistema se torne inaceitável.
3) Testes que focalizam os componentes do  Teste de disponibilização (configuração): exercita o
software que foram alterados. software em cada ambiente na qual ele deve operar.
 Teste de fumaça: usada frequentemente quando Examina todos os procedimentos de instalação que
produtos de software são desenvolvidos. Deve usar o serão usados pelos clientes e toda documentação que
sistema inteiro de ponta a ponta. Uma série de testes é será usada para fornecer o software para os usuários
criada para expor erros que impedem a construção de finais.
executar corretamente sua função. A finalidade deverá
ser descobrir erros bloqueantes que apresentam a mais Mock objects são objetos com a mesma interface que os objetos
alta probabilidade de atrasar o cronograma do software. externos usados para simular sua funcionalidade. Mock objects
Pode ser ascendente ou descendente. podem também ser usados para simular operações anormais ou
eventos raros.
Teste de validação: começa quando termina o de integração, ou
seja, quando os componentes individuais já foram exercitados, o A depuração ocorre como consequência de um teste bem
software montado como um pacote e os erros de interface já sucedido, isto é, quando um caso de teste descobre um erro, a
foram descobertos ou corrigidos. O teste focaliza as ações depuração é o processo que resulta na remoção do erro – não é
visíveis do usuário e saídas do sistema reconhecíveis pelo teste.
usuário.  Força bruta: é o mais comum e o menos eficiente.
Utiliza-se este método quando todos os outros falham.
 Rastreamento (backtracking): pode ser usado com software. Proporciona informações que permitem ao gerente de
sucesso em pequenos programas. O código fonte é projeto ou aos engenheiros ajustar o processo, o projeto ou o
investigado retroativamente (começando do ponto onde produto para incluir melhorias.
o sintoma foi descoberto) até que a causa seja
encontrada. Um processo de medição pode ser caracterizado por 5 atividades
 Eliminação da causa: é manifestada por indução ou (principios):
dedução e introduz o conceito de particionamento 1) Formulação: a criação de medidas e métricas de
binário. software apropriadas para a representação do software
considerado.
Fundamentos de teste de software – Testabilidade: é a facilidade 2) Coleção: o mecanismo usado para acumular dados
com que um programa pode ser testado. As seguintes necessários para criar as métricas formuladas.
caracteristicas levam a um software testável. 3) Análise: a computação das métricas e a aplicação de
 Operabilidade: quanto melhor funcionar, mais ferramentas matematicas.
eficientemente pode ser testado. 4) Interpretação: a avaliação das métricas que resultam
 Observabilidade: o que você vê é o que você testa. em informações sobre a qualidade da representação.
 Controlabilidade: quanto melhor pudermos controlar o 5) Feedback: recomendações derivadas da interpretação
software, mais o teste pode ser automatizado e de métricas de produto transmitidas para a equipe de
otimizado. software.
 Decomponibilidade: controlando o escopo do teste,
podemos isolar problemas mais rapidamente e executar O paradigma Meta / Questão / Métrica (Goal / Question / Metric
um reteste mais racionalmente. – GQM) foi desenvolvido como uma técnica para identificar
 Simplicidade: quanto menos tiver que testar, mais métricas significativas para qualquer parte do processo de
rapidamente podemos testá-lo. software. O GQM enfatiza a necessidade de:
 Estabilidade: quanto menos alterações, menos (1) estabelecer um objetivode medição explícita que é específico
interrupções no teste. para a atividade do processo ou característica de produto que
 Compreensibilidade: quanto mais informações tivermos, deve ser avaliada,
mais inteligente será o teste. (2) definir um conjunto de questões que devem ser respondidas
para atingir o objetivo e
Teste de Caixa Preta (teste comportamental): utiliza uma visão (3) identificar métricas bem formuladas que ajudam a responder a
externa, em que conhecendo a função especificada para qual um essas questões.
produto foi projetado para realizar, podem ser feitos testes que
demonstram que cada uma das funções é totalmente operacional, Um conjunto de atributos que deverão ser abrangidos por
embora ao mesmo tempo procurem erros em cada função. Faz métricas, de software efetivas. A métrica derivada e as medições
referência a testes realizados na interface do software, que levam até ela deverão ser:
examinando alguns aspectos fundamentais de um sistema, com  Simples e computáveis: deverá ser relativamente fácil
pouca preocupação em relação a estrutura lógica interna do aprender a derivar a métrica, e sua computação não deve
software. demandar esforço ou tempo fora do normal.
 Empiricamente e intuitivamente persuasiva: a métrica
Teste de Caixa Branca (teste de caixa de vidro): utiliza uma deverá satisfazer as ideias do engenheiro sobre o atributo
visão interna, em que conhecendo o funcionamento interno de um do produto considerado.
produto, podem ser realizados testes para garantir que tudo se  Consistente e objetiva: a métrica deverá sempre produzir
encaixa, ou seja, que as operações internas foram realizadas de resultados que não sejam ambíguos.
acordo com as especificações e que todos os componentes  Consistente no seu uso das unidades e dimensões: a
internos foram adequadamente exercitados. Fundamenta-se em computação matemática da métrica deverá usar medidas
um exame rigoroso do detalhe procedimental. Os caminhos que não resultem em combinações bizarras de unidades.
lógicos do software e as colaborações entre os componentes são  Independente da linguagem de programação: as
testados exercitando conjuntos específicos de condições e/ou métricas deverão ser baseadas no modelo de requisitos,
ciclos. Poderia-se utilizar os testes exaustivos neste cenário para modelo de projeto ou na própria estrutura do programa.
validar cada caminho lógico, porém é impraticável processar Elas não deverão ser dependentes dos caprichos da
todos os caminhos possíveis de um sistema grande. sintaxe ou semânticas das linguagens de programação.
 Um mecanismo efetivo para feedback de alta qualidade:
Medida: proporciona uma indicação quantitativa de extensão, a métrica deverá fornecer informações que podem levar
quantidade, capacidade ou tamanho de algum atributo de um
produto ou processo. Quando é coletado um único ponto de Uma métrica de software é uma característica de um sistema de
dado. software, documentação de sistema oou processo de
desenvolvimento que pode ser objetivamente medido. Podem ser:
Medição: é o ato de determinar uma medida. Atribui números ou  Métricas de controle (ou de processo): suportam os
simbolos a atributos de entidades no mundo real. Coleção de um processos de gerenciamento. São associados ao
ou mais pontos de dados. processo de software.
 Métricas de previsão (ou de produto): ajudam a prever
Métrica: é uma medida quantitativa do grau com a qual um as características do software. Estão associadas ao
sistema, componente ou processo possui determinado atributo. software em si.
Relaciona as medidas individuais de alguma maneira.
Métricas de produto: são métricas de previsão usadas para
Um engenheiro coleta medidas e desenvolve métricas para obter medir atributos internos de um sistema de software. Permitem ao
indicadores. Um indicador é uma métrica ou combinação de gerente de projeto avaliar o estado de um projeto em andamento.
métricas que proporcionam informações sobre o processo de Dividem-se em duas classes:
1) Métricas dinâmicas: são coletadas por meio de  Fornecimento de fornecedores (SS): cobre a parte de
medições efetuadas de um programa em execução. contratações críticas para o desenvolvimento de um
Ajudam a avaliar a eficiência e a confiabilidade de um determinado software.
programa.
2) Métricas estáticas: são coletadas por meio de medições Constelação: é uma coleção de componentes gerada a partir do
feitas de representações do sistema, como projeto, o framework CMMI, que engloba um modelo fundamental, seus
programa ou a documentação. Ajudam a avaliar a materiais de treinamento e documentação relacionada a
complexidade, a compreensibilidade e a manutebilidade avaliações, abrangendo uma área de interesse específica.
de um sistema ou componentes de um sistema de
software. A expansão das constelações para conteúdos específicos
adicionais é feita através de adições.
Métricas de processo: são coletadas através de todos os
projetos e sobre longos períodos de tempo. Sua finalidade é  CMMI para Desenvolvimento (CMMI-DEV): provê diretrizes
proporcionar uma série de indicadores de processo que levam à para monitorar, mensurar e gerenciar processos de
melhoria do processo de software no longo prazo. desenvolvimento.
1) Métricas privadas: pode incluir taxa de defeito por  CMMI para Serviços (CMMI-SVC): provê diretrizes para
individuo, por componente e erros encontrados durante entrega de serviços dentro das organizações e para clientes
o desenvolvimento. externos.
 CMMI para Aquisições (CMMI-ACQ): provê diretrizes para
Atenção! Algumas métricas de processo são privadas suporte às decisões relacionadas à aquisição de produtos e
para a equipe de projeto de software, mas são públicas serviços.
para todos os membros da equipe.Exemplos incluem
defeitos relatados para funções principais do software Principais componentes da estrutura do CMMI
(que foram desenvolvidas por vários profissionais), 1) Áreas de processo: conjunto de práticas inter-
erros encontrados durante revisões técnicas, e linhas relacionadas que, quando executadas coletivamente,
de código ou pontos de função por componente ou satisfazem um conjunto de metas consideradas
função. A equipe examina esses dados para descobrir importantes para realizar melhorias significativas em
indicadores que podem melhorar o desempenho da uma determinada área.
equipe. 2) Metas específicas: metas relacionadas a uma
determinada área de processo que descrevem o que
2) Métricas públicas: geralmente assimilam informações deve ser realizado para assegurar que esta esteja
que originalmente eram privadas aos individuos e efetivamente implementada.
equipes. Taxas de defeito em nível de projeto, esforço, 3) Práticas específicas: descrições das atividades
prazos agendados, e dados relacionados são coletados consideradas importantes para o atendimento de suas
e avaliados tentando descobrir indicadores que podem respectivas metas específicas. Podem ser detalhadas
melhorar o desempenho do processo organizacional. em subpráticas e possuem como saídas os produtos de
trabalho típicos.
Qualidade de software – CMMI 1.3 4) Metas genéricas: metas comuns, compartilhadas por
múltiplas áreas de processo, que, quando atingidas
CMMI: é um modelo de referência que contém práticas dentro de uma área de processo específica, podem
necessárias à maturidade em disciplinas específicas. Tem como indicar se estão sendo planejadas e implementadas de
principal objetivo fornecer diretrizes baseadas em melhores forma efetiva, replicável e controlada.
práticas para a melhoria dos processos e habilidades 5) Práticas genéricas: descrições das atividades
organizacionais, cobrindo o ciclo de vida de produtos e serviços consideradas importantes para o atingimento das suas
completos, nas fases de concepção, desenvolvimento, aquisição, respectivas metas genéricas e que garantem a
entrega e manutenção. Suas abordagens envolvem a avaliação institucionalização efetiva, repetível e controloda das
da maturidade da organização ou a capacitação das suas áreas áreas de processo. Podem ser divididas em subpráticas
de processo, o estabelecimento de prioridades e a e conter derivações específicas (elaborações)
implementação de ações de melhoria. Oferece duas abordagens relacionadas a cada área de processo em que são
(formas de representação) distintas para a sua implementação: aplicadas.
abordagem por estágios e abordagem contínua. 6) Componentes informativos de suporte: informações
 Benefícios: custo, prazo, produtividade, qualidade, adicionais necessárias para a descrição de um
satisfação dos clientes e retorno sobre o investimento. componente:
 Notas: incluem detalhamento, fundamentação
O processo inclui 3 disciplinas ou corpos de conhecimento (body teórica ou restrições/premissas relacionadas
of knowledges), sendo elas: ao componente.
 Engenharia de sistemas (SE): cobre a parte de  Exemplos: texto ou lista de itens para melhor
desenvolvimento de software. clarificar um conceito ou atividade descrita.
 Engenharia de software (SW): cobre o desenvolvimento de  Referências: indicação de que há informações
sistemas completos, ou seja, a parte de software e adicionais ou mais detalhadas para um
hardware. componente na descrição de outras áreas de
 Desenvolvimento integrado de produtos e processos processo relacionadas.
(IPPD): preza pela colaboração entre a equipe de
desenvolvimento e de produção para satisfazer as Classificação dos componentes do modelo CMMI
expectativas dos clientes.  Requeridos: absolutamente necessários para a
implementação de uma área de processo. Ex: metas
específicas e metas genéricas.
 Esperados: compõem uma implementação típica de uma aos planos e produtos do projeto e tratando de forma
área de processo, porém aceitando alternativas que adequada as mudanças necessárias e seus impactos.
produzam resultados satisfatórios. Ex: práticas específicas  Gestão de riscos (RSKM): identificar problemas
e práticas genéricas. potenciais antes de sua ocorrência, para que possam
 Informativos: auxiliam no entendimento detalhado das ser planejadas e executadas ações de tratamento de
metas e práticas, e das formas como podem ser riscos, visando a mitigação de impactos negativos nos
implementadas. Ex: subpráticas, notas, referências, objetivos, ao longo do ciclo de vida do projeto ou
exemplos de produtos de trabalho. produto.
 Gestão quantitativa do projeto (QPM): gerenciar
Áreas de processo quantitativamente (através de métricas) o processo
O CMMI sugere que suas 22 áreas de processo sejam agrupadas definido do projeto, visando o atingimento dos
em 4 categorias de afinidade: objetivos preestabelecidos de desempenho de
qualidade e processo.
1) Gestão de processo: agrupa áreas de processos que
manipulam processos no âmbito da organização, 3) Engenharia: agrupa áreas de processo relacionadas ao
permeando todos os projetos. Engloba as seguintes áreas ciclo de vida de desenvolvimento e manutenção de
de processo: produtos, assim como à garantia do seu funcionamento e
 Foco no processo organizacional (OPF): planejar, da sua aderência às especificações. Engloba as seguintes
implementar e entregar melhorias no processo áreas de processo:
organizacional, com base no claro entendimento dos  Desenvolvimento de requisitos (RD): gerar, analisar,
seus pontos fortes e fracos. definir e validar requisitos do cliente, assim como seus
 Definição do processo organizacional (OPD): desdobramentos para os requsitos do produto e dos
estabelecer e manter uma biblioteca (re)utilizável de seus componentes, em conformidades com as
componentes do processo organizacional, incluindo necessidades dos grupos interessados.
políticas, descrições de processos, modelos de ciclos  Solução técnica (TS): projetar, desenvolver e
de vida, critérios e diretrizes para adaptação do implementar alternativas de soluções para o
processo, repositório de métricas e demais itens de atendimento de requisitos preestabelecidos, podendo
documentação relacionados. envolver a criação e/ou aquisição de produtos,
 Treinamento organizacional (OT): desenvolver as componentes de produtos ou serviços relacionados.
habilidades e o conhecimento das pessoas, de forma  Integração do produto (PI): montar o produto a partir
que elas possam desempenhar seus pápeis no dos seus componentes e entregá-lo ao cliente,
processo organizacional de forma efetiva. garantindo o seu funcionamento de forma integrada
 Desempenho do processo organizacional (OPP): em relação a todas as interfaces internas e externas.
estabelecer e manter uma visão quantitativa do  Verificação (VER): garantir que um determinado
desempenho dos processos padrões e prover produto satisfaça os respectivos requisitos para os
modelos e baselines de desempenho, visando quais foi desenvolvido.
melhorar a gestão dos projetos através de métricas de  Validação (VAL): demonstrar que um determinado
processo e produto. produto ou componente de produto atinge os
 Gestão do desempenho organizacional (OPM): resultados esperados depois de colocado em
gerenciar proativamente o desempenho da operação no ambiente final.
organização para atingir os seus objetivos de negócio.
4) Suporte: qualifica processos cujas atividades são
2) Gestão de projeto: envolve áreas de processo que tratam distribuídas ao lngo de um projeto de desenvolvimento ou
aspectos de planejamento, monitoriação e controle manutenção de projeto, e cujos objetivos são atingidos
relacionados exclusivamente a projetos. Engloba as indiretamente através de sua execução.
seguintes áreas de processo:  Gestão da configuração (CM): estabelecer e manter a
 Planejamento do projeto (PP): estabelecer e manter integridade dos produtos de trabalho através da
planos que definam as atividades dos projetos, identificação, do controle, da verificação e do
envolvendo a elaboração de estimativas, o monitoramento constante da situação da sua
estabelecimento do nível adequado de interação com configuração.
os grupos envolvidos e a obtenção de compromissos.  Garantia da qualidade do processo e do produto
 Controle e monitoração do projeto (PMC): permitir (PPQA): prover aos integrantes das equipes uma
uma visibilidade adequada do progresso do projeto, visibilidade mais clara do andamento dos processos e
de forma que possam ser tomadas ações corretivas dos produtos gerados, através de avaliações objetivas
apropriadas quando o seu desempenho apresentar em relação às especificações, da identificação de não
desvios significativos em relação ao planejado. conformidades e do acompanhamento de ações
 Gestão do acordo com o fornecedor (SAM): gerenciar corretivas.
a aquisição de produtos de fornecedores externos  Medição e análise (MA): desenvolver e manter uma
para os quais existe um acordo formal. capacitação de medição para suportar as
 Gestão integrada do projeto (IPM): planejar e necessidades de informações gerenciais, em termos
gerenciar o projeto e o envolvimento dos principais de conceitos, técnicas e mecanismos de execução.
grupos interessados, de acordo com um processo  Análise de decisões e resolução (DAR): analisar
definido e integrado, derivado do processo padrão da possíveis decisões utilizando um processo de
organização. avaliação formal, que considera alternativas
 Gestão de requisitos (REQM): gerenciar os requisitos identificadas em relação a critérios preestabelecidos.
técnicos e não técnicos absorvidos ou gerados por um
projeto, identificando as inconsistências em relação
 Análise e resolução de causas (CAR): identificar processos como na tecnologia. (Áreas de processo: OPM e
causas de defeitos e outros problemas e tomar ações CAR)
corretivas para prevenir a sua ocorrência futura. 1. Tratamento adequado de todas as formas de
inovações e mudanças possíveis, tanto nos
Abordagem de implementação por estágios: pode ser processos quanto na tecnologia, e de seus reflexos
considerada uma evolutiva direta do CMM, uma vez que também no processo organizacional;
é baseada em 5 níveis de maturidade. 2. Maior acurácia no tratamento dos problemas,
através da resolução das causas comuns de
Nível de maturidade: pode ser considerado um degrau variação.
evolucionário para a melhoria do processo organizacional como
um todo e consiste em práticas específicas e genéricas que **É mais recomendada para organizações que já estão
integram um conjunto predefinido de áreas de processo. O familiarizadas com a incorporação de melhorias nos seus
cumprimento das metas específicas e genéricas correspondentes processos organizacionais através de grandes saltos de
a essas áreas de processo é um pré-requisito para o atingimento qualidade.
do nível de maturidade correspondente.
Abordagem contínua de implementação: através dessa, o
 Nível 2 (Gerenciado): o foco é direcionado para práticas de CMMI permite que cada uma de suas áreas de processo seja
gestão de projetos, indicando que, em uma organização implementada de forma independente e evolutiva, agrupando
ainda imatura, é mais prioritário aprender e planejar, suas práticas genéricas e específicas em 4 níveis de capacidade:
controlar e gerenciar (envolve gerenciar, durante o seu  Nivel 0 (Incompleto): o processo não é executado ou é
andamento, os requisitos estabelecidos junto aos grupos parcialmente executado, ou seja, uma (ou mais) das metas
interessados, a qualidade e a integridade dos produtos específicas de sua área de processo não é satisfeita.
gerados, a aderência aos processos existentes e os  Nível 1 (Executado): o processo satisfaz todas as metas
acordos formalizados com os fornecedores envolvidos) os específicas de sua área de processo e realiza o trabalho
produtos do que investir em técnicas e metodologias de necessário para gerar os seus produtos.
desenvolvimento de produtos. (Áreas de processo: REQM,  Nível 2 (Gerenciado): o processo é planejado e executado
PP, PMC, SAM, MA, PPQA e CM) de acordo com políticas organizacionais, utiliza pessoal
1. Maior grau de previsibilidade para os projetos; habilitado e recursos adequados para gerar saídas de
2. Melhor controle dos acordos com fornecedores de forma controlada e envolve os grupos interessados
produtos e serviços; adequados, além de ser monitorado, controlado, revisado,
3. Maior segurança na criação de uma base de avaliado quanto à conformidade com sua descrição e ao
medições operacionais. desempenho previsto nos seus planos.
 Nível 3 (Definido): o processo é gerenciado e adaptado a
 Nível 3 (Definido): o foco está no processo de engenharia partir de um conjunto de processos padronizados da
de produtos, que espelha as fases de um ciclo de vida organizaçã que, por sua vez, também evoluem
padrão: concepção (desenvolvimento de requisitos), continuamente.
análise e desenho (solução técnica), testes e
implantação (integração do produto, verificação e Cada nível de capacidade tem apenas uma meta genérica que
validação). Fomenta a criação de um ambiente descreve o grau de institucionalização que a organização deve
organizacional orientado à integração entre equipes de atingir no processo através das práticas genéricas relacionadas.
trabalho e ao compartilhamento de conhecimentos e
habilidades. (Áreas de processo: RD, TS, PI, VER, VAL, Modelagem de Processo de Negócio – BPM
OPF, OPD, OT, IPM, RSKM e DAR)
1. Maior robustez na execução dos processos e nos A Gestão de Processos de Negócio (Business Process
produtos, através do uso da integração do produto, Management – BPM) é uma abordagem disciplinar ou um ciclo
verificação, vallidação e de técnicas de gestão de contínuo para planejar, modelar, simular, executar, monirtorar e
riscos; melhorar processos de negócio (automatizados ou não) para
2. Maior envolvimento da organização no alcançar os resultados pretendidos consistentes (pretendidos) e
estabelecimento de um ambiente orientado à alinhados com os objetivos estratégicos de uma
integração das equipes; organização.Possui foco no cliente.
3. Melhoria na comunicação interna e externa;
4. Maior acurácia nas tomadas de decisão.

 Nivel 4 (Gerenciado Quatitativamente): a gestão


quantitativa baseada em medições e indicadores cobre, de
forma integrada, todo o conjunto de processos
organizacionais, assim como os projetos e respectivos
produtos, como instrumento de suporte para o
atendimetento dos objetivos de desempenho de processo e
de qualidade. (Áreas de processo: OPP e QPM)
1. Maior precisão no gerenciamento dos projetos,
através da utilização de indicadores de
desempenho baseados em medições extraídas
desde o nível 2.  Projeto/Planejamento: a etapa do planejamento é a que
define qual o objetivo do BPM, quais processos serão
 Nível 5 (Otimizado): o conceito de inovação organizacional melhorados, qual a metodologia, as ferramentas e as áreas
integra os processos de gestão de mudanças tanto em envolvidas.
 Modelagem: depois da análise anterior, já se tem ideia das  Processos de negócio (primários ou essenciais): esses
falhas que precisam ser corrigidas. Por isso, essa etapa processos entregam valor ao cliente e estão relacionados à
cuida do mapeamento de todo o fluxo de processo e do atividade fim da organização. Estão associados à criação
desenho de todo o desenvolvimento processual a partir da de um produto/serviço, marketing e transferência ao cliente.
cadeia de valor estabelecida. Design de serviços e produtos, marketing, comercialização,
 Simulação: com a ajuda de uma ferramenta de simulação, “fabricação de produtos”, “entrega de serviços” e suporte ao
o processo aprimorado é testado para constatar se está cliente.
rodando como o previsto.  Processos de suporte: provêm suporte a processos
 Execução: essa etapa é a que move a empresa. A primários, geralmente pelo gerenciamento de recursos e ou
implantação conta com a ajuda de toda a equipe em aceitar infraestrutura requerida pelos processos primários. Folha de
as novas mudanças organizacionais não sofrendo muito pagamento, pagamento de contas, suporte de TI, compras
impacto com elas. Por isso, a gestão de processos deve e manutenção predial.
estar atenta nessa fase, que é crucial para o andamento do  Processos de gestão: são relacionados ao planejamento,
ciclo BPM. medição, monitoramento e controle das atividades de
 Monitoramento: os indicadores de desempenho mostram negócio. São necessários para que os processos de
se o ciclo BPM está sendo realmente eficiente para a negócio e de suporte tenham
empresa. Caso haja algum desvio, a empresa deve eficácia/eficiência.Gerenciamento de projetos,
procurar resolvê-lo imediatamente, para dar andamento ao gerenciamento da estratégia, gerenciamento de custos,
resto do processo.Possui as métricas: gestão de tempo, gerenciamento de desempenho e gerenciamento de
qualidade, custo e capacidade. atividades.
 Melhoria: o último passo é buscar, sempre que possível,
melhorias no fluxo processual da organização. A avaliação Eficácia: ocorre quando as atividades planejadas são realizadas e
da situação atual pode ser feita rotineiramente e os resultados esperados alcançados. Não se preocupa
aprimoramentos devem ser propostos por qualquer diretamente com os recursos envolvidos para obter os resultados
colaborador que faça parte desse processo. do processo.

Vantagens do BPM Eficiência: ocorre quando as atividades planejadas são realizadas


 Otimização de recursos; e os resultados esperados alcançados, utilizando o menor
 Redução de desperdícios (custos); recurso possível. Fornece uma medida da relação
 Redução nos tempos de duração dos processos; custo/benefício para a realização dos processos.
 Aumento da governabilidade;
 Redução do risco; Efetividade: conceito mais amplo que busca avaliar os
 Alinhamento entre negócios e tecnologia; resultados das ações implantadas, verificando os reais
 Inovar em serviços e produtos; e benefícios que as ações trarão. Procura avaliar se o que foi
realizado deveria mesmo ser feito e quais seus impactos.
 Transformar a experiência do cliente/cidadão.
Modelagem de Processos - BPMN
Atenção!! Reduzir custos e desperdícios, aumentar a
Combina um conjutno de habilidades e técnicas que permite
produtividade, aumentar a satisfação do cidadão, buscar
compreender, comunicar e gerenciar os componentes de
inovações, controlar os recursos e alinhar/integrar as áreas de
processos de negócio. Conjunto de atividade envolvidas na
negócio são motivadores para implementar o BPM.
representação de processos e pode ter uma perspectiva de
ponta-a-ponta ou segmentada. Possui as técnicas de
Processo: conjunto de atividades relacionadas com o objetivo de
mapeamento: entrevistas, questionários, reuniões, workshops,
atingir resultados de forma padronizada. É um conjunto definido
observação de campo, análise da documentação existente e
de atividades ou comportamentos executadps por humanos ou
coleta de evidências.
máquinas para alcançar uma ou mais metas. São disparados por
eventos específicos e apresentam um ou mais resultados que
Modelo: é uma representação simplificada de uma coisa, um
podem conduzir ao término do processo ou a transferência de
conceito ou uma atividade. Podem ser matemáticos, gráficos,
controle para outro processos.
físicos, narrativos ou alguma combinação desses elementos.
Negócio: refere-se a pessoas que interagem para executar um
BPMN – Business Process Model and Notation: é uma notação
conjunto de atividades de entrega de valor para os clientes e
gráfica que permite descrever as etapas e o fluxo ponta a ponta
gerar retorno às partes interessadas.
de um processo de negócio.
Um processo de negócio é definido como um trabalhado ponta-
BPMS – Business Process Management Suite: é uma ferramenta
a-ponta, interfuncional e até mesmo interoganizacional, que
complexa que, em linhas gerais, é responsável pela realização de
entrega valor aos clientes ou apoia/gerencia os outros processos
grande parte do ciclo de vida do gerenciamento de processos de
que agregam valor.
negócio.
BPM: disciplina gerencial que integra estratégias e objetivos de
Atividade: representam a decomposição de um processo em
uma organização com expectativas e necessidades de clientes,
suas principais atividades. Normalmente representamos a lógica
por meio do foco em processos ponta a ponta. BPM engloba
e as regras de negócio neste nível de detalhe, evitando os
estratégias, objetivos, cultura, estruturas organizacionais, papéis,
detalhes operacionais. É um trabalho realizado na organização
políticas, métodos e tecnologias para analisar, desenhar,
composto de:
implementar, gerenciar desempenho, transformar, e estabelecer
governança de processos.  Entrada: objeto real ou abstrato ou informação que
sofrerá transformação pela atividade.
Tipos de processos
 Regras de negócio: objeto ou informação que define ou  Atividade/tarefas: representam o trabalho realizado
restringe algum aspecto de um negócio e representa dentro de uma organização.
conhecimento do negócio. Ela governa como o negócio  Gateway (desvios): são elementos utilizados para
deve ser realizado. controlar pontos de divergência e convergência de um
 Saídas: objeto ou informação produzida como resultado fluxo.
da execução da atividade.  Fluxos de sequencia: representam o controle do fluxo
 Executor: recursos (equipamentos/pessoas) das atividades – da esquerda para a direita ou de cima
necessários para execução da atividade. para baixo.
 Fluxo de mensagem: representam a interação entre
Tipos de atividades várias entidades ou processos distintos.
 Valor agregado: atividades que geram valor para o
processo e contribuem de forma positiva para seu trabalho. Tipos de atividades/tarefas
 Handoff: atividades que transferem o controle do processo
para outro departamento ou organização.
 Controle: atividades que asseguram que os processos
alcancem as metas planejadas, estejam dentro da
tolerância desejada e de acordo com os padrões e
requisitos estabelecidos.

Tarefas: é uma decomposição ou detalhamento de uma  Usuário: realizada por uma pessoa ou usuário com ajuda
atividade. É a menor unidade de trabalho com significado de um sistema ou software.
executada por uma pessoa ou máquina.  Manual: realizada por uma pessoal ou usuário sem ajuda
de um sistema ou software.
Atenção!! Um processo é formado por – entrada, atividade ou  Serviço: utiliza ou executa um serviço externo (web service
tarefa, saída, regras e recursos. ou outra aplicação).
 Script: executa uma expressão ou script.
 Regra de negócio: executada por um sistema sem a
intervenção humana.
 Envio de mensagem: envia uma mensagem a um
participante externo.
 Recebimento de mensagem: aguarda o recebimento de
uma mensagem a ser enviada por um participante externo.

Subprocesso: é composta por um conjunto de atividades em


uma sequência lógica (processo) para garantir que essas
Visão sistêmica: procura enxergar os processos percorrendo as atividades possam ser analisadas em um nível mais detalhado.
funções do organograma, em vez de analisar apenas a hierarquia Pode ser observada de forma expandida ou
da organização. O cliente enxerga o produto gerado pelo minimizada/contraído.
processo, que é o que atende efetivamente sua necessidade.

Macrofluxo: cria uma simples fotografia de um processo usando


dois níveis de detalhe. O primeiro nível captura os maiores
passos no processo e o segundo nível lista os subpassos que
estão dentro de cada passo maior.

UML 2.x (visão geral, modelos e diagramas)

Modelagem de Sistemas é o processo de desenvolvimento de


modelos abstratos de um sistema em que cada modelo apresenta
uma visão ou perspectiva diferente do sistema. Geralmente
representa o sistema com algum tipo de notação gráfica, que,
atualmente, quase sempre é baseada na UML (Unified Modeling
Language).

Os modelos são usados durante o processo de engenharia de


requisitos para ajudar a extrair os requisitos do sistema; durante o
(Padrões de modelagem e notações BPMN) processo de projeto, são usados para descrever o sistema para
os engenheiros que o implementam; e, após isso, são usados
Conceitos para documentar estrutura e a operação do sistema.
 Piscina (pool): onde os processos estão contidos.
 Raia (lane): definem as equipes de pessoas que Um modelo é uma abstração (simplificação da realidade) do
realizam as atividades e tarefas. sistema a ser estudado e não uma representação alternativa dele.
 Eventos: representa algo que ocorre ou pode ocorrer
durante o curso de um processo. Podem ser eventos de Modelos de contexto: mostram que o ambiente inclui vários
início, eventos intermediários e/ou eventos de fim outros sistemas automatizados. No entanto, eles não mostram os
(conforme ordem na imagem). tipos de relacionamentos entre os sistemas no ambiente e o
sistema que está sendo especificado. São usados com outros  Anotacionais: partes explicativas dos modelos UML.
modelos, como modelos de processo de negócio – descrevem os São comentários, incluídos para descrever, esclarecer e
processos humanos e automatizados em que os sistemas de fazer alguma observação importante sobre qualquer
software específicos são usados. elemento do modelo – notas.

Modelos de interação: ajudam a identificar os requisitos do Relacionamentos: dependência, associação, agregação,


usuário. Destacam os problemas de comunicação que podem generalização e realização.
surgir, ajudam a compreender se a estrutura proposta para o  Dependência: relacionamento semântico entre dois
sistema é suscetível de produzir o desempenho e a confiança itens, nos quais a alteração de um (o item
requerida do sistema. independente) pode afetar a semântica do outro (o item
dependente).
Modelos estruturais: exibem a organização de um sistema em  Associação: é um relacionamento estrutural que
termos de seus componentes e seus relacionamentos. Podem ser descreve um conjunto de ligações, as quais são
modelos estáticos, que mostram a estrutura do projeto do conexões entre os objetos.
sistema, ou modelos dinâmicos, que mostram a organização do  Agregação: é um tipo especial de associação
sistema quando ele está em execução. representando um relacionamento estrutural entre o
todo e sua parte (filha p/ mãe).
Modelos comportamentais: são modelos do comportamento  Generalização: é um relacionamento de
dinâmico do sistema quando está em execução. Eles mostram o especialização/generalização, nos quais os objetos dos
que acontece ou deve acontecer quando o sistema responde a elementos especializados (os filhos) são substituíveis
um estímulo de seu ambiente. Pode-se pensar nesse estímulo por objetos do elemento generalizado (os pais).
como sendo – dados (alguns dados que chegam precisam ser
processados pelo sistema) e eventos (alguns eventos que  Realização: é um relacionamento semântico entre
acontecem disparam o processamento do sistema). classificadores, em que um classificador especifica um
contrato que outro classificador garante executar.
O que é UML? É uma linguagem gráfica de modelagem para
visualizar, especificar, construir, documentar e comunicar Diagramas: são apresentações gráficas de um conjunto de
artefatos de sistemas complexos. A UML não é um processo, elementos, geralmente representados como gráficos de vértices e
nem uma metodologia, nem análise e projeto orientado a objeto arcos. São classificados em nove tipos – classes, objetos,
ou regras de projeto. pacotes, casos de uso, sequencias, colaborações, estados,
atividades, componentes e implantação.
Atua em algumas aplicações, tais como:  Diagrama de classes (modelo estrutural): é a espinha
 Sistemas de informações corporativas; dorsal da maioria dos métodos orientados a objeto,
 Serviços bancários e financeiros; inclusive a UML. Descrevem a estrutura estática do
 Telecomunicações; sistema (entidades e relacionamentos). Mostram as
 Transportes; classes de objeto no sistema e as associações entre
 Defesa/espaço aéreo; elas.
 Vendas de varejo;
 Eletrônica médica;
 Científicos; e
 Serviços distribuídos baseados na web.

Para formar um modelo conceitual da linguagem é necessário


aprender sobre três elementos principais:

Blocos de construção: são divididos em itens (são abstrações),  Diagrama de pacotes: organizam elementos do
relacionamentos (reúnem os itens) e diagramas (agrupam sistema em grupos relacionados a fim de minimizar a
coleções de itens). dependência entre eles.
Itens da UML: estruturais, comportamentais, de agrupamento e
anotacionais.
 Estruturais: são os SUBSTANTIVOS dos modelos. É a
parte estática, representando elementos conceituais ou
físicos. São classificados em sete tipos – classes,
interfaces, colaborações, casos de uso, classes ativas,
componentes e nós.
 Comportamentais: representam as partes dinâmicas
dos modelos. São os VERBOS, representando
comportamentos no tempo e no espaço. São
classificados em dois tipos – interação (mensagem) e  Diagrama de objetos: descrevem a estrutura estática
máquina de estado. de um sistema em um determinado momento. Podem
 De agrupamento: são as partes organizacionais dos ser usados para testar a precisão dos diagramas de
modelos de UML. São os blocos em que os modelos classes.
podem ser decompostos – pacotes (mecanismo de
propósito geral para a organização de elementos em
grupos).
Uma atividade representa uma operação em uma
classe do sistema que resulta na mudança do estado
do sistema.

Tipicamente são usados para modelar fluxo de trabalho


ou processos de negócios e funcionamento interno.

 Diagrama de caso de uso (modelo de interação):


modelam a funcionalidade do sistema através de atores
e casos de uso (são serviços ou funções fornecidas
pelo sistema aos seus usuários). Mostram as interações
entre um sistema e seu ambiente.

A modelagem de caso de uso é amplamente usada


para apoiar a elicitação de requisitos. Um caso de uso
pode ser tomado como um cenário simples que
descreve o que o usuário espera de um sistema. Cada
caso de uso representa uma tarefa discreta que envolve  Diagrama de componente: descrevem a organização
a interação externa com um sistema. dos componentes físicos de software.

 Diagrama de sequencia (modelo de interação):


descrevem as interações entre as classes através das
trocas de mensagens ao longo do tempo. Mostram as
interações entre os atores e o sistema, e entre os
componentes do sistema. Mostra a sequencia de  Diagrama de implantação: descrevem os recursos
interações que ocorrem durante um caso de uso em físicos em um sistema, incluindo nós, componentes e
particular ou em uma instância de caso de uso. conexões.

Padrões de Projeto

O projeto e implementação de software é um estágio do


processo no qual um sistema de software executável é
desenvolvido.

Projeto de software: é uma atividade criativa em que você


identifica os componentes de software e seus relacionamentos
com base nos requisitos do cliente.

 Diagrama de colaborações: representam as Atenção!! Um projeto precisa ser modular, ou seja, o software
interações entre objetos em termos de mensagens em deve ser dividido logicamente em elementos ou subsistemas, de
sequencia. Descrevem tanto a estrutura estática como modo que seja fácil de testar e manter. Deve conter
o comportamento dinâmico do sistema. representações distintas de arquitetura, componentes, dados e
interfaces.

Implementação: é o processo de concretização do projeto como


um programa.

Para desenvolver um projeto de um sistema desde o conceito até


o projeto detalhado orientado a objeto, existem várias atitudes
que você precisa tomar:
 Diagrama de estados: descrevem o comportamento  Compreender e definir o contexto e as interações
dinâmico do sistema em resposta a estímulos externos. externas com o sistema;
São especialmente úteis para modelar objetos reativos  Projetar a arquitetura do sistema;
cujos estados são disparados por eventos específicos.  Identificar os principais objetos do sistema;
Mostram como o sistema reage aos eventos internos e  Desenvolver modelos de projeto; e
externos.  Especificar interfaces.
 Diagrama de atividades (modelo de contexto): ilustram
a natureza dinâmica de um sistema modelando o fluxo Modelo de contexto do sistema: é um modelo estrutural, que
de controle de uma atividade para outra. Mostram as demonstra os outros sistemas no ambiente do sistema a ser
atividades envolvidas em um processo ou no desenvolvido.
processamento de dados.
Modelo de interação: é um modelo dinâmico, que mostra como
o sistema interage com seu ambiente quando ativo.
 Singleton: garante que uma classe tenha somente uma
O padrão de projeto é uma descrição do problema e da instância e fornece um ponto globar de acesso a
essência de sua solução, de modo que a solução possa ser mesma.
reusada em diferentes contextos. O padrão não é uma
especificação detalhada. Em vez disso, você pode pensar nele Padrões estruturais
como uma descrição de conhecimento e experiência, uma  Adapter (wrapper): converte interface de uma classe em
solução já aprovada para um problema comum. outra interface, esperada pelo cliente. Permite que
interfaces incompatíveis trabalhem em conjunto. É o
Padrões e linguagens de padrões são formas de descrever as único padrão estrutural que trabalha com ambos os
melhores práticas, bons projetos e capturar a experiência de uma escopos (classe e objeto).
forma que torne possivel a outros reusar essa experiência.  Bridge (handle/body): desacopla a abstração de sua
implementação, de modo que as duas possam variar
Os quatro elementos essenciais de padrões de projeto foram independentemente.
definidos pela “Gangue dos Quatro”:  Composite: compõe objetos em uma estrutura de
 Um nome que seja uma referência significativa para o árvora para representar uma hierarquia parte/todo.
padrão;  Decorator (wripper): dinamicamente, adiciona nova
 Uma descrição da área do problema que explique responsabilidade a objetos.
quando o modelo pode ser aplicado;  Facede: fornece uma interface unificada para um
 A descrição da solução das partes da solução de conjunto de interfaces de um subsistema.
projeto, seus relacionamentos e suas  Flyweight: a intenção é usar o compartilhamento para
responsabilidades; suportar uma grande quantidade de objetos de
 Uma declaração das consequências/forças – os granularidade fina. Use-o quando a quantidade de
resultados e compromissos – da aplicação do padrão. objetos for muito grande.
 Proxy: fornece um substituto ou um marcador da
Principios de padrão de projeto localização de um objeto para controlar o acesso a esse
 Principio aberto fechado: entidades de software como objeto. Sua função é controlar a criação de objetos no
classes, módulos e funções devem ser abertas para momento que realmente é necessário.
expansão, mas fechadas para modificações.
 Principio inversão de dependência: módulos de alto Padrões de comportamento
nível não devem depender de módulos de baixo nível.  Chain of Responsibility: evita o acoplamento do
Ambos devem depender de abstrações. remetente de uma solicitação ao seu receptor, ao dar a
 Principio segregação de interfaces: os clientes não mais de um objeto a oportunidade de tratar a
devem depender de interfaces que eles não usam. solicitação. A ideia é desacoplar o remetente e o
 Programe para uma inteface e não para uma receptor, dando a oportunidade a múltiplos objetos para
implementação: desta forma, você encapsula os tratar a solicitação.
códigos que podem variar para que futuras alterações  Command (action ou transaction): encapsula uma
não sejam complicadas e também forneça um único solicitação como um objeto, desta forma permitindo que
ponto de alteração. Esse principio é a base de todos os clientes parametrizem diferentes solicitações, enfileirem
padrões. ou façam o registro (log) de solicitações e suportem
 Dê preferência para o “tem um” à “é um”: dar operações que podem ser desfeitas.
prioridade a composição.  Interpreter: dada uma linguagem, define uma
 Encapsule o que varia: programe para interface à representação para sua gramática.
implementação. Dessa forma seu código estará  Iterator (cursor): fornece uma maneira de acessar
preparado para o futuro de forma mais flexível e sequencialmente os elementos de um objeto.
extensível.  Mediator: define um objeto que encapsula como um
conjunto de objetos interage. Objetos se comunicam
Padrões de criação com o mediador de forma centralizada.
 Abstract Factory (KIT): fornece uma interface para a  Memento (token): sem violar o encapsulamento,
criação de uma família de objetos relacionados ou captura e externaliza o estado interno de um objeto de
dependentes, sem especificar suas classes concretas. modo que ele possa ser restaurado posteriormente.
 Builder: permite a separação da construção de um  Observer (dependents, publish-subscribe): define uma
objeto complexo da sua representação, de forma que o dependência um-para-muitos entre objetos, de modo
mesmo processo de construção possa criar diferentes que, quando um objeto muda de estado, todos os seus
representações. Diferencia-se do Abstract Factory pela dependentes sejam atualizados.
criação de objetos passo a passo, ao invés de criar  State: permite a alteração do comportamento de um
todos os objetos de uma só vez. objeto quando ser estado interno é modificado.
 Factory Method: define uma interface para a criação de  Strategy (policy): define uma família de algoritmos,
um objeto, mas deixa as subclasses decidirem qual encapsula cada um deles para torná-los
classe a ser instanciada. Permite postergar (deferir) a intercambiáveis. Permite que o algoritmo varie
instanciação em subclasses. Deixa as subclasses independente dos clientes que a utilizam.
escolherem quais objetos criarem (através de herança).  Template Method: define um esqueleto de um algoritmo
É o único voltado para o escopo de classe. em uma operação, postergando a operação de alguns
 Prototype: especifica objetos a serem criados usando passos para subclasses. Permite que subclasses
uma instância-protótipo e cria (clona) uma cópia a partir redefinam alguns passos sem mudar sua estrutura.
desse protótipo.  Visitor: representa uma operação a ser executada sobre
os elementos da estrutura de um objeto. Permite definir
uma nova operação sem mudar as classes dos padrão baseados em XML, SOAP e WSDL foram projetados para
elementos sobre os quais opera. oferecer suporte à comunicação de serviço e à troca de
informações. Consequentemente, os serviços são plataforma e
Arquitetura em camadas implementação independentes de linguagem.

É um modelo de programação que permite a distribuição da É uma arquitetura que define como funções de negócios distintas,
aplicação funcionalmente por três sistemas independentes: implementadas por sistemas autônomos, devem operar
 Componentes clientes em execução em estações de conjuntamente para executar um processo de negócio. Cada
trabalho; função de negócio(componente) é implementada como um
 Processos em execução em servidores remotos; serviço.
 Coleção discreta de banco de dados, gerenciadores de
recursos e aplicações de mainframe.

Essa arquitetura tornou-se a padrão para sistemas corporativos


com base na web e, assim como a ideia da arquitetura em duas
camadas, são lógicas, ou seja, as camadas podem estar em
execução no mesmo servidor físico. A separação em camadas
lógicas torna os sistemas mais flexíveis, permitindo que as partes
possam ser alteradas de forma independente. Os protocolos de web service cobrem todos os aspectos das
SOA, desde os mecanismos básicos para troca de informações
A primeira camada é a Camada de Apresentação, também de serviço (SOAP), até os padrões de linguagem de programação
chamada de interface. Ela interage diretamente com o usuário e (WSDL). Esses padrões são todos baseados em XML
possui componentes responsáveis pela apresentação e interação (Linguagem de Marcação Extensível), uma notação legível por
do usuário. máquina e humanos que permite a definição de dados
estruturados, em que o texto é marcado com um identificador
A segunda camada é a Camada de Negócio, também chamada significativo.
de lógica empresarial, lógica da aplicação, regras de negócio e
funcionalidade. É onde a maioria do trabalho de processamento Caracteristicas da arquitetura SOA
ocorre. Varios componentes clientes podem acessar os  As partes (serviços) são bastante independentes entre
processos da segunda camada simultaneamente, portanto, essa si;
camada deve gerenciar suas próprias transações.  Não há limitações em relação à plataforma ou à
linguagem utilizada para implementar um serviço,
A terceira camada é a Camada de Dados, também chamada de apenas em relação a como eles se comunicam; e
acesso a dados ou persistência. É composta pelo repositório das  Um serviço encapsula uma lógica de negócio. Assim,
informações e pelas classes que as manipulam. Essa camada temos um alto índice de reaproveitamento.
recebe as requisições da camada de negócios e seus métodos
executam essas requisições em um banco de dados. Uma Benefícios da arquitetura SOA
alteração no banco de dados altera apenas as classes da  Tempo e custo de desenvolvimento serão reduzidos ao
camada de dados, mas o restante da arquitetura não seria reutilizarmos um serviço em umaparte diferente do
afetado por essa alteração. sistema;
 A aplicação final é mais facilmente extensível; e
Cada camada é normalmente mantida em um servidor específico  Uma aplicação diferente poderá se beneficiar dos
para tornar-se o mais escalonável e independente possível em serviços implementados anteriomente.
relação a outras camadas, estando entre as suas principais
características o eficiente armazenamento e a reutilização de Principais padrões da SOA
recursos.
 SOAP: (Protocolo de Acesso a Objetos Simples) é um
padrão de trocas de mensagens que oferece suporte à
comunicação entre os serviços. Ele define os
componentes essenciais e opcionais das mensagens
passadas entre serviços.
 WSDL: (Linguagem de Definição de Serviços Web) – é
um padrão para a definição de interface de serviço.
Define como as operações de serviço (nomes de
operação, parâmetros e seus tipos) e associações de
serviço devem ser definidas.
 WS-BPEL: é um padrão para uma linguagem de
workflow, que é usada para definir programas de
Um web service é uma representação padrão para algum processo que envolvem vários serviços diferentes.
recurso computacional ou de informações que pode ser usado  UDDI: (Descrição, Descoberta e Integração Universais)
por outros programas, os quais podem ser recursos de – é um padrão que define os componentes de uma
informações ou recursos de armazenamento. especificação de serviço, que pode ser usada para
descobrir a existência do serviço.
Arquitetura Orientada a Serviços (SOA): são uma forma de
desenvolvimento de sistemas distribuídos em que os
componentes de sistema são serviços autônomos, executando
em computadores geograficamente distribuídos. Protocolos-

Você também pode gostar