Apam

359
Banco de dados Formas normais 1ª forma normal (1FN): não pode ter atributos multivalorados nas tuplas; ou tuplas como atributo de uma tupla. O melhor jeito de remover esse problema de uma entidade (evitando redundâncias e valores nulls) é criando outra entidade com a chave primária como sendo a mesma da primeira e colocar o atributo multivalorado (da primeira entidade) como atributo atômico da segunda entidade, participando da chave primária também. Outra solução é ampliar a entidade para cada tupla que tenha valores multivalorados. A nova chave primária passa a ser a combinação da chave primária anterior com os atributos multivalorados. 2ª forma normal (2FN): pressupõe-se que a tabela já esteja na 1FN. Além disso, todos os atributos NÃO PRIMÁRIOS de uma tabela precisam ter dependência funcional total da chave primária. Uma tabela, cuja chave primária contém somente um único atributo, já está na 2FN. E uma tabela contendo somente atributos que participam da chave primária também já está na 2FN. ### Banco de dados Formas normais 3ª forma normal (3FN): pressupõe-se que a tabela já esteja na 2FN. Além disso, na tabela, não pode haver um atributo não primário que tenha dependência transitiva com a chave primária. Isto é, para uma dependência não trivial X->Y, ou X é uma superchave ou Y é um atributo primário. Se a dependência for trivial, então X não precisa ser superchave e nem Y ser atributo primário. Forma normal de Boyce-Codd (BCNF): é uma forma mais "rígida" da 3FN. Toda relação que tiver na forma BCNF, estará na 3FN, mas o contrário não é, necessariamente,

Transcript of Apam

Page 1: Apam

Banco de dados

Formas normais

1ª forma normal (1FN): não pode ter atributos multivalorados nas tuplas; ou tuplas como atributo de uma tupla.O melhor jeito de remover esse problema de uma entidade (evitando redundâncias e valores nulls) é criando outra entidade com a chave primária como sendo a mesma da primeira e colocar o atributo multivalorado (da primeira entidade) como atributo atômico da segunda entidade, participando da chave primária também.Outra solução é ampliar a entidade para cada tupla que tenha valores multivalorados. A nova chave primária passa a ser a combinação da chave primária anterior com os atributos multivalorados.

2ª forma normal (2FN): pressupõe-se que a tabela já esteja na 1FN. Além disso, todos os atributos NÃO PRIMÁRIOS de uma tabela precisam ter dependência funcional total da chave primária. Uma tabela, cuja chave primária contém somente um único atributo, já está na 2FN. E uma tabela contendo somente atributos que participam da chave primária também já está na 2FN.

###Banco de dados

Formas normais

3ª forma normal (3FN): pressupõe-se que a tabela já esteja na 2FN. Além disso, na tabela, não pode haver um atributo não primário que tenha dependência transitiva com a chave primária. Isto é, para uma dependência não trivial X->Y, ou X é uma superchave ou Y é um atributo primário. Se a dependência for trivial, então X não precisa ser superchave e nem Y ser atributo primário.

Forma normal de Boyce-Codd (BCNF): é uma forma mais "rígida" da 3FN. Toda relação que tiver na forma BCNF, estará na 3FN, mas o contrário não é, necessariamente, verdadeiro. Uma relação R está na BCNF se todas as suas dependências funcionais não triviais X->Y, X for uma superchave.

4ª forma normal (4FN): pressupõe-se que a relação esteja na 3FN e, para cada dependência multivalorada X->->Y, X seja a superchave.

###Engenharia de Software

CORBA (Common Object Request Broker Architecture) é uma arquitetura padrão criada pela OMG (Object Management Group) para realizar troca de dados em sistemas distribuídos heterogêneos.ORB (object Request Broker) é um módulo intermediário para realizar comunicação entre cliente e servidor.

Page 2: Apam

É usada a Linguagem de Definição de Interface (IDL) que faz mapeamento para outras linguagens (C++, Java, C, etc.).

Existe o Modelo de Componentes CORBA (CMM) para tratar de problemas deixados em aberto pelo CORBA. Neste modelo, componentes são os elementos básicos.Os componentes são conectados através de interfaces ou eventos.

As implementações de componentes são denominados executores que precisam implementar interfaces locais chamadas de "callback".Executores podem ser monolíticos (tratados como um único módulo) ou segmentados (divididos em segmentos e tratados independentemente).

###Engenharia de Software

GIOP (General Inter-ORB protocol) é um protocolo geral para envio de mensagens entre objetos ORB.IIOP (Internet Inter-ORB protocol) é um protocolo específico para os objetos se comunicarem usando o TCP/IP.O GIOP serve como base para criar outros protocolos mas o IIOP é obrigatório. Com isso os objetos conseguem se comunicar, pelo menos através do IIOP.

Criar requisições de operações podem ser por stubs e, também, através da DII (Dynamic Invocation Interface). Pode-se implementar objetos servidores dinamicamente através da DSI (Dynamic Skeleton Interface).As requisições podem ser síncronas ou assíncronas.

###Engenharia de Software

Existem as referências de objeto (RO) que são mecanismos para identificar e localizar um objeto servidor. Para os clientes, essas referências só servem para localizar, e não podem consultar ou modificar o conteúdo de uma referência.Toda RO tem uma indicação de qual interface seu objeto oferece. Isso faz com que o ORB verifique se existe a operação requisitada a este objeto.Uma RO pode ser linearizada em forma de uma string. Esta, por sua vez, pode ser convertida de volta a uma RO.

As RO são representadas através do padrão IOR (Interoperable Object Reference).Este padrão tem informação necessária para estabelecer a conexão entre um cliente e um objeto servidor. Este padrão identifica os protocolos disponíveis para se conectar em um determinado servidor.

###Engenharia de Software

Um ORB deve oferecer um repositório de interfaces, onde são armazenadas as descrições as interfaces dos objetos servidores disponíveis.Existe, também, um repositório de implementações que deve auxiliar o cliente na obtenção de uma referência para um determinado objeto servidor.

Page 3: Apam

Os componentes do CORBA podem ser stateless (temporários e um grupo de referências são mapeados num único executor), conversational (temporário e cada referência é mapeada num único executor) e durable (persistente e cada referência é mapeada num único executor).

###Engenharia de Software

UDDI é um framework independente de plataforma para descrever serviços, descobrir negócios e integrar serviços de negócios usando a internet. É um serviço de diretório, onde negócios podem registrar e procurar pelos serviços Web.UDDI utiliza WSDL para descrever interfaces para serviços web.WSDL é uma linguagem baseada em XML. Especifica o local do serviço web e as operações que o serviço expõe.

###Engenharia de Software

SOAP é um protocolo baseado em XML para permitir troca de informações entre aplicativos pela Internet.É utilizado em sistemas computacionais distribuídos. SOAP não define mecanismos de localização e descrição de objetos em serviços WEB. Isso fica para o WSDL e o UDDI.

###Engenharia de Software

Padrões de projeto são mais abstratos do que framework.

###Engenharia de Software

RMI (Remove Method Invocation) é uma arquitetura que tem como objetivo fazer com que os programadores em Java possam desenvolver programas distribuídos com a mesma sintaxe e semântica que os programas não distribuídos. Um sistema RMI é composto de: definições de interface para os serviços remotos; arquivos de stub e skeletons; um servidor para hospedar os serviços remotos; um serviço RMI naming que permite o cliente achar os serviços remotos; um programa cliente, entre outros.

###Banco de dados

Notações de DER:Entidade = dentro de um retângulo.Entidade fraca = dentro de um retângulo duplo.Atributo = dentro de uma elipse.Atributo multivalorado = dentro de uma elipse dupla.Atributo chave = sublinhado.Atributo derivado = elipse pontilhada.Relacionamento = losângo.

Page 4: Apam

Relacionamento fraco = losângo duplo.Linha dupla = a entidade que a contém é de participação total.A cardinalidade:Chen:

representada por um número perto do retângulo da entidade (1:1, 1:N, N:M, 0:N)Bachman:

representada por círculo fechado (1), círculo aberto (0) ou seta (N).Martin:

representada por número 1 (obrigatório), pelo asterísco (opcional N), 1...* (1,n) (um ou mais, obrigatório), 0...1 (0,1), opcional.

O número de conjuntos-entidades (classes distintas de objetos) cujas instâncias podem estar associadas umas às outras através de um relacionamento. (Relacionamento binário, ternário, etc.)O grau de um tipo relacionamento é o número de entidades que participam deste relacionamento.

###Banco de dados

Álgebra relacional.

Grau de uma relação é o número de atributos que uma relação tem.Domínio é um conjunto de valores atômicos. Ex.: cpf, nome, salário, idade.

Seleção: operação unária usada para selecionar um subconjunto de tuplas. (comando 1) S salario > 2000 (Empregado) (selecione, de Empregado, todo mundo que tem salário maior do que 2000). Uma seleção pode ser uma relação de outra seleção (seleção de seleção(ões)). A seleção pega linhas da tabela.O grau da relação resultado é o mesmo da relação original.É o comando WHERE do SQL.

Projeção: operação unária usada para selecionar colunas da tabela. (Comando 2) P cpf, nome, salário (Empregado) (projete o cpf, o nome e o salário das tuplas da tabela empregado). O grau da projeção é igual ao número de atributos selecionados pelo comando.Se uma lista de atributos não inclui atributos-chave, tuplas duplicadas podem aparecer, porém a projeção as elimina. É o comando SELECT do SQL.

###Banco de dados

Álgebra relacional.

Sequência de operações:(comando 3) P pnome, unome, salário (S dptNo = 5 (Empregado)) = projete o primeiro e último nomes e salário de todos os empregados que trabalham no departamento de número 5.

O comando 3 pode ser feita aos passos:

Page 5: Apam

A <- S dptNo = 5 (Empregado)Resultado <- P pnome, unome, salário (A)

Renomear (rebatizar): com relação ao comando 3, ele pode ser feito também desse jeito:A <- S dptNo = 5 (Empregado)Resultado (primeiro_nome, último_nome, salário) <- P pnome, unome, salário (A)

Operações de União, interseção e subtração (diferença).Estas operações são similares às da matemática, com relação às tuplas (e não aos atributos).

obs.: estas operações devem ser compatíveis de união. Duas relações R(A1, Ai, ..., An) e S(B1, Ai, ..., Bn) são compatíveis de união se tem o mesmo grau e domínio(A) = domínio(B), para todo i.

###Banco de dados

Álgebra relacional

Produto cartesiano (junção cruzada ou produto cruzado) R x S, sendo R com n atributos e S, com m atributos. Combina cada tupla de R com cada tupla de S. O resultado terá n+m atributos e n*m tuplas. É o comando FROM do SQL.

Junção = produto cartesiano com uma condição de junção.

Equijunção (equijoin) = junção usando uma condição de igualdade entre os atributos (idFunc = idGer);

Junção natural (natural join) = equijunção sem que precise especificar um dos atributos. Para isso, eles devem ser iguais. Um rename será necessário caso eles não sejam.

Divisão = a divisão de R/S terá os atributos de R que não estão em S e resulta numa tabela Q. Geralmente a divisão é usada quando se tem "para todos" nas consultas.Exemplo: T1 {(a1, b1), (a2, b1), (a3, b1), (a2, b2), (a3, b2), (a3, b3)}, T2 {a1, a2, a3}.T1/T2 = {b1} pois tanto a1, a2 e a3 de T2 tem o b1 como "parceiro".

Page 6: Apam

###Banco de dados

SQL

Ela é divida em 2 partes: DDL (Data description language) e DML (Data manipulation language).

DDL

A DDL é uma parte muito pequena da SQL. A DDL se refere aos dados sobre os dados nos banco de dados. Isto é, se refere aos metadados. Os comandos mais importantes dela são CREATE TABLE, DROP TABLE e ALTER TABLE.Exemplo:CREATE TABLE Funcionário (matrícula INTEGER, nome CHAR (40) NOT NULL, PRIMARY KEY (matrícula));CREATE TABLE Funcionário (matrícula INTEGER PRIMARY KEY, nome CHAR (40) NOT NULL);ALTER TABLE Funcionário ADD sobrenome CHAR (40);ALTER TABLE Funcionário DROP COLUMN sobrenome;DROP TABLE Funcionário;TRUNCATE TABLE Funcionário;

DROP TABLE é para deletar a tabela inteira. Deleta também índices e privilégios. A operação não tem como ser desfeita. Nenhum DML trigger é disparado.

TRUNCATE é usado para deletar as linhas da tabela. Não tem como ser desfeita e nenhum DML trigger é disparado. A diferença dela para o DELETE é que ela é mais rápida e não gasta espaço para as operações poderem ser desfeitas.

Page 7: Apam

Obs.: no Oracle 10g, uma tabela pode ser desfeita com o comando FLASHBACKFLASHBACK TABLE funcionário TO BEFORE DROP;

###Banco de dados

SQL

Ela é divida em 2 partes: DDL (Data description language) e DML (Data manipulation language).

DML

DML é a parte mais ampla do SQL. Compreende, basicamente, os comandos SELECT, UPDATE, DELETE, INSERT.

SELECT nome, matrícula FROM Funcionário WHERE matrícula > 1000 ORDER BY nome ASC;

SELECT nome FROM Funcionário AS F WHERE matrícula BETWEEN 500 and 1000; // F é um alias.SELECT nome FROM Funcionário WHERE matrícula NOT BETWEEN 500 and 1000;SELECT nome FROM Funcionário WHERE matrícula IN (500, 600, 700, 800, 900);SELECT nome FROM Funcionário WHERE matrícula NOT IN (500, 600, 700, 800, 900);SELECT * from Funcionário WHERE nome LIKE 'Paulo%'; // procura todos os nomes que comecem com Paulo não importando o resto. Poderia ser também: '%de Oliveira'

Uma subquery é um SELECT embutido em uma consulta principal.- uma subquery precisa estar incluída entre parêntesis;- uma subquery sempre deve estar do lado direito do operador de comparação;- o operador IN deve ser utilizado em uma subquery que retorne múltiplas linhas;- o operador igual “=” não pode ser utilizado em uma consulta que contenha uma subquery que retorne múltiplas linhas.

UPDATE Funcionário SET nome='Teste' WHERE matrícula < 1000;

A operação DELETE é usada para deletar linhas na tabela, mantendo as definições da tabela intactas. É necessária a cláusula WHERE para escolher algumas linhas. Caso ela não seja especificada, todas as linhas da coluna serão deletadas. É necessário o COMMIT (ou, para desfazer a operação, o ROLLBACK) após o DELETE para confirmar.

DELETE * from Funcionário WHERE nome IS NULL;

INSERT INTO Funcionário VALUES (1300, 'Paulo');

CREATE DOMAIN TIMES CHAR (10)

Page 8: Apam

DEFAULT ‘BOTAFOGO’ CONSTRAINT TIMES_RJ CHECK (VALUE IN ‘BOTAGOFO’, ‘FLAMENGO’, ‘FLUMINENSE’, ‘VASCO’)

ALLSELECT empno, salFROM empWHERE sal > ALL (2000, 3000, 4000);

É equivalente a:SELECT empno, salFROM empWHERE sal > 2000 AND sal > 3000 AND sal > 4000;

ANYSELECT empno, salFROM empWHERE sal > ANY (2000, 3000, 4000);

É equivalente a:SELECT empno, salFROM empWHERE sal > 2000 OR sal > 3000 OR sal > 4000;

###Banco de dados

SQL

Cláusula CHECK serve pra forçar um atributo a ter um domínio.Exemplo:

CREATE TABLE Persons(P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CHECK (P_Id>0));

###Banco de dados

CASESelect nome, CASE nomeWHEN 'bla' THEN sal*10ELSE salEND"novo nome", idFROM Pessoa;

NULLIF(a, b) = null se a = b;

SELECT Store_name, NULLIF(Actual,Goal) FROM Sales_Data;

Page 9: Apam

EXISTS"""sintaxe: SELECT "nome_coluna1" FROM "nome_tabela1" WHERE EXISTS (SELECT * FROM "nome_tabela2" WHERE [condição]);semântica: simplesmente verifica se há uma linha na consulta interna. Se tiver, a consulta externa continua. (A condição existente na consulta interna não influencia a forma como a consulta externa é executada.)A seleção interna do EXISTS deve ser olhada tupla por tupla. Se uma tupla é retornada, então ela é analisada no SELECT externo. Se ela não for retornada, aí vai pra próxima tupla. Obviamente, o NOT EXISTS faz o contrário."""

HAVINGsintaxe: SELECT "nome_coluna1", SUM("nome_coluna2") FROM "nome_tabela" GROUP BY "nome_coluna1" HAVING SUM("nome_coluna2") > 132;semântica: a grosso modo, having é o where aplicado a funções de agregação.

DISTINCTsintaxe: SELECT DISTINCT "nome_coluna" FROM "nome_tabela";semântica: seleciona "nome_coluna" sem repetições.

GROUP BYsintaxe: "nome_coluna1", SUM("nome_coluna2") FROM "nome_tabela" GROUP BY "nome_coluna1";semântica: agrupa os resultados em colunas especificadas na sintaxe.O comando GROUP BY é utilizado ao selecionar várias colunas a partir de uma tabela (ou tabelas) e aparece pelo menos um operador aritmético.

Funções de agregação: avg(), count(), max(), sum(), min().Não pode ter função de agregação como parâmetro de outra função de agregação.O campo do SELECT pode ter somente função de agregação. Por exemplo: SELECT max(bla) FROM ...

###Banco de dados

Mapeamento do DER para o modelo relacional.

- Cada entidade regular (forte) é mapeada para uma relação (tabela). Os atributos compostos (exemplo: Endereço) são decompostos em atributos simples. Escolher, para a chave primária, um dos atributos-chave. As chaves estrangeiras não são usadas por enquanto. Serão utilizadas em outros passos.

- Cada entidade fraca é mapeada para uma relação onde seus atributos devem ser selecionados e, além disso, a(s) chave(s) primária(s) da entidade forte correspondente é (são) escolhida(s) como a chave estrangeira da relação criada. A chave primária da relação será composta pelas chaves primárias da entidade forte e da chave parcial da entidade fraca, caso houver.

Page 10: Apam

Chave parcial ou discriminador = conjunto de chaves que permite diferenciar as tuplas dentro de uma entidade fraca.

###Banco de dados

Mapeamento do DER para o modelo relacional.

- Para cada relacionamento 1:1, identificar as entidades S e T. Escolher uma das opções (a 1a. é a mais usada):

1) Escolha da chave estrangeira: escolha uma relação S e insira nela a chave primária de T para ser a chave estrangeira da relação. Preferencialmente, escolha S como a entidade de participação total. Incluir todos os atributos* do relacionamento 1:1 como atributos de S.

2) Opção da relação unificada: incorporar o tipo relacionamento e os dois tipos entidades a uma única relação. Essa opção pode ser apropriada quando ambas as participações são totais.

3) Opção referência cruzada ou relação de relacionamento: definir uma relação R com a finalidade de servir de referência cruzada às chaves primárias das duas relações S e T. Essa relação R é chamada relação de relacionamento (ou tabela de busca), porque cada tupla em R representa uma instância do relacionamento que relaciona uma tupla de S a uma tupla de T.

* atributos simples ou componente simples dos atributos compostos

###Banco de dados

Mapeamento do DER para o modelo relacional.

- Para cada relacionamento 1:N, identificar a relação do lado N como sendo a relação S e inserir em S, como chave estrangeira, a chave primária de T que representa o outro tipo entidade participante em R. Incluir, também, qualquer atributo* do tipo relacionamento 1:N como atributo de S.

- Para cada relacionamento N:M, criar uma nova relação S para representar R. As chaves estrangeiras de S serão as chaves primárias das relações que representam os tipos entidade participantes do relacionamento; a combinação delas formará a chave primária de S. Também devem estar incluídos quaisquer atributos* do relacionamento N:M.

* atributos simples ou componente simples dos atributos compostos

###Banco de dados

Page 11: Apam

Mapeamento do DER para o modelo relacional.

- Para cada atributo multivalorado A, criar uma relação R. Os atributos de R serão o atributo A e a chave primária K da relação que representa o tipo entidade ou o tipo relacionamento que tem A como atributo (que será chave estrangeira em R). A chave primária de R será a combinação de A e K. Se o atributo multivalorado for um atributo composto, suas componentes simples serão incluídas.

- Para cada tipo relacionamento R n-ário, em que n > 2, criar uma nova relação S para representar R. Incluir, como chave estrangeira, as chaves primárias das relações que representam o tipo entidade. Incluir, também, os atributos* do relacionamento n-ário. A chave primária de S será a combinação de todas as chaves estrangeiras que fazem referências às relações representantes dos tipos entidade participantes.Entretanto, se as restrições de cardinalidade em qualquer um dos tipos entidade E participantes em R forem 1, então a chave primária de S não deve incluir a chave estrangeira que faz referência à relação E' correspondente a E.

* atributos simples ou componente simples dos atributos compostos

###Engenharia de Software

Testes de softwares:

- testes completos são impossíveis na prática;- os testes devem ser realizados, preferencialmente, por terceiros por não estarem envolvidos no projeto;- os testes são feitos em estágios: primeiro testam-se, isoladamente, os módulos do sistema procurando identificar erros de lógica e de implementação (teste de unidade), depois a integração dos módulos são testados procurando erros nas interfaces entre os módulos (teste de integração). Por fim, o sistema, como um todo, é testado, verificando o desempenho do sistema (requisitos não funcionais) e verificando possíveis erros de funções (requisitos funcionais) (teste de sistema).

Um driver é um programa responsável pela ativação e coordenação de um teste de unidade. Ele é responsável por passar os dados de teste para o módulo que será testado, receber os resultados e passá-los para o testador.Um stub é uma unidade que substitui uma outra unidade que está sendo chamada pela unidade que está sendo testada, isto é, simula o comportamento de uma outra unidade com um mínimo de computação ou manipulação de dados.

###Engenharia de Software

O processo de teste tem 4 fases:

1) Planejamento de testes: esta é a fase onde se trata das definições dos testes, das estimativas dos recursos necessários para realizar os testes, das estratégias e técnicas dos testes e dos critérios para determinar quando o conjunto de testes está completo.

Page 12: Apam

2) Projeto dos casos de testes: é a fase mais importante, pois nela é necessário criar um conjunto de testes que englobe as várias possibilidades de execução do sistema. Existem técnicas para sistematizar a criação de testes.

3) Execução dos testes: é a fase onde os testes são executados e os resultados são registrados.

4) Análise dos resultados: se forem detectadas falhas, então será necessário procurar por defeitos. Caso contrário, deve-se julgar se há necessidade de mais casos de teste ou se os testes podem ser encerrados.

###Engenharia de Software

Testes de software

Diversas técnicas são utilizadas para a realização de testes: testes funcionais, estruturais e baseados em máquinas de estado.

- Os testes funcionais ou caixa-preta utilizam especificações (requisitos, análise e projeto) para definir os objetivos dos testes e guiar para o projeto dos casos de teste. O conhecimento sobre a implementação do código não é usada. Eles são usados para mostrar que uma entrada é adequadamente aceita, a saída é correta e a integridade da informação externa é mantida. Considerando-se o programa final como caixa preta, a validação dinâmica pode ser utilizada para identificar a ocorrência de defeitos no programa ou para confirmar se ele atende aos requisitos estabelecidos.

- Os testes estruturais ou caixa-branca estabelecem os objetivos com base na implementação e na verificação de detalhes do código.

- Os testes baseados em máquinas de estado são projetados baseando-se num conhecimento subjacente à estrutura de uma máquina de estados para determinar os objetivos do teste.

###Engenharia de Software

Tipos de testes caixa-branca:* Testes de estrutura de controle: enfocam nas estruturas como comandos,

condicionais e laço (loop).- Teste de condição é um tipo de teste de estrutura de controle que testa

as condições lógicas do módulo.- Teste de fluxo de dados é um tipo de teste de estrutura de controle que

seleciona caminhos de testes baseando-se nas definições e usos de variáveis nos módulos.

- Teste de laço focaliza os loops.* Testes de caminho básico: define uma medida de complexidade lógica do

módulo e com essa medida, um conjunto básico de caminhos de execução é definido.* O teste de cobertura de todo comando diz que todo comando de código fonte

deve ser executado por algum caso de teste.

Page 13: Apam

Tipos de testes caixa-preta:* Particionamento de equivalência: divide os casos de teste em classes de

equivalência. A ideia é que estas classes, a princípio, tem o mesmo comportamento no sitema, sendo, portanto, necessário um único caso de teste para cada classe de equivalência.

* Análise do valor limite: a prática mostra que um grande número de erros tende a ocorrer no limite do domínio da entrada. Os valores limite para teste são o mínimo, o máximo, um a menos do mínimo e um a mais do máximo.

###Engenharia de Software

Teste dos módulos:- Bottom-up ou ascendente: os módulos mais internos são testados primeiros.

Com isso são testados os módulos que chamam estes módulos mais internos até que todos os módulos sejam testados. Apenas drivers são necessários nesta abordagem de teste.

- Top-down ou descendente: os módulos mais externos são testados primeiros. Com isso são testados os módulos que são chamados por estes módulos mais externos até que todos os módulos sejam testados. Apenas stubs são necessários nesta abordagem de teste.

- Teste sanduíche: um módulo alvo, no meio da hierarquia de módulos, é escolhido e depois as abordagens top-down e bottom-up são utilizadas.

- Teste big-bang: testar individualmente cada unidade e só depois integrar os módulos. A prática tem mostrado que ela leva a muitos problemas.

###Engenharia de Software

Testes do sistema:Muitas vezes chamados de testes de validação. Os testes do sistema incluem tipos de teste realizados na seguinte ordem: 1) Teste funcional: verifica se o sistema integrado realiza as funções especificadas nos requisitos.2) Teste de desempenho: verifica se o sistema integrado atende os requisitos não funcionais do sistema (eficiência, segurança, confiabilidade, etc.).3) Teste de aceitação: nos dois primeiros, os desenvolvedores que realizam os testes. Neste, os clientes realizam os testes a fim de garantir que suas necessidades sejam satisfeitas.4) Teste de instalação: quando o teste de aceitação não for feito no ambiente onde o sistema será usado, este teste deverá ser realizado.

###Engenharia de Software

Dicionário de dados (DD)

O dicionário de dados é um repositório de metadados do software. Ele tem a definição dos elementos que tornam o modelo de dados e o diagrama de fluxo de dados precisos.

Page 14: Apam

Ele é uma definição formal e estruturada dos fluxos de dados, elementos de dados, memórias, entidades e relacionamentos.

Regras para criar nomes nos DD's:- os palavras devem ser separadas por sublinhas com até 32 caracteres;- devem ser eliminados preposições ou conjunções;- abreviar palavras de forma mnemônica ou incluir a abreviação no dicionário.

Exemplo de notação:

*senha do sistema*Senha = 6{cv}12cv = [0-9 | a-z | A-Z]login = 1{cv}40usuário = login + senha

A senha precisa de 6 caracteres do tipo cv, no mínimo, e 12, no máximo. Ela pode ter letras ou números. Comentário veio antes da definição da senha.O login tem, no mínimo, 1 e, no máximo, 40 caracteres do tipo cv.Usuário é formado de login e senha

o @ serve para marcar que um item é um atributo chave de outro termo.o mínimo e o máximo em {}, se não especificados, serão 0 e infinito, respectivamente.

Nome = primeiro_nome + (nome_intermediario) + ultimo_nome

o nome_intermediario é opcional (entre parênteses).

###Engenharia de Software

Ciclo de vida do projeto

Justificativas de se ter um ciclo de vida de projeto: definir as atividades a serem executadas em um projeto de desenvolvimento de sistemas; introduzir consistência entre os projetos de desenvolvimento de sistemas da organização; introduzir pontos de verificação para controle gerencial de decisões.

- Ciclo de vida do projeto clássico: implementação bottom-up e a insistência na progressão linear e sequêncial entre uma fase e outra.Na implementação bottom-up, primeiro se testam os módulos, depois os subsistemas e depois os sistemas. Com isso, os erros mais sérios só serão encontrados no final e a depuração dos erros tende a ser mais difícil.

- Ciclo de vida do projeto estruturado: se caracteriza pela execução paralela das suas atividades.

- Ciclo de vida do projeto semi-estruturado: se caracteriza pela implementação top-down e o uso do projeto estruturado.

Page 15: Apam

A implementação top-down se caracteriza pela codificação e pela fase de testes em módulos de alto nível primeiro.Depois disso é que os módulos de baixo nível vão ser codificados e testados.

###Engenharia de software

Protótipos

Prototipagem é uma abordagem que gera um protótipo baseado em requisitos iniciais do sistema. A idéia é que o retrabalho seja menor nas fases posteriores.- ele serve para identificar novos requisitos ou refinar os já existentes.- no processo de projeto do sistema, ele pode ser usado para explorar soluções específicas de software e apoiar o projeto de interface com o usuário. Pode ser usado para verificar a viabilidade de um projeto proposto.- no processo de teste, ele pode ser usado para realizar testes completos com o sistema que será entregue para o cliente.

Benefícios do uso da prototipação:- usabilidade aprimorada do sistema.- adequação maior do sistema às necessidades do usuário.- qualidade do projeto aprimorada.- facilidade de manutenção aprimorada.- esforço de desenvolvimento reduzido.

###Engenharia de Software

UML

Pré-condições ou suposições: condições que precisam ser verdadeiras antes que o caso de uso possa ser executado, mas não são testadas pelo caso de uso. Exemplo: verificação do CPF antes de abrir uma conta no banco.

Pós-condições: condições que se tornam verdadeiras após o caso de uso ser executado.

Invariantes: condições que são verdadeiras durante a execução do caso de uso.

Garantias mínimas: descrevem o que os atores podem esperar de um caso de uso, não importando o que aconteça durante a execução do caso de uso.

Em UML, é permitida herança múltipla.

###Engenharia de Software

Requisitos

Funcionais: declarações de serviços que o sistema deve oferecer, como o sistema deve reagir a entradas específicas e como deve se comportar em determinadas situações.

Page 16: Apam

Exemplos: o usuário pode pesquisar todo o banco de dados; o sistema deve oferecer visualizadores apropriados; a todo pedido, deve ser associado um identificador único.

Não-funcionais: definem propriedades e restrições do sistema; requisitos de processos podem especificar usos de linguagens de programação.Exemplos: velocidade do acesso ao banco de dados, tamanho do sistema, facilidade de uso, etc.

De domínio: são derivados do domínio da aplicação e descrevem características do sistema e qualidades que refletem o domínio; se eles não forem satisfeitos, o sistema pode tornar-se não prático. Um problema é que os especialistas no domínio entendem tão bem que não tornam explícitos todos os requisitos de domínio.Exemplo: "X deve ser calculado pela fórmula: X = (N*Y + M*Z)/(L*K)."

Entrevistas: determinam as necessidades de um novo sistema. Elas podem ser fechadas, em que o engenheiro de requisitos procura as respostas para um conjunto pré-definido de questões; ou abertas em que não há uma agenda pré-definida e o engenheiro de requisitos discute, de forma aberta, o que os usuários querem do sistema.

Do usuário: declarações em linguagem natural e também em diagramas sobre as funções que o sistema deve fornecer e as restrições sob as quais deve operar.

Do sistema: um documento estruturado que estabelece, detalhadamente, as funções e as restrições de sistema. Escrito como um contrato entre o cliente e o desenvolvedor do software.

De especificação de software: uma descrição detalhada do software que serve como base para projeto e implementação. Escrito para os desenvolvedores.

###Engenharia de software

Modelos de ciclo de vida ou modelos de processo de software

- Cascata ou clássico: só há um ciclo (modelagem e engenharia do sistema/informação -> análise de requisitos -> projeto -> implementação (ou geração de códigos) -> testes -> manutenção); esse modelo é executado de forma sequêncial estrita, então há possibilidade de ter pontos de controle bem definidos. O cliente só tem o produto final.O problema é que as fases de requisitos, análise e desenho devem ser bem dominadas, pois, teoricamente, não há retrocesso no modelo. Com isso surge um problema caso haja necessidade de revisar fases anteriores.O modelo em cascata tem a vantagem que só avança para a tarefa seguinte quando o cliente dá validade e aceitação os produtos finais da tarefa atual.

- Cascata com realimentação: é o mesmo que cascata, porém, pra cada fase, há uma possibilidade de voltar pra fase imediatamente anterior para corrigir o problema citado no modelo de cascata puro. Porém a realimentação torna difícil gerenciar projetos baseados nesse modelo de ciclo de vida. É ideal para projetos de curta duração como os projetos do PSP. É conveniente, também, para miniprocessos, que são subprocessos bem

Page 17: Apam

delimitados executados em um processo maior. É um dos modelos suportados pela ferramenta de estimativas COCOMO II.

###Engenharia de software

Modelos de ciclo de vida ou modelos de processo de software

- Espiral (requisitos -> análise -> desenho -> implementação -> testes -> requisitos...): modelo realizado em iterações; cada nova iteração corresponde a um ciclo na espiral; neste modelo, o cliente tem releases do produto que são submetidos à avaliação dos usuários. Liberações podem ser escolhidas como produto final. A influência do processo MBase foi muito importante para a difusão atual desse modelo. Este ciclo de vida permite que os requisitos sejam progressivamente definidos e apresenta alta flexibilidade. Esse modelo de vida é aplicado em processos recentes que se dizem "ágeis", tal como o XP.

Vantagens - O modelo em espiral permite que ao longo de cada iteração se obtenham versões do sistema cada vez mais completas, recorrendo à prototipagem para reduzir os riscos.- Este tipo de modelo permite a abordagem do refinamento seguido pelo modelo em cascata, mas que incorpora um enquadramento iterativo que reflete de uma forma bastante realística, o processo de desenvolvimento.

Desvantagens - Pode ser difícil convencer grandes clientes (particularmente em situações de contrato) de que a abordagem evolutiva é controlável.- A abordagem deste tipo de modelo exige considerável experiência na avaliação dos riscos e fia-se nessa experiência para o sucesso. Se um grande risco não for descoberto, poderão ocorrer problemas.- Este tipo de modelo é relativamente novo e não tem sido amplamente usado.- É importante ter em conta que podem existir diferenças entre o protótipo e o sistema final. O protótipo pode não cumprir os requisitos de desempenho, pode ser incompleto, e pode refletir somente algumas facetas do sistema a desenvolver. - O modelo em espiral pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado, por isso é necessário o uso de técnicas específicas para estimar e sincronizar cronogramas, bem como para determinar os indicadores de custo e progresso mais adequados.

As atividades do modelo espiral são:- planejamento: determinação de objetivos, alternativas e restrições.- avaliação de alternativas e riscos: executa-se uma análise de risco. Prototipação é uma boa ferramenta para tratar riscos. Se o risco for considerado inaceitável, pode parar o projeto.- desenvolvimento do software: pode-se considerar o modelo cascata.- avaliação feita pelo cliente.

###Engenharia de software

Page 18: Apam

Modelos de ciclo de vida ou modelos de processo de software

- Prototipagem evolutiva: a espiral é usada, não para desenvolver o produto completo, mas para construir uma série de versões provisórias chamadas de protótipos. Nela, o que se obtém ao final de cada iteração não é um produto completamente funcional, ao contrário do modelo em espiral.

- Entrega evolutiva (requisitos -> análise -> desenho arquitetônico -> desenho detalhado -> implementação -> testes -> desenho detalhado...): as atividades de especificação do problema e de desenho arquitetônico são executadas em cascata e as atividades restantes são executadas em espiral. O problema é a realização do desenho arquitetônico, pois ele deve manter-se íntegro ao longo dos ciclos de liberações. Era adotado no processo Praxis.

###Engenharia de software

Modelos de ciclo de vida ou modelos de processo de software

- Modelo Quase-espiral: modelo intermediário entre o espiral e o de entrega evolutiva. Existe uma fase de iniciação, na qual é feita, pelo menos, uma definição mínima dos requisitos do produto para delimitar seu escopo e uma fase de transição na qual o produto completo é implantado em seu ambiente definitivo. É o modelo usado de fato pelo MBase, que é referência para muitos processos adotados entre os quais, o RUP e o Praxis.

###Engenharia de software

Processos de software

Processo Unificado (UP): processo iterativo e adaptativo; o ciclo de vida iterativo é baseado em refinamentos e incrementos sucessivos a fim de convergir para um produto final e pode ser considerado um mini projeto de duração fixa contendo suas próprias análises de requisitos, projeto, implementação e testes; o incremento é baseado em experiências obtidas nas iterações anteriores e do feedback dos usuários; em cada iteração é escolhido um conjunto pequeno de requisitos, os quais são rapidamente projetados, implementados e testados pelo usuário; os usuários podem aprovar ou criticar, sendo que essas críticas não são consideradas erros e, sim, um modo de chegar no que o usuário quer de forma rápida, melhorando a compreensão dos requisitos e se o projeto está no caminho certo.Com isso, tem-se um progresso visível desde o início, um sistema que atenda as necessidades reais do usuário, a complexidade é administrada, sendo que não existem passos longos e o aprendizado obtido em uma iteração pode ser usado para melhorar o processo de desenvolvimento.

Os papéis do processo unificado: analista, desenvolvedor, testador, gerente.

Analista:

Page 19: Apam

Analista de Sistemas, Designer de Negócios, Revisor do Modelo de Negócios, Analista do Processo de Negócios, Revisor de Requisitos, Especificador de Requisitos, Analista de Teste, Designer de Interface de Usuário.

Desenvolvedor:Designer de Cápsula, Revisor de Código, Designer de Banco de Dados, Implementador,Integrador, Arquiteto de Software, Revisor de Arquitetura, Revisor de Design, Designer,Designer de Teste.

Testador:Testador.

Gerente:Engenheiro de Processo, Gerente de Projeto, Gerente de Controle de Mudança, Gerente de Configuração, Gerente de Implantação, Revisor do Projeto, Gerente de Testes.

###Engenharia de Software

As fases são do UP.- Concepção: onde requisitos não devem ser detalhados, a ideia é ter uma visão inicial do problema, estimar de forma vaga o esforço e os prazos e determinar se o projeto merece uma análise mais profunda.- Elaboração: é feita de forma iterativa sendo que todos os (ou a grande maioria dos) requisitos são detalhados, começando pelos de maior risco e valor arquitetural. Estes são implementados e servem como base de avaliação junto ao usuário e desenvolvedores para o planejamento da próxima iteração; em cada iteração, pode haver um seminário de requisitos, onde os antigos são esclarecidos de uma forma melhor e os novos são detalhados.- Construção: implementação iterativa dos elementos restantes de menor risco e mais fáceis.- Transição.

###Engenharia de Software

As características centrais do UP são:- dirigido por casos de uso (associam todos os workflows de forma conjunta);- centrado na arquitetura (desenvolvimento dos casos de uso é baseado em uma arquitetura global definida nas fases iniciais)- Iterativo (realizado por repetição de etapas similares)- Incremental (cada iteração representa nova funcionalidade ao produto)

O processo unificado de software é centrado na arquitetura e orientado por casos de uso, o que sugere um fluxo de processo iterativo e incremental.

Um Modelo de Domínio no PU, como o mostrado na Figura 9.3, é uma descrição de coisas em uma situação real do domínio de interesse, não de objetos de software, tais como classes Java ou C#, ou objetos de software com responsabilidades.

Page 20: Apam

###Engenharia de software

Processos de software

PSP (Personal Software Process): é uma série de processos pessoais, sendo que os projetos devem ser realizados seguindo rigorosamente esses processos. Tem como objetivo ajudar no controle, gerenciamento e melhoria da forma pessoal de desenvolvimento de software. O PSP auxilia os engenheiros de software a organizar e planejar seus trabalhos, acompanhar seu desempenho, gerenciar os defeitos de software e analisar/melhorar os próprios processos pessoais de desenvolvimento de software.As fases do PSP são 4, subdivididas em 7:

- PSP 0 e 0.1: o principal objetivo é coletar os dados do processo inicial e começar o registro de tempo e defeitos, a fim de compreender cada passo e ver como os métodos podem auxiliar a melhorar a qualidade e a produtividade, além de criar uma base de informações que será útil nos projetos futuros.- PSP 1 e 1.1: enfoca o planejamento e gerenciamento do projeto, introduzindo estimativas de esforço e tamanho, além do planejamento e acompanhamento de cronogramas. Nesta fase, o engenheiro compreende o tamanho do software e o tempo de desenvolvimento.- PSP 2 e 2.1: enfoca o gerenciamento da qualidade, introduz conceitos de prevenção de defeitos, por meio da revisão de código e de projeto.- PSP 3: prepara o engenheiro para utilizar o PSP em grandes projetos, introduzindo conceitos. A qualidade e a produtividade não são sacrificados, pois é inserido um limite de tamanho e uma estratégia de desenvolvimento cíclico. Os programas grandes são decompostos em partes menores para o desenvolvimento e posterior integração.

###Engenharia de software

Processos de software

TSP (Team Software Process): usa um modelo em espiral; tipicamente são executados 3 ciclos de desenvolvimento de um produto; os participantes são organizados de tal forma que cada desenvolvedor desempenhe um ou dois papéis gerenciais; os papéis suportados podem ser: gerentes de desenvolvimento, de planejamento, de qualidade, de processo e de suporte, além de líder do time; o planejamento e o controle rigoroso de tamanhos, esforços, prazos e defeitos, característicos do PSP, continuam sendo utilizados; o TSP enfatiza algumas áreas que correspondem ao nível 2 do CMMI: gestão de requisitos, planejamento e controle de projetos, garantia da qualidade e gestão de configurações;

###Engenharia de software

Processos de software

Rational Unified Process (RUP): em relação ao UP, ele tem uma estrutura diferente apesar de usar as mesmas fases e as mesmas características básicas. As coleções de atividas técnicas são diferentes, e são chamadas de disciplinas. Comparado com o UP, o

Page 21: Apam

RUP une as disciplinas de análise e desenho em uma única disciplina e acrescenta disciplinas adicionais de modelagem de negócios, implantação, gestão de configurações, gestão de projetos e ambiente. Enquanto o UP é um arcabouço abstrato, o RUP é uma coleção de processos concretos, oferecido como uma vasta base de conhecimentos em hipermídia. Hoje em dia o RUP não pode ser considerado um processo único, e sim uma plataforma que permite construir uma grande família de processos personalizados para muitos portes de projetos e muitas aplicações diferentes. Essa plataforma é utilizada pela ferramenta RMC (Rational Method Composer), ocupando, na versão 7.2, mais de 1 GB e 40.000 arquivos de material hipertexto.

Na documentação oficial do RUP existe uma versão de "RUP for small projects", que é uma configuração para projetos de menor porte.

A própria IBM afirma que não existe barreira para usar métodos ágeis dentro do RUP. A força dos métodos mais "lights" (SCRUM e programação em pares) pode ser melhor observada durante a fase de construção.

###Engenharia de software

Processos de software

MBase: combina o modelo de cilo de vida em espiral com os princípios de negociação ganha-ganha e com o conceito de evitar choques entre modelos. Segundo este conceito, o processo deve garantir a consistência entre os seguintes modelos: de produto (requisitos, arquitetura, código), de processo (tarefas, atividades, marcos), de propriedade (custo, prazo, desempenho, confiabilidade) e de sucesso (todas as partes interessadas ganham, visão de negócio).

Enterprise Unified Process (EUP): é uma extensão do RUP em que são incluídas duas fases: Produção e Aposentadoria e várias disciplinas (a maioria, disciplinas de empreendimento). Está se tornando o processo de desenvolvimento padrão dentro das comunidades orientadas a objeto e de software baseado em componente.

###Engenharia de software

Processos de software

Praxis: é desenhado para suportar projetos realizados por pequenas equipes, com duração de seis meses a um ano. Com isso pretende-se que ele seja utilizável para projetos de fim de curso de graduação ou similares, ou projetos de aplicações de disciplinas de engenharia de software.

###Arquitetura de computadores

Modos de endereçamento:

Page 22: Apam

I) imediato: nenhum acesso à memória; é rápido; o operando (campo de endereço da instrução) já vem como parte da instrução; intervalo de definição dos operandos é limitado;

| codop | operando | | +

II) direto: o campo de endereço contém o campo do operando; um único acesso à memória; espaço de endereçamento é limitado pelo campo;

| codop | endereço | |

Memória (operando) | +

III) indireto: o campo de endereço aponta para uma posição de memória que contém o endereço do operando; vários acessos à memória; é lento; espaço de endereçamento é grande;

| codop | endereço | |

Memória (endereço do operando) |

Memória (operando) | +

IV) via registrador: operando se encontra em um registrador indicado no campo de endereço da instrução; não há acesso à memória; execução muito rápida; espaço de endereçamento muito limitado;

| codop | endereço do registrador | |

Registrador (operando) | +

V) via registrador indireto: o operando está numa posição de memória apontada pelo registrador indicado no campo de endereçamento; um acesso à memória;

| codop | endereço do registrador | | registrador (endereço do operando) | memória (operando) | +

Page 23: Apam

VI) deslocamento: o operando se encontra na memória numa posição deslocada em relação ao endereço fornecido no campo do endereço; o campo de endereço pode ter 2 valores: A que guarda os valores de base e R que guarda o conteúdo do deslocamento (ou vice-versa);

| codop | endereço R | endereço A | | | registrador (endereço base) | | | ----------------------------- | | | memória | | ------------ |

+###Engenharia de software

Requisitos

De acordo com a qualidade dos requisitos, um enunciado dos requisitos deve ser: correto, preciso, completo, consistente, priorizado (essencial, desejável ou opcional), verificável, modificável e rastreável (para trás - origem do requisito; para frente - resultados do requisito).

###Engenharia de software

Requisitos

Prototipagem dos requisitos: não confundir protótipo evolucionário que é versão parcial do produto que satisfaz um subconjunto de requisitos do produto final e não pode ser considerado como releases (liberações), pois não é um produto completamente funcional. O protótipo descartável é construído com a única finalidade de demonstrar o que foi entendido ou resolvido em relação a algum aspecto da análise ou do desenho do produto. São feitos para esclarecer dúvidas ou responder certas perguntas cessando aí a sua utilidade.Ele deve ser construído rapidamente (poucas horas ou, no máximo, poucos dias). Pode ser construído por diversos tipos de ferramentas.Exemplos de áreas tratáveis por protótipos são:- funções e interfaces de usuário: permite visualizar as interfaces (de forma abastrata) e a navegação entre elas.- relatórios textuais;- relatórios gráficos; (este e o anterior = usa-se alguma ferramenta específica)- organização e desempenho de banco de dados;- cálculos e algoritmos complexos;- partes de tempo de resposta crítica em sistemas de tempo real;- tecnologia no limite do estado-da-arte.

Page 24: Apam

Um exemplo de prototipagem é o desenho de alguma janela do programa com as funções que ela vai ter.

###Engenharia de software

Requisitos

Oficinas de requisitos: reuniões estruturadas para definição conjunta de requisitos, envolvendo desenvolvedores, usuários e outros especialistas.

Casos de Uso: são utilizados como representações das funções completas especificadas, enquanto os atores representam os usuários ou outros sistemas que interagem com o produto (sistemas externos), sendo que cada ator representa uma classe de usuários de produto. Os atores modelam os papéis.Servem para a compreensão do problema; para delimitar o sistema; e definir as funcionalidades oferecidas para o usuário (não há preocupação com a implementação).Eles são ponto de partida para:- determinar classes, atributos e operações;- calcular o tamanho do software medido em PF;- desenhar o uso detalhado do produto;- escrever os procedimentos da documentação de usuário.

* Para cada ator, deve-se incluir uma descrição sucinta das responsabilidades do respectivo papel.* Um caso de uso pode estar associado a mais de um ator (normalmente a associação entre eles é sem direção).Os casos de uso podem ser agrupados em diagramas de pacotes em um sistema de software complexo.

###Engenharia de software

Relacionamentos entre casos de uso podem ser de quatro tipos: generalização, extensão e inclusão.- Comunicação representa informações de quais atores estão associados a que casos de uso.- Generalização indica que um caso de uso mais especializado herda comportamentos de um caso de uso mais genérico, acrescentando e redefinindo detalhes. É indicado por uma seta em direção ao genérico. Quando conveniente, o caso de uso herdeiro pode redefinir a sequência do caso de uso herdado. Com relação ao ator, o herdeiro pode participar em casos de uso em que o ator herdado não participa.- Extensão indica que um caso de uso apresenta um comportamento adicional que, normalmente, não ocorre na execução de outro caso de uso que é estendido. É denotado pelo esteriótipo <<extend>>.- Inclusão indica que uma atividade B, complexa, é invocada a partir de um fluxo de comportamento A. Diz-se que A inclui B. É representado pelo esteriótipo <<include>>. Ela existe somente entre casos de uso. Casos de uso que são utilizados por outros casos de uso podem ser descritos separados e depois ser incluído por outros casos de uso.

Page 25: Apam

###Engenharia de software

Diagramas

Diagramas de contexto: é o diagrama de casos de uso mais importante. Mostra as interfaces do produto com seu ambiente de aplicação, inclusive os diversos tipos de usuários e outros sistemas com os quais o produto deve interagir. Os diagramas de contexto devem indicar fontes e sorvedouros (saída) de dados.Nestes diagramas, os usuários, sistemas externos e outros componentes de um sistema maior devem ser representados por atores, enquanto os casos de uso representam as possíveis formas de interação do produto com os atores. Devem ser mostrados somente os casos de uso que se comunicam diretamente com os atores, através de interfaces.

_________________ator1 --|---caso de uso1--|-- ator2 | | | | |-------|----| | | |ator3 --|--caso de uso2---|-- ator4 |_________________|

Fluxos de eventos detalham, passo a passo, as funções representadas pelos casos de uso. Cada fluxo descreve um dos caminhos mais comuns que podem ser percorridos, seguindo-se os passos da função representada pelo caso de uso.Existem, também, os fluxos alternativos que correspondem a situações menos comuns (existem 3 tipos: específico - inicia num ponto de extensão; regional - inicia entre 2 pontos de extensão; geral - inicia em qualquer lugar).Invocação de fluxos ou subfluxos é representado por uma atividade que a UML denomina chamadas de comportamento.Fluxos documentam responsabilidades, ou seja, como as responsabilidades são divididas entre sistema e atores.

Um fluxo básico (caminho primário) deve ter: - ator e evento que o mesmo dispara para iniciar o caso;- interação normal (sem disparo de exceção) entre o ator e o sistema;- descrição de como o caso termina.

Pontos de extensão servem para inserir comportamentos adicionais. Podem ser privados ou públicos. Se privados, são visíveis somente dentro do caso de uso especificado. Se públicos, são nos casos que estendem o caso onde foram definidos.

###Conceitos de orientação a objeto

- Objeto é uma unidade da qual queremos representar informações no sistema. Eles possuem atributos. O conjunto de atributos é denominado estado do objeto. Eles possuem operações (métodos ou serviços) que manipulam o estado do objeto.

Page 26: Apam

- Encapsulamento: os dados associados ao objeto não estão disponíveis diretamente para os usuários do objeto, sendo que a única maneira de manipulá-los é através de operações. A implementação das operações não são visíveis aos usuários.- Independência de dados: a implementação das operações podem ser modificadas sem afetar os usuários dos objetos. A interface continua a mesma, apenas as ações internas são modificadas.- Passagem de mensagens é uma chamada de operação sobre um objeto (Se A manda uma mensagem para B, então A requisita uma tarefa de B - cuidado para não trocar).- Classes são categorias que agrupam objetos que tem características em comum.- Herança: classes com atributos e operações iguais podem ser agrupadas em hierarquias.- Polimorfismo: aplicação da mesma operação a diferentes tipos de objetos. Pode existir, também, polimorfismo de classe onde uma referência a uma classe abstrata pode representar classes concretas.

Polimorfismo estático: ocorre quando na definição da classe, criamos métodos com o mesmo nome e argumentos diferentes. Dizemos que o método está sobrecarregado (overloading).Polimorfismo dinâmico: está associado ao conceito de herança e acontece quando uma subclasse redefine um método existente na superclasse (overriding).

###Engenharia de Software

- Diagramas de casos de uso: diagramas que descrevem os requisitos funcionais de um sistema. São comumente usados, também, para descrever funções completas de um sistema ou aplicação. Eles são descritos por atores que representam objetos externos, casos de uso e sistema modelado.Um ator é conectado a um ou mais casos de uso por associações. Tanto atores, quanto casos de uso podem possuir relacionamento de generalização.A responsabilidade de cada passo de um caso de uso deve ser associada às classes que participam da colaboração.

- Diagramas de classe: representam a estrutura estática das classes de um sistema. Classes podem se relacionar uma com as outras através de associação (relacionamento que descreve uma séria de ligações, onde a ligação é definida como a semântica entre as duplas de objetos ligados), dependência, especialização ou em pacotes. O diagrama de classes é considerado estático já que a estrutura descrita é sempre válida em qualquer ponto do sistema. No diagrama de classe, os atributos e operações são mostrados também.

- Diagrama de objetos: similar aos diagramas de classes. A diferença é que o diagrama de objetos mostra os objetos que foram instanciados. É como se fosse o perfil do sistema em um determinado momento da sua execução.

###Engenharia de Software

- Diagramas de estado: é tipicamente um complemento para a descrição das classes. Ele mostra todos os estados possíveis que os objetos de certa classe podem se encontrar e

Page 27: Apam

mostra quais são os eventos do sistema que provocam tais mudanças. Os diagramas de estado não são escritos para todas as classes do sistema. Somente para aquelas que possuem um número definido de estados conhecidos. Possuem um ponto de início e vários de finalização. Um ponto de início é mostrado como um círculo preenchido e o ponto de finalização é mostrado como um círculo em volta de um outro círculo menor preenchido. Um estado é mostrado como um retângulo com os cantos arredondados. As transições são mostradas como uma linha e uma seta no final dessa linha indicando a transição.Uma transição de estado possui um evento ligado a ela. Se a transição não possuir um evento ligado a ela, a mesma ocorrerá quando a ação interna do código do estado for executada.

###Engenharia de Software

Diagramas de interação podem ser de dois tipos: diagramas de sequência e diagramas de colaboração.

- Diagrama de sequência: mostra a colaboração dinâmica entre os vários objetos. Com ele, sabe-se das mensagens enviadas entre os objetos. Mostra a interação dos objetos, alguma coisa que acontecerá em algum ponto específico da execução do sistema. Diagramas de sequência possuem dois eixos: vertical onde mostra o tempo; horizontal onde mostra os objetos envolvidos na sequência de uma atividade.Seta sólida significa que um objeto foi criado ou destruído.Dá ênfase na sequência dos objetos.Só é necessário referenciar os objetos que estão envolvidos na sequência.

- Diagrama de colaboração: dá ênfase nos objetos e seus relacionamentos. Pode conter objetos ativos que executam paralelamente com outros. As setas de mensagens mostram o fluxo entre eles. As mensagens são nomeadas.

###Engenharia de Software

- Diagramas de atividade: capturam ações e seus resultados. É uma variação do diagrama de estado com a diferença de capturar ações e seus resultados em termos das mudanças de estados dos objetos. Mostra como um grupo de ações relacionadas pode ser executado e como elas vão afetar os objetos em torno delas.

- Diagramas de componente: mostram o lado funcional do sistema. Mostram as relações entre seus componentes e a organização dos seus módulos. Representam a estrutura do código gerado. O componente em UML é mostrado com uma elipse e dois retângulos, do lado esquerdo, ligados por uma seta (podem ser somente dois retângulos). A dependência entre os componentes é mostrada por uma linha tracejada.

###Banco de dados

Variável de relação = a tabela em si.Variável de relação básica = atributo não primário da tabela.

Page 28: Apam

Variável de relação derivada = chave estrangeira da tabela.

###Banco de dados

Chave candidata são as chaves que podem ser a chave primária, isto é, que contêm valores únicos. São “superchaves mínimas”. Chave primária é a chave candidata escolhida.Chave estrangeira é a chave que vai referenciar a chave primária em outra tabela.Superchave é o conjunto de um ou mais atributos que, tomados coletivamente, nos permitem identificar, de forma única, uma entidade em um conjunto de entidades.Dependência trivial X -> Y significa que Y está contido em X. Caso contrário, não-trivial. X -> Y significa que os valores de Y são determinados (ou dependem) pelos valores de X.Fecho (closure) de um conjunto de dependências funcionais F são todas as DF's que podem ser inferidas a partir de F.

###Engenharia de Software

Classes de análise no fluxo de trabalho de análise: representam um primeiro modelo conceitual para elementos no sistema que possuam responsabilidades e comportamento.Elas representam as classes prototípicas do sistema e elas são um primeiro passo nas principais abstrações que o sistema deve tratar.Definem responsabilidades. Raramente operações.

As classes de análise podem ser estereotipadas como classes de fronteira, classes de controle e classes de entidade.Os estereótipos, além de fornecer orientações mais específicas do processo para localizar as classes, são um modelo de objetos poderoso, pois as mudanças no modelo tendem a afetar somente uma área específica.

Ao realizar a análise de um caso de uso, possíveis falhas e omissões no mesmo se tornam mais perceptíveis, tratando-se, portanto, de uma oportunidade para refinar o modelo de casos de uso.

As classes de análise são identificadas, primeiramente, na Fase de Elaboração, conforme os Casos de Uso são analisados. Algumas Classes de Análise podem ser identificadas tão tarde quanto a Fase de Construção, para Casos de Uso que não são analisados até a Fase de Construção.

Um designer é responsável pela integridade da classe de análise, garantindo que:- Ela é completa e logicamente consistente.- Todas as informações (consulte as propriedades acima) foram capturadas e estão corretas.

Não é aconselhável gastar muito tempo mantendo as classes de análise em um sentido formal. Pode-se perder muito tempo refinando um modelo que é altamente descartável. As classes de análise raramente sobrevivem no design inalterado.

Page 29: Apam

###Engenharia de Software

Tipos de classe de análise.

Classe de fronteira ou de limite: classes que realizam interface com o usuário; classes que realizam interface com outros sistemas; classes que realizam interface com dispositivos externos.Classe de controle: são classes coordenadoras que representam um comportamento do sistema; são encontradas analisando-se o comportamento do sistema a partir dos casos de uso.Classe de entidade: modelam informações persistentes que irão compor o banco de dados do sistema; são manipuladas por classes de controle; oferecem e recebem informações das classes limites; representam elementos chaves gerenciados pelo sistema.

###Engenharia de Software

Processo unificado: - Cada etapa gera um produto executável.- O modelo de casos de uso é desenvolvido em vários incrementos onde as iterações irão adicionar novos casos de uso e/ou adicionar detalhes nos já existentes.- Na fase de concepção, os casos de uso mais importantes são identificados. A maioria dos outros ficam para a fase de elaboração. Aproximadamente 80% são identificados ao final da elaboração, mas somente 5% a 10% são implementados nesta fase.- Os requisitos que sobram são implementados na fase de construção.- Na fase de transição, quase não há requisitos a serem capturados a não ser que ocorra mudança nos mesmos.

###Engenharia de Software

Processo unificado (fluxo de trabalho de análise): - O produto do fluxo de análise é o modelo de análise.- O modelo de análise tem a função de refinar os requisitos especificados no fluxo anterior através da construção do diagrama de classes.- O modelo de análise fornece mais poder expressivo e formalismo, como diagramas de estado e de interação.- O fluxo de análise tem maior importância na fase de elaboração e isso contribui para uma arquitetura estável e facilita o entendimento detalhado dos requisitos.- O modelo de análise cresce à medida que os casos de uso são analisados.- Para cada iteração, é selecionado um conjunto de casos de uso. Na próxima, outro conjunto é selecionado e é adicionado ao conjunto anterior.- O sistema é construído como uma estrutura de classes de análise e relacionamentos entre elas.

###Engenharia de Software

Page 30: Apam

Processo unificado (fluxo de trabalho de análise): - A arquitetura do sistema pode auxiliar na identificação de novas classes e a reutilização das existentes.- Cada classe de análise possui um ou mais papéis na descrição de um caso de uso e estes papéis especificam responsabilidades, atributos, ou qualquer coisa que sirva para detalhar um caso de uso.- Ao estruturar os requisitos do sistema, o modelo de análise fornece uma estrutura com foco na manutenção dos mesmos. Esta estrutura também serve de entrada para os fluxos de projeto e implementação.- O modelo de análise pode ser visto como o primeiro passo para o desenvolvimento do projeto.- A preservação da estrutura do modelo de análise permite uma fácil manutenção, uma fácil recuperação mediante à mudança de requisito.- O modelo de análise não trata de problemas que serão solucionados no modelo de projeto ou implementação.- A estrutura do modelo de análise nem sempre deve ser preservada, mas sim transformada durante o projeto e implementação do sistema.- A razão para isso é o fato de o projeto considerar a plataforma de implementação do sistema como linguagens de programação, SO, etc.- Visando a diminuição de custo e o melhor aproveitamento de prazos, a arquitetura deve ser alcançada modificando-se o modelo de análise durante a transição para o modelo de projeto.

###Engenharia de Software

Processo unificado (fluxo de trabalho de projeto):- Neste fluxo, o sistema é moldado e sua forma é definida de maneira a suprir as necessidades especificadas pelos requisitos.- Define um modelo de projeto que é construído com base no modelo de análise.- Descreve o sistema em um nível físico (diferente do modelo de análise que descreve o sistema em nível conceitual).- A principal função deste fluxo é obter uma compreensão detalhada dos requisitos, levando-se em consideração fatores como linguagens, SO, tecnologias de banco de dados, etc.- O fluxo de projeto tem seu enfoque no fim da fase de elaboração e o início da fase de construção.- Neste fluxo, os casos de usos são realizados utilizando diagramas de classe, de interação e de estados com o intuito de capturar os requisitos de implementação. Também pode usar diagramas de objeto.

###Engenharia de Software

Processo unificado (fluxo de trabalho de projeto):- O modelo de projeto funciona como uma abstração da implementação do sistema.- O fluxo de análise se interessa pelo que o sistem tem que fazer. O fluxo de projeto se interessa em como ele tem que fazer.- O projeto pode dividir o sistema em subsistemas visando a organização dos artefatos do modelo de projeto e partes mais gerenciáveis.

Page 31: Apam

- Um subsistema pode ser composto de classes de projeto, realizações de caso de uso, interfaces e outros subsistemas.- Um subsistema deve ser coesivo e tem que depender, no mínimo, de um outro subsistema.- A vantagem de se trabalhar com subsistemas no fluxo de projeto é que estes poderão ser projetados separadamente por diferentes equipes de desenvolvimento em diferentes níveis do projeto.

###Engenharia de Software

Processo unificado (fluxo de trabalho de implementação):- É baseado no fluxo de projeto.- Implementa o sistema em termos de componentes (código fonte, executável, etc).- A maior parte da arquitetura do sistema é definida durante o projeto.- O modelo de implementação se limita:

- planejar as integrações do sistema em cada iteração. Isso faz com que o sistema seja implementado como uma sucessão de etapas pequenas e gerenciáveis.

- implementar os subsistemas encontrados durante o projeto.- testar as implementações e integrá-las, antes de enviá-las ao fluxo de teste.

- Este fluxo tem maior importância na fase de construção.- O código gerado durante a implementação deve ser simples tradução das decisões de projeto em uma linguagem específica.

###Engenharia de Software

Processo unificado (fluxo de trabalho de teste):- Os testes são desenvolvidos com base no produto do fluxo de implementação.- Os componentes executáveis são testados para serem disponibilizados para os usuários.- O principal propósito é realizar os testes e analisar o resultado.- Componentes que tiverem defeitos voltarão para os fluxos anteriores (projeto e implementação) para correção.- O teste de um sistema é primeiramente empregado durante a fase de elaboração, quando a arquitetura do sistema é definida, e durante a fase de construção quando o sistema é implementado.- Um planejamento inicial pode ser feito durante a fase de concepção.

###Engenharia de Software

Processo unificado (fluxo de trabalho de teste):

- Na fase de transição, o fluxo de testes se limita ao conserto de defeitos encontrados durante a utilização inicial do sistema.- O produto do fluxo de teste é o modelo de teste. Primeiramente ele descreve como os testes são feitos.- O modelo de testes pode descrever aspectos específicos do sistema. Por exemplo: se a interface do usuário é útil e consistente.

Page 32: Apam

- O papel do fluxo de teste é verificar se os resultados do fluxo de implementação cumprem os requisitos estipulados pelos clientes e usuários, para que possa ser decidido se o sistema necessita de revisões ou se o processo de desenvolvimento pode continuar.

###Engenharia de Sofware

RUP - Disciplina de Modelagem de Negócio

Ela serve para entender como funciona a organização alvo; quais os problemas pelos quais ela passa (identificando uma possível melhoria); assegurar que os clientes tenham o mesmo entendimento da empresa alvo; entender como o software vai se adaptar à empresa e gerar o conteúdo para a fase de requisitos do sistema para ajudar a organização e seus processos. Sem a disciplina de modelagem de negócio, a disciplina de requisito pode ser prejudicada.

Obs.: ela não é obrigatória pelo RUP, mas é fortemente recomendada.

Work products gerados nessa fase: business vision (visão de negócio), business architecture document (documento de arquitetura de negócio), supplementary business specification (especificação de negócio suplementar), business rules (regras de negócio) e business glossary (glosário de negócio).

Roles envolvidas na disciplina: business process analyst, business architect, business designer and technical reviewer.

###Engenharia de Sofware

RUP - Disciplina de Requisitos

Estabelece e mantém concordância com os clientes e outros envolvidos sobre o que o sistema deve fazer; oferece aos desenvolvedores uma visão melhor dos requisitos do sistema; define escopo do sistema; fornece uma base para planejar o conteúdo técnico das iterações; fornece uma base para estimar o custo e o tempo de desenvolvimento do sistema; define uma interface de usuário para o sistema focado nas necessidades e metas dos usuários.

Obs.: É obrigatório pelo RUP.

Work products gerados nessa disciplina: vision (visão), glossary (glossário), requirements management plan (plano de gerência de requisitos), software requirements (requisitos de software), software requirements specification (especificação de requisitos de software), stakeholder requests (pedidos de stakeholder), storyboard, supplementary specifications (especificações suplementares), use-case model (modelo de caso de uso) e requirements attributes (atributos de requisitos).

Roles envolvidas na disciplina: system analyst, requirements specifier.

###

Page 33: Apam

Engenharia de software

RUP - Disciplina de Análise e Design

O modelo de análise permite uma melhor compreensão dos requisitos e seu domínio antes da realização do modelo de design da aplicação. É aplicado em projetos maiores onde uma transição direta para o modelo de design não é viável devido à complexidade identificada nos requisitos.Já o modelo de design representa a solução tecnológica para o problema exposto pelo modelo de análise e se aplica mesmo em projetos pequenos. Este modelo deve ser criado antes da implementação do software evitando retrabalhos neste processo.

A finalidade da disciplina de análise e design é transformar os requisitos em modelos de análise sob o qual o sistema será construído; desenvolver e evoluir uma arquitetura estável e robusta para o sistema e adaptar o design com foco na implementação.

Work products gerados na disciplina: analysis model (modelo de análise), design model (modelo de design), architectural proof-of-concept (prova de conceito arquitetural), data model (model de dados), reference architecture (arquitetura de referência), software architecture document (documento de arquitetura de software), navigation map (mapa de navegação) e service model (modelo de serviço).

Roles: software architect, system analyst, designer, user interface designer e database designer.

###Engenharia de software

RUP - Disciplina de Implementação

Definir a organização do código em termos de subsistema de implementação organizados em camadas; implementar classes e objetos em termos de componentes; testar os componentes desenvolvidos como unidades e integrar, ao sistema, os resultados produzidos.

###Engenharia de software

RUP - Disciplina de testes

Enfatiza a qualidade do produto realizada através de várias práticas: localizar e documentar defeitos; avisar de forma geral sobre a qualidade observada no software; validar as suposições feitas nas especificações de design e requisito; validar as funções do software conforme projetadas e verificar se os requisitos foram implementados de forma adequada.

###Engenharia de software

RUP - Disciplina de Implantação

Page 34: Apam

Descreve as atividades que garantem que o produto de software será disponibilizado para os seus usuários finais.

###Engenharia de software

RUP - Disciplina de Gerenciamento de configuração e mudança

Serve para controlar os inúmeros artefatos produzidos pelas pessoas que trabalham no projeto. O controle ajuda a evitar confusões e garante que os artefatos não entrem em conflito.Gerencia mudanças e seu impacto no desenvolvimento de software.Um artefato pode entrar em conflito por algum dos seguintes problemas:- atualização simultânea do mesmo artefato por dois ou mais membros;- notificação limitada a não todos os desenvolvedores que estejam mexendo em algum artefato.- várias versões: a maioria dos programas de grande porte é desenvolvida em releases evolutivas.

O grupo responsável por aprovar ou rejeitar mudanças nas linhas base do projeto é o CCB (Chance Control Board - Comitê Central de mudança CCM). Ele é formado por partes interessadas responsáveis pela revisão, avaliação, aprovação, atraso ou rejeição de mudanças feitas num projeto, com registro de todas as mudanças ou recomendação.

###Engenharia de software

RUP - Disciplina de Gerência de Projeto

Ela fornece um framework para gerenciar projetos intensivos de software; ela fornece diretrizes práticas para planejar, montar a equipe, executar e monitorar os projetos; fornececer um framework de gerenciamento de risco.

Esta disciplina NÃO tenta cobrir alguns aspectos do gerenciamento do projeto:gerenciamento de pessoas (contratação, treinamento, ensino);gerenciamento de orçamentos (definição, alocação);gerenciamento de contratos com fornecedores e clientes.

Esta disciplina enfatiza aspectos importantes do desenvolvimento iterativo:gerenciamento de risco; planejamento de um projeto iterativo, por meio da escolha do ciclo de vida e de uma iteração particular; e monitora o progresso de um projeto iterativo, métrica.

###Engenharia de software

RUP - Disciplina de Ambiente

Concentra-se nas atividades necessárias à configuração do processo para um projeto.

Page 35: Apam

Ela descreve as atividades para o desenvolvimento das diretrizes de suporte de um projeto; a meta das atividades desta disciplina é oferecer, à organização, o ambiente de desenvolvimento de software (os processos e as ferramentas) que dará suporta à equipe de desenvolvimento.

###Estruturas de Dados

Ávore binária de pesquisa: os nós da esquerda são menores do que a raíz. Os nós da direita são maiores do que a raíz.Métodos de visita: pré-ordem (visita, esquerda, direita), in-ordem (simétrica) (esquerda, visita, direita), pós-ordem (esquerda, direita, visita).

###Engenharia de software

UML

Diagramas estruturais enfatizam nos elementos que devem existir no sistema a ser modelado. São eles: de classes, de componentes, de objetos, de estrutura composta (UML 2.0), de implantação e de pacotes.

Diagramas comportamentais enfatizam na dinâmica do sistema a ser modelado. São eles: de atividades, de casos de uso e de estados.

Diagramas de interação são um subtipo de diagramas de comportamento, que enfatizam o controle de fluxo de ações e dados do sistema modelado. São eles: de comunicação, de sequência, de tempo e de visão de interação.

###Banco de dados

Visões

As visões são tabelas virtuais criadas pelos banco de dados. Elas podem existir fisicamente falando e serão chamadas de materializadas. Os objetivos das visões são:- disponibilidade: simplificar e centralizar a definição de consultas frequentes, evitando erros e melhorando a produtividade de usuários;- confidenciabilidade: restringir acesso a projeções e/ou seleções de tabelas reais;- integridade: evitar alterações indevidas no BD.

sintaxe: CREATE VIEW visao AS SELECT ...;Para eliminar uma visão: DROP VIEW visao;

Existem duas formas de o SGBD implementar uma visão: - Modificações de Consultas (QM): a visão é criada a cada consulta. Diminui o desempenho, mas não há necessidade de atualização da visão para garantir consistência dela em relação às tabelas-base.

Page 36: Apam

- Materialização de Visões (VM): a visão é criada na primeira consulta. Aumenta o desempenho, porém há necessidade de que as atualizações nas tabelas-base sejam propagadas.

Nas atualizações de visões podem ocorrer problemas de ambiguidade. Uma visão pode ter sido criada a partir da união de duas tabelas. Neste caso, não há certeza da tabela que será atualizada. Por isso, geralmente, não é permitida atualização.Uma visão definida em uma única tabela é atualizável se os atributos dela contiverem a chave primária, bem como todos os seus atributos com restrição NOT NULL que não contiverem os valores padrões especificados. Uma inserção pode ser feita sem conter a chave primária desde que a opção AUTO_INCREMENT tenha sido usada.As visões definidas, usando-se as funções de agrupamento e agregado, não são atualizáveis.Na SQL, a cláusula WITH CHECK OPTION deve ser acionada se ela puder ser atualizada. Isso faz com que o sistema cheque a capacidade de atualização da visão.

- As colunas modificadas das visões não são afetadas pelas cláusulas GROUP BY, HAVING ou DISTINCT.- Para haver atualização, as colunas não podem ser derivadas de qualquer modo, como pelo seguinte: avg, count, sum, min, max, grouping, stdev, stdevp, var e varp.

###Engenharia de Software:

Fluxos alternativos.Por que representar um fluxo alternativo separadamente do fluxo básico?R.:- Fluxos alternativos são opcionais e descrevem comportamentos que estão fora do comportamento normal esperado;- Nem todos representam funcionalidades essenciais não valendo o esforço de desenvolvimento;- Fluxos alternativos permitem adicionar funcionalidade do fluxo básico de maneira incremental ou remover funcionalidade à medida que o tempo e o dinheiro se esgotam.

###Banco de dados

SQL

SEQUENCES: é um objeto de banco de dados que gera números em uma ordem sequêncial. Aplicações geralmente usam estes números para campos que necessitam de valores únicos, tais como as chaves primárias. As características das SEQUENCES são: - estão disponíveis para todos os usuários do banco de dados;- são criadas usando comandos de SQl;- tem um mínimo e máximo de -2^63 e 2^63 - 1 (padrões de 0 e 2^63 - 1);- uma vez retornado um número, ele não será mais retornado;- geralmente são usadas para gerar valores para uma só sequência;- incrementam por x unidades (default = 1).

CREATE SEQUENCE bla INCREMENT BY 1 START WITH 100;

Page 37: Apam

DROP SEQUENCE bla;INSERT INTO cliente (cliente_num, nome, endereço) VALUES (bla.NEXTVAL, 'Paulo', 'Rua Tal, 444');

O valor atual CURVAL é referente à conexão, não é em relação ao objeto criado. Se um usuário A chama o NEXTVAL e obtém 1 e um B faz o mesmo e obtém 2, o CURVAL de A é 1, mesmo o objeto já tendo gerado o 2 para outro usuário.

###Engenharia de Software

Requisitos

Uso de PDL para especificar os requisitos. PDL = Linguagem de descrição de programa. Derivada de uma LP.Apropriada para duas situações:- quando uma operação é especificada como uma sequência de ações e quando a ordem é importante;- quando interfaces de software e hardware tiverem de ser especificadas.

Os requisitos não são documentos de projeto. Especificam o que deve fazer. Não como deve ser feito.

###Banco de dados

Triggers

São procedimentos ativados pelo SGBD em resposta a algum evento que ocorre no BD.No BD relacional, são ativados em resposta aos comandos INSERT, UPDATE e DELETE e, também, em operações de ABORT, COMMIT.Podem ser utilizados para:- manter restrições de integridade complexas;- efetuar auditoria, registrando as alterações efetuadas e quem as efetuou (log seletivo);- garantir restrições de acesso.

Triggers podem ser disparadas antes ou depois de um evento específicos com as cláusulas BEFORE e AFTER.O INSERT e o DELETE "pedem" ON após elas. UPDATE "pede" OF.Exemplo:CREATE TRIGGER trig1 AFTER INSERT ON T4 REFERENCING NEW AS newRow FOR EACH ROW WHEN (newRow.a <= 10) BEGIN INSERT INTO T5 VALUES(:newRow.b, :newRow.a); END trig1;

Cláusula WHEN é booleana e é usada somente para triggers de linha.

Page 38: Apam

old = objeto que tem informação sobre o valor antigo das colunas depois de alguma alteração.new = objeto que tem informação sobre o valor novo das colunas depois de alguma alteração.(old e new só são possíveis nos triggers.)INSTEAD OF = indica que o trigger será executado ao invés do comando que o disparou. É usado para visões.Os triggers são definidos em uma tabela: tabela de triggers.Não podem ser chamados diretamente (precisam de um evento para chamá-lo) e não permitem parâmetros.São parte de uma transação (junto com as instruções). Com o ROLLBACK, ele será desfeito.

###Banco de dados

Transações: conjunto de operações de acesso ao banco de dados. Englobam operações de inserção, exclusão, alteração ou recuperação.Propriedades da transação:ACID (DICA): atomicidade, consistência, isolamento e durabilidade.-Atomicidade: as transações devem ser atômicas. A transação será executada totalmente ou não será executada.-Consistência: as regras de integridade dos dados são asseguradas. As transações não podem quebrar as regras dos Bancos de Dados.- Isolamento: as transações não serão interferidas por outras transações concorrentes. Estas não podem ver etapas intermediárias daquelas.- Durabilidade: o que foi salvo não será perdido.

###Banco de dados

Transações autônomas

São transações invocadas por outra transação. Ela atua de forma independente da transação que a invocou.Ela não enxerga as operações da transação que a invocou: Se a transação A insere uma tupla e chama a transação autônoma B, esta não consegue enxergar a tupla inserida.Na linguagem PL/SQL, o comportamento padrão é que os procedimentos A e B precisam ser executados com êxito para que a transação seja feita com sucesso. Se B for uma transação autônoma, então todas as operações de B não terão ROLLBACK caso A (que invocou B) falhe. Isso é feito através da Pragma AUTONOMOUS_TRANSACTION.

###Engenharia de Software

EUP

Extensão do RUP.Adiciona duas fases e 8 disciplinas.

Page 39: Apam

Depois da fase de transição, vem as fases de produção e aposentadoria.

ProduçãoObjetivo: manter os programas úteis e produtivos depois de implantados.Finaliza quando o sistema entra na aposentadoria e o suporte, para o sistema, termina. Ou outra versão o substitui.

AposentadoriaObjetivo: remover, da produção, o release do sistema.Motivos para remoção: o produto tornou-se obsoleto; fim do suporte ao release; e substituição por um pacote de software.As atividades da aposentadoria são:- análise compreensiva do sistema que está sendo aposentado para identificar seu acoplamento com outros sistemas;- um redesenho e retrabalho de outros sistemas existentes de forma que eles não precisem mais confiar no sistema que está sendo aposentado;- transformação dos dados legados via refatoramento de banco de dados porque eles não serão mais requeridos ou manipulados pelo sistema que está sendo aposentado;- arquivamento dos dados mantidos pelo sistema que não será mais necessário por outros sistemas;- gerência de configuração do software removido de forma que ele possa ser reinstalado caso necessário no futuro;- teste de integração dos sistemas que foram mantidos para assegurar que eles continuaram funcionando com a aposentadoria do sistema.

###Engenharia de Software

EUP

Disciplina Operações e suporteTem como objetivos operar e dar apoio a um sistema de software em um ambiente de produção.Operar = manter o software rodando, a rede no ar, fazer backup e restore.Dar apoio = atender aos usuários (dúvidas, problemas encontrados, solicitação de evolução, correções)

As disciplinas empresariais são: modelagem de negócio (no nível empresarial), gestão de portfólio, arquitetura empresarial, reuso estratégico, gestão de pessoas, administração empresarial e melhoria no processo de software.

###Engenharia de Software

EUP

Disciplina modelagem de negócio empresarial

Page 40: Apam

Realiza as mesmas atividades da modelagem de negócio do RUP, mas no nível empresarial. Foca nos relacionamentos inter-projetos e o fator crítico de sucesso é o relacionamento da equipe de TI com os stakeholders empresariais.

###Engenharia de Software

EUP

Disciplina gestão de portfólioSeleção e gestão de projetos viáveis de desenvolvimento de software tratando-os como um só.Visa aumentar a eficiência e a eficácia da TI dentro de uma organização.

Portfólio de software: coleção de projetos de TI, em execução ou propostos, além dos sistemas já implantados.

###Engenharia de Software

EUP

Disciplina arquitetura empresarial- Compreende o ambiente onde todas as aplicações da empresa estão implantadas;- Inclui redes, framework, configurações de implantação, etc;- Difere da Arquitetura do Sistema no escopo: o arquiteto de sistemas empresariais trata de padrões a serem usados por múltiplos sistemas.

###Engenharia de Software

EUP

Disciplina reuso estratégicoReuso entre projetos. Só pode bem sucedido se for visto como investimento de longo prazo.O nível mais fácil é o reuso de código.O nível mais difícil é o reuso via arquitetura empresarial.

###Engenharia de Software

EUP

Disciplina gestão de pessoasMelhorar a efetividade das pessoas que estão dentro da organização de TI.Compreende organizar, educar, monitorar, fazer coaching e motivar as pessoas.

###Engenharia de Software

Page 41: Apam

EUP

Disciplina administração empresarialDefinir como a organização cria, mantém, gerencia e implanta ativos físicos e de informação de maneira segura. Define os papéis de administrador de rede, de instalações físicas, de dados e informações e de segurança.

###Engenharia de Software

EUP

Disciplina melhoria do processo de softwareEstende a disciplina Ambiente do RUP.Engloba o esforço de criar e dar suporte aos vários casos de desenvolvimento da organização de TI.

###Engenharia de Software

RUP

Visão (documento de visão): conjunto de descrições sobre requisitos centrais pretendidos e que serve de base para os requisitos técnicos mais detalhados. Ocorre no início da fase de iniciação (concepção).

###Banco de dados

Triggers.Após fazer uma deleção, as tuplas deletadas ficam numa tabela especial chamada DELETED. Após fazer uma inserção, as tuplas inseridas ficam numa tabela especial chamada INSERTED. Após fazer uma atualização, as tuplas antigas ficam no DELETED e as novas ficam na INSERTED.Isso tudo somente durante a conexão. Se esta for finalizada, os valores de DELETED e INSERTED serão deletados.

###Banco de dados

Atributo primário: membro de alguma chave candidata de um esquema de relação R.

###Banco de dados

SQL

GRANT privilege_nameON object_name

Page 42: Apam

TO {user_name |PUBLIC |role_name}[WITH GRANT OPTION];

Dá privilégio para usuário.

- privilage_name pode ser ALL, EXECUTE, UPDATE, SELECT, DELETE, INSERT.- object_name nomes do objeto de banco de dados tais como tabelas, visões, sequências e procedimentos de funções (lista separada por vírgula se for mais de um)- user_name nomes dos usuários que vão ganhar o privilégio (lista separada por vírgula se for mais de um)- PUBLIC garante acesso a todos os usuários.- role_name conjunto de privilégios agrupados.- WITH GRANT OPTION permite o usuário a dar privilégios a outros usuários.

REVOKE privilege_nameON object_nameFROM {user_name |PUBLIC |role_name}

Tira os privilégios do usuário.

###Engenharia de software

UML

Relação entre classes

1) Associação simples:- estabelece uma relação semântica estrutural entre classes.Ex: uma Pessoa trabalha para uma Companhia, uma Companhia tem vários Escritórios, etc.Representada por uma linha reta entre as duas classes.

2) Agregação:- estabelece uma relação todo-parte entre classes, sendo que a parte pode existir sem o todo.Ex: Carro e Roda. Uma Roda é parte de um Carro, porém pode a Roda existe por si só fora do Carro. Você pode por exemplo remover a roda de um carro para colocar em outro.Representada por uma linha tendo um losângo vazio na extremidade da classe que é o todo.

3) Composição:-estabelece uma relação todo-parte entre classes, sendo que a parte NÃO existe sem o todo. Um objeto do lado “parte” só pode estar associado a um objeto do lado “todo”.Ex: Pedido e Itens de Pedido. Se você destruir o Pedido, os Itens são destruídos junto, eles não tem sentido se não houver um Pedido. Representada por uma linha tendo um losângo preenchido na extremidade da classe que é o todo.

Page 43: Apam

###Engenharia de software

Ferramentas para os processos:XPlanner: ferramenta de código livre usada no auxiliando a fase de planejamento do XP.

Rational RequisitePro:- captura aspectos textuais dos modelos de negócios; - captura e organiza os requisitos;- ajuda a escrever propriedades textuais dos casos de uso;

Rational SoDA:- gera e mantém documentação dos modelos;- geração automática de documento de requisitos;- é bom pra organizar o resultados de vários fluxos de trabalho num só;- criação automática de documentos e relatórios, extraindo e formatando informações de outras ferramentas como o Rose e o Requisite Pro;

Rational Rose:- produz modelos visuais sobre os modelos de negócios;- suporte automático a atores e casos de uso;- mantém dependências a elementos no modelo de design;

Rational RealTime:- permite a execução direta de um modelo de design;

Defeitos em código: Purify, Quantify, ClearQuest;ClearCase provê workspace;TestStudio é uma série de ferramentas para teste (Robot, LogViewer, TestManager, TestFactory).PerformanceStudio.DevelopmentStudio é uma série de ferramentas para teste (Purify, PureCoverage, Quantify).Na gerência de configuração e mudança, tem-se: ClearCase, ClearQuest.

###Banco de dados

Especialização entre entidades: geração de subclasses com o intuito de estabelecer um conjunto de atributos específicos para cada subclasse e, também, estabelecer relacionamentos específicos entre as subclasses e outros tipos entidade (ou entre cada subclasse), coisa que não aconteceria com a superclasse em questão.

Generalização: definir uma entidade a partir de outras que compartilham atributos.

Existem especialização definida por atributo (predicado) e especialização definida por usuário.

Restrição de disjunção (Uma entidade pode ser membro de, no máximo, uma das subclasses. Representado pela letra D dentro do círculo), sobreposição (Uma entidade

Page 44: Apam

pode ser membro de quaisquer subclasses. Representado pela letra O). Uma entidade pode ser derivada de mais de uma entidade. Nesse caso ela é chamada de

Restrição de totalidade (a entidade da superclasse é, necessariamente, do tipo das subclasses. Indicado por uma seta dupla no círculo do diagrama) e parcialidade (a entidade da superclasse pode ser de outro tipo diferente das subclasses, indicado por uma seta simples).

Deletar uma entidade de uma superclasse implica que ela deve ser excluída de todas as subclasses também.Inserir uma entidade em uma superclasse implica que ela deve ser inserida nas subclasses definidas por predicado para as quais a entidade satisfizer a definição por predicado.Inserir uma entidade em uma superclasse de especialização total implica que a entidade seja inserida em, pelo menos, uma das subclasses.

###Engenharia de software

Gerência de projetos - gerência de integração

Engloba os processos necessários para garantir que os vários elementos do projeto estejam propriamente coordenados através da identificação, definição, combinação e, aí sim, coordenação.

Processos:- desenvolver o termo de abertura do projeto: processo de desenvolvimento de um documento que formalmente autoriza um projeto ou uma fase e a documentação dos requisitos iniciais que satisfaçam as necessidades e expectativas das partes interessadas;

- desenvolver o plano de gerenciamento do projeto: processo de documentação das ações necessárias para definir, preparar, integrar e coordenar todos os planos auxiliares;

- orientar e gerenciar a execução do projeto: processo de realização do trabalho definido no plano de gerenciamento do projeto para atingir os objetivos do projeto;

- monitorar e controlar o trabalho do projeto: processo de acompanhamento, revisão e regulação do progresso para atender aos objetivos de desempenho definidos no plano de gerenciamento do projeto;

- realizar o controle integrado de mudanças: processo de revisão de todas as solicitações de mudanças, aprovação de mudanças e gerenciamento de mudanças nas entregas, ativos de processos organizacionais, documentos de projeto e plano de gerenciamento do projeto;

- encerar o projeto ou fase: o processo de finalização de todas as atividades de todos os grupos de processos de gerenciamento do projeto para terminar formalmente o projeto ou a fase;

Page 45: Apam

A necessidade do gerenciamento de integração do projeto fica evidente quando processos distintos interagem.Exemplo: uma estimativa de custo necessária para um plano de contingência envolve a integração dos processos nas áreas de conhecimentos de custos, tempo e riscos.

Gerenciamento de integração também inclui atividades necessárias para gerenciar documentos e assegurar consistência no plano de gerenciamento de projeto e entregas.

Não há uma maneira única de gerenciar um projeto. O gerente e a equipe deve sempre discutir todos os processos para determinar o nível de execução de cada processo para cada projeto.

São exemplos de algumas atividades realizadas pela equipe de gerenciamento: - Analisar e entender o escopo. Isto inclui os requisitos do projeto e do produto, critérios, premissas, restrições e outras influências relacionadas ao projeto e como cada um será gerenciado e discutido dentro do mesmo. - Entender como uma informação é capturada e transformá-la em um plano de gerenciamento de projeto usando uma abordagem estruturada como descrita pelo PMBOK. - Realizar as atividades para produzir as entregas do projeto. - Medir e monitorar todos os aspectos do progresso do projeto e tomar as medidas necessárias para atender os objetivos do mesmo.

Termo de abertura do projeto: documento que inicia o projeto formalmente.Um gerente de projeto é identificado e escolhido enquanto o termo de projetos está sendo feito e sempre antes do início do planejamento. É recomendado que ele participe do termo de abertura, uma vez que este supre o gerente com a autoridade para usar o recurso nas atividades do projeto.

Entidades externas que autorizam um projeto: patrocinador, escritório de projetos ou comitê diretivo de portfólio.

Uma entrada da fase do termo de abertura do projeto é a declaração do trabalho. Ela é uma narrativa dos produtos e serviços a serem fornecidos pelo projeto. Ela informa a necessidade de negócios, a descrição do escopo do produto e o plano estratégico.

Outra entrada da fase do termo de abertura do projeto é o business case que é o documento que justifica o projeto. Nele estará a análise de custo-benefício. No caso de projetos com múltiplas fases, o business case pode ser revisado periodicamente para assegurar que o projeto está indo de acordo com os benefícios de negócios.

Fatores ambientais podem influenciar o processo de desenvolvimento do termo de abertura do projeto. São eles: padrões governamentais ou industriais, infraestrutura organizacional e condições do mercado.

O plano de gerenciamento do projeto define como o mesmo será executado, monitorado, controlado e encerrado.O conteúdo do plano de gerenciamento do projeto varia de acordo com a área de aplicação e complexidade do mesmo. O plano de gerenciamento é desenvolvido através de uma série de processos integrados até o seu encerramento. Isto é, ele é elaborado

Page 46: Apam

progressivamente através de atualizações controladas e aprovadas pelo processo de “Realizar o controle integrado de mudança”.

Orientar e gerenciar a execução do projeto está definido no plano de gerenciamento do projeto. Nessa etapa acontece a execução das atividades para realizar os objetivos do projeto; implementar os padrões e métodos planejados; gerar dados do projeto, tais como custo, cronograma, progresso técnico e da qualidade e informações sobre o andamento do projeto para facilitar previsões.

Monitorar e controlar o trabalho do projeto: nele tem monitoramento do início ao fim do projeto para verificar melhorias no processo. O controle inclui a determinações de ações corretivas ou preventivas ou o replanejamento e acompanhamento dos planos de ação para definir se as ações tomadas resolveram o problema. Está definida no plano de gerenciamento do projeto e compara o desempenho real do projeto com o plano de gerenciamento do projeto; avaliação do desempenho das medidas corretivas ou preventivas para saber se elas são recomendadas.

O processo de realizar o controle integrado de mudanças é conduzido do início ao fim do projeto. Objetivos desta fase: fazer com que somente as mudanças aprovadas sejam implementadas; revisar, analisar e aprovar as solicitações de mudança imediatamente já que uma decisão lenta pode afetar negativamente o tempo, custo ou viabilidade de mudança; gerenciar as mudanças aprovadas; revisar, aprovar ou rejeitar as ações corretivas e preventivas recomendadas; documentar o impacto completo das solicitações de mudança.

As mudanças podem ser solicitadas por qualquer um, podem ser verbais, porém há a necessidade de se registrá-las. Realizar o controle integrado de mudanças envolve um comitê de controle de mudança (CCM) responsável pela aprovação ou rejeição das solicitações. Solicitações de mudança aprovadas podem requerer novas ou revisadas estimativas de custos, sequências de atividades, datas de cronograma, requisitos de recursos e análise de alternativas de respostas aos riscos. Essas mudanças podem requerer reajustes ao plano de gerenciamento de projeto ou a outros planos/documentos de gerenciamento do projeto. O nível de controle de mudança depende da área de aplicação, complexidade do projeto específico, requisitos contratuais e o contexto e ambiento no qual o projeto é executado.

Um sistema de gerenciamento de configuração com controle integrado de mudanças fornece uma maneira padronizada, efetiva e eficiente de gerenciar (de maneira centralizada) as mudanças e linhas de base aprovadas dentro de um projeto.

Na fase de encerramento do projeto, tem um passo sobre transferir os produtos, serviços ou resultados do projeto para a próxima fase, produção e/ou operações; tem, também, atividades para coletar registros do projeto ou da fase, auditor o sucesso ou fracasso, coletar lições aprendidas e arquivar informações do projeto para o uso futuro da organização.

###Engenharia de software

Gerência de projetos - gerência de escopo

Page 47: Apam

Engloba os processos necessários para garantir que o projeto inclua todo o trabalho necessário, e somente o trabalho necessário, para ser completado com sucesso. Inclui o planejamento, definição, controle e verificação de escopo, além de criar a WBS - Work breakdown structure (EAP - estrutura analítica do projeto).Este gerenciamento está relacionado principalmente com a definição e controle do que está e do que não está incluso no projeto.

Processos:- coletar os requisitos: processo de definição e documentação das necessidades das partes interessadas para alcançar os objetivos do projeto;

- definir o escopo: processo de desenvolvimento de uma descrição detalhada do projeto e do produto;

- criar a EAP: processo de subdivisão das entregas e do trabalho do projeto em componentes menores e mais facilmente gerenciáveis;

- verificar o escopo: processo de formalização da aceitação das entregas terminadas do projeto;

- controlar o escopo: processo de monitoramento do progresso do escopo do projeto e escopo do produto e gerenciamento das mudanças feitas na linha base do escopo;

No contexto do projeto, o termo escopo pode se referir a um deles:a) escopo do produto: as características que descrevem um produto, análise ou resultado;b) escopo do projeto: o trabalho que precisa ser realizado para entregar um produto, serviço ou resultado com as características e funções especificadas.

Os processos, ferramentas e técnicas de suporte para gerenciar o escopo variam de acordo com a aplicação e normalmente são definidos como parte do ciclo de vida do projeto.

Os processos do gerenciamento do escopo são precedidos por um esforço de planejamento feito pela equipe de gerenciamento do projeto. Esse esforço é parte do processo “Desenvolver o plano de gerenciamento de projeto” que produz um plano de gerenciamento do escopo fornecendo diretrizes sobre como o escopo do projeto será definido, documentado, verificado, gerenciado e controlado. O plano de gerenciamento do escopo pode ser formal ou informal, detalhado ou conciso, dependendo das necessidades do projeto.

A conclusão do escopo do projeto é comparada ao plano de gerenciamento do projeto.A conclusão do escopo do produto é comparada aos requisitos do produto.

O sucesso do projeto é diretamente influenciado pela atenção dada na captura e gerenciamento dos requisitos do projeto e do produto.Os requisitos incluem as necessidades quantificadas e documentadas, e as expectativas do patrocinador, cliente e outras partes interessadas. Estes requisitos precisam ser obtidos, analisados e registrados com detalhes suficientes para serem medidos uma vez que a execução do projeto se inicie.

Page 48: Apam

Os requisitos se transformam na fundação da EAP. O planejamento do custo, do cronograma e da qualidade são todos construídos com base nesses requisitos.O desenvolvimento dos requisitos começa com uma análise da informação contida no termo de abertura do projeto (gerência de integração) e no registro das partes interessadas.Muitas organizações os categorizam em requisitos do projeto e requisitos do produto.De projeto: requisitos de negócios, de gerenciamento do projeto, de entrega, etc.De produto: incluem informações sobre os requisitos técnicos, de segurança, de desempenho, etc.

A preparação detalhada da declaração do escopo é crítica para o sucesso e baseia-se nas entregas principais, premissas e restrições que são documentadas durante a iniciação do projeto. Durante o planejamento, o escopo é definido e descrito com maior especificidade conforme as informações a respeito do projeto são conhecidas.

O nível mais baixo da EAP é o pacote de trabalho. Ele pode ser agendado, ter seu custo estimado, monitorado e controlado.Conforme o trabalho é decomposto em níveis maiores de detalhe, a habilidade de planejá-lo, gerenciá-lo e controlá-lo aumenta.Contudo, uma decomposição excessiva pode resultar num esforço de gerenciamento improdutivo, uso ineficiente de recursos e na diminuição da eficiência na execução do trabalho. A equipe espera até que a entrega ou subprojeto seja clarificado para que os detalhes da EAP possam ser desenvolvidos. Para isso, dá-se o nome de planejamento em ondas sucessivas.A EAP representa todo produto e trabalho do projeto, inclusive o trabalho de gerenciamento do mesmo. Regra dos 100% = todo o trabalho nos níveis mais baixos tem que escalar os níveis mais altos.Dicionário da EAP é um documento que possui uma descrição detalhada do trabalho e documentação técnica para cada elemento da EAP.

Verificar o escopo significa formalizar a aceitação das entregas concluídas do projeto. Isso inclui o cliente e/ou o patrocinador para obter aceitação formal.Verificar escopo = aceitação das entregas.Controlar qualidade = precisão das entregas e o alcance dos requisitos de qualidade especificados para as entregas.O controle da qualidade geralmente é feita antes da verificação do escopo, mas eles podem ser executados paralelamente.

O controle do escopo assegura que todas as modificações solicitadas e ações corretivas ou preventivas são processadas através do processo “Realizar o controle integrado de mudanças”. Gerenciar as mudanças reais quando essas ocorrerem e é integrado aos outros processos de controle.As mudanças são inevitáveis. Portanto exigem algum tipo de processo de controle.Mudanças não controladas = “scope creep”.

###Engenharia de software

WBS (EAP): Processo necessário para subdividir as principais entregas do projeto e do trabalho do projeto em componentes menores e mais facilmente gerenciáveis. A EAP é

Page 49: Apam

decomposta em pacotes de trabalho. Deve ser completa, organizada e pequena o suficiente para que o progresso possa ser medido.Cada componente é subdividido em componentes menores. A cada subdivisão, há um detalhamento maior.

A EAP é uma decomposição hierárquica orientada à entrega do trabalho a ser executado pela equipe do projeto, para atingir os objetivos do projeto e criar as entregas necessárias. Ela organiza e define o escopo total do projeto.

O nível de atividades pode ser listado.Pacotes de trabalho são os itens no nível mais baixo da EAP (e podem ser "quebrados" em atividades e tarefas).

###Engenharia de software

Gerência de projetos - gerência de tempo

Engloba os processos necessários para garantir que o projeto termine dentro do prazo previsto.

Processos:- definir as atividades: processo de identificação das ações específicas a serem realizadas para produzir as entregas do projeto;

- sequenciar as atividades: processo de identificação e documentação dos relacionamentos entre as atividades;

- estimar os recursos das atividades: processo de estimativa dos tipos e quantidades de material, pessoas, equipamentos ou suprimentos que serão necessários para realizar cada atividade;

- estimar durações das atividades: processo de estimativa do número de períodos de trabalho que serão necessários para terminar atividades específicas com os recursos estimados;

- desenvolver o cronograma: processo de análise das sequências das atividades, suas durações, recursos necessários e restrições do cronograma visando criar o cronograma do projeto;

- controlar o cronograma: processo de monitoramento do projeto para atualização do seu progresso e gerenciamento das mudanças feitas na linha de base do cronograma;

Em projetos de escopo menor, os processos podem ser vistos como um único processo. Antes destes processos, há um trabalho de planejamento pela equipe de gerenciamento. Esse planejamento faz parte do processo “Desenvolver um plano de gerenciamento do projeto”, que produz um sistema de gerenciar cronograma e que usa metodologia e uma ferramenta de elaborar cronograma, assim como estabelece critérios para o desenvolvimento e controle do cronograma. Métodos conhecidos para elaborar cronograma: método do caminho crítico (CPM) e método da cadeia crítica.

Page 50: Apam

Os processos para gerenciar tempo, juntamente com suas ferramentas e técnicas são documentados no plano de gerenciamento do cronograma.A maioria do esforço está no processo “controlar cronograma”.

Os pacotes de trabalho na EAP são tipicamente decompostos em atividades que representam o trabalho necessário para completar o pacote de trabalho.As atividades proporcionam uma base para a estimativa, desenvolvimento do cronograma, execução, monitoramento e controle do trabalho do projeto.

A revisão e manutenção do cronograma continuam sendo executadas durante todo o projeto à medida que o trabalho progride, o plano de gerenciamento do projeto muda e a natureza dos eventos de riscos evolui.Folga total é a diferença entre as datas mais tarde e mais cedo.Caminho crítico tem uma folga total igual a zero ou negativa.Atividades do cronograma que estão no caminho crítico são chamadas de atividades críticas.

Método da cadeia crítica (MCC ou CCM): o cronograma é feito e o método do caminho crítico é feito também. Depois disso, a disponibilidade de recurso é informada e um novo cronograma (restringido por recursos) é determinado. O cronograma resultante, geralmente, tem um caminho crítico diferente. Este novo caminho crítico é a cadeia crítica.

MCC utiliza buffers de duração que são atividades sem trabalho do cronograma.Buffer colocado no final da cadeia crítica é o buffer do projeto e protege a data alvo de término contra o seu desvio ao longo da cadeia crítica.Buffers de alimentação são colocados em cada ponto que uma cadeia de tarefas (que não está na cadeia crítica) alimenta ou converge para a cadeia crítica.

Análise do cenário "e se": analisar os problemas que podem acontecer (greve, mudança no processo de licenciamento) e ver se o projeto pode andar se acontecer estes problemas e pode preparar planos de contingência e de resposta para superar ou mitigar o impacto de situações inesperadas.Análise de Monte Carlo é a técnica mais comum do cenário “e se”, na qual uma distribuição das possíveis durações de atividades é definida para cada atividade e usada para calcular uma distribuição de possíveis resultados para o projeto como um todo.

Técnicas de compressão do cronograma- compressão: verificar se vale à pena aumentar um pouco o custo para obter maior compressão. Exemplo: aprovação de hora extra, recursos adicionais ou o pagamento para aceleração da entrega das atividades no caminho crítico. A compressão nem sempre é viável e pode resultar num maior risco e/ou custo.- paralelismo: técnica onde fases, que normalmente seriam executadas em sequência, são executadas em paralelo. O paralelismo só funciona se as atividades podem ser sobrepostas para encurtar a duração.

O controle do cronograma está relacionado à determinação da situação atual do cronograma do projeto; influência nos fatores que criam mudanças no cronograma; determinação de que o cronograma mudou e gerenciamento das mudanças reais conforme ocorrem.

Page 51: Apam

###Engenharia de software

Gerência de projetos - gerência de custos

Engloba os processos necessários para garantir que o projeto termine dentro do orçamento aprovado.

Processos:- estimar custos: processo de desenvolvimento de uma estimativa de custos dos recursos monetários necessários para terminar as atividades do projeto;

- determinar o orçamento: processo de agregação de custos estimados de atividades individuais ou pacotes de trabalho para estabelecer uma linha de base autorizada dos custos;

- controlar os custos: processo de monitoramento do andamento do projeto para atualização do seu orçamento e gerenciamento das mudanças feitas na linha de base dos custos;

Em projetos de menor escopo, a estimativa e o orçamento de custos estão interligados tão firmemente que são vistos como um único processo que pode ser realizado por uma pessoa num período de tempo relativamente curto.Estes três processos são precedidos por um esforço de planejamento da equipe de gerenciamento e este esforço faz parte do processo “Desenvolver o plano de gerenciamento do projeto”.Este, por sua vez, produz um plano de gerenciamento dos custos que pode estabelecer o seguinte:

- nível de exatidão: há um arredondamento dos dados numa precisão prescrita ($100, $1.000) baseada no escopo das atividades e magnitude do projeto e podem incluir uma quantia para contingências.- unidades de medida: cada unidade usada em medições é definida para cada um dos recursos.- associações com procedimentos organizacionais: a EAP fornece a estrutura para o plano de gerenciamento dos custos. O componente da EAP usado para a contabilidade de custos do projeto é chamado de conta de controle.- limites de controle: tipicamente expressos em porcentagem.- regras para medição de desempenho: as regras para medição do desempenho do gerenciamento do valor agregado (GVA ou EVM em inglês) são estabelecidas. - formato dos relatórios;- descrição dos processos.

Estimativas de custos são geralmente expressas em unidades de alguma moeda, mas pode ser dadas em horas ou dias de pessoal, com a vantagem de eliminação dos efeitos das flutuações das moedas.

As estimativas de custos são refinadas durante o projeto. Elas são atualizadas iterativamente.

Page 52: Apam

Uma estimativa dos custos é uma avaliação quantitativa dos custos prováveis dos recursos necessários para completar a atividade.

Técnicas para estimar os custos:- estimativa análoga: olhar o histórico de custo de outros projetos semelhantes anteriores para estimar o custo do projeto atual.- estimativa paramétrica: utiliza uma relação estatística entre dados históricos e outras variáveis para calcular uma estimativa para parâmetros de atividade como custo, orçamento e duração.

Os orçamentos do projeto compõem os recursos financeiros autorizados para executar o projeto. O desempenho dos custos será medido em relação ao orçamento autorizado.

A atualização do orçamento envolve o registro de custos gastos até a data. Qualquer aumento do orçamento autorizado somente pode ser aprovado através do processo “Controle Integrado de Mudanças”.

A chave para o controle eficaz de custos é o gerenciamento da linha de base do desempenho de custos aprovada e as mudanças nas mesmas.

O gerenciamento de custos deve considerar os requisitos das partes interessadas para captura de custos.O sistema de controle de mudanças de custo define os procedimentos através dos quais a linha base do custo pode ser modificada. Consiste de formulários, documentações, sistema de rastreamento e níveis de aprovação necessários para autorizar mudanças.

Entre os objetivos do controle de custo, estão: - controlar os fatores que criam mudanças na linha base dos custos.- gerenciar as mudanças reais conforme ocorrem.- monitorar o desempenho de custo para isolar e entender as variações a partir da linha de base de custos.- monitorar o desempenho do trabalho em relação aos recursos financeiros gastos.- registrar as mudanças adequadas.- garantir que estouros nos custos não excedam o financiamento autorizado.- prevenir que mudanças não autorizadas sejam incluídas no relatório de custo ou uso de recursos.- agir para manter os excessos de custos não previstos dentro de limites aceitáveis.

O controle de custos do projeto procura pelas causas positivas e negativas e é parte do processo “Controle integrado de mudanças”.

Gerenciamento do valor agregado: técnica para relato do status do projeto em termos de custo e tempo.VP (valor planejado): valor do orçamento alocado original com o custo orçado do trabalho agendado. COTA: custo orçado do trabalho agendado.VP = qual é o valor estimado do trabalho planejado?

VA (valor agregado): valor cumulativo do custo orçado do trabalho realizado. COTR: custo orçado do trabalho realizado.

Page 53: Apam

VA = qual é o valor estimado do trabalho realizado?

CR (custo real): custo real do trabalho realizado.CR = qual é o custo real incorrido para o trabalho realizado?

ONT (orçamento no término): soma de todos os valores de orçamento estabelecidos para o trabalho a ser realizado em um projeto. É o valor planejado total do projeto.ONT = qual é o orçamento para o esforço total do projeto.

ENT (estimativa no término): neste momento, qual é a nossa previsão para o custo total do projeto?ENT = CR + EPTENT = CR + ONT – VAENT = CR + (ONT – VA)/IDC (Considera-se que as variações atuais serão típicas no futuro)ENT = ONT/IDC

EPT (estimativa para terminar): a partir deste momento, quanto mais esperamos gastar para concluir o projeto?EPT = ENT - CRVNC (variação na conclusão): o quanto acima ou abaixo do orçamento espera-se estar ao final do projeto?VNC = ONT – ENT

VariaçãoCusto = VA – CRVariaçãoPrazo = VA – VPIDC (índice de desempenho de custos): VA/CRIDC < 1 => estouro nos custos estimados.IDC > 1 => custos estimados não atingidos.IDP (índice de desempenho de prazo): VA/VP

###Engenharia de software

Gerência de projetos - gerência de qualidade

A gerência de qualidade inclui todas as atividades da organização executora que determinam as responsabilidades, os objetivos e as políticas de qualidade, de modo que o projeto atenda às necessidades que motivaram sua realização.O sistema de gerenciamento de qualidade é implementado através de políticas, dos procedimentos e processos de planejamento de qualidade, garantia e controle da qualidade, com atividades de melhoria contínua dos processos conduzidas do início ao fim.Os processos de gerenciamento de qualidade incluem:- planejamento da qualidade: identificar padrões de qualidades relevantes para o projeto e determinar como fazê-los.- realizar a garantia da qualidade: aplicar atividades de qualidade planejadas e sistemáticas para garantir que o projeto empregue todos os processos necessários para atender aos requisitos.

Page 54: Apam

- realizar o controle da qualidade: monitorar os resultados a fim de determinar se eles estão de acordo com os padrões relevantes de qualidade e, também, identificar as causas de um desempenho insatisfatório. Além disso, recomendar as mudanças necessárias.

Deixar de cumprir os requisitos de qualidade do produto ou do projeto pode ter consequências negativas graves para uma ou todas as partes interessadas do projeto.Exemplo: cumprir os requisitos do cliente sobrecarregando a equipe do projeto pode resultar em aumento de atritos entre funcionários, erros e retrabalho; cumprir os objetivos do cronograma do projeto apressando as inspeções de qualidade planejadas pode resultar em erros não detectados.

Qualidade é o grau até o qual um conjunto de características inerentes satisfaz as necessidades.Qualidade baixa é ruim, mas um grau baixo não indica qualidade baixa.

Precisão é a homogeneidade de medições repetidas que são agrupadas com pouca dispersão.Exatidão é a correção com o que o valor medido se aproxima do valor real.

O gerenciamento moderno da qualidade reconhece a importância de:- satisfação do cliente;- prevenção ao invés de inspecção: um dos princípios fundamentais do moderno gerenciamento de qualidade determina que a qualidade deve ser planejada, projetada e incorporada, em vez de inspecionada. O custo de prevenir erros é geralmente muito menor do que o custo de corrigí-los quando são encontrados pela inspeção;- melhoria contínua: o ciclo PDCA (plan-do-check-act, planejar-fazer-verificar-agir) é a base para a melhoria da qualidade conforme definida por Shewhart e modificada por Deming.- responsabilidade da gerência: o sucesso depende de todos os membros da equipe, mas continua sendo a responsabilidade da gerência fornecer os recursos necessários ao êxito.

O custo da qualidade (CDQ) refere-se ao custo total de todos os esforços relativos à qualidade durante todo o ciclo de vida do produto.

O planejamento de qualidade deve ser realizado em paralelo com outros processos de planejamento do projeto. Por exemplo, modificações nas propostas do produto para atender aos padrões de qualidade podem exigir custos ou ajustes nos cronogramas e uma análise de risco detalhada dos seus impactos nos planos.

O processo “Realizar a garantia da qualidade” inclui a melhoria contínua do processo, que é um meio iterativo de melhorar a qualidade de todos os processos. A melhoria contínua do processo reduz o desperdício e elimina as atividades que não agregam valor, aumentando a eficiência e eficácia.

Auditoria de qualidade: é uma revisão estruturada e independente para determinar se as atividades do projeto estão cumprindo as políticas, os processos e os procedimentos da organização e do projeto. Os objetivos de uma auditoria: identificar as melhores práticas que estão sendo implementadas; identificar deficiências; compartilhar boas práticas utilizadas em projetos similares; oferecer apoio de forma proativa a fim de ajudar a

Page 55: Apam

equipe para aumentar a produtividade; destacar as contribuições de cada auditoria no repositório de lições aprendidas na organização.

As atividades de controle da qualidade identificam as causas de baixa qualidade do processo ou produto e recomendam e/ou executam as ações necessárias para eliminá-las.

Definições necessárias do processo “Realizar o controle da qualidade”:- Prevenção: manter os erros fora do processo.- Inspeção: manter os erros fora do alcance do cliente- Amostragem de atributos: o resultado está em conformidade ou não.- Amostragem de variáveis: escala contínua que mede o grau de conformidade.- Tolerância: intervalo especificado de resultados aceitáveis.- Limites de controle: limites que podem indicar se o processo está fora de controle.

###Engenharia de software

Gerência de projetos - gerência de pessoas (recursos humanos)

Engloba os processos necessários para garantir o uso mais efetivo das pessoas envolvidas no projeto. Inclui todos os stakeholders do projeto.

Processos:- desenvolver o plano de recursos humanos: processo de identificação e documentação de funções, responsabilidades, habilidades necessárias e relações hierárquicas do projeto, além da criação de um plano de gerenciamento do pessoal.

- mobilizar a equipe do projeto: processo de confirmação da disponibilidade dos recursos humanos e obtenção da equipe necessária para concluir as designações do projeto.

- desenvolver a equipe do projeto: processo de melhoria de competências, interação da equipe e ambiente global da equipe para aprimorar o desempenho do projeto;

- gerenciar a equipe do projeto: processo de acompanhar o desempenho de membros da equipe, fornecer feedback, resolver questões e gerenciar mudanças para otimizar o desempenho do projeto;

A equipe de gerenciamento de projetos é um subconjunto da equipe do projeto.Ela pode ser chamada de equipe principal, executiva ou de liderança.O patrocinador do projeto trabalha com a equipe do gerenciamento de projetos, geralmente com apoio em questões como financiamento do projeto, esclarecimento do escopo e monitoramento do progresso.Gerenciar e liderar a equipe também inclui:- influenciar a equipe do projeto. - comportamento profissional e ético.

Alguns exemplos de interações dos processos de gerenciamento de pessoas com outras áreas:

Page 56: Apam

- depois de feito o EAP, pode ser necessário contratar ou mobilizar pessoal adicional.- quando membros adicionais são incluídos na equipe, seus níveis de experiência podem aumentar ou diminuir o risco do projeto, criando a necessidade de atualizações complementares no planejamento de riscos.- quando a duração das atividades é estimada, orçadas, delimitadas ou planejadas antes da identificação de todos os membros da equipe do projeto e seus níveis de competências, as durações das atividades estarão sujeitas a alterações.

Ideia central do gerenciamento de recursos humanos é determinar e identificar pessoas com as habilidades necessárias para o êxito do projeto.As pessoas ou grupos (que irão fazer um determinado papel no projeto) podem ser internos ou externos à organização executora do projeto.Outros projetos podem concorrer por recursos com as mesmas competências ou conjunto de habilidades. Considerando estes fatores, outras áreas como custo, cronogramas, riscos, qualidade, etc podem ser significativamente afetadas. Um planejamento de recursos humanos eficaz deve considerar e planejar estes fatores e desenvolver opções de recursos humanos.

Deixar de mobilizar os recursos humanos necessários para o projeto pode afetar os cronogramas e orçamentos, a satisfação do cliente, a qualidade e os riscos. Pode reduzir a probabilidade de êxito e, na pior das hipóteses, cancelar o projeto.

Se os recursos humanos não estiverem disponíveis, o gerente pode designar recursos alternativos, talvez com menos competências, desde que dentro da lei.

Estes fatores devem ser considerados e planejados nas etapas de planejamento do projeto. O gerente do projeto ou a equipe de gerência de projeto deve refletir o impacto de qualquer indisponibilidade de recursos humanos necessários no cronograma, no orçamento, nos riscos, na qualidade, nos planos de treinamento e nos outros planos de gerenciamento do projeto.

Uma habilidade importante requerida do gestor para a solução de dificuldades na execução de um projeto é a delegação de autoridade, também denominada empowerment.

###Engenharia de software

Gerência de projetos - gerência de comunicação

Engloba os processos necessários para garantir a correta geração, distribuição, armazenamento, coleta e disposição final das informações relativas ao projeto.

Processos:- identificar as partes interessadas: processo de identificação de todas as pessoas ou organizações que podem ser afetadas pelo projeto e de documentação das informações relevantes relacionadas aos seus interesses, envolvimento e impacto no sucesso do projeto;

Page 57: Apam

- planejar as comunicações: processo de determinação das necessidades de informação das partes interessadas no projeto e definição de uma abordagem de comunicação;

- distribuir informações: processo de colocar as informações necessárias à disposição das partes interessadas no projeto, conforme planejado;

- gerenciar as expectativas das partes interessadas: processo de comunicação e interação com as partes interessadas para atender às suas necessidades e solucionar as questões à medida que ocorrerem;

- reportar o desempenho: processo de coleta e distribuição de desempenho, incluindo relatórios de andamento, medições do progresso e previsões;

Canais ou caminhos de comunicação = n(n - 1)/2, sendo n = número de partes interessadas. O gerente de projetos deve considerar este número como um indicador de complexidade. (Dentro do processo de planejamento das comunicações)

Os gerentes de projetos gastam a maior parte do tempo se comunicando com os membros da equipe e outras partes interessadas, sejam internas, sejam externas. Uma comunicação eficaz cria uma ponte entre as diversas partes interessadas envolvidas no projeto, conectando vários ambientes culturais e organizacionais.

Dimensões da atividade de comunicação:- interna (dentro do projeto) e externa (cliente, outros projetos, meios de comunicação, o público);- formal (relatório, memorandos, instruções) e informal (emails, discussões ad hoc);- vertical (dos níveis superiores e inferiores da organização) e horizontal (com colegas);- oficial (boletins informativos, relatório anual) e não oficial (comunicações confidenciais);- escrita e oral;- verbal e não verbal.

É fundamental para o sucesso do projeto identificar as partes interessadas desde o início e analisar seus níveis de interesse, expectativas, importância e influência. Em seguida é possível desenvolver uma estratégia para abordar cada parte interessada e determinar o nível e a oportunidade para o envolvimento das partes interessadas. A avaliação e a estratégia correspondente devem ser revistas periodicamente.As partes interessadas do projeto devem ser classificadas de acordo com o nível de interesse, a influência e o envolvimento no projeto.

O processo “Planejar as comunicações” responde às necessidades de informações: quem precisa de quais informações, quando elas serão necessárias, como são fornecidas e por quem.As necessidades e a forma (métodos) de comunicação variam muito. O importante para o sucesso do projeto é identificar as necessidades de informações e determinar os meios mais adequados.

Técnicas para distribuição eficaz de informação:- modelos de emissor-receptor: realimentações de feedback e barreiras à comunicação.

Page 58: Apam

- escolha dos meios de comunicação: situações do tipo “quando mandar um memorando, quando mandar um email”, “quando se comunicar sobre escrito e quando se comunicar oralmente”.- estilo da redação: voz passiva ou ativa, estrutura das frases e escolha das palavras.- técnicas de gerenciamento de reuniões: preparação de uma agenda e tratamento de conflitos.- técnicas de apresentação: linguagem corporal e planejamento de apoios visuais.- técnicas de facilitação: obtenção de consenso e superação de obstáculos.

Os relatórios de desempenho precisam fornecer informações no nível adequado para cada público.

###Engenharia de software

Gerência de projetos - gerência de riscos

Engloba os processos necessários para garantir a correta identificação, análise e resposta aos riscos do projeto, maximizando os efeitos positivos e minimizando os efeitos negativos.

Processos:- planejar o gerenciamento dos riscos: processo de definição de como conduzir as atividades de gerenciamento de riscos de um projeto;

- identificar os riscos: processo de determinação dos riscos que podem afetar o projeto e de documentação de suas características;

- realizar a análise qualitativa dos riscos: processo de priorização dos riscos para análise ou ação adicional através da avaliação e combinação de sua probabilidade de ocorrência e impacto;

- realizar a análise quantitativa dos riscos: processo de analisar numericamente o efeito dos riscos identificados nos objetivos gerais do projeto;

- planejar as respostas aos riscos: processo de desenvolvimento de opções e ações para aumentar as oportunidades e reduzir as ameaças ao objetivo do projeto;

- monitorar e controlar os riscos: processo de implementação de planos de respostas aos riscos, acompanhamento dos riscos identificados, monitoramento dos riscos residuais, identificação de novos riscos e avaliação eficácia dos processos de tratamento dos riscos durante todo o projeto;

O risco é coisa do futuro. Se ocorrer, tem um efeito em pelo menos um objetivo do projeto, como escopo, cronograma, custo e qualidade.

Riscos existem em todos os projetos. Alguns riscos não podem ser gerenciados de forma positiva, o que sugere que a equipe deve criar um plano de contingência. Um risco de projeto que já ocorreu também pode ser considerado um problema.

Page 59: Apam

As organizações e as partes interessadas estão dispostas a aceitar vários graus de riscos, o que é chamado de tolerância a riscos. Essa tolerância é para aceitar ou não os riscos (aceitar se eles estiverem dentro da tolerância).

O risco existe assim que o projeto é concebido.

O processo “Planejar o gerenciamento dos riscos” deve começar no início do projeto e ir até as fases inicias do planejamento do projeto.

Identificar um risco é um processo iterativo, pois novos riscos podem surgir com o andamento do projeto. O formato das declarações de riscos deve ser consistente para garantir a capacidade de comparar o efeito relativo de um evento de risco com outros no projeto.

Técnicas para identificar riscos:- Brainstorming: obtenção da lista completa dos riscos de um projeto.- Técnica Delphi: especialistas em riscos do projeto respondem questionários sobre riscos importantes do projeto. As respostas são resumidas e redistribuídas aos especialistas para comentários adicionais. Esta técnica pode ajudar a reduzir a parcialidade nos dados e evita que alguém possa influenciar indevidamente o resultado.- Entrevista: feitas com participantes experientes.- Análise da causa-raiz: a análise da causa-raíz é uma técnica específica para identificar um problema, descobrir as causas adjacentes que levaram a ele e desenvolver ações preventivas.

Análise SWOT (strength, weakness, opportunity e threat): tem a finalidade de aumentar a abrangência dos riscos identificados. Primeiramente, a técnica identifica forças e fraquezas da organização. Geralmente esses fatores são identificados pela técnica de Brainstorming. Depois a técnica identifica as oportunidades do projeto. Elas são resultantes das forças da organização, bem como as ameaças decorrentes da fraqueza.

EAR (estrutura analítica de riscos): é uma representação, organizada hierarquicamente, dos riscos identificados do projeto, ordenados por categoria e subcategoria de risco, que identifica diversas áreas e causas de riscos potenciais.

As organizações podem aumentar o desempenho do projeto se concentrando nos riscos de alta probabilidade. O processo “Realizar a análise qualitativa dos riscos” avalia a prioridade dos riscos identificados usando a sua relativa probabilidade, os seus impactos nos objetivos. A análise qualitativa dos riscos é um meio rápido e econômico de estabelecer prioridades do processo de “Planejar as respostas aos riscos” e define a base para a realização da análise quantitativa dos riscos.

O que determina o(s) método(s) a ser(em) usado(s) para analisar quantitativamente os riscos são a disponibilidade de tempo e orçamento e necessidade de declarações qualitativas e quantitativas sobre os riscos e impactos.

O que pode influenciar o processo “Realizar a análise quantitativa de riscos”:- informações sobre projetos semelhantes já concluídos;- estudos de projetos semelhantes feitos por especialistas em riscos;- bancos de dados de riscos disponibilizados pelo setor ou pelas fontes proprietárias.

Page 60: Apam

Uma pessoa é identificada e designada para assumir a responsabilidade de cada resposta ao risco.

O processo de “Monitorar e controlar os riscos” mostra se um risco foi modificado ou que pode ser desativado; mostra se as políticas e os procedimentos do gerenciamento dos riscos estão sendo seguidos e determina se as reservas para contingências de custo ou cronograma devem ser modificadas de acordo com a avaliação atual dos riscos.O processo de “Monitorar e controlar os riscos” engloba a atualização dos bancos de dados de lições aprendidas e os modelos de gerenciamento dos riscos do projeto para benefício de futuros projetos.

###Engenharia de software

Gerência de projetos - gerência de aquisições

Engloba os processos necessários para compra/venda de produtos e serviços de fora da organização executora do projeto.

Processos:- planejar as aquisições: processo de documentação das decisões de compras do projeto, especificando a abordagem e identificando fornecedores em potencial;

- realizar as aquisições: processo de obtenção de respostas de fornecedores, seleção de um fornecedor e adjudicação;

- administrar as aquisições: processo de gerenciamento das relações de aquisição, monitorando o desempenho do contrato e realização de mudanças e correções conforme necessário;

- encerrar as aquisições: o processo de finalizar todas as aquisições do projeto.

A organização pode ser tanto o comprador, quanto o vendedor dos produtos, serviços ou resultados de um projeto.

O gerenciamento de aquisições também abrange a administração de todos os contratos emitidos por uma organização externa e a administração das obrigações contratuais atribuídas à equipe do projeto pelo contrato. Os processos envolvem contratos que são documentos legais entre um comprador e um fornecedor.

Com o gerenciamento ativo do ciclo de vida do contrato e uma redação cuidados dos termos e condições das aquisições, alguns riscos identificáveis podem ser evitados, mitigados ou transferidos para um fornecedor. Um projeto complexo pode envolver o gerenciamento de múltiplos contratos ou sub-contratos simultaneamente ou em sequência. Nesses casos, o ciclo de vida de cada contrato pode terminar durante qualquer fase do ciclo de vida do projeto.

Page 61: Apam

Este processo de “Adquirir aquisições” envolve determinar se será contratado apoio externo e, em caso de afirmativo, o que e como será contratado, o quanto é necessário e quando será realizado.

No processo de “Realizar aquisições” recebe licitações e propostas e aplica critérios de seleção previamente definidos para escolher um ou mais fornecedores que sejam qualificados para realizar o trabalho e aceitáveis como fornecedor.

Em projetos maiores com vários fornecedores, um aspecto fundamental da “Administração de contratos” é gerenciar as interfaces entre os diversos fornecedores.

Muitas organizações tratam a administração de contratos como uma função administrativa separada da organização do projeto.Uma das principais preocupações ao fazer o pagamento dos fornecedores é que exista uma relação rigorosa entre os pagamentos feitos e o trabalho realizado.

###Sistemas de informacao

Data mining (DM)

É o processo de garimpar dados a fim de encontrar informações "implícitas" nos bancos de dados. Atua junto a um data warehouse (armazém de dados) (DWH). O uso de data mining é fortemente recomendável desde o início na fase de projeto do data warehouse. As ferramentas de DM deveriam ser projetadas para facilitar seu uso em conjunto com o DWH.A descoberta de conhecimento em banco de dados (KDD) é mais do que DM. Envolve seleção de dados, limpeza, enriquecimento, transformação ou codificação, DM e construção de relatórios e apresentação da informação descoberta.O resultado da mineração pode ser descobrir os seguintes tipos de informação "nova":- regras de associação: por exemplo, se um cliente compra equipamentos de vídeo, ele pode também comprar outros componentes eletrônicos.- padrões sequenciais: por exemplo, suponha que um cliente compre uma câmera, e que dentro de 3 meses ele compre materiais fotográficos de forma que dentro dos próximos 6 meses, ele deverá comprar um acessório. Isso define um padrão sequencial de transações.- árvores de classificação: por exemplo, clientes podem ser classificados por frequência de visitas por tipo de financiamento utilizado por quantidade comprada, ou por afinidade com tipos de itens. Algumas estatísticas podem ser geradas para cada classe de cliente.A data mining precisa ser precedida por significativa preparação de dados antes que ela possa gerar informação significativa que influencie as decisões de negócio.

Os resultados do DM podem ser mostrados em gráficos, listagens ou tabelas resumidas.Predição: data mining pode mostrar como certos atributos dos dados irão se comportar no futuro.Identificação: padrões de dados podem ser usados para identificar uma atividade, um evento ou existência de um item.Classificação: data mining pode particionar os dados e as diferentes categorias podem ser identificadas em combinação de parâmetros.

Page 62: Apam

Otimização: um objetivo do data mining pode ser otimizar o uso de recursos limitados como espaço, tempo, dinheiro ou materiais. Pode ser, também, maximizar lucros sob certas restrições como é estudado em PO.

É comum descrever o conhecimento descoberto a partir da data mining de cinco modos:- regras de associação: relacionam a presença de um conjunto de itens com outros. Uma mulher que compra bolsa está propensa a comprar sapatos. Um raio X que indique a presença de A e B, provavelmente indicará a presença de C.- hierarquia de classificação: criar uma hierarquia de classes a partir de eventos ou transações. Uma população pode ser dividida em N faixas de risco de crédito baseado no histórico de transações de crédito dessa população.- padrões sequência: um conjunto de ações ou eventos é investigado tentando deduzir outros.- padrões com séries temporais: similaridades podem ser encontradas em uma série temporal de dados.- clustering (agrupamento): uma dada população de eventos ou novos itens pode ser dividida em conjuntos de elementos similares.Para a maioria das aplicações, o conhecimento desejável é uma combinação dos tipos citados.

Métodos tradicionais de Data Mining:

Classificação: associa ou classifica um item a uma ou várias classes categóricas pré-definidas. Uma técnica estatística apropriada para classificação é a análise discriminante. Os objetivos dessa técnica envolvem a descrição gráfica ou algébrica das características diferenciais das observações de várias populações, além da classificação das observações em uma ou mais classes predeterminadas.

Análise de outliers: um banco de dados pode conter dados que não apresentam o comportamento geral da maioria. Eles são denominados outliers (exceções). Muitos métodos de mineração descartam esses outliers como ruído indesejado. Entretanto, em algumas aplicações, tais eventos raros podem ser mais interessantes do que os que ocorrem regularmente. Exemplo: descobrir padrões de comportamento de professores que publicam um número muito grande de artigos e que fogem ao padrão dos demais professores.

Clustering: ramo da Estatística Multivariada que engloba métodos utilizados para descobrir estruturas em um conjunto complexo de dados. O objetivo principal de clustering é separar objetos ou observações em classes naturais de forma que os elementos pertencentes a um mesmo grupo tenham um alto grau de semelhança ou similaridade, enquanto que, quaisquer elementos pertencentes a grupos distintos, tenham pouca semelhança entre si.

Análise de Séries Temporais: determina características seqüenciais, como dados com dependência no tempo. Seu objetivo é modelar o estado do processo extraindo e registrando desvios e tendências no tempo.

Regras de Associação: determinam relações entre campos de um banco de dados. A idéia é a derivação de correlações multivariadas que permitam subsidiar as tomadas de decisão. A busca de associação entre variáveis é, freqüentemente, um dos propósitos das

Page 63: Apam

pesquisas empíricas. A possível existência de relação entre variáveis orienta análises, conclusões e evidenciação de achados da investigação. Uma regra de associação é definida como se X então Y, ou X ⇒ Y, onde X e Y são conjuntos de itens e X ∩ Y = ∅. Diz-se que X é o antecedente da regra, enquanto Y é o seu conseqüente.

###Sistemas de informacao

Data Warehouse (DWH)

Data warehouse tem por característica ser orientado por assuntos, por manter dados históricos, centralizado, focado em aspectos estratégicos e não normalizado.

Data Warehouses virtuais proporcionam visões de bancos de dados operacionais que são materializadas para acesso eficiente. 

Diferem dos bancos de dados tradicionais em vários aspectos.Os BD tradicionais são feitos para transações, enquanto os DWH são feitos especificamente para tomadas de decisão. Estes são otimizados para a recuperação de dados, enquanto aqueles são para processamento rotineiro de transações.Por isso os DWH são bem diferentes dos BD tradicionais em sua estrutura, funcionalidade, desempenho e propósito.Vários tipos de aplicações são suportados: OLAP, DSS e data mining.OLAP (Online analytical processing): análise de dados complexos a partir do DWH. Ferramentas OLAP empregam capacidade de computação distribuída para análises que requerem mais armazenamento e processamento.DSS (decision support system): também conhecido como EIS (enterprise information systems), dão apoio aos tomadores de decisões com dados de alto nível para decisões complexas e importantes.

Os DWH tem quantidades grandes de dados podendo ser originadas de múltiplas fontes.

Os modelos nos DWH podem ser multidimensionais. Exemplos seriam os períodos fiscais de uma organização, os produtos e as regiões.

Os DWH são livres de restrições do ambiente transacional. Com isso há um ganho de eficiência no processamento das consultas.Ferramentas e técnicas utilizadas: transformação de consultas, interseção e união de índices, funções especiais ROLAP (OLAP relacional) e MOLAP (OLAP multidimensional), extensões de SQL, métodos avançados de junção e varredura inteligente.DOLAP (Desktop OLAP): oferece maior portabilidade para usuários do OLAP. O processamento é feito no cliente.

Funcionalidades das ferramentas OLAP em DWH:- Roll up: dados são resumidos com generalização crescentes.- Drill down: níveis crescentes de detalhes são revelados (complemento de roll-up).- Drill across: ex.: pular da visão de ano para dia (sem passar por mês)- Drill through: Estou na dimensão de tempo e mudo para produto.- Pivoteamento (ou rotação): mudança de uma hierarquia dimensional para outra.

Page 64: Apam

- Slice and dice (fatiar e cortar em cubos): execução de operações de projeção nas dimensões.- classificação: os dados são classificados segundo o valor ordinal.- seleção: os dados estão disponíveis por valor ou faixa de valores.- atributos derivados: atributos são calculados por operações sobre valores armazenados e derivados.O desempenho dos processamentos em DWH são melhorados com os SMP (symmetric multiprocessor), cluster, MPP (massive parallel processor) e a combinação entre eles.

O gerenciamento de projeto (projeto, construção e a implementação de um DWH) é uma consideração importante e desafiadora. Pode-se consumir anos desde a conceituação até a implementação.São projetados para leitura, mas não é uma estrutura totalmente estática. O esquema deve mudar para tratar essas mudanças.

A qualidade e a consistência de dados são duas questões muito importantes no DWH.Os dados vem de múltiplas fontes onde a nomenclatura é diferente, definições de domínio, coisas do tipo.Toda vez que um banco de dado fonte muda, o administrador do DWH deve considerar essas mudanças.

Latência de dados, em data warehouse, significa a rapidez de entrega dos dados ao usuário final.

Medidas aditivas são as que podem ser calculadas através de funções de agregação SUM e COUNT.Medidas não aditivas são as que não podem ser calculadas por funções de agragação. Elas precisam ser recalculadas.

ODS - operational data storage: é um banco de dados que é geralmente usado e é designado para integrar dados de múltiplas fontes para operação adicionais nos dados. Os dados são passados de volta para o SO para mais operações e para o DW fazer relatórios.Normalmente, um ODS é feito para conter dados atômicos com histórico limitado que é capturado em tempo real ou quase em tempo real. Comparativamente, um ODS é como uma memória de curto prazo, enquanto o DW é como uma memória de longo prazo.

DDS - dynamic data stores: é usada para extrair, transformar e migrar resultados. Armazena, limpa e transforma dados extraídos dos SO's e também prepara os dados para carregar nos armazéns de dados DSS.

Os dados do DWH devem estar em um nível baixo de granularidade e na 3FN.Baixo nível de granularidade = muitos detalhes.Alto nível de granularidade = poucos detalhes.

Uma chave surrogate (substituta) é uma chave que substitui a chave primária. Ela é única para cada linha na tabela. A vantagem dela, em DW, é que, se a coluna da chave primária mudar, ela (surrogate key) não precisa mudar. Se não houvesse a SK, toda vez que a coluna da chave primária mudar, a chave primária precisaria ser "passada" pra outra coluna.

Page 65: Apam

###Sistemas de informacao

BPM é um conceito para otimizar os resultados das organizações através da melhoria dos processos de negócios.Processos de negócios são um conjunto de atividades que estruturará a organização com o objetivo de produzir resultado para o cliente.

BPM pode ser pensado, também, como enfoque disciplinado para identificar, desenhar, executar, documentar, medir, monitorar, controlar e melhorar processos de negócio, automatizados ou não, para alcançar resultados consistentes e alinhados com os objetivos estratégicos da organização.

O BPM CBOK diz o que fazer e não como fazer.

“Negócio” se refere a pessoas que interagem para executar um conjunto de atividades de entrega de valor a cliente e gerar retorno de investimento a partes interessadas. No Guia CBOK "negócio" abrange todos os tipos de organizações com ou sem fins lucrativos, incluindo governamentais.

Nesse contexto, "processo" é um conjunto definido de atividades ou comportamentos executados por pessoas ou máquinas para alcançar uma ou mais metas. Os processos são disparados por eventos específicos e apresentam um ou mais resultados que podem conduzir ao término do processo ou a transferência de controle para outro processo.

Processos são compostos por várias tarefas ou atividades inter-relacionadas que solucionam uma questão específica. No contexto do gerenciamento de processos de negócio, um "processo de negócio" é definido como um trabalho ponta-a-ponta que entrega valor aos clientes. A noção de trabalho ponta-a-ponta é chave, pois, envolve todo o trabalho cruzando limites funcionais necessários para entregar valor aos clientes.

Gerenciamento de Processo de Negócio (BPM) é uma abordagem disciplinada para identificar, desenhar, executar, documentar, medir, monitorar, controlar e melhorar processos de negócio automatizados ou não para alcançar os resultados pretendidos consistentes e alinhados com as metas estratégicas de uma organização.(Lembrar que pode ser automatizado ou não.)

BPM requer um compromisso significativo da organização que, frequentemente, introduz novos papéis, responsabilidades e estruturas às organizações tradicionais orientadas a funções.

BPM é habilitada por tecnologia através de ferramentas para modelagem, simulação, automação, integração, controle e monitoramento de processos de negócio e de sistemas de informação que suportam esses processos.

BPMS é um sistema que auxilia a realização de BPM. É um software que executa os processos.- Automatiza o ciclo completo de gestão de processos (execução, controle e monitoração).

Page 66: Apam

- Ele tem habilidade de visualizar e antever problemas de processos de negócios antes de serem traduzidos em software;- Forçar ou reforçar melhores práticas e procedimentos requeridos;- Gerenciar e monitorar desempenho de operações e pessoas;- Automatizar tarefas repetitivas;- Alterar regras de negócio e lógica de softwares corporativos sem requerer recursos de TI;- Assegurar entrada precisa de dados;

Tirado do BPMS Adeptia (BPMS1.pdf):- documentar e formalizar processos de negócios, tarefas e regras;- forçar decisões de negócios especificando os em processos;- assegurar que processos são constantes e repetitivos e não ad-hoc;- gerar novas oportunidades de renda trazendo produtos e serviços para o mercado mais rápido do que competidores;- acelerar retorno no investimento realizando economia de custo significativa na integração de projetos;- encurtar os ciclos de vida de processos e gerenciar exceções.

Características esperadas de um profissional de processos: atitude, liderança, disposição para correr riscos e conhecimentos de modelos de referência, metodologias, técnicas e ferramentas.

- Processos Primários:São processos ponta-a-ponta, interfuncionais e que entregam valor diretamente ao cliente. Eles representam as atividades essenciais da organização para cumprir sua missão. Geralmente fazem parte da Cadeia de Valor da organização. Os processos primários também são chamados de processos de negócio.

- Processos de Suporte:São os processos que dão suporte aos processos de primários, geralmente estes processos são recursos, infraestrutura e/ou requeridos pelos processos primários. Os processos de suporte não geram valor diretamente para o negócio, mas isto não significa que eles não são importantes para a organização.

- Processos de Gerenciamento: São processos que usados para medir, monitorar e controlar as atividades. Não adicionam valor ao cliente, mas garantem que a organização opere com efetividade e eficiência.

Papéis de gerenciamento de processos:- Dono do processo: dar suporte ao processo; responsável pelo desenho e desempenho final do processo; facilitar ações e fluxo de trabalho interno; monitorar indicadores de desempenho; incorporar melhorias ao processo;

- Analista de processo: responsável por projetos de transformação de processos; responsável por desenvolver e manter um repositório de modelos de referência e padrões, processos de negócio, medições; dar suporte para o desenho de novos processos de negócio. Ele tem como objetivo ajudar o dono do processo no diagnóstico

Page 67: Apam

e nas propostas de melhorias contínuas. Ele deve ter uma visão sistêmica, comunicação, liderança e conhecimento em técnicas (BPMN) e ferramentas (BPMS).

- Gerente funcional: responsável por unidade organizacional;

Áreas do conhecimento do BPM:

1. Gerenciamento de processos de negócios: trata dos conceitos fundamentais do BPM. Os principais conceitos são estabelecidos. Definições como “o que é negócio?”, “o que é processo?”, “o que é BPM?”, etc. BPM é uma disciplina de gestão, e não apenas uma tecnologia (BPMS). É necessário um compromisso contínuo da organização para que as atividades de BPM tenham impacto esperado.

2. Modelagem de processos: conjunto de habilidades e processos que permitem pessoas a compreender, comunicar, medir e gerenciar os componentes primários de processos de negócio. Nesta área temos as definições gerais sobre tudo que envolve a modelagem de processos e não apenas a sua diagramação. Reconhecimento das notações e das formas de representação de processos, independente do seu fabricante. Nesta área tem o reconhecimento formal das várias notações (linguagem gráfica visual para desenho de processo) e formas de representação de processos, cobrindo as seguintes notações como fluxograma, IDEF0, EPC, BPMN, etc.

3. Análise de processos: nesta área, há uma necessidade de se buscar uma visão realista do atual estado dos processos. Esta área trata das atividades, princípios e técnicas utilizados para a compreensão dos processos de negócio. São apresentadas atividades que buscam avaliar o ambiente do negócio, o levantamento e a definição das necessidades do negócio. Neste ponto de ciclo de vida, a análise se concentra na situação atual, também conhecida como análise "As is".

4. Desenho de processos: nessa área, as especificações dos processos de negócios são criadas após a realização da sua análise, cobrindo desde atividades mais essenciais até as atividades mais específicas tal qual a simulação de cenários. Os princípios de desenho de processos de negócios são estabelecidos. Realização do projeto de novos ou melhores processos. É nessa área que será feito o modelo "To be".

5. Gerenciamento de desempenho de processos: trata das definições nas formas de monitoramento e gerenciamento do desempenho. O monitoramento deve estar relacionado ao controle efetivo das operações corporativas, com tudo isso voltado aos objetivos da organização. Uma premissa desta área é "tudo aquilo que não pode ser medido, também não pode ser gerenciado.", sendo assim, a melhoria e a transformação de processos devem estar diretamente relacionados à capacidade corporativa em monitorar e gerenciar o resultado. Nesta área estabelecem-se os objetivos da medição, especificação clara dos medidores e das medidas, provimento da comunicação dos resultados e a análise dos dados coletados.

6. Transformação de processos: o objetivo desta abordagem é assegurar que os processos continuem suportando os objetivos do negócio e que a evolução seja tratada de forma planejada e estruturada por métodos conhecidos e largamente adotados no mercado como Seis Sigma, Lean, TQM, SCOR, VCOR, Custeio Baseado em Atividades, APQC entre outros. Para ter a transformação de processo, precisa-se da fase

Page 68: Apam

de implantação de processos, isto é, um produto de software precisa respeitar as etapas de validação e testes para então entrar em execução, mesmo que de forma humana. A transformação de processos está diretamente norteada pela melhoria contínua com entendimento de modelos e padrões.

7. Organização de gerenciamento de processos: trata das mudanças estruturais decorrentes da aplicação da gestão por processos. Caracteriza claramente como é uma organização centrada em processos, descrevendo sua estrutura, organização, gerenciamento e medição a partir dos seus componentes primários. Pode-se considerar a declaração das responsabilidades e características dos participantes de uma organização gerenciadas por processos, tais como dono do processo, gerente do processo, analistas e desenhistas de processos, arquitetos de processos, etc.

8. Gerenciamento de processos corporativos (EPM): grande necessidade de se maximizar resultados dos processos de negócios de acordo com as estratégias de negócio. Estas estratégias precisam ser bem definidas e os objetivos funcionais estabelecidos precisam ser baseados nestas estratégias. Além disso, há três requisitos essenciais ao gerenciamento de processos corporativos: a) a medição centrada em clientes, b) processos em nível organizacional e c) plano de gerenciamento e melhoria de processos em nível organizacional.

9. Tecnologias de gerenciamento de processos de negócios: trata das tecnologias que facilitam a aplicação prática do BPM e apresenta a arquitetura comum aos produtos encontrados no mercado atual, bem como suas características específicas que os caracterizam formalmente como ferramentas de execução, monitoria e gerenciamento de processos ou BPMS. As características comuns às arquiteturas vigentes nas ferramentas BPMS são:- Visualização e simulação de processos;- Gerenciamento e monitoria de atividades;- Estabelecimento, uso e gestão das regras de negócio;- Capacidade de integração sistêmica e de dados;- Adoção e realização de atividades segundo Workflow;- Adoção de elementos de notações de processos;- Suporte e biblioteca de melhores práticas.

Fatores-Chave de Sucesso BPM:Esforços bem sucedidos de BPM tipicamente envolvem vários fatores incluindo práticas organizacionais, de gerenciamento, de processo e tecnológicos. O guia BPM CBOK cobre muitos fatores-chave de sucesso para iniciativas de BPM no escopo organizacional.

Estratégia de Negócio:Alinhamento de estratégia, cadeia de valor e processo de negócio a experiência tem mostrado que as organizações mais bem sucedidas na implementação de BPM dedicam atenção especial ao alinhamento da estratégia de negócio, definições da cadeia de valor e processos de negócio.

###Sistemas de informação

Page 69: Apam

BPM

Ciclo de Gerenciamento de Processos

Processo de Planejamento e Estratégia:Nessa etapa são vistas as necessidades de alinhamento estratégico dos processos. Segundo o Guia CBOK, deve-se desenvolver um plano e uma estratégia dirigida a processos para a organização, onde sejam analisadas suas estratégias e metas, fornecendo uma estrutura e o direcionamento para gerenciamento contínuo de processos centrados no cliente. Além disso, são identificados papéis e responsabilidades organizacionais associados ao gerenciamento de processos, aspectos relacionados a patrocínio, metas, expectativas de desempenho e metodologias.

Análise de Processos de Negócio:A análise tem por objetivo entender os atuais processos organizacionais no contexto das metas e objetivos desejados. Ela reúne informações oriundas de planos estratégicos, modelos de processo, medições de desempenho, mudanças no ambiente externo e outros fatores, a fim de compreender os processos no escopo da organização como um todo. Durante essa etapa são vistos pontos como: objetivos da modelagem de negócio, ambiente do negócio que será modelado, principais partes interessadas e escopo da modelagem (processos relacionados com o objetivo geral). A análise de processos incorpora várias técnicas e metodologias, de forma a facilitar as atividades dos envolvidos com a identificação do contexto e diagnóstico da situação atual do negócio. Dentre as possíveis técnicas, temos: Brainstorming, Grupo Focal, Entrevista, Cenários, Survey/Questionário e 5W1H. Parte dessas técnicas será empregada pelo analista de negócios para entender e documentar um processo ou reelaborar sua versão.A Metodologia de Modelagem de Processos apresenta, em detalhes, técnicas úteis à etapa de análise de processos, além de fornecer uma análise comparativa de cada uma delas, discutindo pontos fortes e deficiências com base em uma avaliação conceitual e operacional.

Desenho e Modelagem de Processo de Negócio:Segundo o Guia CBoK, o desenho de processo consiste na “criação de especificações para processos de negócio novos ou modificados dentro do contexto dos objetivos de negócio, objetivos de desempenho de processo, fluxo de trabalho, aplicações de negócio, plataformas tecnológicas, recursos de dados, controles financeiros e operacionais, e integração com outros processos internos e externos".Já a modelagem de processo é definida como "um conjunto de atividades envolvidas na criação de representações de um processo de negócio existente ou proposto", tendo por objetivo "criar uma representação do processo em uma perspectiva ponta-a-ponta que o descreva de forma necessária e suficiente para a tarefa em questão". Alternativamente chamada de fase de “identificação”, a modelagem pode ser também definida como “fase onde ocorre a representação do processo presente exatamente como o mesmo se apresenta na realidade, buscando-se ao máximo não recorrer à redução ou simplificação de qualquer tipo”. O Guia CBOK ressalta, no entanto, que a modelagem de processos pode ser executada tanto para o mapeamento dos processos atuais como para o mapeamento de propostas de melhoria.

Implementação de Processos:

Page 70: Apam

A etapa de implementação é definida pelo Guia CBOK como a fase que tem por objetivo realizar o desenho aprovado do processo de negócio na forma de procedimentos e fluxos de trabalho documentados, testados e operacionais, prevendo também a elaboração e execução de políticas e procedimentos novos ou revisados.

Monitoramento e Controle de Processo: É de suma importância a contínua medição e monitoramento dos processos de negócio, fornecendo informações-chave para os gestores de processo ajustarem recursos a fim de atingir os objetivos dos processos. Dessa forma, a etapa de implementação avalia o desempenho do processo através de métricas relacionadas às metas e ao valor para a organização, podendo resultar em atividades de melhoria, redesenho ou reengenharia.

Refinamento de Processo:A etapa de refinamento ou transformação é, segundo o Guia CBOK, responsável pela transformação dos processos, implementando o resultado da análise de desempenho. Ela ainda trata de desafios associados à gestão de mudanças na organização, à melhoria contínua e à otimização de processo. Alternativamente, é chamada de “encenação”, revendo o modelo de processo e implantando na prática as mudanças propostas após o estudo de variados cenários.

###Sistemas de informação

BPM

Nível de Maturidade de Processos:A visão atualmente utilizada de Gestão de Processos de Negócio define um ciclo de vida de um processo que parte de sua descoberta e segue até sua implementação.De modo a tornar a instituição apta à implantação de uma solução tecnológica de gerenciamento de processos, desenvolveu-se um modelo de maturidade de processos de negócio, o Business Process Maturity Model.

O modelo encontra-se dividido em cinco níveis de maturidade, assim como os demais modelos baseados no Process Maturity Framework. Cada um de seus estágios representa a maneira como a organização é transformada na medida em que seus processos.

Nível 1 – InicialOs processos são executados de maneira ad-hoc, o gerenciamento não é consistente e é difícil prever os resultados.

Nível 2 – GerenciadoA gestão equilibra os esforços nas unidades de trabalho, garantindo que sejam executados de modo que se possa repetir o procedimento e satisfazer os compromissos primários dos grupos de trabalho. No entanto, outras unidades de trabalho que executam tarefas similares podem usar diferentes procedimentos.

Nível 3 – PadronizadoOs processos padrões são consolidados com base nas melhores práticas identificadas pelos grupos de trabalho, e procedimentos de adaptação são oferecidos para suportar

Page 71: Apam

diferentes necessidades do negócio. Os processos padronizados propiciam uma economia de escala e base para o aprendizado através de meios comuns e experiências.

Nível 4 – PrevisívelAs capacidades habilitadas pelos processos padronizados são exploradas e devolvidas às unidades de trabalho. O desempenho dos processos é gerenciado estatisticamente durante a execução de todo o workflow, entendendo e controlando a variação, de forma que os resultados dos processos sejam previstos ainda em estados intermediários.

Nível 5 – OtimizadoAções de melhorias pró-ativas e oportunistas buscam inovações que possam fechar os gaps entre a capacidade atual da organização e a capacidade requerida para alcançar seus objetivos de negócio. Cada um dos níveis de maturidade (2 a 5) é composto por áreas de processos que habilitam a capacidade respectiva de cada nível. Dessa forma, a área de processo é estruturada para alcançar metas específicas na criação, suporte e sustentação do estado organizacional característico de cada nível. Cada uma dessas áreas é composta por uma coleção de melhores práticas integradas, as quais dizem o que deve ser feito, mas não de que forma deve ser feito. As organizações ficam, então, livres para estabelecer os métodos e abordagens que considerem mais adequados para satisfazer as metas e objetivos de cada área de negócio.

###Sistemas de informação

SOA (Arquitetura orientada a serviços)

É uma abordagem arquitetural corporativa que permite a criação de serviços de negócio interoperáveis que podem ser facilmente reutilizados e compartilhados entre aplicações e empresas. Estes serviços acontecem por meio de um conjunto de interfaces de serviços fracamente acoplados, onde um serviço não necessita de detalhes técnicos da plataforma dos outros serviços para a troca de informação ser realizada.Os serviços são implementados através de componentes com baixo acoplamento. SOA provê independência de plataforma, linguagem e tecnologia.

É um estilo que promove integração entre o negócio e a TI através de serviços. SOA preconiza como resultado: maior agilidade para atender as novas demandas, flexibilidade para atender as mudanças, redução de custo e reuso de ativos (serviços).

Utiliza topologia de rede para a troca de mensagens.Serviço: tarefa repetitiva de negócios. Recebe requisições e responde encapsulando todo o detalhe do seu processamento. É uma unidade de trabalho feita por um fornecedor de serviço para fornecer resultados finais requeridos por um consumidor de serviço.É invocado através de protocolos de comunicação independentes da localização e da tecnologia de suporte.Arquitetura é a estrutura do sistema composta pelos elementos de software, propriedades visíveis destes elementos e o relacionamento entre eles.

SOA não é tecnologia, produto, ferramenta, apenas o uso de WebService, BPM.Os serviços são funções de negócio que implementam as processos de negócio.Pode haver composição de serviços.

Page 72: Apam

Os serviços devem ser descobertos dinamicamente. Devem evitar que recursos sejam alocados por muito tempo.Serviços devem ser reusados. SOA provê integração de sistemas.

Componentes básicos de uma SOA: provedor de serviço; consumidor de serviço; registro de serviço.

ESB (Enterprise Service Bus) (Barramento de serviços corporativos)É um padrão arquitetural que otimiza a distribuição da informação entre diferentes tipos de aplicações provendo transparência de localização. (SOA 6.pdf, slide 17).

###Sistemas de informacao

Workflow

Workflow é o movimento de documentos e/ou tarefas através de um processo de trabalho. É o aspecto operacional de um procedimento de trabalho: como as tarefas são realizadas, quem as executa, suas ordens de execução, como elas são sincronizadas, como estas tarefas estão sendo acompanhadas.Nada mais é que resultado da evolução da expressão "automação de processos".Vantagens do workflow:- usuários não perdem tempo escolhendo em qual item trabalhar;- possibilidade de processamento paralelo, onde duas tarefas são executadas ao mesmo tempo;- garantia de que o trabalho seja executado da forma como foi planejado;- os gerentes podem cuidar da equipe e das tarefas de negócios, tais como desempenhos individuais, otimização de processos e casos especiais. Um exército de empregadas não é mais necessário.

Workflows podem ser caracterizados de formas distintas:

Ad hoc: descrevem processos simples onde é difícil encontrar um esquema para a coordenação e cooperação de tarefas, onde não há um padrão fixo para o fluxo de informações entre as pessoas envolvidas. Geralmente usa-se o email como plataforma quando é informatizado. Exemplo: processos de escritório, documentação de produtos e propostas de vendas.

Produção: workflow de produção é pré-definido e priorizado, suportando assim um grande volume. O trabalho pode ser pré-definido ou seguir um procedimento geral. Exemplo: processamento de requisição de seguros, de faturas bancárias e de cartão de crédito.

Administrativo: meio termo entre o ad hoc e o de produção. Envolve atividades fracamente estruturadas, repetitivas, previsíveis e com regras simples de coordenação de tarefa. Exemplo: processamento de ordem de compras e autorização de viagens e férias.

###Sistemas de informacao

Page 73: Apam

ERP (Enterprise resource planning): Planejamento de recurso empresarial ou sistemas integrados de gestão empresarial.

Pode-se definir ERP como um pacote de software de negócios que permite à companhia automatizar e integrar a maioria dos processos de negócios, compartilhar práticas e dados comuns através de toda a empresa e produzir e acessar em um ambiente de tempo real.

Os pacotes ERP são pacotes comerciais de software, são integrados, são desenvolvidos a partir de modelos-padrão de processos, tem grande abrangência funcional, utilizam um banco de dados corporativo e requerem procedimentos de ajuste (precisam ser adaptados para atender a uma determinada empresa).

Os sistemas ERP são geralmente divididos em módulos que se comunicam e atualizam um banco de dados, de modo que, informações alimentadas num módulo, são instantaneamente disponibilizadas para os demais módulos que delas dependam.

Os sistemas ERP são uma evolução dos sistemas MRP II (manufacturing resource planning) cujo princípio é o cálculo de necessidades, uma técnica de gestão que permite o cálculo, viabilizado pelo uso de computador, das quantidades e dos momentos em que são necessários os recursos de manufatura (pessoas, materiais, equipamentos, etc.) para que se cumpram os programas de entrega de produtos com um mínimo de formação de estoques.

Os sistemas ERP garantem que as empresas não tomem decisões sem levar em consideração seus impactos sobre a cadeia de fornecimento. As decisões de produção são afetadas e afetam todas as outras áreas da empresa. Para tomar melhores decisões, essas interações devem ser levadas em consideração. O software é o meio para conseguir esta interação dos processos de decisão.

Os sistemas ERP:- são pacotes de softwares comerciais;- são desenvolvidos a partir de modelos-padrão de processos de negócio (uso do termo "best practices");- são integrados;- tem grande abrangência funcional;- utilizam um banco de dados corporativo;- requerem procedimentos de ajuste;

Genericamente, sistemas integrados podem ser caracterizados como sistemas informatizados que são utilizados em conjunto por membros de diferentes departamentos dentro de uma mesma organização.

Os sistemas ERP realmente integrados são construídos como um único sistema empresarial que atende aos diversos departamentos da empresa. O fato de um sistema ERP ser integrado não significa necessariamente que uma empresa está integrada. O sistema é meramente uma ferramenta para a empresa atingir este objetivo.

Page 74: Apam

A utilização de um banco de dados centralizado traz desafios organizacionais significativos para a empresa, mas traz bastante compensação o que faz valer a pena. Esta prática é preconizada (recomendada) pelos sistemas ERP.

Uma diferença dos sistemas ERP e outros sistemas de software tradicionais é a abrangência funcional dos primeiros, isto é, os sistemas ERP abrangem uma ampla gama de funções empresariais. Normalmente nos sistemas tradicionais, somente uma função empresarial era atendida. Nos sistemas ERP várias são atendidas. A ideia é tentar atender ao máximo possível de atividades. É claro que existem pacotes que superam as funções relacionadas nos sistemas ERP. A necessidade de utilização destas funções obriga a criação de uma interface de comunicação entre os sistemas ERP e outros sistemas.

A adaptação é o meio através do qual o sistema ERP é preparado para ser utilizado em uma determinada empresa. É improvável que um pacote vá atender exatamente aos requisitos da empresa, o que gera discrepância entre os dois (pacote e empresa).

###Sistemas de informacao

ECM (Enterprise Content Management)

As empresas precisam administrar seus documentos. Alguns estão em banco de dados. Outros estão em lugares diversos sem uma relação entre si. Com o aumento destes documentos, há uma dificuldade de encontrar o que se procura, leva-se muito tempo. O uso de sistemas ECM confere maior agilidade e segurança nos processos críticos de uma oganização. Os sistemas ECM permitem o gerenciamento das informações não-estruturadas, enquanto elas existirem.Os sistemas ECM, associados às informações de banco de dados estruturados e disponibilizados na internet, permite às organizações maximizar o valor das informações perante seus fornecedores, clientes e, também, internamente, de forma online e em tempo real.

###Banco de dados

Regras de integridade

São condições impostas à qualquer atualização nos banco de dados para que os dados sejam precisos/corretos.Tipos de restrições:- declarativa: diz respeito ao uso de constraints e rules.- procedural: diz respeito ao uso de stored procedures e triggers.

Aspectos:- integridade de domínio: dados que são permitidos nas colunas da tabela.- integridade de entidade: refere-se à unicidade de registros na tabela.- integridade referencial: usada para manter consistência entre as tuplas.

###

Page 75: Apam

Banco de dados

Indexação

Índices densos: possuem uma entrada de índice para cada registro.Índices esparsos: possuem entradas de índices para apenas alguns dos valores.

Índices primários: contem dois campos. Um indica a chave primária e o outro indica um ponteiro para um bloco de disco. Ordenado pela chave primária. É um índice esparso. Gasta menos espaço, mas não é tão eficiente quanto o secundário.

Índices clustering: quando o campo de classificação pode ter valores repetidos. Nesse caso, os campos são agrupados e ordenados. Esparso. Gasta menos espaço, mas não é tão eficiente quanto o secundário.

Índices secundários: é ordenado através de qualquer campo. Gasta mais espaço, mas é mais rápido do que o primário.

Existem, também, índices com múltiplos níveis.

###Banco de dados

Controle de concorrência

Bloqueio binário: lock(x), unlock(x), read(x), write(x). variável de bloqueio binário. 1 = bloqueado. 0 = desbloqueado. Vantagem: simples de se implementar. Desvantagem: restrito (se uma transação precisar de X somente para leitura, mesmo se X estiver bloqueado, seria bom se a transação pudesse acessar mesmo assim.)- Uma transação T deve garantir o lock antes de read e write;- Uma transação T deve garantir o unlock depois de read e write;- Uma transação T não resultará em um lock em X se ele já estiver bloqueado.

Bloqueio de múltiplo modo: os estados de X, agora, são: read_lock (leitura compartilhada: resolve o problema da restrição do bloqueio binário), write_lock (escrita exclusiva: somente uma transação pode escrever no item) e unlock.- Uma transação T deve garantir read_lock ou write_lock antes de ler_item;- Uma transação T deve garantir write_lock antes de escrever_item;- Uma transação T deve garantir unlock depois de escrever ou ler item;- Uma transação T não vai gerar uma operação read_lock ou write_lock se ela já controlar o bloqueio de leitura (compartilhado) ou de escrita (exclusivo). Há exceção;- Uma transação T só pode resultar em unlock se ela tiver controle de leitura ou escrita sobre o item.A exceção é se somente T controlar o item X, então pode haver uma promoção de bloqueio. Caso contrário, T deve esperar. (Promoção de bloqueio = de read para write. Rebaixamento de bloqueio = write para read).

Bloqueio de 2-fases básico: uma transação pode usar X e não pode liberá-lo por precisar de bloquear Y. Ela pode bloquear Y antes de usá-lo e depois usar X. Garante escalonamento seriáveis por conflito.

Page 76: Apam

Requer que cada transação emita solicitações de bloqueio e desbloqueio em duas fases: 1: fase de expansão/crescimento * transação pode obter bloqueios; * transação não pode liberar bloqueios; 2: fase de encolhimento * transação pode liberar bloqueios; * transação não pode obter bloqueios;O algoritmo garante serialização.Não garante ausência de deadlock.

Bloqueio compartilhado: usados para operação de leitura que não alteram ou atualizam dados, como uma instrução SELECT.

2PL conservador: bloqueia todos os itens antes de começar a usá-los. Dead-lock free. Difícil de usá-lo na prática.

2PL estrito (mais popular): não libera nenhum dos seus bloqueios exclusivos (escritos) até que ela efetive ou aborte. Não é dead-lock free.

2PL rigoroso: não libera nenhum dos seus bloqueios exclusivos e compartilhados até que ela efetive ou aborte.

Problemas: starvation (quando uma transação não pode continuar por um período indefinido enquanto as outras transações podem. Acontece quando o esquema de espera para itens bloqueados for parcial, dando prioridade para algumas transações sobre as outras)e deadlock.

* Ordenação das transações por timestamp.* Controle de concorrência otimista: faz tudo que tiver que fazer. Depois tem uma fase de verificação pra ver se alguma atualização violou a serialização.

Atualização perdida: ocorre quando duas transações, que acessam o mesmo item do BD, possuem operações intercaladas entre si, tornando o valor do item incorreto.

###Banco de dados

Recuperação de falhas

Garantia da atomicidade e durabilidade de transações.

técnicas:- steal: dados na cache podem ser gravados antes do commit. (não há necessidade de manter blocos bloqueados por transação)- not steal: dados na cache não podem ser gravados antes do commit. (processo de recovery mais simples; evita dados de transação inacabada sendo gravados no BD)- force: assim que os dados alcançam o commit, eles são gravados no BD. (garante a durabilidade da transação o mais cedo. permite o REDO se necessário).

Page 77: Apam

- not force: os dados não precisam ser gravados no BD ao atingir o commit. (permanecendo em cache, eles podem ser utilizados por outras transações de forma mais rápida)

Implementação de um meio estável:

- replicação da informação em vários meios de armazenamento não-volátil independentes;- uso de sistemas RAID;- armazenar backups em locais fisicamente diferentes;- manter cada bloco de armazenamento em sites remotos;

- Atualização in-place: grava o item no mesmo lugar do valor antigo. É necessário Log gravado antes do BD.- Shadowing: grava o item em uma localização diferente. Não é necessário o Log gravado.- Write-ahead logging: na atualização in-place, o valor da imagem anterior deve ser gravado em Log antes que o valor da imagem depois seja gravada no BD.

###Banco de dados

BD distribuídos (BDD)

Os bancos de dados estão num mesmo local físico.12 regras para um SGBDD:

1. autonomia local: cada nó deve prover mecanismos de segurança, bloqueio, acesso, integridade e recuperação após falha.2. não dependência de um nó central: ele seria um único ponto de falha e o sobrecarregaria com perda de desempenho.3. operação contínua.4. transparência/independência de localização.5. independência de fragmentação: as tabelas podem estar fragmentadas localizadas fisicamente em diferentes nós.6. independência de replicação: os dados podem estar replicados em vários nós da rede.7. processamento de consultas distribuído.8. gerenciamento de transações distribuídas: as regras para transações locais devem ser as mesmas para transações distribuídas (ACID).9. independência de hardware.10. independência de sistema operacional.11. independência de rede.12. independência de SGBD.

vantagens:- compartilhamento de dados e controle distribuído.- maior confiabilidade.- maior disponibilidade.- maior desempenho no processamento.- maior escalabilidade.

Page 78: Apam

desvantagens:- custo maior.- grande potencial para bugs.- aumento de overhead de processamento.- questões de projeto específicas.- dificuldades para obter conhecimento global.

###Banco de dados

Arquitetura de 3 camadas: apresentação (serviços de aplicativo), negócio (serviços de negócios) e acesso aos dados (serviços de dados).

A funcionalidade de particionamento ao longo destas camadas fornece um padrão relativamente confiável para fins de escalabilidade: adicionando servidores e equilibrando novamente o processamento entre os servidores de dados e de negócios, um grau maior de escalabilidade é atingido.

Apresentação: oferece o conteúdo estático e dinâmico personalizado. Disponíveis em vários formatos. As classes desta camada utilizam os serviços oferecidos pela camada de negócio.Lidam com as questões de apresentação da GUI e tendem a ser executados em uma estação de trabalho de desktop dedicada com um ambiente operacional gráfico de janelas. As alterações na funcionalidade tendem a ser ditadas pela facilidade de uso.

Negócio: nela estão todas as classes inerentes ao domínio da aplicação. Refletem o conhecimento codificado pelos processos de negócio. Eles manipulam e sintetizam as informações vindas da camada de acesso aos dados e mandam para a camda de apresentação. Os serviços de negócio são geralmente usados por mais de um usuário e, por isso, tendem a ser alocados em servidores especializados, embora possa residir nos mesmos nós que os serviços de dados.

Acesso aos dados: persistência e acesso aos dados da aplicação. Ela isola o resto da aplicação.Tendem a ser implementados através de uma tecnologia de servidor de banco de dados que tendem a ser executados em um ou mais nós de alto desempenho e alta largura de banda que atendem a centenas ou milhares de usuários. É bem provável que esta camada seja alterada quando a representação e o relacionamento entre as informações armazenadas também forem alterados.

Vantagens: modularidade, manutenibilidade, extensibilidade, reusabilidade.

Desvantagens: qualquer alteração em um nome de campo de tabela terá que ser feita em diversas partes da aplicação.

###Engenharia de software

Arquitetura de projeto

Page 79: Apam

Padrão MVC: model-view-controllerUm dos mais utilizados na atualidade.- modelo contém as funcionalidades e os dados.- visão mostra as informações para o usuário.- controlador manipula as entradas.

A idéia é que uma mesma lógica de negócios possa ser acessada e visualizadas através de diversas interfaces.

###Engenharia de software

Padrões de projeto (Padrão criacional)

Abrange a configuração e inicialização de objetos e classes.

Fábrica abstrata:Provê uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.Adia a criação de objetos de sua subclasse concreta.Só cria os produtos, é obrigação das subclasses concretas criá-los de fato.

Método fábrica:Provê uma interface para criar um objeto, mas deixa a subclasse decidir qual classe instanciar.É útil quando uma classe não pode antecipar a classe de objetos que deve ser criada.

Builder:Separa a construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações.(É o caso de um conversor de formatos de textos. Existe a classe TextConverter que chamará as subclasses específicas, por exemplo, ASCIIConverter, TeXConverter, etc. Toda vez que o RTFReader ler um tipo de texto, ele envia o pedido de conversão para o TextConverter. Este, por sua vez, chama a subclasse correta.)A classe que converte se chama Builder (TextConverter). A que lê se chama Director (RTFReader).

Prototype:Especifica novos tipos de objetos a criar usando uma instância prototípica e cria novos objetos copiando este protótipo.

Singleton:Assegura que uma classe tenha somente uma instância e provê um ponto de acesso a ela.

###Engenharia de sotware

Projeto arquitetural

Page 80: Apam

Consiste em um mapeamento do sistema de forma que sejam representadas as diferentes partes com suas interações e mecanismos de interconexões. Ou seja, ele representa a estrutura dos componentes de dados e programas que são necessários para construir um sistema.

Elementos de um projeto arquitetural: arquitetura do computador, o SO, o SGBD, a linguagem de programação, a análise de sistemas legados e tratamentos de requisitos não funcionais.Toda a tecnologia do sistema deve ser definida no projeto arquitetural.

Um projeto arquitetural facilita no desenvolvimento do sistema, prevê possíveis problemas que poderiam ter impacto e estrutura o sistema e diz como os componentes trabalham em conjunto.

A elaboração de um documento de projeto arquitetural (DPA) consiste em:

- confirmação do entendimento de um DRS (documento de requisito de software): esta etapa é importante quando o desenvolvedor não participou da fase de requisitos.

- construção de um modelo sistêmico: propicia a produção de um modelo abstrato que descreve de forma simplificada o sistema. Utiliza um critério de decomposição hierárquico, composto de símbolos organizados de acordo com algumas convenções, construídos com ajuda de métodos e ferramentas.

- especificação do projeto arquitetural: atribuem-se funções aos componentes maiores obtidos dos requisitos de software e definem-se as estruturas de dados, fluxos de controle, utilização de recursos computacionais e especifica a linguagem de programação.Devem-se modelar os processamentos utilizando-se diagramas estruturais, esquemas de transformação e diagramas de objetos e comportamento.Os recursos do computador precisam ser estimados e colocados no DPA.

- especificação dos testes de integração: são documentados os testes de integração, o plano de verificação e de validação do software. Neste documento descreve-se a abrangência, a abordagem e os recursos requeridos para os testes de integração.

- refinamento dos planos gerenciais: abrange a gerência de projeto, gerência de configuração, verificação, validação e garantia de qualidade.

- execução de uma revisão técnica formal (RTF): há uma revisão técnica formal nos documentos gerados anteriormente garantindo, a eles, atualização através de uma rede distribuída.

###Engenharia de software

Planejamento de projeto de software

Características:

Page 81: Apam

problemas: o software é intangível; não há um processo de software padrão; a ES não possui a mesma tradição que a engenharia civil, mecânica e elétrica; grandes projetos de software são únicos normalmente.

pontos comuns: técnicas de planejamento e gerenciamento são amplamente aplicadas em outras áreas, além de serem atividades comuns em outras engenharia.

Principais atividades: elaboração de propostas, planejamento e cronograma de projeto, orçamento do projeto, monitoramento e revisões, seleção e avaliação do pessoal, elaboração de relatórios e apresentações.

Estrutura de um plano de projeto:- introdução;- organização de projeto;- análise de riscos;- requisitos necessários de hardware e software;- estrutura analítica de trabalho;- cronograma de projeto;- mecanismo de monitoramento e elaboração de relatórios.

Tipos de planos:- plano de projeto de software: descreve atividades, orçamento, recursos, cronograma, equipe, etc.- plano de qualidade: descreve os procedimentos de testes de qualidade que serão utilizados.- plano de validação: descreve a abordagem, os recursos e os métodos utilizados para validação.- plano de manutenção: prevê requisitos, custos e esforço necessário para a manutenção.- plano de desenvolvimento da equipe: descreve como habilidades e a experiência são desenvolvidas.

###Engenharia de software

Gestão de qualidade

ISO 9000: disse como produz, produziu como disse, provar que produziu como disse.ISO 9000-3: aplicação da ISO 9000 para software; considera que o processo produtivo é orientado a projetos e não a operações.ISO 9126: métricas para determinação da qualidade do produto.ISO 14598: processo de avaliação de qualidade do produto.

###Engenharia de software

Gerência de configuração

Tarefas:- tarefas preliminares: identificar os itens a serem gerenciados; descrever como os itens selecionados se relacionam (relação de equivalência, dependência, derivação, sucessão e

Page 82: Apam

variante); planejar as linhas-base dentro do ciclo de vida do projeto; descrever como os itens serão arquivados e recuperados do repositório.

- identificação: atribuir nomes únicos a cada componente; pelo nome deve ser possível reconhecer a hierarquia entre os componentes e a evolução de cada um dos componentes.

- controle de mudanças: durante o processo de desenvolvimento de software, mudanças descontroladas podem levar rapidamente ao caos; deve ser instituído na organização um processo que combine procedimentos humanos e ferramentas automatizadas para proporcionar um mecanismo de controle das mudanças; o processo de controle de mudança deve ser implementado depois que uma linha-base for fixada;

- controle de versão: todas as versões devem ser armazenadas e identificadas (isso assegura o controle sobre as versões), sendo que isso é feito com uma ferramenta geralmente; é conveniente que a identificação das versões seja feita em forma de árvores;

- auditoria de configuração: assegura que alterações foram feitas apropriadamente; a identificação e controle ajudam a manter a ordem, mas, para assegurar que a configuração foi implementada apropriadamente, há necessidade de auditorias; existem dois tipos de auditorias: funcional (preocupa-se com aspectos internos dos arquivos, compreendendo uma verificação técnica formal nos itens de configuração. Tenta descobrir omissões ou erros na configuração que degradam os padrões de construção de software) e física (complementa a auditoria funcional, determinando características que não foram consideradas durante a revisão);

- relato de situação: relatar todas as pessoas envolvidas no desenvolvimento e manutenção de software;

- controle de interface: controla os itens de configuração que são afetados por itens que não estejam sendo controlados;

- controle de subcontratados e fornecedores: coordenam a forma como os itens (que foram adquiridos por outra empresa ou já prontos) são testados e incorporados ao repositório do projeto.

Linhas-base: ajuda a controlar as mudanças sem impedir seriamente as mudanças justificáveis.Geralmente cria-se uma linha-base ao final do ciclo de vida de um projeto ou depois de uma manutenção.

Um item de configuração (produto de software, produto de desenvolvimento) que passou pela linha-base se diz congelado. Suas características são:- revisto formalmente e teve a concordância das partes;- serve como base para um trabalho futuro;- é armazenado como um repositório de itens de configuração;- pode ser alterado somente através de procedimentos formais de controle de mudança.

Page 83: Apam

Repositório de itens de configuração é um local sob controle de acesso onde os itens de configuração são armazenados depois de terem sido liberados por uma linha-base.

Nos pontos estabelecidos pelas linhas de referência, os itens de configuração devem ser identificados, anlisados, corrigidos, aprovados e armazenados no repositório de itens de configuração.

Os itens de um repositório só podem ser alterados mediante uma solicitação de alteração formalmente aprovada pelo gerente de configuração. <= evita inconsistências.

Check in/check out = métodos para se trabalhar os itens de configuração que já estão no repositório.

Check out = quando uma alteração é solicitada, uma cópia do item é colocada na área de trabalho do desenvolvedor. Dentro de sua área de, o desenvolvedor tem total liberdade de trabalho.

Check in = revisão e recolocação do item de configuração no repositório.Neste caso, uma nova linha base é traçada de forma que uma nova configuração (contendo o item alterado) seja formada e congelada no repositório.Após o check in, libera-se a permissão de alteração deste item de configuração.

Os itens de configuração tem controle de acesso. Ao se fazer check out em algum item de configuração, este passa a ficar bloqueado.

Ferraments de gerência de configuração de software: CVS (concurrent version system), RCS (revision control system), SCCS (source code control system), VersionWeb (web pages versions management).

###Engenharia de software

Engenharia reversa e reengenharia

Os elementos da engenharia reversa: nível de abstração (quanto maior o nível de abstração, mais compreensíveis se tornam as informações); completitude do processo (nível de detalhes que é fornecido em cada nível de abstração); interatividade (grau de participação do ser humano na engenharia reversa - quanto maior a abstração, maior deve ser a interatividade ou a completitude será prejudicada); direcionalidade (sentido único: toda informação extraída do código fonte é usada para manutenção. sentido duplo: a informação é usada para alimentar uma ferramenta de reengenharia).

Documentos utilizados para realizar engenharia reversa: código fonte, informações do usuário e/ou analista, documentação existente (manual do usuário, manual do sistema, DFD's, fluxogramas, etc.).

Manutenções adaptativas: adequar o software ao ambiente.Manutenções evolutivas: adicionar funcionalidades ao software.Manutenções corretivas: correção de erros.Mudanças preventivas: redução de esforço em futuras mudanças.

Page 84: Apam

Reengenharia de software melhora o entendimento do software, prepara ou melhora o software aumentando sua manutenção, seu reuso e sua extensão.

###Engenharia de software

Padrões de projeto (Padrão estrutural)

Lida com as interfaces e a implementação das classes e dos objetos.

Adapter:Converte a interface de uma classe em outra que o cliente espera. Ele permite que classes trabalhem juntas sendo que não seria possível devido às suas incompatibilidades.

Bridge:Desacopla uma abstração de sua implementação de forma que as duas podem variar independentemente.

Composite:Compõe objetos em estruturas de árvores para representar hierarquias todo-parte. Permite o cliente a tratar os objetos individuais e grupos de objetos de forma uniforme.

Decorator:Adiciona responsabilidades individuais a um objeto dinamicamente. Provê uma alternativa flexível à herança extendendo funcionalidade.O decorator precisa de uma classe abstrata decoradora e componentes concretos para o padrão ser útil.

Façade:Provê uma interface unificada para um conjunto de interfaces em um subsistema. Define uma interface de nível maior que faz o subsistema mais fácil para usar.

Flyweight:Minimiza o uso de memória por compartilhar o máximo de dados possíveis com objetos similares.

Proxy:Provê um substituto para outro objeto para controlar o acesso a esse objeto.

###Engenharia de software

Padrões de projeto (Padrão comportamental)

Lida com as interações dinâmicas entre grupos de classes e objetos.

Chain of responsability:

Page 85: Apam

Evita o acoplamento entre o remetente e o destinatário. Encadeia os objetos destinatários a passar a requisição ao longo de uma cadeia até que um objeto a manipula.

Command:Encapsula uma requisição em um objeto. Assim permite parametrizar clientes com diferentes requisições, filas ou requisição de log e suporta operações de desfazer.

Interpreter:Dada uma linguagem, define uma representação para a sua gramática junto com um interpretador que usa a representação para interpretar sentenças na linguagem.

Iterator:Provê um meio de acessar, sequencialmente, os elementos de um objeto agregado sem expor sua representação.

Mediator:Define um objeto que encapsula como um conjunto de objetos interage. Promove um acoplamento fraco evitando que os objetos se refiram uns aos outros explicitamente e permite que você varie as interações deles indepentemente.

Memento:Sem violar a encapsulamento, captura e externaliza o estado interno de um objeto de forma que este estado possa ser restaurado mais tarde.

Observer:Define uma dependência entre objetos de um para muitos de forma que, quando um objeto muda de estado, os outros são notificados e atualizam automaticamente.

State:Permite um objeto a mudar seu comportamento quando seu estado interno muda.

Strategy:Define uma família de algoritmos, encapsula cada um e os faz trocáveis. Permite que o algoritmo varie independentemente dos clientes que o usam.

Template Method:Define um esqueleto de um algoritmo em uma operação, adiando alguns passos da herança. Permite às subclasses redefinirem certos passos de um algoritmo sem alterar a estrutura do algoritmo.

Visitor:Representa uma operação a ser realizada nos elementos da estrutura de um objeto. Permite você definir uma operação sem mudar as classes dos elementos no qual ele opera.

###Linguagem de programação

J2EE

Page 86: Apam

Camadas:

Cliente: corresponde à camada de apresentação que roda no cliente.- Thin client: Usualmente não fazem consultas a banco de dados, não executam regras de negócio complexas ou se conectam à apliações legadas.- Applets: pequena aplicação java que executa na JVM instalada no web browser.- application clients: provê uma interface para que os usuários executem suas tarefas remotamente.

Apresentação: corresponde à camada de apresentação que roda no servidor (ex. processos que tratam requisições HTTP, páginas servidoras). Componentes são criados usando tecnologia JSP. Servlets são classes criadas programaticamente e que, dinamicamente, processam requisições e constroem uma resposta.

Negócio: corresponde à camada de domínio. É responsável por implementar, via enterprise beans, a lógica de negócio da aplicação referente a um domínio de negócio particular.Existem três tipos de enterprise beans:

- session beans: representam a comunicação com o cliente. Quando o cliente finaliza a conexão, o session bean e seus dados também são removidos da memória.- entity beans: representam os dados persistentes armazenados no banco de dados.- message-driven beans: combina características de session beans e java message service (JMS) message listener, o que permite que este receba mensagens JMS assincronamente.

Integração: fonte de dados.

Recursos: recursos externos com os quais a fonte de dados se comunica.

###Sistemas de informacao

Data warehouse

Ferramenta SSIS (SQL Server Integration Service) permite alterar os dados-fonte para um formato único. Utilizado na geração de dados OLAP utilizando tabelas unificadas.

O armazenamento dos cubos pode ser MOLAP, HOLAP e ROLAP.MOLAP: cubos e fonte de dados ficam gravados no OLAP (rápido, mas ocupa muito espaço).HOLAP: cubos ficam no OLAP e os dados ficam no OLTP (relativamente rápido e ocupa relativamente pouco espaço - modelo mais utilizado).ROLAP: a cada consulta o cubo deve ser inteiramente processado (lento, mas ocupa pouco espaço).

###Banco de dados

Page 87: Apam

RAID

O objetivo é melhorar o desempenho de modo a equiparar as taxas (muitos diferentes) entre os discos e as memórias dos processadores.Striping (separação em tiras) de dados usa o paralelismo para melhorar o desempenho do disco. Permite que diversas entradas e saídas sejam realizadas em paralelo, fornecendo, assim, altas taxas globais de transferência.Além disso, por meio de informações redundantes, usando paridade ou outro código para correção de erros, a confiabilidade pode ser melhorada.

Desvantagens: operações adicionais de entradas e saídas para a gravação, processamento adicional para a manutenção da redundância e para a execução de recuperação de erros, além da capacidade de disco adicional para armazenar as informações redundantes.

Existem 7 tipos de RAID (0 até 6).

RAID 0: utiliza striping de dados, não possui redundância, apresenta melhor desempenho de gravação (já que as atualizações não precisam ser duplicadas). A reconstrução, em caso de falha, é mais fácil neste nível.

RAID 1: utiliza o espelhamento de disco. Neste nível, há um agendamento de pedido de leitura no disco com menor expectativa de atrasos de busca e rotacional.Usado em aplicações críticas como transações de entrada e saída.

RAID 2: utiliza redundância estilo memória através do uso de códigos Hamming, os quais contêm bits de paridade. Inclui tanto a detecção e a correção de erros, embora hoje isso não seja mais necessário já que os HD's já vêm com essa propriedade.

RAID 3: usa um único disco de paridade, contando com a controladora para identificar qual deles falhou.Taxas de transferência mais altas.Usada em armazenamento de grandes volumes.

RAID 4 e 5: usam striping de dados no nível de bloco. O nível 5 distribui dados e informação de paridade por todos os discos. O nível 5 é usado em armazenamento de grandes volumes.

RAID 6: aplica o esquema de redundância P+Q usando os códigos Reed-Solomon para proteção contra até duas falhas de discos por meio de apenas dois discos redundantes.

RAID 1 + 0: combina o striping com espelhamento.

###Engenharia de software

Métrica

Page 88: Apam

Duas técnicas de medição importantes: FPA (Análise por ponto de função) e COCOMO (Construtive Cost Model). O FPA mede a complexidade do software pela quantificação de funcionalidade. O COCOMO busca medir esforço, prazo e tamanho da equipe. Ambos medem esforço necessário para a construção do software.

Outras métricas podem ser: número de classes e métodos, linhas de código por método, profundidade máxima da hierarquia de classes, número de defeitos relatados, número de pessoas-dia para desenvolver um componente, número de funções que chamam outra função (alto acoplamento), número de funções chamadas por outra função (alta complexidade), extensão do código (quanto maior, mais propenso a erro), quantidade de declarações aninhadas (quanto mais, mais propensa a erro), profundidade de árvore de herança (mais profundo, mais complexo), número de operações sobrescritas (um número alto indica que a classe mãe possa ser inadequada), etc.

No contexto de orientação a objeto, métricas associadas a classes podem ser usadas para avaliação da reusabilidade.Algumas métricas são de uso abrangente, enquanto outras são dependentes de paradigma de programação ou da linguagem em questão.O resultado pode variar muito dependendo do processo utilizado.

Existem 4 categorias básicas no desenvolvimento de software orientados a objetos: tamanho do sistema, tamanho de classe ou método, acoplamento e herança, classes ou métodos internos.

Medir pontos de função:- (funções transacionais) entrada externa (fornece dados a uma aplicação originados de um usuário ou transmitidas de outras aplicações),- saída externa (são originados de uma aplicação e fornece informações para o usuário),- consulta externa (entradas online que resultam na resposta imediata da aplicação sob a forma de uma saída online),- (funções de dados) arquivo lógico interno (grupo lógico de dados relacionados ou informação de controle identificado pelo usuário) e- interface externa (grupo lógico de dados relacionados ou informação de controle referenciado pela aplicação).Em uma tela serão exibidos os nomes, cpf's e empresas de cada indivíduo. Nesta tela tem somente uma função transacional (saída externa).

Complexidade ciclomática: determina a complexidade de um programa estruturado (cíclico). Foi desenvolvida em 1976 por Thomas J. McCabe e reflete diretamente o número de caminhos independentes que um programa pode tomar durante sua execução. Ela determina o limite superior para o número de testes que devem ser executados garantindo que todas as instruções serão executadas pelo menos uma vez.Existe uma fórmula para calcular a complexidade ciclomática: CC = E - N + 2 (E = edge, aresta, arco; N = node, nó). Outro modo é contar o número de loops fechados (que são formados por condicionais e loops) e somar ao número de pontos de saída (return).Segundo McCabe, se CC está entre:1 e 10 = método simples, sem risco;11 e 20 = métodos medianamente complexos, com risco moderado;21 e 50 = métodos complexos, de alto risco;51 ou mais = métodos instáveis de altíssimo risco.

Page 89: Apam

Se não tiver goto, então CC = número de comparações (sem “e” ou “ou”) + 1. Se uma comparação tiver “e”, então ela deve ser contada mais de 1 vez. Exemplo: if(x == 1 || x == 2) é igual a 2 comparações.

###Engenharia de software

Certificados CMMI valem por três anos*.CMMI e Métodos Ágeis podem ser compatíveis*.CMMI diz o que se espera de um processo, e não qual processo usar e como usar.CMMI tem que atender a expectativa do cliente (e não superar).

Arquivo posts_cmmi.pdfCategorias:

- Gerenciamento de projetos aparece no nível 2 até o 4.

Nível 2: planejamento do projeto; monitoramento e controle do projeto; gestão de acordo com o fornecedor.Nível 3: gestão integrada do projeto; gestão integrada de fornecedores; gestão de risco; integração de equipes.Nível 4: gestão quantitativa do projeto.

- Gerenciamento de processos só aparece no nível 3 pra cima.

Nível 3: treinamento organizacional; foco no processo organizacional; definição do processo organizacional.Nível 4: desempenho do processo organizacional.Nível 5: inovação e implantação organizacional.

- Processos de engenharia

Nível 2: gerenciamento de requisitos.Nível 3: desenvolvimento de requisitos; solução técnica; integração de produtos; verificação e validação.

- Suporte

Nível 2: gerenciamento de configuração; garantia de qualidade de processo e produto; medição e análise.Nível 3: análise e solução de decisões; ambiente organizacional para integração.Nível 5: análise e solução de causas.

* Fonte: www.sei.cmu.edu

###Linguagem de programação

J2EE

Page 90: Apam

Reflexão é um mecanismo para descobrir dados a respeito de um programa em tempo de execução. Com ela, é permitido conseguir descobrir informações sobre membros (campos), métodos, construtores de classes e superclasses de uma classe. Pode-se operar nos campos e métodos que foram descobertos.Pode-se determinar a classe de um objeto.Pode-se descobrir quais constantes e declarações de métodos pertencem a uma interface.Pode-se criar uma instância de uma classe cujo nome não sabemos até o tempo de execução.Pode-se obter e definir o valor do campo de um objeto.Pode-se invocar um método em um objeto.Pode-se criar um novo array cujo tamanho e tipo de dados só serão sabidos em tempo de execução.

A Java Reflection API é geralmente usada para criar ferramentas tais como debuggers, class browsers e construtores de GUI.

###Engenharia de software

Gerência de projetoRedes PERTMétodo dos 3 pontos:Fórmula para o valor esperado da atividade = (pessimista + otimista + 4 x provável)/6Fórmula para o desvio padrão = (pessimista - otimista)/6

###Engenharia de software

UML

Símbolos:+ público- privado# protegido~ pacoteitálico = abstrato ou virtualsublinhado = estático

###Engenharia de software

Diagrama de classes

Navegabilidade: serve pra indicar a associação entre duas classes. É representada por uma seta aberta. Quando não há setas, pressupõe-se que a associação é navegável nas duas direções.

Qualificadores: servem para definir e restringir ainda mais um conjunto de instâncias associadas a uma outra instância. Normalmente um qualificador reduz a multiplicidade

Page 91: Apam

do papel oposto. Os qualificadores são desenhados como pequenas caixas na extremidade da associação, anexados à classe qualificadora. Eles fazem parte da associação e não da classe. Uma caixa qualificadora pode conter vários valores de qualificador. Uma associação qualificadora é uma variante do atributo de associação.

Nomeação: é o nome de uma associação. Ele fica no caminho da associação ou adjacente ao caminho.

Multiplicidade: identifica a quantidade de entidades possíveis em uma associação.

Restrição: especifica uma condição que tem que ser verificada. Fica entre chaves.

###Linguagem de programação

J2EE

Padrões da camada de apresentação:

- Intercepting filter: viabiliza pré e pós processamentos de requisições.- Front controller: oferece um controlador centralizado para gerenciar o processamento de requisições.- Context object: encapsula estado de forma independente de protocolo para compartilhamento pela aplicação.- Application controller: centraliza e modulariza o gerenciamento de Views e de ações.- View helper: encapsula lógica não-relacionada à formatação.- Composite view: cria uma view composta de componentes menores.- Service to worker: combina front controller com um dispatcher e helper. Concentra-se em despachar a requisição.- Dispatcher view: combina front controller com um dispatcher e helper. Realiza mais processamento depois.

Padrões da camada de negócio:

- Business delegate: desacopla camada de apresentação e de serviços.- Service locator: encapsula lógica de consulta e criação de objetos de serviço.- Session façade: oculta a complexidade de objetos de negócio e centraliza controle.- Application service: centraliza e agrega comportamento para oferecer uma camada de serviços uniforme.- Business object: separa dados de negócio e lógica usando modelo de objetos.- Composite entity: implementa business object persistentes combinando Entity beans locais e POJO's (plain old java objects).- Transfer object (value object): reduz o tráfego e facilita transferências de dados entre camadas. Antigamente chamado de value object ou DTO.- Transfer object assembler: constrói um value object composto de múltiplas fontes. Antigamente chamado de value object assembler.- Value list handler: lida com execução de queries, caching de resultados, etc.

Padrões da camada de integração

Page 92: Apam

- Data access object: abstrai fontes de dados e oferece acesso tranparente aos dados.- Service activator: facilita o processamento assíncrono para componentes EJB.- Domain store: oferece um mecanismo transparente de persistência para objetos de negócio.- Web service broker: expõe um ou mais serviços usando XML e protocolos web.

Roadmap associa intenção com padrões. "Se você procura por isso, então use o padrão tal."Padrões se encaixam bem quando se procura alterar uma arquitetura para melhorar algum aspecto de um sistema, tal como performance, escalabilidade, reuso e manutenção.

###Linguagem de programação

Antipadrões JEE

É uma solução repetida de código ou de projeto que leva a um mau resultado:- Baixo desempenho;- Código difícil de manter;- Completo insucesso do projeto;AntiPatterns são “padrões”.

Também são soluções que ocorrem comumente no desenvolvimento de software.

Como os padrões, são organizados em catálogos seguindo um determinado template:- Descrição da forma geral- Sintomas e causas- Conseqüências

Ao contrário dos padrões, geram conseqüências negativas:- Estratégias de reestruturação (refatoração) da solução são sugeridas.

###Engenharia de software

Engenharia de requisito

A análise estruturada é uma atividade de construção de modelos onde os usuários obtem uma ideia mais clara do sistema através do diagrama de fluxo de dados. O DFD é uma ferramenta de modelagem que representa um sistema de informações como uma rede de processos interligados por fluxos e depósitos de dados.A análise estruturada não se preocupava com a organização, ou seja, não existiam conceitos de requisitos organizacionais, e também não existiam conceitos claros e relacionados à distinção entre requisitos funcionais e não funcionais.

A análise essencial é uma análise estruturada moderna que preservou todos os modelos de análise estruturada, porém definiu mais claramente os passos da metodologia.

Page 93: Apam

Um DFD está em equilíbrio com um DER se cada depósito do DFD corresponder a uma entidade, ou a um relacionamento ou à combinação de um tipo objeto e de um relacionamento do DER. Os nomes das entidades e dos depósitos devem coincidir.

Não há fluxo de dados diretamente de um depósito para o outro (ou para uma entidade), ou de uma entidade para outra (ou para um depósito) sem passar por um processo. Ele é necessário como intermediador.

A especificação de processos de um DFD pode ser feita através de tabelas de decisão, linguagem estruturada, condições pré-pós, fluxogramas e diagramas de Nassi-Shneiderman.

- DFD's ajudam o analista a: resumir a informação de como o sistema funciona; compreender os componentes principais do sistema; a definir funções reutilizáveis; compreender as interdependências entre subsistemas; desenvolver eficientemente uma aplicação.- É uma boa ferramenta de comunicação entre utilizadores e analistas.- Permite obter uma melhor estimativa dos recursos envolvidos no projeto global, em função dos recursos envolvidos em cada um dos processos.- Em geral, o detalhamento de um processo é feito por explosão.- Os processos primitivos são detalhados usando um dos muitos métodos para especificação de processos, tais como: subconjunto do português, pseudo-código, tabelas de decisão, árvores de decisão, condições pré-pós, fluxogramas, diagramas de Nassi-Shneiderman.

Tabelas de decisão são uma representação de ações com a indicação das condições em que devem ser executadas. Tem 4 quadrantes (condições: lista de todas as condições possíveis que surgem dentro de um processo. ações: lista de todas as ações possíveis que surgem dentro de um processo. regras: lista das diferentes combinações de condições possíveis. decisões: indicadores das ações a executar)Quadrante:

condições | regras---------------------ações | decisões

Existem quadrantes com entradas limitadas (somente valores binários no quadrante das regras)Existem quadrantes com entradas estendidas (admitem valores múltiplos no quadrante das regras)Existem quadrantes com entradas mistas (admitem valores múltiplos no quadrante das decisões)

Tabelas de decisão são úteis na descrição de processos que produzem ações baseadas em decisões complexas.São úteis na análise de regras complexas e processos de tomada de decisão.

Árvore de decisão é uma alternativa gráfica às tabelas de decisão.

Page 94: Apam

Condições pré-pós: uma forma de dizer qual é a transformação efetuada pelo processo sem explicitar o algoritmo utilizado. Com isso, o analista pode deixar a escolha do algoritmo para uma fase posterior.

Fluxograma representa lógica procedimental de forma não estruturada. Componentes: terminador (retângulo com lados arredondados), decisão (losângo), entrada/saída (paralelogramo), processamento (retângulo), conector (círculo) e ponte de ligação (pentágono).

Diagramas de Nassi-Shneiderman foram introduzidos como fluxogramas estruturados.

Componentes de um DFD

- fluxo de dados: pode ser considerado como um tubo que permite a passagem de um componente do DFD para outro componente do DFD. São responsáveis pela conexão entre processos, processo e entidade externa (vice-versa) e depósitos de dado e processos (vice-versa). É representado por um vetor com nome.

- processo: transforma entradas em saídas. Mostra algum trabalho executado em cima dos dados. É representado por uma bolha com nome dentro. O nome é um verbo no infinitivo com o objeto direto.

- arquivo: é um depósito temporário de dados. É representado por duas retas paralelas horizontais com o nome entre elas. Uma seta do processo para o arquivo significa operação de inclusão. Uma seta do arquivo para o processo significa operação de leitura. A seta dupla significa operação modificação ou exclusão.

- entidade externa: uma fonte ou destino, uma pessoa, ou empresa, ou departamento, ou sistema repousando fora do contexto do sistema que é originador ou receptor de dados no sistema. É representado por um quadrado com um nome dentro. Funciona sempre como origem/destino de dados.

###Sistemas de informacao

Datamart- Pequenos data warehouse;- Eficiência, velocidade de resposta;- Necessidades específicas de uma área;- Sistema de apoio ao gerenciamento de uma área de negócio;- Baseado, em sua grande maioria, na informação do DWH;- Unifica os requisitos específicos de uma área de negócio;

Vantagens competitivas de um datamart:- adaptabilidade;- velocidade de resposta;- posicionamento e sustentabilidade;

Resultado de um datamart:- aprendizagem;

Page 95: Apam

- adaptabilidade;- prever o futuro;

Quando um projeto inicia por datamarts departamentais especializados que mais tarde se consolidam em um data warehouse institucional, existe uma chance maior de surgirem problemas de inconsistência de metadados do que quando um data warehouse institucional dá origem a datamarts departamentais.

###Sistemas de informacao

Datamart (características)

Fato aditivo: são fatos que podem ser somados através de todas as dimensões da tabela fato.Fato semiaditivo: são fatos que podem ser somados através de algumas dimensões da tabela fato.Fato não aditivo: são fatos que não podem ser somados através de nenhuma dimensão da tabela fato.

Tabelas que, aparentemente, devem ser uma dimensão, podem ser apenas parte da métrica e não ser uma dimensão.Exemplo: CIDADE pode ser uma dimensão (quais cidades tiveram maior lucro?). Mas pode ser uma métrica também (quantas cidades participam?)

Tabelas fato: tabela que contém as medidas de interesse. Ex.: quantidade de vendas. Esta medida pode ser guardada com uma granularidade apropriada (grau de detalhe). Por exemplo, pode ser quantidade de vendas por loja por dia. Neste caso a tabela fato iria conter três colunas: coluna data, coluna loja e coluna de quantidade de vendas.

Tipos de tabelas fatoCumulativa (cumulative): descreve o que aconteceu durante um período de tempo. Os fatos são, em sua maioria, fatos aditivos.Instantâneo (snapshot): descreve o estado de coisas em uma instância particular de tempo. Usualmente inclui fatos semiaditivos e não aditivos.

Tabela de dimensão: provê informações detalhadas sobre os atributos. Por exemplo, uma tabela de dimensão para o atributo trimestre pode conter uma lista de todos os trimestres disponíveis no data warehouse. Cada linha pode ter vários campos, um para o ID que identifica o trimestre e um para informações adicionais, por exemplo, como o trimestre particular é representado em um relatório.

###Sistemas de informacao

Datamart (esquemas)

Esquema em estrela: um objeto simples (a tabela fato) fica no meio e é radialmente conectada a outras tabelas como uma estrela. Todas elas tem o mesmo nível de

Page 96: Apam

granularidade. Cada dimensão é representada por uma simples tabela. A linha entre as tabelas indica a relação da chave primária e a chave estrangeira.Um esquema em estrela pode ser simples ou complexo. O simples tem somente uma tabela fato, enquanto que o complexo tem mais de uma tabela fato. As dimensões não são normalizadas.

O esquema flocado (snowflake): extensão do esquema estrela, sendo que cada ponto da estrela explode em mais pontos. No esquema em estrela, cada dimensão é representada por uma única tabela dimensional, enquanto que em um esquema flocado, cada tabela dimensional é normalizada em múltiplas tabelas de dimensão, cada uma representando um nível na dimensão hierárquica. O número de dimensões aumenta para fins de normalização.

A principal vantagem do esquema flocado é a melhoria na performance devido aos requisitos de armazenamento de disco minimizados e menores tabelas de dimensão.A principal desvantagem é o esforço na manutenção pelo aumento no número de tabelas de dimensão.

Usar um modelo ou outro é dependente da decisão.

###Sistemas de informacao

Datamart (conceitos)

Modelo de dados dimensionais: são armazenados numa forma diferente da 3FN dos sistemas transacionais (OLTP).

Dimensão: categoria de informação. Ex.: dimensão tempo.Atributo: nível único dentro de uma dimensão. Ex.: mês é um atributo da dimensão tempo.Hierarquia: especificação dos níveis. Representa a relação entre os diferentes atributos dentro de uma dimensão.

Um modelo dimensional inclui tabelas fato e de dimensão. Uma tabela fato se liga a várias tabelas de dimensão. Duas tabelas fato não se relacionam entre si.

###Engenharia de software

Gerência de projeto (análise do valor agregado - earned value analysis está em desuso. Agora é PMI - project management institute)

Ferramenta que mede a performance pela comparação do custo do projeto com seu valor agregado. De forma resumida, significa analisar três curvas de desempenho: a do custo orçado do trabalho agendado, a do custo orçado do trabalho realizado e o custo real do trabalho realizado.

Método que permite um relato do status do projeto em termos de custo e tempo.Permite uma visão mais precisa do progresso do projeto.

Page 97: Apam

SPI (schedule performance index) ou SV (schedule variance): representa o percentual do cumprimento do cronograma.É dado pela razão do orçado realizado pelo orçado agendado.SPI < 100% -> o projeto está atrasado.

O gerenciamento do valor agregado considera as medidas de escopo, custos e cronograma para auxiliar a equipe de gerenciamento a avaliar e medir o desempenho e progresso do projeto.

Fórmulas:- Variação de prazo = valor agregado (VA) - valor planejado (VP); (verifica se o projeto está se atrasando)- Variação de custo = valor agregado - custo real (CR); (indica a relação do desempenho físico e os custos gastos. qualquer VC negativa é irrecuperável)- Variação de custo no final do projeto = orçamento no término (ONT) - quantia real gasta;- Índice de desempenho de prazos = VA/VP (< 1 => menos trabalho realizado do que planejado e vice-versa)- Índice de desempenho de custos = VA/CR (métrica mais crítica do GVA. < 1 => excesso de custo. > 1 => desempenho de custo abaixo do limite)- Estimativa no término (ENT) = CR + EPT (estimativa para terminar) bottom-up- ENT para o trabalho EPT no ritmo orçado = CR + ONT - VA;- ENT para o trabalho EPT executado ao IDC presente = ONT/IDC cumulativo;- ENT para o trabalho EPT considerando IDC e IDP = CR + [(ONT - VA)/(IDC cumulativo x IDP cumulativo)]- Índice de desempenho para término (IDPT) = (ONT - VA)/(ONT - CR);

###Engenharia de software

Testes

O plano de teste é um documento que define o nível de cobertura que deverá ser alcançado nos testes e, juntamente com outros documentos, permite que os testes sejam repetidos e controlados.Um plano de teste deve conter os objetivos do teste, abordagem do teste e premissas do teste, quais características e funcionalidades devem ser testadas, dados do teste (valores que deverão ser fornecidos como entrada para o sistema a ser testado), procedimentos do teste, tec.

Script de teste são instruções passo a passo que permitem a execução de um ou mais testes. Fornece informações para a implementação efetiva e eficiente de um subconjunto de testes necessários. Podem ser gerados automaticamente usando ferramentas de automação de teste.

Prova de conceito é um modelo prático que possa prova o modelo teórico estabelecido. Em TI, prova de conceito pode ser relacionado ao desenvolvimento de um protótipo como ferramenta para provar a viabilidade de um projeto.

Page 98: Apam

A avaliação de teste apresenta os resultados dos testes em termos de defeitos e cobertura.

###Sistemas de informacao

Ecommerce: comércio utilizando a internet. Pode ser desde comércio de produtos até serviços.- Vantagens do ecommerce: aumento no acesso (os clientes podem agora ter acesso aos produtos por todo o país e até mesmo no mundo inteiro, tudo isso estando em casa), custo reduzido, conveniência de compra, expansão (antes era custoso ter comércio em várias áreas).- Desvantagens: segurança e sumiço da taxa governamental.

B2C (business to commerce)Define um comprador e uma interface do vendedor usando tecnologia da internet. Dá ajuda aos modelos consumidores B2C.Vendedores podem ser especializados como Intershop, Openshop ou provedores de softare padrão como a Microsoft, Oracle, etc.- Funcionalidades centrais de uma venda online: gerenciamento de catálogo do produto, máquina de busca, gerenciamento de cesta de compra, identificação do cliente e a fatura e pagamento.- Funcionalidades desejadas: relatórios estatísticos, data mining, integração da funcionalidade de CRM (dar um perfil pro cliente, classificação do cliente, integração da central de chamada e gerenciamento de campanha), ponte com os sistemas ERP (planejamento de recurso empresarial).- Precauções: checar por certificados digitais, checar por preços de transporte, ver os produtos de clientes antigos, comprar com os cartões apropriados.

B2B (business to business)Definido como comércio eletrônico entre empresas.Algumas características: terceirizar funções no processo do comércio eletrônico, uso de software de gerenciamento de conteúdo para facilitar o gerenciamento dos sites, ativadores de comércio baseado em XML, etc.

B2G (business to government)Geralmente definido como comércio entre empresas e o setor público.Refere-se ao uso da internet para obtenção pública, procedimentos de licensa e outras operações relacionadas com o governo.

C2C (consumer to consumer)Comércio entre indivíduos privados e clientes.Aparece em 3 formas: leilões, sistemas P2P, classificados em portais.

M-commerce (mobile commerce)Compra e venda de bens e serviços através de tecnologia wireless. Ex.: uso de serviços bancários através do celular, serviços de informação e emissão de bilhete através do celular.

Page 99: Apam

###Linguagem de programação

Java

O modificador protected pode ser usado por classes do mesmo pacote da classe que tem a variável protegida. Pode ser usado por subclasses mesmo que estas não pertençam ao pacote da classe que tem a variável protegida.

O modificador de acesso padrão pode ser usado somente por classes do mesmo pacote.Subclasses de pacotes diferentes podem acessar o public e o protected.Classes de pacotes diferentes (sem ser subclasses) só podem acessar o public.Classes de mesmo pacote só não podem acessar o private.

O modificador final, quando é aplicado a uma classe, ela não pode ser extendida. Nos métodos, impede que eles sejam sobrescritos nas subclasses. Nas variáveis, impossibilita que elas sejam reinicializadas.Static não se aplica a classe. Só a métodos ou variáveis. Faz com que eles pertençam às classes, e não aos objetos.

Interface i = new ClasseQueImplementaInteface(); // isso pode.Mas, se i chamar métodos de ClasseQueImplementaInteface e que não tenham em Interface, dará erro.

###Engenharia de software

Decisões de projeto: um dos interessados (stakeholders) pede para adiantar a entrega do projeto. Neste caso, deve-se reunir com o patrocinador para discutir o acréscimo de recurso ou diminuir o escopo.

###Sistemas de informacao

Data warehouse: a tabela fato representa os dados que são necessários para que os usuários possam realizar as análises de negócio necessárias para tomadas de decisão.

###Engenharia de software

PMBoKAs atividades principais determinantes para o objetivo de um projeto: escopo, tempo, custo e qualidade.

Os cinco grupos de processos de gerenciamento de projeto são: iniciação, planejamento, execução, monitoramento e controle, encerramento.

Nem todos os processos e procedimentos do PMBoK são realmente necessários em todos os projetos.

Page 100: Apam

O gerente de projetos é a pessoa responsável pela condução do projeto para que o objetivo seja cumprido.Seu trabalho pode ser sintetizado em dois grandes grupos: planejar/controlar e comunicar.Ele, também, identifica requisitos do projeto, equilibra a demanda de tempo, custo, escopo e qualidade, estabelece objetivos de projeto claros e alcançáveis.

O PMBoK define um programa como um grupo de projetos relacionados, gerenciado de modo coordenado para a obtenção de benefícios e controle que não estariam disponíveis se eles fossem gerenciados individualmente.Um projeto pode estar ou não em um programa, mas um programa sempre terá projeto.

O portfólio é um conjunto de projetos ou programas e outros trabalhos, agrupados para facilitar o gerenciamento eficaz desse trabalho a fim de atingir os objetivos estratégicos de negócios. Os projetos ou programas do portfólio podem não ser interdependentes ou diretamente relacionados.

PMO (project management office) é usado frequentemente para o gerenciamento centralizado e coordenado dos projetos, programas e portfólios. As responsabilidades de um PMO podem variar desde dar suporte ao gerenciamento de um projeto até gerenciar o projeto (programa e portfólio) diretamente.

De acordo com a definição original de Hammer e Champy, a reengenharia é a implementação de mudanças radicais que, ao redesenhar os processos de trabalho, visam melhorar, de forma dramática, a eficácia da empresa, em todos os seus aspectos tais como custos, qualidade, serviço e velocidade. A Reengenharia está focada nos processos de grande amplitude, dentro de uma empresa, principalmente nos que atravessam várias áreas funcionais.

A Reengenharia, a Melhoria Contínua e a inspeção são processos distintos e necessários a uma empresa, mas complementares. Apesar de distintos, ambos:

1. Colocam ênfase na satisfação dos clientes;2. Usam processos de medida de eficácia;3. Têm foco nos processos de negócio;4. Fazem uso intensivo de trabalho de equipe;5. Mudam os valores e as crenças;6. Forçam tomadas de decisão nos níveis mais baixos da empresa;7. Necessitam do empenhamento absoluto dos níveis mais altos da empresa.

###Sistemas de informacao

Portais corporativos

É um meio de conduzir a maioria (se não todas) das interações de negócios, permitindo a clientes, parceiros, fornecedores, investidores, funcionários e outros interessados, um acesso imediato (24/7) às informações e serviços da empresa.

Page 101: Apam

###Lógica matemática

(Lembrar do c(ou)e e d(e)ou)Forma normal conjuntiva

A e B (A = a1 ou a2 ou an, B = b1 ou b2 ou bn)Ex.: (a1 ou a2) e (b1 ou b2)

Forma normal disjuntiva

A ou B (A = a1 e a2 e an, B = b1 e b2 e bn)Ex.: (a1 e a2) ou (b1 e b2).

Não pode ter negação fora dos parênteses. Em um literal sozinho pode.

¬(a1 e a2) ou (b1 e b2) <= não é forma normal disjuntiva.Tem que fazer (¬a1 ou ¬a2) ou (b1 e b2) <= porém, não é forma normal nem conjuntiva, nem disjuntiva.

###Sistemas de informacao

BPM

Diferenças entre organização funcional (OF) e organização orientada a processo (OOP):- OF não entende como uma visão interfuncional de processos pode trazer benefícios. OOP entende.- Na OF, o foco primário é em gerencia de departamento. Numa OOP, é em gerência de processos.- Na OF não envolve BPM na estratégia. Na OOP, sim.- Na OF a mentalidade é de punição. Na OOP a mentalidade é de melhorar processos e treinar pessoas.

###Sistemas de informacao

BPMN

É uma notação gráfica padronizada para desenhar processos de workflow. Tem como objetivo primário prover uma notação que seja compreendida por todos os usuários, como os analistas de negócios, desenvolvedores e as pessoas de negócios.

É uma notação gráfica que tem por objetivo prover recursos para modelar (desenhar), de uma forma padrão, os processos de negócio da empresa.

Elementos de uma BPMN: objetos de fluxo, objetos de conexão, swimlanes e artefatos.

Processo:

Page 102: Apam

Para o BPMN, processo é uma atividade realizada por uma empresa e composta por uma série de etapas e controles que permitem o fluxo de informações;O conceito de processo é extremamente hierárquico, iniciando “macro-processos” e indo até o nível de tarefa (menor nível dentro de processo);Processo de Negócio (business process) é conceituado como uma série de atividades que são realizadas por uma ou mais empresas;

Um BPD é o local para modelar o processo de negócio que pode ser formado por um ou mais processos. Estes processos dentro do processo de negócio podem ser formados por sub-processos.

O Mapeamento de Processo é uma ferramenta gerencial e de comunicação que tem a finalidade de ajudar a melhorar os processos existentes ou de implantar uma nova estrutura voltada para processos. Os processos de negócio são os primeiros processos a serem identificados, depois os processos de apoio (aos processos de negócio) e por fim os processos de controle e/ou reguladores. O mapeamento também auxilia a empresa a enxergar claramente os pontos fortes, pontos fracos (pontos que precisam ser melhorados tais como: complexidade na operação, reduzir custos, gargalos, falhas de integração, atividades redundantes, tarefas de baixo valor agregado, retrabalhos, excesso de documentação e aprovações), além de ser uma excelente forma de melhorar entendimento sobre os processos e aumentar a performance do negócio.Objetivo do Mapeamento de Processos:Identificar e buscar um melhor entendimento dos processos de negócios existentes (AS-IS) e dos futuros (TO-BE) para melhorar o nível de satisfação do cliente e aumentar desempenho do negócio.

Técnicas de Mapeamento de Processos:- Entrevistas, questionários, reuniões e workshops.- Observação de campo.- Análise da documentação existente.- Análise de sistemas legados.- Coleta de evidências.

O mapeamento é a elaboração de um diagrama ou mapa do processo de negócio e a documentação que descreve suas propriedades e características, que identifica as atividades realizadas e as informações que fluem entre elas.

Após o Mapeamento, inicia-se o trabalho de Modelagem. O primeiro documento resultante deste trabalho é o Mapa de Processos, o objetivo deste mapa é fornecer uma única visão dos processos da empresa, seus relacionamentos, atividades/tarefas, stakeholders, papéis e responsabilidades e o fluxo de valor dos processos.

O Mapa de processos deve ser apresentado em uma linguagem gráfica que seja simples e que facilite o entendimento de todos os envolvidos e que permita:- Exibir os detalhes dos processos de modo gradual e controlado;- Encorajar precisão na descrição do processo;- Focar a atenção nas interfaces entre os processos e- Prover uma análise de processos poderosa e consistente com o vocabulário de negócio

Page 103: Apam

Benefícios do Mapeamento e da Modelagem de Processo:- Melhora a comunicação;- Facilita a visualização;- Reduz o nível de abstração;- Ajuda no entendimento do que deve ser feito;- Auxilia na identificação de quem deve fazer o quê;- É a base documentação;

###Engenharia de software

Temas diversos

- Um projeto mal gerido pode causar atrasos no cronograma, produto de baixa qualidade, gastos fora do orçamento.

- Um bom líder deve ter a habilidade de motivar a equipe, organização, criatividade, entendimento do problema e comprometimento da qualidade.

- Paradigmas de equipe: fechado (organização hierárquica, cada um dos membros da equipe tem um papel definido na hierarquia), aleatório (equipe fracamente estruturada e sua organização depende da iniciativa individual), aberta (baseada na colaboração, com intensa comunicação e tomada de decisão baseada no consenso) e síncrono (baseada na decomposição de um problema e organiza os membros da equipe para trabalhar em cada parte, sem muita comunicação).

- A primeira atividade na gestão de um projeto de software é determinar o escopo.

- As métricas de processo são coletadas no decorrer de vários projetos e sua intenção é melhorar o processo de software em si.

- Uma informação útil na estimativa de projetos é o histórico com projetos semelhantes.

Page 104: Apam

- Viabilidade de software determina se um software pode ou não ser construído dadas as condições tecnológicas, financeiras, de tempo e de recursos. Ela deve ser estimada porque, se o software não for considerado viável, a sua construção deve ser descartada até que as condições mudem.

- Casos de uso não podem ser usados para estimar o tamanho de um projeto porque eles não tem um formato padrão, são escritos em diferentes níveis de abstração, representam uma visão externa e não indicam a complexidade de cada função a ser desenvolvida.

- Um gerente de software, se perceber que a data de entrega é impraticável, ele deve tentar proteger a equipe da pressão do cronograma, modificando o projeto de alguma forma. Uma opção é contratar mais pessoal. Outra solução é usar um modelo incremental e só garantir alguma funcionalidade no primeiro incremento.

- Princípios básicos de cronogramação: * compartimentalização (o projeto deve ser decomposto em um certo número de tarefas e atividades). * interdependência (a dependência entre as tarefas e atividades deve ser determinada; algumas devem ocorrer em sequência, outras podem ocorrer em paralelo). * definição de marcos de referência (marcos de referência devem ser definidos, indicando que, naquele ponto, um ou mais produtos de trabalho estarão prontos e revisados quanto à qualidade). * atribuição do tempo: a cada tarefa, deve ser atribuído um certo número de unidades de trabalho (ex.: pessoa-dia). Devem ser atribuídas também datas de início e término, que são funções das interdependência e trabalho. * validação do esforço: o gerente do projeto deve garantir que não mais do que o número disponível de pessoas seja cronogramado em um determinado momento. * responsabilidades definidas: cada tarefa deve ser atribuída a um membro específico. * resultados definidos: cada tarefa deve ter um resultado definido, normalmente um produto de trabalho.

- A estratégia reativa reserva recursos para lidar com os riscos quando eles se tornam problemas.- A estratégia proativa estabelece um plano para administrar os riscos que começa a ser executado no início do projeto.

- A qualidade do software não se restringe somente aos requisitos. Além deles, a qualidade inclui seguir normas de desenvolvimento explicitamente documentadas e outras características implícitas em qualquer projeto de software (manutenibilidade e usabilidade).

- A medida de confiabilidade é mais importante para o usuário do que o número de erros por linha de código porque a primeira só vai ser percebida pelo usuário.

- A engenharia reversa no contexto de engenharia de software é recuperar o projeto a partir do código fonte.

- Reestruturação de código altera a lógica interna de um programa sem afetar a arquitetura global.

Page 105: Apam

- A engenharia avante reconstrói um novo projeto a partir do projeto extraído através da engenharia reversa.

- Análise de inventário, no processo de reengenharia, serve para selecionar os programas que devem ser submetidos ao processo de reengenharia.

- Para decidir se vale a pena o processo de reengenharia deve-se levar em consideração o custo anual de manutenção do software antes e depois da reengenharia e o custo de investimento de reengenharia.

###Engenharia de software

Gerência de projeto

- Operações e projetos compartilham algumas características: são realizados por pessoas; estão sujeitos a limite no consumo de recursos; são planejados, executados e controlados;- Operações são contínuas e repetitivas. Projetos são temporários e exclusivos.- Operações representam tarefas que se repetem no dia a dia da organização (manutenção de serviços e processos).- SOW ou DT = statement of work ou declaração do trabalho: descrição dos produtos, serviços ou resultados a serem fornecidos. É encontrada no processo "Desenvolver o termo de abertura do projeto".- O patrocinador é quem fornece recurso financeiro, em dinheiro ou espécie. Tem papel significativa no escopo inicial e no termo de abertura. Ele pode autorizar mudanças no escopo do projeto, análises de final de fase e decisões de continuação ou cancelamento quando os riscos são particularmente altos.

###Engenharia de software

Testes de software

- Um bom caso de teste é aquele que tem alta probabilidade de achar erros ainda não descobertos.- Um teste bem sucedido é aquele que acha erros.- Os testes devem seguir os requisitos dos usuários.- Devem ser planejados antes de serem iniciados.- Devem ser realizados dos aspectos menos críticos aos mais críticos.- Testes exaustivos não são possíveis.- Devem ser realizados por diferentes pessoas, principalmente aquelas que não participaram do desenvolvimento.- O processo de teste deve iniciar junto com o projeto de desenvolvimento da aplicação.

Teste de unidade: teste da classe ou parte da classe. É realizado um teste de caixa branca.Teste de integração: grupo de classes que colaboram ou se comunicam.Teste funcional: apoiado nos casos de uso (requisitos funcionais). É realizado um teste de caixa preta.

Page 106: Apam

Teste do sistema: aplicação funcionando como um todo.Teste de aceitação: requisitos funcionais e de desempenho de acordo com a especificação do software.Teste de instalação: instalação da aplicação (hardware, software e documentação). Sistema em uso.

###Engenharia de software

Prototipagem: existem protótipos para validar requisitos não funcionais.

###Linguagem de programação

J2EE

Web contêiner cuida dos JSP e Servlets. A partir do EJB 3.0, o EJB tipo entity bean cedeu lugar ao JPA, passando a contemplar apenas os session e message-driven beans. Com isso o web contêiner pode gerenciar EJB's. Antes de 3.0 não podia.Web contêiner (também conhecido como servlet contêiner) é o componente de um servidor web que interagem com os servlets.

- Enterprise bean é um corpo de código com campos ou métodos para implementar módulos da lógica de negócio. - Há 3 tipos de enterprise beans: session beans, entity beans e message-driven beans.- Enterprise beans geralmente interagem com banco de dados.- Um dos benefícios do entity beans é que você não precisa escrever nenhum código SQL ou usar a API JDBC diretamente para realizar operações de acesso a banco de dados. O contêiner EJB faz isso. Entretanto se você sobrescrever a persistência container-managed padrão, você precisará de usar o JDBC diretamente. Se você escolher fazer o session beans acessar o banco de dados, você vai ter que usar o JBDC diretamente também.- O JDBC API te permite executar comandos SQL com a linguagem java. Pode-se, também, usar o JDBC API a partir de um servlet ou página JSP para acessar o banco de dados diretamente sem precisar de um enterprise bean.- Um servlet é uma classe java usada para extender as capacidades dos servidores. Não está amarrado a nenhum protocolo, mas é usado geralmente com o protocolo HTTP. Para desenvolver e rodar um servlet, um contêiner web deve ser usado. O contêiner web é responsável por gerenciar o ciclo de vida dos servlets, mapeando uma URL para um servlet particular assegurando que o usuário que pediu a URL tenha os direitos de acesso corretos.- Servlet é um objeto que recebe um pedido e gera uma resposta baseado naquele pedido. Servlets podem ser gerados a partir de páginas JSP pelo compilador de JSP.- A diferença entre servlet e JSP é que servlet tipicamente embute HTML dentro de código java. JSP embute código java em HTML.

###Engenharia de software

Gerência de projetos

Page 107: Apam

- As distribuições contínuas de probabilidade auxiliam a representação da incerteza nos valores de atividades do cronograma e custos dos componentes do projeto.- A análise de sensibilidade ajuda a determinar quais riscos tem mais impacto potencial no projeto.- A análise do valor monetário esperado é um conceito estatístico que calcula o resultado médio quando o futuro inclui cenários que podem ocorrer ou não.- Simulação de um projeto utiliza um modelo que converte incertezas especificadas de maneira detalhada no seu possível impacto nos objetivos do projeto.

###Engenharia de software

Diagrama de classes

Modelo de classes é composto por diagrama de classes e da descrição textual associada.À medida que o sistema é desenvolvido, o modelo de classes é incrementado com novos detalhes.Pode existir 3 tipos de modelo de classes:- De domínio: representa as classes no domínio do negócio em questão. Não leva em consideração as restrições inerentes à tecnologia a ser utilizada na solução de um problema. É construído na fase de análise do sistema.- De especificação: é obtido através da adição de detalhes ao modelo anterior conforme a solução escolhida do software.- De implementação: corresponde à implementação das classes em alguma linguagem de programação.

###Engenharia de software

Diagrama de objetoPode ser visto como uma instância do diagrama de classes.Representa uma "fotografia" do sistema em um certo momento.Exibe as informações formadas entre objetos conforme estes interagem e os valores dos seus atributos.

###Engenharia de software

Diagramas de atividades

Partições: sem o conceito de partições, o diagrama de atividades seria meramente uma extensão de um fluxograma. Com as partições, passa a ser possível indicar quem realiza qual atividade.

###Engenharia de software

Diagramas de componente

Page 108: Apam

- Componente é um pedaço de software reutilizável, bem encapsulado e facilmente substituível. São blocos que, combinados, constroem o sistema pretendido. Obviamente, a dimensão dos componentes não é homogênea.- Bons candidatos a serem componentes do sistema: itens que desempenham uma funcionalidade que é utilizada recorrentemente no sistema.- Em UML, um componente pode efetuar as mesmas funcionalidades que uma classe faz: generalização; associação com outros componentes ou classes; implementação de interfaces.- Um componente representa um empacotamento físico de elementos relacionados logicamente (normalmente classes).- Os componentes, por serem facilmente trocados, devem ser independentes uns dos outros.

###Banco de dados

MOLAP é a tecnologia mais tradicional de análise OLAP. Nele, os dados são armazenados em um cubo multidimensional (daí o M na sigla MOLAP). A forma multidimensional significa que cada aresta do cubo será um conjunto de dados. Um exemplo de tipo de dados que o cubo pode mostrar: todas as vendas, feitas no cartão de crédito em todos os meses de um determinado ano (ou de vários anos durante uma década). O armazenamento de dados não é feito no banco de dados relacional, e sim, em um formato proprietário.O MOLAP tem as vantagens de ser mais rápido na consulta já que o cubo é pré-montado. Com isso cálculos complexos são otimizados. O problema dessa característica é a necessidade de se precisar de muita memória para o armazenamento. Outra desvantagem é que o MOLAP é uma tecnologia proprietária, o que significa que haverá gastos com aquisição do produto e, provavelmente, com o treinamento de pessoas.ROLAP é um método para manipular dados de um banco de dados relacional (daí o R da sigla ROLAP).Uma vantagem do ROLAP é que ele não tem limitação nos dados que serão manipulados. É, basicamente, "limitado" pelo tamanho limite dos dados do próprio banco de dados relacional. Exatamente por causa disso, ele é lento, já que precisa montar os dados em cada consulta. Outro problema do ROLAP é que ele é dependente das funções SQL. Alguns cálculos mais complexos são difíceis utilizando SQL, então ROLAP ficará limitado ao que o SQL pode fazer. Alguns software's já vem com algumas funções prontas e, também, permite ao usuário a criar próprias funções.

###Sistemas de informacao

CRM (Customer Relationship Manager)

Os sistemas CRM fornecem informações para coordenar todos os processos de negócio que lidam com o cliente, em termos de venda, marketing e serviços.O foco é na retenção dos clientes e na aquisição de novos. Além disso, o foco é na criação de valores para os clientes. Quando clientes avaliam o "serviço do cliente", é menos provável que o cliente procure por alternativas.Sistemas CRM permitem às organizações a ganharem espaço em relação às concorrências.

Page 109: Apam

Sistemas CRM focam estrategicamente em mercados significantes. Clientes diferentes tem importâncias diferentes.Portanto, relacionamentos devem ser construídos com clientes que são prováveis a prover valores por serviços.Construir relações com clientes que vão prover pouco valor pode resultar em perda de tempo, pessoas e recurso.Abordagens tecnológicas envolvendo o uso de banco de dados, data mining, data warehouse, entre outros, podem ajudar as organizações a aumentar o valor do cliente e sua rentabilidade.Este tipo de tecnologia pode ser usado para manter um registro dos nomes dos clientes, detalhes de contato e seu histórico de compra ou uso de serviços.Estas informações podem mirar clientes de uma forma personalizada e oferecê-los serviços que atendam às suas necessidades.Essa comunicação personalizada provê valores para o cliente e faz com que aumente a lealdade do cliente com o fornecedor.CRM pode ser feito face a face com o cliente.Os benefícios: custos reduzidos; aumenta a satisfação do cliente; aumento no número de clientes; rentabilidade e sustentabilidade a longo prazo, entre outros.

###Engenharia de software

UMLModelo de domínio: representação de classes conceituais do mundo real, não de componentes de software. É uma representação visual de classes conceituais, ou objetos do mundo real, em um domínio de problema.

Modelo comportamental: representa a percepção de como o sistema se comporta em resposta a certos eventos externos. Focaliza os dados (objetos do sistema) ou as funções. Representa o comportamento interno do sistema. Técnicas utilizadas: diagrama de fluxo de dados (DFD), dicionário de dados (DD), diagrama de entidade e relacionamento (DER), especificação de processos (EP) e diagrama de transição de estado (DTE).

Modelo de dados: representa a percepção dos dados que o sistema mantém. É um subconjunto do modelo de implementação que descreve a representação física e lógica dos dados persistentes no sistema. Também abrange qualquer comportamento definido no banco de dados, como procedimentos armazenados, triggers, restrições, etc.O modelo de dados é criado na fase de Elaboração. O modelo é refinado e expandido durante a fase de construção.

Cenário: uma instância descrita de caso de uso; subconjunto de um caso de uso. Sequência específica de ações que ilustra um comportamento. Um cenário pode ser usado para ilustrar uma interação ou execução da instância de um caso de uso. Uma coleção de cenários pode ser utilizada na fase de testes. Durante a construção de um cenário, novos detalhes podem aparecer, ou até mesmo, novos casos de uso podem aparecer.

###Engenharia de software

Page 110: Apam

Ciclo de vida

Modelo dirigido por prazo (time-boxed): é aquilo que se consegue fazer dentro de determinado prazo. Eles podem ser razoáveis quando se consegue definir um conjunto de requisitos indispensáveis, para os quais se sabe que os prazos estabelecidos são suficientes, e as folgas são usadas apenas para implementar os requisitos opcionais.

O ciclo de vida pode ser dirigido por ferramentas (que pode ser chamada de ferramenta CASE ou plataforma de desenvolvimento, pelos respectivos fabricantes).

###Engenharia de software

Relacionamento de dependência: uma mudança na especificação de um elemento pode alterar a especificação do elemento dependente. A dependência entre classes indica que os objetos de uma classe usam serviços dos objetos de outra classe. É indicada por uma seta aberta. Parecida com a da herança, mas a seta é aberta.

###Engenharia de software

Diagramas de implantação (estrutural): mostra a configuração dos nós de processamento em tempo de execução e os componentes, processos e objetos que neles vivem. Representa como é realizada a distribuição do sistema através dos nós de hardware, componentes e dependências de software e as suas devidas relações de comunicações.O diagrama de implantação pode ser representado de 2 formas: como descritor, onde mostra a configuração básica do hardware; ou como instância, onde mostra as reais características de configuração do hardware.Estes diagramas são empregados como modelagem estática de implantação do sistema.

###Sistemas operacionais

Processos

É, basicamente, um programa em execução constituído de um código executável, dados referentes ao código, da pilha de execução, do valor do PC (contador de programa - indica a próxima instrução do programa a ser executada), do valor do apontador de pilha, dos valores dos demais registradores do hardware e outras informações.

Associado ao processo, está o espaço de endereçamento, uma lista de posições de memória que contém todas as informações do processo.

Os SO's tem uma tabela contendo as estruturas dos processos existentes no momento para gerenciar todos eles.Um processo pode criar mais processos (filhos). Para sincronização entre processos, há a necessidade de uma comunicação interprocessos.

Processos, que utilizam o mesmo recurso, podem entrar em deadlock.

Page 111: Apam

Um processo tem uma área de memória e recursos do sistema destinado a ele e uma ou mais threads são executadas no contexto do processo. Uma thread é a unidade básica de código para a qual o sistema aloca tempo de processamento para execução. É o componente real do processo que é executado a cada tempo.

Espaço de Endereçamento: área da memória do processo onde o programa será executado e para os dados utilizados por ele; deve ser protegido do espaço de endereçamento dos demais processos.

###Sistemas operacionais

Multiprogramação

Um problema dos processos é que, ao invocar os comandos de entrada/saída, o processador poderia ficar ocioso esperando o resultado. Isso é resolvido com a multiprogramação. Com ela, o SO pode alternar os processos de forma que, quando um fica ocioso esperando pelo resultado dos comandos de entrada/saída, outro processo pode tomar o controle do processador e fazer o que tiver que fazer. Após isso, ele pode devolver o processador para o processo anterior.

###Sistemas operacionais

Comunicação interprocessos

Os processos são entidades independentes, porém eles precisam, eventualmente, se comunicar com outros processos.Para gerenciar esta interação, o SO coloca os processos em estados.Os processos podem estar:

- Em execução: utilizando a CPU.- Pronto: está preparado, mas não está usando a CPU- Bloqueado: incapaz de utilizar a CPU.

Numa comunicação entre processos, 3 pontos devem ser observados:

a) troca de informações entre processos;b) garantia de que um processo não invada o espaço físico do outro;c) garantia de que um processo não altere os dados utilizados pelo outro.

O sistema operacional deve evitar que, quando dois processos acessam o mesmo recurso, o resultado não dependa do escalonamento dos mesmos. Isso é chamado de condição de corrida (race condition).

Regiões que possam levar a condições de corrida são chamadas de regiões críticas.

Para evitar a condição de corrida, 4 regras foram definidas:

Page 112: Apam

1. Dois processos nunca podem entrar ao mesmo tempo.2. A velocidade ou quantidade de CPU's não interefe.3. Nenhum processo executando fora da região crítica pode bloquear outros processos.4. Nenhum processo deve esperar eternamente para entrar numa região crítica.

Os escalonadores de processo devem se preocupar com as 5 regras:

1. Todos os processos devem ter acesso à CPU (justiça).2. A meta é fazer o processador chegar perto dos 100% (eficiência).3. Minimizar o tempo de resposta (eficiência).4. Minimizar os usuários batch (Turnaround).5. Maximizar o número de jobs processados (throughput)

Região crítica: parte do código onde é feito o acesso ao recurso compartilhado.

###Sistemas operacionais

Deadlock

Quatro condições necessárias para o deadlock:

1. condição de exclusão mútua: cada recurso, ou está alocado a exatamente um processo ou está disponível.2. Condição de posse de espera: processos que estejam de posse de recursos, obtidos anteriormente, podem solicitar novos recursos.3. Condição de não-preempção: recursos já alocados a processos não podem ser tomados à força. Eles precisam ser liberados explicitamente pelo processo que os possui.4. Condição de espera circular: deve existir uma cadeia circular de dois ou mais processos, cada um dos quais esperando por um recurso que está com o próximo membro da cadeia.

Todos as 4 condições devem estar presentes para que possa ocorrer um deadlock. Caso uma não esteja, não há a menor possibilidade de ocorrer um deadlock.

###Sistemas operacionais

Gerência de memória

O gerenciador de memória controla quais partes da memória estão ou não em uso. Controla, também, o swapping que é a troca dos dados da memória principal (MP) para a secundária (MS). Swap out => de MP para MS. Swap in => de MS para MP.

Técnicas de alocação de memória:

- alocação contígua simples: a MP é dividida em duas áreas (uma para o SO e outra para o programa do usuário). Era usado em sistemas antigos. Pode haver registrador que

Page 113: Apam

delimita as áreas do SO e do programa do usuário para este não acessar a área do SO, mesmo que intencionalmente.

- overlay: existem programas que tem vários módulos independentes. Isso significa que, enquanto um está executando, os outros não precisam estar na memória. Nesse caso, somente o módulo em execução irá para a memória. A área reservada para o programa pode ser menor já que só alguns módulos estarão na memória.

- alocação particionada estática/dinâmica: a memória RAM é dividida em partições onde os programas vão ser executados. Essa divisão pode ser estática (mais rápido porque a divisão é feita uma vez) ou dinâmica (para evitar o desperdício de memória não usada). O problema da estática é a fragmentação deixada pelos programas quando são alocados (fragmentação interna). O problema da dinâmica é a fragmentação que é deixada após a execução dos programas (fragmentação externa).

Os SO's mais recentes tentam evitar essas fragmentações. Para isso, ele deve saber quais áreas estão disponíveis na MP e quais não estão.

Um algoritmo é o mapa de bits. A MP é dividida em pequenas unidades de alocação. Então é marcado um 0, caso aquela unidade esteja livre, ou 1, caso não esteja. Aí o SO procura por N unidades consecutivas que estejam disponíveis para o programa. Este algoritmo é simples de implementar, mas é muito lento procurar pela memória inteira.

Uma forma mais eficiente é utilizar listas encadeadas. O valor das posições destas listas será o lugar da memória onde os processos estão alocados.O algoritmo pode procurar pela primeira alocação disponível (rápida, mas pode ter desperdício porque pode utilizar uma alocação grande demais), próxima disponível (variação da anterior. Quando for procurar uma posição, a busca não inicia do início, e sim, de onde parou a busca anterior), melhor alocação (lenta, mas procura o lugar onde gasta menos espaço), pior alocação (procurar o maior espaço disponível) e alocação rápida (valores recorrentes de busca são guardados. Por exemplo, os valores de N, 2N e 4N são muito requisitados, então a posição deles é guardada para acesso rápido. A complexidade de implementação é alta.)

Outra forma é o sistema buddy. Apesar de eficiente, há um desperdício de memória. Ele aloca o programa para a parte da memória com o valor de próxima potência de 2. Por exemplo, se um programa precisa de 35kb, ele procura um espaço de 64kb. Essa busca é rápida, mas há muito desperdício de memória.

###Sistemas operacionais

Memória virtual

É uma forma de combinar as memórias principal e secundária, dando uma ilusão de uma memória principal maior do que realmente é.Esta técnica consiste em não vincular o endereçamento feito pelos programas aos endereços físicos da MP. Com isso, os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível, pois podem possuir endereços associados à memória secundária.

Page 114: Apam

Outra vantagem é permitir um número maior de processos compartilhando a MP já que apenas partes de cada processo estarão residentes.A desvantagem é que a memória secundária é lenta.

###Sistemas operacionais

Paginação

É uma técnica de gerenciamento de memória onde o espaço de endereçamento virtual e real são divididos em blocos de mesmo tamanho chamados páginas.Nesta técnica, o endereço virtual é formado por número da página virtual (NPV) e por um deslocamento.NPV = identifica unicamente a página virtual que contém o endereço, funcionando como um índice na tabela de páginas.Deslocamento = indica a posição do endereço virtual em relação ao início da página na qual se encontra.O endereço físico é obtido pela combinação do endereço do frame (na tabela de páginas) com o deslocamento.

Valid bit = indica se a página está na memória principal ou não.Falta de página (page fault) = quando a página não está na MP.Nesse caso, o sistema realiza o page in = transferir a página da MS para a MP.Page out = transferir da MP para a MS.

Taxa de paginação = número de falta de páginas por processo em um determinado intervalo de tempo.

###Rede de computadores

Modelo OSI

Camada física: formada pelo hardware usado na conexão dos diferentes sistemas de rede como cabo, fibras e conectores.Nesta camada, a informação está codificada na forma de sinais elétricos.

Camada de link ou MAC: define como a informação será transmitida pela camada física e garante o bom funcionamento desta camada. Se houver algum erro na transmissão da informação na camada física, o MAC deve tratar esses erros e avisar as camadas superiores sobre o ocorrido.

Camada de rede: identificar os endereços dos sistemas na rede e transmitir os dados de fato. Ela deve conhecer o meio físico da rede e transportar os dados de tal forma que a camada de link possa enviar os dados para o meio físico. Em algumas redes, não há verificação de integridade da informação e a camada simplesmente executa o empacotamento da informação.

Camada de transporte: é responsável pela integridade da informação (envio de sinais ACK entre as partes). É nesta camada que opera o TCP.

Page 115: Apam

Camada de sessão: sessão é um canal de comunicação entre duas aplicações que estão sendo executadas em computadores diferentes. Esta camada é responsável por gerenciar a comunicação entre os aplicativos de forma que eles possam abrir, usar e fechar uma sessão.

Camada de apresentação: responsável por definir o formato da troca de dados entre os computadores. Funciona como um tradutor para os protocolos, criptografia, compressão de dados, etc.

Camada de aplicação: representa a comunicação com os usuários e fornece serviços básicos de comunicação.

###Rede de computadores

Camada TCP/IP

São 4 camadas:

Camada de aplicação, que corresponde às camadas de aplicação, apresentação e sessão do modelo OSI.Camada de transporte, que corresponde à própria camada de transporte do modelo OSI.Camada de internet (ou inter-rede), que corresponde à camada de rede do modelo OSI.Camada de interface com a rede, que corresponde à camada de enlace de dados (link) e física do modelo OSI.

###Rede de computadores

Arquitetura Ethernet

As redes Ethernet podem transportar até 1500 bytes de dados. O modelo Ethernet tem 3 camadas, que são equivalentes à Interface com a rede do modelo TCP/IP:

LLC (controle do link lógico): adiciona informações sobre qual protocolo da camada Internet foi responsável por gerar dados.Com isso, durante a recepção, o receptor pode saber qual protocolo usar na camada Internet para receber dados.

MAC (controle de acesso ao meio): monta o quadro que será enviado para a rede. Responsável por adicionar o endereço MAC de origem e destino ao pacote. Quando os pacotes são destinados a outras redes, que não a local, o endereço MAC será o do roteador utilizado. O padrão IEEE 802.3 é responsável pela rede cabeada e o 802.11 é responsável pela wireless.

Física: responsável por converter o quadro gerado pela camada MAC em sinais elétricos (no caso de rede cabeada) ou em sinais eletromagnéticos (para rede wireless). No IEEE a camada física é definida pelos mesmos protocolos do que a camada MAC.

Page 116: Apam

###Sistemas operacionais

Paginação

Busca de páginas pode ser sob demanda ou pré-paginação.Alocação de páginas pode ser alocação fixa ou pré-alocação.Política de substituição local de página = somente as páginas do processo que gerou a falta de página são candidatas a realocação.Política de substituição global de página = todas as páginas alocadas na MP são candidatas a realocação independente do processo que gerou a falta de página. (Na verdade, nem todas as páginas podem ser realocadas. Algumas, como as do núcleo do sistema, são marcadas como bloqueadas e não podem ser realocadas.)

###Sistemas operacionais

Paginação

Algoritmos de substituição de página

Ótimo: o SO remove a página com maior rótulo (um rótulo = quanto falta para essa página ser usada). Impraticável.

FIFO: retirar as páginas que estão há mais tempo (as que estão no topo) na memória. Pode apresentar Anomalia de Belady (mesmo com maior page frame, pode ocorrer mais page fault).

Segunda chance: cada página tem um bit R. Se R for 0, ela é considerada velha, ao passo que, se for 1, ela é zerada e colocada no fim da fila (jovem de novo).

Relógio: o mesmo que a segunda chance, porém, com uma estrutura de dados otimizada. Utiliza uma lista encadeada circular.

NRU (Not recently used): cada página tem 2 bits (R e M) para Referenciada e Modificada. É melhor remover uma página não referenciada e modificada, do que uma não modificada, mas muito usada.

LRU (Least recently used): numa page fault, páginas pouco referenciadas nas últimas instruções são removidas, pois o algoritmo parte do pressuposto que as outras (as mais referenciadas) continuarão sendo referenciadas nas próximas instruções.

###Sistemas operacionais

Paginação

Segmentação: técnica de gerência de memória onde o espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos. Existe uma relação

Page 117: Apam

entre a lógica do programa e sua alocação na memória principal. Pode ocorrer fragmentação externa.

Segmentação paginada: técnica de gerência de memória onde o espaço de endereçamento é dividido em segmentos e cada segmento é dividido em páginas. Não há problemas de fragmentação externa.

###Sistemas operacionais

Sistemas distribuídos (SD): São aqueles que gerenciam as atividades e recursos distribuídos. Com isso tem-se um processamento descentralizado e melhora o desempenho.A eficiência em SD é complexa em relação aos SO's convencionais. O tempo gasto na propagação dos dados depende fortemente do protocolo de comunicação. Por isso, este deve ser bem projetado.

Threads: fluxo de controle sequencial isolado dentro de um programa.Processos leves que compartilham o espaço de endereços lógicos.

Onde as threads devem ser implementados?Se o objetivo for agilidade: no espaço do usuário. O gerenciamento é menos complicado. Nesse caso, os SO's não tem controle sobre as threads e estas não podem usufruir das interrupções do SO. Portanto são não-preemptíveis.

Se o objetivo for eficiência: no núcleo do SO. Portanto passam a ser preemptíveis. Nesse caso, não há necessidade de interromper o processo que gerou a thread. O SO pode interromper somente a thread.

Quando uma thread deixa de existir?

###Sistemas de informação

Business Intelligence (BI): habilidade de uma organização em pegar todas as suas capacidades e transformá-las em conhecimento. Isso produz grande quantidade de conhecimento que pode levar ao desenvolvimento de novas oportunidades.O conceito de BI - Business Intelligence, de forma mais ampla, pode ser entendido como a utilização de várias fontes de informação para se definir estratégias de competitividade nos negócios da empresa.

Funções comuns de BI: relatar, OLAP, análise, data mining, processamento de eventos complexos (complex event process), gerenciamento de desempenho de negócio (business performance management), etc.

BI tem como objetivo melhorar a tomada de decisões. Portanto, BI pode ser chamado de sistema de suporte à decisão.

Nem todos BIs requerem data warehouse e nem todos data warehouse são usados para BI.

Page 118: Apam

Antes de implementar uma solução de BI, vale a pena levar em consideração alguns fatores:- o nível de comprometimento e patrocínio do projeto do gerente sênior;- o nível de necessidade de negócio para criar uma implementação BI;- a quantidade e qualidade de dados de negócio disponíveis.

Existem dados estruturados e dados não-estruturados (ou semi-estruturados). Dados não estruturados vem na forma de email, memorandos, notas, notícias, grupos de usuários, chats, relatórios, páginas web, apresentações, arquivos de imagem e vídeo e materiais de marketing.

Problemas com dados não estruturados:- guardados em vários formatos;- terminologia não padronizada;- volume de dados: a maioria dos dados está neste formato;- busca de dados textuais não estruturados. Exemplo: a busca simples pela palavra "felonia" só encontrará links que fazem referência à palavra "felonia", e não acha referência às palavras/expressões: "crime", "incêndio culposo", "assassinato", "fraude", "homicídos veiculares", etc, mesmo estes termos são tipos de felonia.

Para resolver problemas com busca e avaliação de dados, é necessário conhecer alguma coisa sobre o conteúdo. Isto pode ser feito adicionando contexto no uso de metadados. Os sistemas podem adicionar informações sobre o autor, o tamanho do arquivo, o nome do arquivo, mas mais eficiente seria colocar informações sobre o resumo, tópicos, pessoas ou intenção de empresas. Duas tecnologias designadas para gerar metadados sobre o conteúdo são categorização automática ou extração de informação.

###Rede de computadores

WDMA (Wavelength division multiple access)

É um método de acesso de canal baseado no protocolo WDM (wavelength division multiplex).

o WDM é um protocolo utilizado geralmente em redes de fibra ótica. Permite que, numa rede, se utilizem sinais óticos com diferentes frequências no mesmo canal através da multiplexagem.

CDMA (Code division muliple access)

Desenvolvida durante a guerra, hoje, esta tecnologia é usada em companias de celulares. Diferente de GSM e TDMA, o CDMA transmite pela frequência inteira disponível. Isso permite que várias pessoas possam comunicar já que todas usarão o mesmo escopo de banda.CDMA é uma tecnologia digital, então qualquer sinal de áudio analógico precisa ser digitalizado antes de ser transmitido na rede.

MACA (Multiple access with collision avoidance)

Page 119: Apam

Protocolo usado em LAN's wireless.A ideia básica do protocolo é que há um aviso antes de enviar o quadro de dados para informar os outros para ficar em silêncio. Quando um nó quer transmitir dados, ele manda um RTS (request to send) com o comprimento do quadro de dados a enviar. Se o receptor pode receber os dados, ele envia um CTS (clear to send) com o tamanho do frame que ele está pra receber.

###Banco de dados

Operador summarize

summarize A BY (A1, A2, ..., An) ADD agg-exp AS Z

A1, ..., An são atributos distintos de A. O resultado da expressão é uma relação composta pelos atributos {A1, ..., An, Z}.

Os valores dos dados são todos os registros x onde x é uma projeção de A sobre A1, ..., An com um novo atributo Z.

O valor de Z é calculado através da expressão agg-exp calculada sobre todos os atributos de A que tem os mesmos valores para A1, ..., An que o registro x.

Exemplo:

#forn #produto Qtd123 11111 200123 22222 100123 33333 300456 11111 500456 22222 200789 11111 100

Summarize C by (#produto) ADD SUM(Qtd) AS qtdTotal

#produto qtdTotal11111 80022222 30033333 300

###Banco de dados

Uso de OID's (object identifier): o SGDBR gera um identificador único (OID) para cada registro. O OID é armazenado em uma coluna adicionado e é a chave primária da tabela. Diz-se que é uma identidade baseada na existência.

Vantagens:

Page 120: Apam

- a chave primária é um atributo único, pequeno e uniforme em tamanho.- algumas tabelas não possuem uma combinação de atributos que possa ser chave primária.

Desvantagens:

- Alguns SGBD's poderão não oferecer a geração de identificadores únicos.- A geração de OID's pode necessitar de acesso a dados globais, interferindo com o controle de concorrência e deixando a aplicação mais lenta.- Pode complicar a depuração das aplicações.

###Rede de computadores

Comutadores de pacotes: não é possível determinar se os pacotes serão bloqueados, uma vez que os caminhos não são preestabelecidos. Para ajudar na redução da perda de pacotes via bloqueio, crossbars são usadas.

Padrão 802.3zGigabit ethernet- compatível com as tecnologias 10baseT e 100baseT.- permite enlace de dados ponto a ponto, bem como canais broadcast compartilhados.- utiliza csma/cd para canais broadcast compartilhados.

###Engenharia de software

Relações intermodulares: são relações entre os componentes que formam o sistema. Ex.: acoplamento.Relações intramodulares: são relações dentro do componente que forma o sistema. Ex.: coesão.

Acoplamento: é quanto um elemento conhece e depende de outro elemento. Elementos muito acoplados são muito dependentes um do outro. Se mudar um, com certeza, o outro será mudado.

Coesão: é o quanto as tarefas (de um elemento) estão relacionadas entre si. Quanto mais relacionadas, mais coesas. Se uma classe tem duas funções totalmente diferentes, então ela tem uma coesão baixa.

###Banco de dados

Escalonamento = conjunto de transações em um banco de dados.Para que ele seja considerado correto, deve haver a serializabilidade.É o efeito de diversas execuções em paralelo ser equivalente ao efeito da execução sequencial.A importância deste conceito é que o conjunto, cujo conceito é serializável, é atômico. Significa que o programa paralelo tem sua semântica definida.

Page 121: Apam

###Banco de dados

Data warehouse

Tabelas fato sem fato (factless fact table): são tabelas que não tem nenhuma medida.É essencialmente uma interseção de dimensões. Aparentemente, ela não faz sentido, mas há situações em que ela é importante. Imagine uma tabela fato para representar as faltas dos alunos nas aulas. Ela consistirá de 3 dimensões: dimensão estudante, tempo e aula. A tabela fato sem fato vai parecer assim:

Fato_Presenca {id_estudante, id_hora, id_aula}

A única medida que se pode fazer é colocar "1"'s para mostrar a presença de uma combinação particular. Entretanto, adicionar esta tabela que só mostra 1 é redudante porque nós podemos simplesmente usar a função COUNT para responder as perguntas.Porém, pode-se responder facilmente as seguintes perguntas com esta tabela: - Quantos alunos foram numa aula especificamente em tal dia? - Quantas aulas, em média, um aluno vai em tal dia?Sem usar a tabela fato sem fato, precisaríamos de duas tabelas fato para responder as perguntas.

###Banco de dados

Data warehouse

Tabela dimensão: tabela que contém atributos descritivos que são tipicamente campos de textos ou números discretos que se comportam como texto. Estes atributos servem dois propósitos: filtro/restrição de consultas e rotular conjunto de resultados de busca.Atributos de dimensão são feitos para: - rótulos consistindo de palavras completas. - descritivos. - completos. - discretamente valorado: só um valor por linha na tabela dimensão. - qualidade assegurada: sem valores impossíveis.Recomenda-se que as linhas da tabela dimensão seja identificadas por uma chave única. Recomenadado que seja um inteiro simples pelo fato de o atributo ser necessário somente para junções entre as tabelas fato e dimensão.

Dimensão degenerada: é uma chave de dimensão na tabela fato que não tem sua própria tabela de dimensão, porque todos os atributos de interesse foram colocados em dimensões analíticas.

###Engenharia de software

Gerenciamento Integrado de Projetos

Page 122: Apam

É o núcleo do gerenciamento de projetos, e é composto dos processos do dia-a-dia com os quais o gerente de projetos conta para garantir que todas as partes do projeto funcionem juntas. É um processo contínuo que o gerente completa para garantir que o projeto prossiga do início ao fim - é a atividade diária para completar o trabalho do projeto.O gerenciamento de projeto junto os planos de projeto, coordena atividades, recursos, restrições e suposições do projeto, e os transforma em um modelo funcional.Gerenciar a integração do projeto é garantir a necessidade de os componentes do projeto trabalharem juntos, e é papel do gerente de projetos fazer com que isso aconteça. Exige habilidades em negociação, gerenciamento de conflitos de interesses, gerenciamento, boa comunicação, organização, familiaridade técnica com o produto, etc.

###Banco de dados

Diferença entre BD relacional (BDR) e Multidimensional (BDM)

As consultas no BDR são mais lentas devido ao SQL. Em BDM, os dados são mantidos em array para uma performance melhor.Um problema no BDM é a grande quantidade de dados esparsos. Nem todo cruzamento de dado gera dado.Ocorre, então, a explosão de armazenamento de dados, ou seja, um imenso banco de dados multidimensional contendo poucos dados armazenados.

###Banco de dados

Data Staging Area (DSA)

É uma área intermediária entre as fontes de informação e o Data Warehouse ou Data Mart. Usualmente é de natureza temporária, e seu conteúdo pode ser apagado depois que o DW/DM for carregado.Esta área pode ser usada com os seguintes propósitos: - recolher dados de fontes diferentes que estarão prontos para processar em diferentes tempos. - carregar informações rapidamente de um banco de dados, liberando-as assim que possível (da DSA). Todas as informações podem então ocorrer sem interferência. - achar mudanças com relação aos valores de DW/DM. - limpeza de dados. - pré calcular agregados. - já que a estrutura de uma DSA não precisa se assemelhar com a estrutura da fonte ou do alvo, o processo de carregar a staging area pode ser um passo no próprio processo de ETL.

Os usuários finais do DW, em geral, não tem acesso à DSA.

###Banco de dados

Page 123: Apam

Data warehouse

Dimensão lixo ou sucata (junk dimension): uma dimensão abstrata onde se removem os flags e indicadores de baixa cardinalidade da tabela de fatos.

Minidimensões: subconjuntos de dimensões grandes que são quebradas em dimensões artificiais menores para controlar o crescimento explosivo de uma dimensão grande, com mundança rápida.Os atributos demográficos continuamente mutáveis de um cliente, por exemplo, são frequentemente modelados como uma minidimensão separada.

Dimensões outrigger: Solução normalizada (snow flake) para conjuntos de atributos de baixa cardinalidade em dimensões grandes. A economia de espaço vale a pena porque a dimensão é grande, e a carga de dados é separada do restante da dimensão porque os dados provem de fontes externas diferentes.

###Engenharia de software

FURPS+

Há muitos tipos de requerimentos. Um modo de categorizá-los é descrito como o modelo FURPS+. Ele é usado para descrever o conjunto de requisitos funcionais e não funcionais: Functionality, Usability, Reliability, Performance e Supportability.O "+" em FURPS+ te lembra de incluir alguns requisitos: Restrições de design, requisitos de implementação, requisitos de interface e requisitos físicos.

###Engenharia de software

Testes de usabilidade: consistem em apresentar, para um usuário por vez, um protótipo da interface do sistema ou o próprio sistema, e solicitar que o usuário realize algum tipo de tarefa, observando suas reações à interface, erros cometidos, dificuldades e eficiência no cumprimento da tarefa.

###Engenharia de software

Sistema ABCD do ERP (avalia o efeito das aplicações ERP):

A: No nível de empresa dentro da aplicação efetiva do serviço do cliente, produção e custos melhoraram muito.B: Liderança senior que apoia muito, aplicações de gerenciamento médio pelo sistema, qualidade de trabalho melhorou muito.C: O sistema é principalmente usado para fazer pedidos de materiais, a principal contribuição é para o gerenciamento de inventório.D: O dado do sistema não é preciso, falta compreensão por parte dos usuários dos negócios de pequena ajuda.

###

Page 124: Apam

Rede de computadores

Protocolos:

ARP (address resolution protocol): é usado para mapear endereços lógicos em endereços físicos, quando do uso de IP sobre redes ethernet. Opera na camada de rede.

SNMP (Simple network management protocol): é usado em sistemas de gerenciamento de redes a fim de monitorar dispositivos conectados à rede que exijam atenção por parte de seus administradores.Opera na camada de aplicação.Nele, os dados são obtidos através de requisições de um gerente a um ou mais agentes, utilizando serviços do protocolo UDP para enviar/receber mensagens.Operações do SNMP: - Get: o gerente solicita ao agente para obter o valor da variável. - Set: o gerente solicita ao agente para alterar o valor de uma variável. - Trap: o agente comunica ao gerente o acontecimento de um evento previamente determinado. Essa operação é um exemplo de que o agente pode comunicar com o gerente sem que este envie algum pedido de comunicação.

ICMP (Internet Control Message Protocol): é usado para verificar se uma máquina está ligada, para controlar o TTL.Opera na camada de rede.

###Rede de computadores

Componentes

Cabo coaxial fino ou 10base2.Cabo coaxial grosso ou 10base5.Tipos de switches: gerenciáveis e não gerenciáveis. Gerenciáveis: determinar a velocidade de operação para uma porta específica para otimizar a banda de passagem e o desempenho global da rede; indicado para ser usado em redes maiores;

Não gerenciáveis: indicado para usar em redes pequenas;

Comum aos dois: comunicação full-duplex; auto MDI-MDIX ou autocrossing (Com isso, não há necessidade do uso de cabos cruzados (crossing) para interconectar os switches. O cabeamento fica uniforme.).

Cabo de par trançado utiliza da técnica de cancelamento para evitar ruídos.Cabo de par trançado de 8 fios: 10baseT

###Rede de computadores

Page 125: Apam

Sentido de transmissão

Simplex: mão única. Ex.: televisão, rádio. Em rede de computadores, normalmente, não é assim.Half-duplex: mão dupla, mas alternada. Ex.: normalmente em rede de computadores é isso que acontece.Full-duplex: mão dupla, simultaneamente. Ex.: Comunicação telefônica.

###Rede de computadores

CSMA/CD: CSMA é um protocolo que escuta a rede para transmitir. CD é uma melhoria para detecção de colisão. Se houver colisão, um "32-bit jam sequence" é enviado. O receptor, ao ver esta sequência, é informado de que a transmissão vai parar devido à colisão.Assim que ocorre uma colisão, cada nó (que estava enviando) calcula um tempo aleatório e volta a enviar o frame de novo. A cada colisão, este nó cria um conjunto de números e um deles é escolhido aleatoriamente.

N = número de tentativas sem sucesso. Um conjunto é formado por {0, 1, 2, ..., (2^N)-1}. Cada valor é multiplicado por 51.2 nanosegundos criando um novo conjunto {0, 51.2, 102.4, ..., ((2^N)-1)*51.2)}. Um valor destes é escolhido aleatoriamente.

IFG (inter frame gap). É um intervalo de 9.6 microsegundos para os nós receptores se prepararem para uma nova transmissão.

###Estruturas de dados

A pesquisa binária não é recomendada para aplicações dinâmicas porque o custo para balancear a árvore é excessivo.

###Rede de computadores

Segurança de redeCertificado digital: carrega informações (atributos) do proprietário e a chave pública do mesmo.

###Engenharia de software

Modelo RAD: rapid application development é um modelo de processo de software incremental que infatiza um ciclo de desenvolvimento curto. O modelo RAD é uma adaptação, de alta velocidade, do modelo cascata, no qual a agilidade é conseguida com o uso de uma abordagem de construção baseada em componentes. Precisa-se que os requisitos sejam bem compreendidos e o objetivo do projeto seja restrito para garantir o sucesso do projeto.As etapas do RAD apresentam as seguintes definições:

Page 126: Apam

- Comunicação: trabalha para entender os problemas do negócio e as características de informação que o software precisa acomodar. - planejamento: essencial, porque várias equipes de software trabalham em paralelo em diferentes funções do sistema. - modelagem: modelagem de negócio, modelagem de dados e modelagem dos processos. - construção: enfatiza o uso de componentes de software preexistentes e a aplicação da geração automática de código. - implantação: estabelece a base para iterações subsequentes, se necessárias.

Desvantagens: - para projetos grandes, mas passíveis de sofrer aumento, o RAD exige recursos humanos suficientes para criar um número adequado de equipes. - se o sistema não puder ser adequadamente modularizado, a construção dos componentes será problemática. - se for necessário reajuste nas interfaces dos componentes do sistema, a abordagem RAD pode não funcionar. - o RAD pode não ser adequado quando os riscos técnicos forem altos.

As ferramentas incluídas em um ambiente RAD são:- linguagens de programação de banco de dados.- um gerador de interface.- links para aplicações de escritórios, tais como planilhas para análise.- gerador de relatórios usado para definir e criar relatórios baseados em informações de um banco de dados.

Sendo um sistema de geração de telas, ele deve fornecer:- definição de formulários interativos, nos quais o desenvolvedor define os campos que devem ser exibidos e como estes devem ser organizados.- ligação de formulários em que o desenvolvedor pode especificar as entradas específicas que fazem com que formulários adicionais sejam exibidos.- verificação de campos em que o desenvolvedor define intervalos de entrada de valores para os campos de formulário.

###Engenharia de software

UML

Relacionamento entre as classes: associação, multiplicidade, classes associativas, qualificador (ou associações qualificadas. Usadas em relacionamentos 1:N ou N:M. Um nome é dado para um lado do relacionamento), agregação (ou agregação regular. Ppartes tem existência sem o todo), agregação por composição (ou só composição. Partes não vivem sem o todo.), navegabilidade (é a seta da relação), generalização/especialização, restrições (restrição em cima da seta).

###Estruturas de dados

Page 127: Apam

O software que usa delegação é dinâmico, mais difícil de ser compreendido do que um software estático.

###Rede de computadores

Métodos do HTTP: - Options: requisita informações sobre as opções de comunicação disponíveis. - Get: captura informação na URL do navegador. - Head: igual ao Get, exceto que o servidor não deve retornar um corpo de mensagem na resposta. - Post - Put - Delete - Trace - Connect

###Sistemas de informação

Os Sistemas de Informação são classificados quanto aos níveis de amplitude de suporte e organizacionais. O primeiro é representado pelos sistemas de informação funcionais (departamentais), os sistemas de informação corporativos e os sistemas interorganizacionais. Em relação aos níveis organizacionais, os sistemas de informação são classificados, segundo Turban, de acordo com a hierarquia empresarial e proporcionam um suporte em cada nível específico.

Estratégico: alto escalão. Atos com efeitos duradouros e mais difíceis de inverter. Efeitos em longo prazo. Ex.: construção de uma nova fábrica, nova linha de produção, novos mercados, novos produtos, etc. Considera a estrutura organizacional de toda a empresa. O nível de informação é macro.

Gerencial ou tático: tem característica de efeitos em curto prazo. Decisões nos escalões intermediários da empresa. Nível de informação é em grupos.

Operacional: decisões que estão ligadas ao controle e às atividades operacionais da empresa. Decisões que criam condições para a realização diária de trabalhos na empresa. Nível de informação é detalhado (analítica).

###Engenharia de software

Métodos ágeis

Scrum: é um processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software. Scrum não é um processo prescribente, ou seja, ele não descreve o que fazer em cada situação. Ele é usado para trabalhos complexos nos quais é impossível predizer tudo o que vai acontecer.Assim como o XP, o Scrum também faz reuniões em pé, diárias, com perguntas específicas.

Page 128: Apam

Sprint: unidade básica de desenvolvimento do Scrum. Tende a durar entre 1 semana e 1 mês.Cada sprint é precedido de uma reunião de planejamento onde as tarefas para o sprint são identificadas e um compromisso estimado para o objetivo do sprint é definido e seguido por uma reunião de revisão onde o progresso é revisto e lições para os próximos sprints são identificadas.

Cartões CRC (Classe, responsabilidade e colaborações) são recomendados para os adeptos do XP. Cada classe que é identificada tem sua responsabilidade. As colaborações determinam as interações entre as classes.

As estórias de usuário descrevem cenários com situações de utilização que os envolvidos gostariam que o sistema, em desenvolvimento, viesse a oferecer.

###Engenharia de software

Técnicas usadas na elaboração do cronograma de um projeto.

Método da cadeia crítica: combina abordagem determinística com probabilística.Método do caminho crítico: utiliza o caminho que consome mais tempo.Nivelamento de recursos: evita super alocação dos recursos.

###Engenharia de software

DFDExiste o DFD de contexto onde é a visão macro do sistema, com poucos detalhes. Depois vem os níveis. Quanto mais se avança nos níveis, mais detalhes tem.

###Rede de computadores

Transmissão de dados em redes que utiliza os bits START-STOP é conhecida como assíncrona.Assíncrona: não tem relógios no meio de transmissão. Para sincronizar os dispositivos de acesso e transmissão, é usado informação para delimitar os caracteres (como start/stop bits).

Síncrona: o dispositivo de acesso compartilha um relógio com o dispositivo de transmissão.

###Banco de dados

Funções

Page 129: Apam

Administrador de banco de dados: ele é responsável pela autorização de acesso ao banco de dados e pela coordenação e monitoração do seu uso. Ele administra o SGDB e os softwares relacionados.

Projetista de banco de dados: responsável pela escolha dos dados que farão parte do banco de dados, escolhendo a estrutura correta para representar e armazenar os dados. É responsabilidade dele também avaliar a necessidade dos usuários com a finalidade de definir visões que serão necessárias.

###Engenharia de software

Modelagem Ágil (Agile modeling) AM

Tem 3 objetivos: 1) definir e mostrar como colocar em prática uma coleção de valores, princípios e práticas pertinentes à modelagem efetiva e "peso-leve". 2) explorar como aplicar técnicas de modelagem em projetos de software através de uma abordagem ágil tal como XP, DSDM ou SCRUM. 3) explorar como melhorar a modelagem sob processos prescritivos como o RUP.

###Sistemas de informação

Sistemas de Informações empresariais (EIS): dão suporte aos administradores.Sistemas de Informações gerenciais (SIG): estão relacionados ao suporte a atividades funcionais.Sistemas de Processamento de Transações (SIT): estão relacionados às atividades repetitivas vitais.

###Sistemas Operacionais

Tipos:Lote(batch) x Interativo(on-line)Monousuário x MultiusuárioMonotarefa x MultitarefaDistribuídosParalelosTempo realMáquinas virtuais

###Rede de computadores

Protocolos de autenticação

Centro de distribuição de chaves: é composto por um servidor de autenticação e servidor de concessão de Tickets. O Kerberos trabalha baseado em tickets.Chave secreta compartilhada.

Page 130: Apam

Intermédio da criptografia com chave pública.Kerberos: principal protocolo de autenticação. Utiliza a autenticação mútua: autenticação entre cliente e servidor em ambas direções.

###Engenharia de software

Top-down: decompor o sistema em sub-sistemas para melhor visualizá-los. No Top-down, visão geral do sistema é formulada, especificando, mas não detalhando qualquer sistemas de primeiro nível. Cada subsistema é então refinado em detalhes ainda maiores, às vezes em muitos níveis adicionais de subsistemas até que a especificação inteira é reduzida a elementos básicos.

Bottom-up: juntar as partes dos sistemas para dar sistemas maiores. No bottom-up, os elementos base individuais do sistema são especificado em grande detalhe primeiro. Eles são unidos para formar subsistemas maiores até que um sistema completo de nível alto é formado.

###Rede de computadores

Topologia de rede

Barramento: todos os computadores são ligados no mesmo barramento físico. Apenas uma máquina pode escrever no mesmo barramento num dado momento.

Anel: estações conectadas através de um circuito fechado e em série. (Em desuso.)

Estrela: computadores são interligados através de switches ou qualquer outro concentrador/comutador.Não tem ligação direta entre computadores.

Árvore: é equivalente a várias estrelas interligadas entre si através de seus nós centrais.

Ponto a ponto.

###Engenharia de software

UsabilidadePrincípios: fácil aprendizagem, utilização eficaz e eficiente, satisfação subjetiva, facilidade para relembrar de como é o uso, pequena taxa de "erros" (erro é quando o usuário tenta obter num resultado e não consegue).

###Engenharia de software

PERT/CPMPERT = Program Evaluation and Review Technique.CPM = Critical Path Method.

Page 131: Apam

Os objetivos do método PERT/CPM: - minimizar problemas localizados de projetos, tais como: atrasos, estrangulamentos da produção e interrupções de serviços; - conhecer, antecipadamente, atividades críticas cujo cumprimento possa influenciar a duração total do programa; - manter a administração informada quanto ao desenvolvimento, favorável ou não, de cada etapa ou atividade do projeto, permitindo a constatação, antecipada, de qualquer fator crítico que possa turbar o desempenho e permitir uma adequada e corretiva tomada de decisão; - estabelecer o "quando" cada envolvido deverá iniciar ou concluir suas atribuições. - ser um forte instrumento de planejamento, coordenação e controle.

Folga de evento: definida como a diferença entre os tempos mais tarde de início e o mais cedo de início de um evento.

Folga de atividade: definida como a disponibilidade de tempo que uma atividade pode ser executada, além da sua duração prevista, sem afetar a duração pré-estabelecida para o projeto.

As atividades de um caminho crítico são denominadas atividades críticas.

###Engenharia de software (qualidade.pdf e custosdaqualidade.pdf)

Qualidade de software: conjunto de características que devem ser alcançadas em um determinado grau para que o produto atenda às necessidades de seus usuários. Ou ainda: totalidade de características de uma entidade que lhe confere capacidade de satisfazer a necessidade explícita e implícita.

Modelo de qualidade segundo McCall et all, 1977: - características operacionais (operação): correção (o quanto ele cumpre os objetivos visados pelo cliente), confiabilidade (o quanto ele executa a função pretendida com a precisão exigida), integridade (o quanto o acesso ao sw ou aos dados por pessoas não autorizados pode ser controlado), eficiência, usabilidade (o quanto de esforço é necessário pra aprender a usar o sw). - habilidade para ser alterado (revisão): manutenibilidade (localizar e eliminar erro), flexibilidade (mudar o programa), testabilidade. - adaptabilidade a novos ambientes (transição): portabilidade, reusabilidade (o quanto ele pode ser usado em outros programas), interoperabilidade (esforço para acoplar um programa a outro).

Custos da qualidade são divididos em quatro categorias: custos de prevenção*, custos de avaliação*, custos de falhas internas** e custos de falhas externas**.

* custos inevitáveis** custos inevitáveis

###Engenharia de software

Page 132: Apam

Diagramas de pacotes

Um pacote é um conjunto de elementos agrupados. Estes elementos podem ser classes, diagramas ou até mesmo outros pacotes.Modelo de 3 camadas: - apresentação: janela, relatórios - aplicação: registrar vendas, autorizar pagamentos - armazenamento: BD

###Sistemas operacionais

Sistemas distribuídosTipos de transparências (ocultar o fato de que seus processos e recursos estão distribuídos por vários computadores): - acesso: oculta diferenças na representação de dados e no modo de acesso a um recurso. - localização: oculta o lugar onde o recurso está sendo utilizado. - migração: oculta que um recurso pode ser movido para outra localização. - relocação: oculta que um recurso pode ser movido para outra localização enquanto em uso. - replicação: oculta que um recurso é replicado. - concorrência: oculta que um recurso pode ser compartilhado por vários usuários concorrentes. - falha: oculta a falha e a recuperação de um recurso.

###Engenharia de software

Repositório de configuração de software - lugar seguro onde artefatos são depositados; - permitem armazenamento, busca e recuperação de artefatos; - servem como um ponto de referência; - apóiam no aumento da memória organizacional;

###Engenharia de software

Gerenciamento de riscos

Componentes de riscos são: - risco de desempenho: grau de incerteza de que o produto atenda seus requisitos e seja adequado para seu uso planejado. - risco de custo: o grau de incerteza de que o orçamento do projeto seja mantido. - risco de apoio: o grau de incerteza de que o software resultante seja fácil de corrigir, adaptar e aperfeiçoar. - risco de cronograma: o grau de incerteza de que o cronograma do projeto será cumprido e de que o produto vai ser entregue no prazo.

Page 133: Apam

###Rede de computadores

SegurançaWorms: não precisam de infectar outro arquivo como os vírus. Raramente causa dano a um arquivo igual os vírus. Causam dano na rede, mesmo que seja só consumindo a banda.Trojan: permite que hackers tenham acesso ao computador. Podem enviar informações confidenciais também.

###Rede de computadores

Tipos de backup - total: copia todos os arquivos selecionados e os marca como arquivos que passaram por backup. - vantagens: rápida localização e restauração dos dados. - desvantagens: geram um volume muito grande de dados e interferem bastante no ambiente operacional pois copiam todos arquivos (modificados ou não). - atualização do total: atualiza o backup total copiando apenas os modificados. - vantagens: rápida realização do backup e rápida localização do backup. - desvantagens: os arquivos de backup são maiores. - incremental: copia todos os arquivos que foram alterados desde o último backup total ou incremental mais recente. - vantagens: economia de tempo e espaço - desvantagens: restauração mais lenta porque precisa do backup inicial total e todos os backups incrementais até o mais recente. - diferencial: cópia de todos os arquivos que foram alterados desde o último backup total. - vantagens: para a restauração são necessários apenas o backup inicial total e o último diferencial. - desvantagens: são maiores e mais demorados que o incremental. - cópia auxiliar ou replicação: cria cópias exatas dos arquivos de backup para redundância.

###Rede de computadores

Segurança da informação- integridade: visa assegurar que o documento não foi alterado após ter sido assinado.- autenticidade: visa estabelecer a validade da transmissão, da mensagem e do seu remetente. Comprovar a origem e autoria da mensagem.- não repúdio: visa garantir que o autor não negue ter criado e assinado a mensagem.- irretroatividade: visa garantir que o sistema não permita a geração de documento de forma retroativa no tempo.

###Sistemas de informacao

Page 134: Apam

Sistemas ERP

- a classificação ABCD avalia o grau de efetividade da implantação de um ERP em uma organização.- a implantação de um ERP, em geral, demanda o envolvimento, virtualmente, de todos os departamentos de uma organização e requer que as pessoas passem a trabalhar de uma forma diferente.- é necessária uma reorganização dos processos.- definição dos papéis de cada pessoa na organização. Com isso há maior segurança no acesso aos dados.

###Engenharia de software

Processos de gerenciamento de projetos

Adequação: processos que devem ser considerados ao gerenciar o projeto.

Os processos de gerenciamento de projetos são agrupados em 5 categorias:

- iniciação: são os processos realizados para definir um novo projeto ou uma nova fase de um projeto já existente através da obtenção de autorização para iniciar o projeto ou a nova fase. Processos de gerenciamento: desenvolver o termo de abertura do projeto e identificar as partes interessadas.

- planejamento: processos realizados para definir escopo do projeto, refinar os objetivos e desenvolver o curso de ação necessário para alcançar os objetivos para os quais o projeto foi criado. Ondas sucessivas são detalhamentos progressivos do plano de gerenciamento do projeto com frequência. As atualizações nos documentos do projeto fornecem uma maior precisão em relação ao cronograma, custos e requisitos de recursos para cumprir o escopo definido para o projeto. Processos de planejamento: desenvolver o plano de gerenciamento do projeto, coletar requisitos, definir o escopo, criar a EAP, definir as atividades, sequênciar as atividades, estimar os recursos das atividades, estimar as durações das atividades, desenvolver o cronograma, estimar custos, determinar o orçamento, planejar a qualidade, desenvolver o plano de recursos humanos, planejar as comunicações, planejar o gerenciamento de riscos, identificar os riscos, realizar a análise qualitativa dos riscos, realizar a análise quantitativa dos riscos, planejar resposta aos riscos e planejar as aquisições.

- execução: processos realizados para executar o trabalho definido no plano de gerenciamento do projeto para satisfazer as especificações do mesmo. Os processos de gerenciamento de projetos são: orientar e gerenciar a execução do projeto, realizar a garantia da qualidade, mobilizar a equipe de projeto (confirmação da disponibilidade dos recursos humanos), desenvolver a equipe do projeto, gerenciar a equipe do projeto, distribuir informações, gerenciar as expectativas das partes interessadas e realizar aquisições.

- monitoramento e controle: processos necessários para acompanhar, revisar e regular o progresso e o desempenho do projeto, identificar todas as áreas nas quais serão

Page 135: Apam

necessárias mudanças no plano e iniciar as mudanças correspondentes. O grupo de processos de monitoramento e controle inclui os seguintes processos de gerenciamento de projetos: monitorar e controlar o trabalho do projeto, realizar o controle integrado de mudanças, verificar o escopo, controlar o escopo, controlar o cronograma, controlar os custos, realizar o controle da qualidade, reportar o desempenho, monitorar e controlar os riscos e administrar as aquisições.

- encerramento: processos executados para finalizar todas as atividades de todos os grupos de processos, visando encerrar formalmente o projeto ou uma fase. O grupo de processos de encerramento inclui os seguintes processos de gerenciamento de projetos: encerrar o projeto ou fase e encerrar as aquisições.

###Engenharia de Software

REST: REpresentational State Transfer. É uma arquitetura de comunicação heterogênea de aplicação para aplicação, além de SOAP, WSDL e WS-*.Ele é um conjunto de princípios de como Web Standards (como HTTP e URI's) devem ser usados. No design de uma aplicação, se os princípios REST forem seguidos, haverá um sistema que explora a arquitetura Web em seu benefício.Cinco princípios:- dê, a todas as coisas, um identificador: com um id para tudo, pode-se mandar o link de um cliente via email, favoritar no navegador, anotar em um papel, etc. A crítica dessa ideia é com relação a expor valores de banco de dados nos links.- vincule as coisas: a ideia é que se usem links para referenciar tudo que possa ser identificado sempre que for possível.- utilize métodos padronizados.- recursos com múltiplas representações.- comunique sem estado.

###Rede de computadores

Acordo de confidenciabilidade e de não-divulgação: é um contrato legal entre, pelo menos duas partes, que destacam materiais confidenciais que as partes desejam compartilhar, mas cujo uso generalizado elas desejam restringir. O acordo cria um relacionamento confidencial entre as partes para proteger qualquer tipo de segredo comercial. O acordo pode ser mútuo, significando que ambas as partes sofrem restrições no uso dos materiais providos ou pode ser unilateral.

###Engenharia de software

NBR/ISO 27002

Norma equivalente à ISO/IEC 17799:2005. A segunda edição cancela e substitui a edição anterior (ABNT NBR ISO/IEC 17799:2001), que foi tecnicamente revisada.Requisitos legais:- proteção de dados e privacidade de informações.- proteção de registros organizacionais.

Page 136: Apam

- direitos de propriedade intelectual.

Melhores práticas:- documento da política de segurança da informação.- atribuição de responsabilidades para a segurança da informação.- conscientização, educação e treinamento em segurança da informação.- processamento correto nas aplicações.- gestão de vulnerabilidades técnicas.- gestão de continuidade de negócios.- gestão de incidentes de segurança da informação e melhorias.

Fatores críticos de sucesso:- política de segurança da informação, objetivos e atividades, que reflitam os objetivos do negócio.- uma abordagem e uma estrutura para a implementação, manutenção, monitoramento e melhoria da segurança da informação que seja consistente com a cultura organizacional.- comprometimento e apoio visível de todos os níveis gerenciais.- um bom entendimento dos requisitos de segurança da informação, da análise/avaliação de riscos e da gestão de risco.- divulgação eficiente da segurança da informação para todos os gerentes, funcionários e outras partes envolvidas para se alcançar a conscientização.- distribuição de diretrizes e normas sobre a política de segurança da informação para todos os gerentes, funcionários e outras partes envolvidas.- provisão de recursos financeiros para as atividades da gestão de segurança da informação.- provisão de conscientização, treinamento e educação adequados.- estabelecimento de um eficiente processo de gestão de incidentes de segurança da informação.- implementação de um sistema de medição, que seja usado para avaliar o desempenho da gestão da segurança da informação e obtenção de sugestão para a melhoria.

A norma é estruturada em 11 seções subdivididas em categorias.Cada categoria principal de segurança da informação contém:- um objetivo de controle que define o que deve ser alcançado.- um ou mais controles que podem ser aplicados para se alcançar o objetivo do controle.

###Sistemas de informação

Rede de Petri: técnica de modelagem que permite a representação de sistemas. Esta técnica permite modelar sistemas paralelos, concorrentes, assíncronos e não determinísticos.A representação gráfica é formada por dois componentes: um ativo chamado de transição (barra) e outro passivo denominado lugar (círculo). Os lugares equivalem às variáveis de estado e as transições equivalem às ações realizadas pelo sistema. Eles são ligados entre si através de arcos dirigidos que podem ser múltiplos ou únicos.

Page 137: Apam

Marcas são informações atribuídas aos lugares, para representar a situação da rede em um determinado momento. A marcação da rede de Petri é modificada a cada ação realizada (transição disparada).

###Estruturas de dados

Árvore B.Adicionar: Para inserir um novo elemento em uma árvore B basta localizar o nó folha X onde o novo elemento deva ser inserido. Se o nó X estiver cheio, será necessário realizar uma subdivisão de nós que consiste em passar o elemento mediano de X para seu pai e subdividir X em dois novos nós com t - 1 elementos e depois inserir a nova chave.Grau mínimo t dita o número mínimo e máximo de elementos de um nó.t deve ser >= 2.Número mínimo de elementos: t-1.Número máximo de elementos: 2t - 1.Número mínimo de filhos: tNúmero máximo de filhos: 2t

###Engenharia de software

Page 138: Apam

Diagrama de Gantt: diagrama que mostra o cronograma do projeto, tanto real, quanto realizado e as tarefas em andamento. Criado por Henry Gantt em 1917, ela é utilizado até hoje.

###Engenharia de software

Data warehouse

Tabelas fato: são as principais tabelas numa modelagem dimensional, pois nelas são guardadas as medidas numéricas mais importantes do processo de negócio. Exemplos como valor do faturamento, quantidade de produtos entregues e a quantidade de entregas são os tipos de dados que estão alocados nesta tabela, ou seja, ela geralmente guarda informações referentes às transações ou eventos de negócios. As tabelas fato são compostas obrigatoriamente por uma chave primária composta pelas chaves primárias das tabelas que contem as descrições do fato, as dimensões. Geralmente uma tabela fato apresenta poucas colunas, porém é nela que a maior parte das informações está contida e por este motivo é que elas consomem em medida 90% do espaço de um data warehouse.

Tabelas dimensão: compostas pelas informações complementares às tabelas fato. As tabelas de dimensão estão sempre acompanhadas de tabelas de fatos. Sem os fatos, não há informação para exibir. A partir da combinação das várias dimensões com o fato, uma informação é gerada, para que a alta gerência possa tomar suas decisões. Estas tabelas são compostas basicamente por colunas que contem elementos textuais que descrevem o negócio e uma chave primária que irá compor a chave composta de sua tabela fato.

###Estruturas de dados

Árvores AVL

São árvores balanceadas. Isto é, a diferença entre a sub-árvore direita e a esquerda pode ser -1, 0 ou +1, somente. A esta diferença dá-se o nome de fator de balanceamento (FB). Para inserir um elemento, primeiro coloque-o na posição em que ele deveria estar sem se preocupar com o balanceamento. Depois que ocorre o balanceamento.Exemplo:

Da etapa 2 pra 3, houve uma rotação sobre o nó 4 para a esquerda (pois ele tem FB positivo). De 3 para 4, há uma rotação sobre o nó 8 para a direita (pois ele tem FB negativo).

Outro exemplo é a inserção do número 3 na árvore inicial do exemplo de cima.

Page 139: Apam

Como os dois FB (o da raiz -2 e o do filho -1, do nó 4) tem o mesmo sinal, então uma rotação simples sobre o nó desbalanceado (nó 8) somente é necessária (no caso para a direita pois o sinal é negativo).

###Engenharia de software

Modelagem estática: diagrama de classes representa estrutura estática do sistema; foco nas instruções relevantes para a construção do sistema; esse diagrama contém conceitos (classes) importantes para o domínio do problema e as ligações entre eles; cada classe é especificada em termos das informações que armazena (atributos) e dos serviços que ela provê (operações).

Modelagem dinâmica identifica e modela os aspectos do sistema de software que podem mudar durante a sua execução, devido à ocorrência de eventos; foco no comportamento que o sistema deve apresentar; usa os diagramas dinâmicos da UML (sequência, colaboração e estados); especifica uma versão inicial das interfaces públicas das classes de análise; sub-etapa de análise OO – foco no domínio do problema.A modelagem de classes de análise fornece subsídios para a modelagem dinâmica. Primeiro as classes são modelas. Depois, as interações entre elas são pensadas.

###Engenharia de software

Revisão de software

Segundo CEI/CMMI, um processo de revisão pode ser entendido como uma avaliação crítica do produto. Walkthroughs, inspeções e auditorias são consideradas processos de revisão.Os processos de revisão fornecem subsídios para os processos de avaliação de qualidade de software. Outros benefícios:- aumentar a qualidade do produto;- identificar e documentar defeitos;- identificar melhorias necessárias em um produto de trabalho;- verificar que o produto de trabalho está em conformidade com padrões, especificações e requerimentos adotados;- atingir consenso em relação aos produtos de trabalho;- aumentar o conhecimento dos pares em relação ao produto;- ser uma “via” gerencial para, formalmente, completar uma tarefa.Pode-se envolver tanto engenheiros de software, quanto usuários, programadores, analistas, projetistas, etc.As revisões são aplicadas a pedaços de software, módulos do sistema como um todo.

Page 140: Apam

###Engenharia de software

Regras de negócio: são políticas, condições ou restrições que devem ser consideradas na execução dos processos existentes em uma organização. É uma parte importante dos processos organizacionais porque descrevem a maneira como a organização funciona. Cada organização pode ter várias regras de negócio. As regras de negócio de uma organização são normalmente identificadas nas fases de levantamento de requisitos de análise. São documentadas no modelo de regras de negócio. Pode-se descrevê-las utilizando textos informais do tipo “Um cliente de banco não pode tirar mais de R$1.000,00 por dia.”, etc.As regras de negócio normalmente tem influência sobre a lógica de execução de um ou mais casos de uso.

###Banco de dados

Sintonia de banco de dados (tuning): realização de ajustes em um sistema de BD visando obter um melhor desempenho das aplicações por meio da utilização adequada dos recursos computacionais disponíveis. É uma das principais tarefas de manutenção do administrador de BD. Realizar sintonia pode ser especificar novos índices, realizar o particionamento adequado de algumas tabelas ou desnormalização de outras. As atividades podem ficar mais rápidas ou evitar processamentos desnecessários.Outro ponto importante na sintonia é o ajuste das configurações dos SGBDs.

###Sistemas de informação

Gestão por processo- É de difícil implementação e depende de um ciclo de atividades gerenciadas.- A excelência do desempenho e o sucesso no negócio requerem que todas as atividades inter-relacionadas sejam compreendidas e gerenciadas segundo uma visão de processos.- Enfoque administrativo aplicado por uma organização que busca a otimização e melhoria da cadeia de seus processos, desenvolvida para atender necessidades e expectativas das partes interessadas, assegurando o melhor desempenho possível do sistema integrado a partir da mínima utilização de recursos e do máximo índice de acerto.

Atributos Visão tradicional Visão de processo1 – Foco Chefe Cliente2 – Relacionamento primário Cadeia de comando Cliente – fornecedor3 – Orientação Hierárquica Processo4 – Quem toma decisão Gerência Todos os participantes5 – Estilo Autoritário Participativo

Cada processo é um conjunto de sub-processos. Cada sub-processo é um conjunto de atividades. Cada atividade é um conjunto de tarefas.

- Gestão por processos representa coloca em risco uma grande quantidade de recursos.- Seus resultados produzem alto impacto para os clientes.- Falhas nesses processos comprometem o desempenho de todo o sistema.- São críticos para a consecução da estratégia da organização.

Page 141: Apam

Ferramentas para análise e melhoria de processo: - Gráficos: monitorar desempenho para detectar tendências.- Diagramas de afinidade: organizar e agrupar dados.- Gráficos pareto: foca em esforço de melhoria em áreas que tem os maiores impactos.- Diagramas de causa e efeito: identificar causas para um problema.- Scatter plot: exibir (visualmente) relacionamentos entre duas variáveis independentes.- Brainstorming: gerar soluções criativas para um problema.- Mapeamento de processo: entender e/ou melhorar um processo de trabalho.- Análise do campo de força: identificar força motriz e contida.

###Sistemas de informação

Indicadores de desempenho: termos e significados.

Indicadores: resultados numéricos que evitam decisões baseadas em conceitos subjetivos, como “bom”, “rápido”, etc.Índices: refletem resultados efetivamente obtidos que, comparados aos padrões, revelam os problemas representados pelos desvios.Padrões: valores definidos como referência para os processos.Metas: resultados a serem alcançados num período de tempo.

###Acessibilidade na Web

Áreas ou princípios para acessibilidadeÁrea da Percepção ou princípio perceptível: trata de benefícios relacionados à apresentação do conteúdo, da informação. Preocupa-se com percepção de elementos como gráficos, sons, imagens, multimídia, etc. Isso significa, por exemplo, que poderá ter uma descrição textual para as imagens da página.

Área da operação ou princípio operável: preocupa-se com a manipulação da informação, do conteúdo. Essa área deve garantir formas alternativas ao acesso às informações através de maneiras diferencias de navegação ou técnica similar. Percebe-se, também, que é de responsabilidade da Operação garantir sempre ao usuário o controle da navegação e interação com o sítio. Um exemplo pode ser que todas as funções sejam acessadas pelo teclado, sendo o mouse opcional.

Área do entendimento ou princípio compreensível: trata de questões relacionadas à compreensão do conteúdo publicado. Deve-se garantir que todo o conteúdo apresentado seja de fácil compreensão para qualquer tipo de usuário. Evita que o usuário cometa erro, corrigindo e apresentando-o.

Área da compatibilidade ou princípio robusto: aborda questões como a necessidade de utilizarmo-nos sempre de tecnologias acessíveis e compatíveis com o modelo proposta para acessibilidade na web, isto é, o site é criado maximizando a compatibilidade com a tecnologia assistiva presente e futura.

###Sistemas de informação

Page 142: Apam

Gestão por processo- O mapeamento do processo provê uma estrutura para que processos complexos possam ser avaliados de forma simples.- A equipe pode “ver” o processo completo.- É possível visualizar mudanças no processo que provocarão grandes impactos.- Áreas e etapas que não agregam valor podem ser facilmente identificadas.- Os tempos de ciclo de cada etapa podem ser estimados.

Estabelecer um ponto inicial e final de um processo é um ponto de partida crucial no mapeamento, pois ajuda a equipe a identificar as etapas importantes, eventos e operações que constituem o processo. Tipicamente o ponto inicial de um processo é o primeiro que recebe inputs de fornecedores. Normalmente o ponto final é a entrega do produto principal ou serviço ao cliente do processo.

Qual a finalidade do mapeamento?- Adquire clara visibilidade e conhecimento a respeito da definição de um processo.- Realizar análise crítica a respeito do processo.- Utilizar como linha de base para melhorias ou para reengenharia.

O mapeamento é fundamental para identificação dos processos essenciais e para análise sistêmica das organizações.

###Sistemas de informação

Técnicas de levantamento de informação sobre os processos

Questionário: consiste em uma série de questões ou perguntas formuladas previamente, podendo ser utilizado com ou sem presença de pessoas envolvidas no processo, quando há necessidade de obter respostas quantitativas; quando é preciso obter informações de diferentes pontos geográficos e quando é necessária uma análise estatística. Não é necessária a presença dos analistas quando da execução, ou aplicação, mas as perguntas podem ser interpretadas de forma diferente por pessoas diferentes.

Pesquisa de documentação existente ou revisão de literatura: compreende a identificação, coleta e análise de todos os instrumentos escritos – internos ou externos à organização – referentes ao tema que esta sendo desenvolvido. Um problema é que esta técnica não é uma que possa ser utilizada independentemente das outras técnicas de levantamento.

Workshop: trata-se de uma técnica de elicitação em grupo usada em uma reunião estruturada. Devem fazer parte do grupo uma equipe de analistas e uma seleção dos stakeholders que melhor representam a organização e o contexto em que o sistema será usado, obtendo assim um conjunto de requisitos bem definidos. Um problema é que não abre espaço para ideias externas. Outro problema é questão de horário disponível para stakeholders.

###Sistemas de informação

Cadeia de valor criada por Michael Porter em 1985.(http://www.strategy-train.eu/index.php?id=270&L=5)

Page 143: Apam

O modelo de cadeia de valor destaca as atividades específicas da empresa nas quais as estratégias competitivas podem ser melhor aplicadas. Tal modelo apresenta as seguintes características:- Encara uma empresa como uma série ou “cadeia” de atividades básicas que adicionam valor a seus produtos e serviços e, com isso, adicionam uma margem de valor para a empresa.- Algumas atividades das empresas são consideradas atividades primárias e outras são atividades de apoio. Esse referencial pode destacar onde as estratégias competitivas podem ser melhor aplicadas em um negócio.

O objetivo das atividades primárias é a produção de valor que exceda o custo de fornecimento do produto ou serviço, ou seja, para gerar um lucro. São elas: logística interna ou de entrada, operações, logística externa ou de saída, marketing/vendas e serviço.

Atividades de Apoio ou de Suporte: as atividades primárias da cadeia de valor são facilitadas pelas atividades de apoio, organizadas por Porter em quatro categorias genéricas, detalhadas de acordo com a especificidade da empresa. São elas: infraestrutura, gestão de recursos humanos, desenvolvimento tecnológico e aquisição.

###Sistemas de informação

PDSA – plan, do, study, act. Anteriormente chamado de PDCA (C de check).

PDCA

PlanNesta etapa são definidas as metas que se deseja atingir, geralmente, anuais. As metas devem relevar pontos importantes como as tendências de mercado, os fornecedores, a situação política do país e do mundo. Após definidas as metas, deve-se buscar os meios e os procedimentos para alcançá-las.

DoAqui todos os envolvidos com as ações são treinados nos procedimentos que tem como base as metas estabelecidas, realizam as atividades e colhem dados, para a fase de verificação. É a fase de implantação do planejamento.

CheckEsta é uma etapa puramente gerencial, verificando se as ações executadas estão de acordo com as metas estabelecidas. Os dados utilizados são aqueles coletados na etapa anterior, que são analisados e comparados com o planejado (fase “planejar”). Normalmente, são empregadas as ferramentas da qualidade. Esta fase foi renomeada para “study” por Deming para enfatizar a importância dos resultados, e evitar confundí-la como sendo apenas inspeção.

ActNesta etapa, a atuação é corretiva, ou seja, caso a operação realizada não esteja de acordo com o planejado, deve-se atuar corretivamente através de planos de ação para correção de rumo visando à meta estabelecida.

A melhoria contínua é feita a partir do momento em que as metas estabelecidas sejam atingidas. Neste caso, deve-se voltar à fase planejar e revisar as metas já atingidas traçando novos desafios, procedimentos, etc. O ciclo PDCA é um método de gestão, que representa o caminho a ser seguido para que as metas estabelecidas sejam atingidas. Também é conhecido

Page 144: Apam

por ciclo de Shewhart, que foi o idealizador do conceito; entretanto, Deming foi o responsável pelo seu desenvolvimento.

###Sistemas de informação

Histograma: na estatística, um histograma é uma representação gráfica da distribuição de frequências de uma massa de medições, normalmente um gráfico de barras verticais. É uma das Sete Ferramentas da Qualidade.

Desdobramento da função qualidade: O QFD (Quality Function Deployment – Desdobramento da Função Qualidade) é uma das ferramentas da qualidade que foi criada na década de 60 pelo japonês Yoji Akao e que tem como objetivo principal permitir que a equipe de desenvolvimento do produto incorpore as reais necessidades do cliente em seus projetos de melhoria. Podemos dizer que o QFD é uma ferramenta que possibilita “ouvir” a voz do cliente e ordená-la de modo a facilitar a análise de suas necessidades que são transformadas em requisitos para a melhoria do produto na forma de especificações técnicas do mesmo.

Diagrama de causa e efeito (Espinha de peixe, Diagrama 6M): Esta ferramenta é uma representação gráfica que nos possibilita organizar informações, auxiliando na identificação das possíveis causas de um determinado problema (efeito). Considerada uma das sete ferramentas da Qualidade, sendo uma importante ferramenta para o gerenciamento do controle da Qualidade, criada pelo engenheiro químico Kaoru Ishikawa em 1943. Normalmente é elaborado a partir de um brainstorming, e permite que ele seja colocado através de grupos as possíveis causas do problema. Dicas para o melhor desempenho do estudo através do Diagrama de Causa e Efeito:- Reunir todas as pessoas envolvidas no processo identificado para estudo;- Reunir informações baseadas nas causas;- Objetividade no estudo.É também chamado de Diagrama 6M:

Método: toda a causa envolvendo o método que estava sendo executado o trabalho; Matéria-prima: toda causa que envolve o material que estava sendo utilizado no

trabalho; Mão-de-obra: toda causa que envolve uma atitude do colaborador (ex: procedimento

inadequado, pressa, imprudência, ato inseguro, etc.) Máquinas: toda causa envolvendo á máquina que estava sendo operada; Medida: toda causa que envolve uma medida tomada anteriormente para modificar

o processo, etc; Meio ambiente; toda causa que envolve o meio ambiente em si ( poluição, calor,

poeira, etc.)e o ambiente de trabalho (layout, falta de espaço, dimensionamento inadequado dos equipamentos, etc.).

Diagrama de afinidades: Ferramenta utilizada com o objetivo de se conhecer o problema por meio da organização das ideias. É a representação gráfica de grupos de dados afins, que são conjuntos de dados verbais que têm entre si, alguma relação natural que os distinguem dos demais. Ela é utilizada para:- Direcionar a solução de um problema;- Organizar as informações necessárias à solução de um problema;- Organizar as causas de um problema;- Fornecer suporte para solução de um problema;- Fornecer suporte para a inovação de conceitos tradicionais;

Page 145: Apam

- Prever situações;- Organizar as ideias resultantes de algum processo de avaliação, como na auditoria da qualidade;- Planejar a coleta de dados para futura estratificação.

###Sistemas de informação

Técnicas de modelagem

BPMN: notação de modelagem de processos de negócio, cujo objetivo seja facilitar o entendimento de todos os envolvidos na gestão e monitoração dos processos. Foi desenvolvido pela BPMI (Business Process Management Initiative).

Page 146: Apam

IDEF (integrated definition) é um grupo de métodos de modelagem que podem ser usados para descrever operações em uma empresa. Tem como objetivo modelar atividades necessárias para darem suporte à análise de sistema, design, melhoria ou integração.Originalmente, IDEF foi criado para melhorar a comunicação entre as pessoas que tentavam entender o sistema. Hoje, IDEF é usado para documentação, entendimento, design, análise, planejamento e integração.

Page 147: Apam

EPC (Event-driven Process Chain)

Pertence à arquitetura ARIS (Architecture of Integrated Information Systems).EPC habilita a modelagem de processo como uma seqüência lógica de funções. Considera-se EPC como uma cadeia de processos que pode ser entendido como a quantidade de funções que são disparadas por um ou mais eventos.

Problemas: alto custo e dificuldade de utilização.

###Sistemas de informação

PCF (process classification framework)A decomposição funcional é feita por:- categoria: é o mais alto nível indicado por números inteiros.- grupo de processos: 1ª decomposição funcional são todos os itens do PCF com um dígito decimal.

Page 148: Apam

- processo: 2ª decomposição funcional são todos os itens do PCF com dois dígitos decimais.- atividade: 3ª decomposição funcional são todos os itens do PCF com três dígitos decimais.

Exemplos de Classificação- Gerenciar serviço de atendimento ao cliente (5.0): categoria;- Dar atenção ao cliente/desenvolver estratégia de atendimento ao cliente (5.1): grupo de processos;- Desenvolver segmentação de cliente/priorização do cliente (5.1.1): processo;- Receber pedidos de cliente/perguntas do cliente (5.2.1.1): atividade.

###Sistemas de informação

Medidas de desempenho

Segundo Harrington (1993) há três controles principais de processo:- Eficácia - medida que permite o controle das saídas do processo, ou seja, a efetividade com que às necessidades e expectativas dos clientes estão sendo atendidas; - Eficiência - é a maneira como o uso dos recursos é minimizado para alcançar os objetivos da organização, eliminando o desperdício, procurando atingir a eficácia; - Adaptabilidade - consiste no controle de quanto o processo (ou subprocesso) é flexível em atender as necessidades e expectativas dos clientes, tanto aquelas rotineiras quanto as especiais.

###Sistemas de informação

Matriz GUT (gravidade, urgência, tendência): Esta matriz é uma forma de se tratar problemas com o objetivo de priorizá-los. Leva em conta a gravidade, a urgência e a tendência de cada problema.

Gravidade: representa o impacto do problema analisado caso ele venha a acontecer. É analisado sobre alguns aspectos, como: tarefas, pessoas, resultados, processos, organizações etc. Analisando sempre seus efeitos a médio e longo prazo, caso o problema em questão não seja resolvido;

Urgência: representa o prazo, o tempo disponível ou necessário para resolver um determinado problema analisado. Quanto maior a urgência, menor será o tempo disponível para resolver esse problema. É recomendado que seja feita a seguinte pergunta: “A resolução deste problema pode esperar ou deve ser realizada imediatamente?”;

Tendência: representa o potencial de crescimento do problema, a probabilidade do problema se tornar maior com o passar do tempo. É a avaliação da tendência de crescimento, redução ou desaparecimento do problema. Recomenda-se fazer a seguinte pergunta: ”Se eu não resolver esse problema agora, ele vai piorar pouco a pouco ou vai piorar bruscamente?”.

Para cada problema, uma nota de 1 a 5 (5 mais grave, 1 menos grave) é atribuída para cada uma das características e o produto entre G, U e T resultará em um número. As tarefas serão ordenadas decrescentemente de acordo com esse número. Esta será a ordem em que as tarefas serão executadas.

Page 149: Apam

###Sistemas de informação

Princípio de Pareto ou Princípio 80/20

O Princípio 80/20 afirma que existe um forte desequilíbrio entre causas e efeitos, entre esforços e resultados e entre ações e objetivos alcançados. O Princípio afirma, de uma maneira genérica, que 80% dos resultados que obtemos estão relacionados com 20% dos nossos esforços. Em outras palavras: uma minoria de ações leva a maior parte dos resultados, em contrapartida, uma maioria de ações leva a menor parte dos resultados. A lei foi sugerida por Joseph M. Juran, que deu o nome em honra ao economista italiano Vilfredo Pareto.Exemplo: Uma livraria não pode ter todos os títulos do mercado, portanto ela aplica a regra de Pareto e foca em 20% dos títulos que geram 80% da receita.- A maioria dos acidentes de carro ocorre em um número relativamente pequeno de cruzamentos, na faixa da esquerda em determinada hora do dia.- A maioria dos acidentes fatais ocorre com jovens.- Em vendas comissionadas, 20% dos vendedores ganharão mais de 80% das comissões.- Estudos mostram que 20% dos clientes respondem por mais de 80% dos lucros de qualquer negócio.- Menos de 20% das celebridades dominam mais de 80% da mídia, enquanto mais de 80% dos livros mais vendidos são de 20% dos autores.- Mais de 80% das descobertas científicas são realizadas por 20% dos cientistas. Em cada época, são uns poucos especialistas celebres que fazem a maioria delas.

###Engenharia de software

Tópicos em gerência de projetos

Quando os recursos disponíveis para a realização de um projeto estão escassos:

- Realiza-se uma classificação a partir de métodos relacionados ao planejamento estratégico, em que os projetos são classificados como ofensivos, quando se busca ampliar o mercado, ou defensivos, em que a postura é de manutenção dos clientes.- É preciso realizar uma avaliação preliminar de cada projeto de forma a analisar sua exequibilidade e, em caso afirmativo, proceder à análise de custo/benefício para avaliar se a organização deve realizá-lo.- Após a seleção estratégica deve-se realizar a programação estratégica, quando é considerado o nível de tolerância da organização para o risco no conjunto dos projetos selecionados.

Afirmativa errada: Estudo de viabilidade corresponde à etapa do projeto em que se avalia, com base na receita da empresa, a mesma capacidade de executar o projeto.Errada, pois o estudo de viabilidade não está relacionado somente a recursos financeiros, um projeto pode não poder ser executado, por exemplo, se não tiver pessoal capacitado disponível, se houver algum impedimento legal.

Entradas do processo de gerenciamento do escopo:- Fatores ambientais da empresa; ativos de processos organizacionais; termo de abertura; declaração preliminar de escopo; plano de gerenciamento do projeto.

Entradas do processo do planejamento das aquisições:

Page 150: Apam

Linha de base do escopo que consiste dos seguintes componentes: Declaração do escopo; EAP; Dicionário EAP;Documentação dos requisitos;Acordos de cooperação;Registro de riscos;Decisões contratuais relacionadas a riscos;Requisitos de recursos das atividades;Cronograma do projeto;Estimativas de custos das atividades;Linha de base de desempenho de custos;Fatores ambientais da empresa;Ativos dos processos organizacionais.

Após estas atividades descritas abaixo, tem-se a atualização do registro de riscos:- monitorar e controlar os riscos.- planejar as respostas aos riscos.- realizar a análise quantitativa dos riscos.- realizar a análise qualitativa dos riscos.Após identificar os riscos, tem-se a criação do registro de riscos.

Segundo o PMBOK, são ferramentas adicionais planejamento de qualidade:- Brainstorming.- Diagramas de afinidade, usados para identificar visualmente os agrupamentos lógicos com base em relacionamentos naturais.- Análise do campo de força, que são diagramas das forças a favor e contra a mudança.- Técnicas de grupos nominais, para permitir que as idéias passem pelo brainstorming em pequenos grupos e depois sejam analisadas por um grupo maior.- Diagramas matriciais, que incluem dois, três ou quatro grupos de informações e mostram as relações entre fatores, causas e objetivos. Os dados de uma matriz são organizados em linhas e colunas com células de interseção que podem ser preenchidas com informações que descrevam os relacionamentos demonstrados entre os itens localizados na linha e na coluna.- Matrizes de priorização, que fornecem uma forma de classificar um conjunto variado de problemas e/ou questões (normalmente gerados durante o brainstorming) pela sua importância.

###Engenharia de software

Gerenciamento de programas - Um programa é definido como um grupo de projetos relacionados gerenciados de modo coordenado para a obtenção de benefícios e controle que não estariam disponíveis se eles fossem gerenciados individualmente.

A organização PRS necessita gerenciar seus projetos, sob a luz do PMBOK, de forma a atender as seguintes necessidades:

#a: Agrupar projetos para serem gerenciados de forma coordenada para a obtenção de benefícios que não seriam disponíveis se os projetos fossem gerenciados separadamente.#b: Determinar a sequência de atividades do cronograma de um projeto, descrevendo seu caminho mais longo, através do projeto, obtendo assim a duração do projeto.#c: Identificar e desenvolver metodologia, melhores práticas e padrões de gerenciamento de projetos, dentro da organização, além de realizar o gerenciamento de recursos compartilhados entre todos os projetos administrados em conjunto.

Page 151: Apam

#d: Há projetos a serem gerenciados em ambientes dentro da PRS muito indefinidos, incertos e em rápida transformação.#e: É necessário customizar processos do PMBOK à realidade da PRS, sobretudo os utilizados para definir o escopo do projeto, refinar os objetivos e desenvolver o curso de ação necessário para alcançar os objetivos para os quais o projeto foi criado.#f: Analisar qualitativa e quantitativamente os riscos relacionados aos projetos.#g: Emitir e desenvolver relatórios de desempenho dos projetos.

###Engenharia de software

Gerência de projetos

Referencial Lógico

Ferramenta conceitual e analítica que reúne as partes, o planejamento e a administração do projeto.O modelo de lógica foi caracterizado inicialmente por um programa de avaliadores como uma ferramenta para a identificação de medidas de desempenho. Desde então, a ferramenta tem sido adaptada para o programa planejamento. A aplicação do modelo de lógica como uma ferramenta de planejamento permite a comunicação precisa sobre os propósitos de um projeto, os componentes de um projeto, e a sequência de atividades e realizações. Além disso, um projeto originalmente concebido com a avaliação em mente tem uma maior probabilidade de produzir dados benéficos.Os modelos lógicos, que comecem com as entradas e trabalho até os resultados desejados, podem refletir uma natural tendência para limitar o pensamento às atividades existentes.

###Engenharia de software

Tópicos em gerência de projetos

Entradas no processo de identificação de riscos: Fatores ambientais da empresa. Ativos de processos organizacionais. Declaração de escopo do projeto. Plano de gerenciamento de riscos. Plano de gerenciamento do projeto.

O treinamento pode ser formal ou informal. Exemplos de métodos incluem o treinamento na sala de aula, o online, o baseado em computador, o feito no trabalho com orientação de outro membro da equipe de projetos, a mentoria e a orientação. Se os membros da equipe do projeto não têm as habilidades gerenciais ou técnicas necessárias, essas podem ser desenvolvidas como parte do trabalho do projeto.

###Engenharia de software

Tópicos de UML

Uma relação de realização entre uma interface e uma classe denota que a classe tem a responsabilidade de implementar os métodos declarados na interface.

Uma relação de dependência entre uma interface e uma classe denota que a classe não tem, necessariamente, a responsabilidade de implementar os métodos declarados na interface.

Page 152: Apam

###Engenharia de software

UML

Tipos de descrição

Pode ser: contínua (é contada a história de como o sistema funciona), numerada (descrita através de uma série de passos), particionada (dividida em duas colunas, uma para os atores (cliente) e outra para o sistema – nada impede de que as ações sejam enumeradas).

Casos de uso essenciais ou reais (concretos). Essencial não cita detalhe de tecnologia utilizada.Real ou concreto cita detalhe de tecnologia.Regra dos 100 anos: pergunte-se, ao ler a narrativa, se ela seria válida tanto há 100 anos, quanto a 100 anos. Se a resposta for sim, provavelmente esta narrativa é essencial. Caso contrário, provavelmente ela é dependente de tecnologia e é real ou concreta.

Atores primários: são aqueles que iniciam uma sequência de interações de um caso de uso. São os agentes externos, para os quais, o caso de uso traz benefício direto.

Atores secundários: são aqueles que auxiliam os atores primários. Eles supervisionam, operam, mantem ou auxiliam o sistema. Estes atores existem apenas para que os atores primários possam utilizar o sistema.

Os atores e os casos de uso são identificados a partir de informação coletadas na fase de levantamento de requisitos.

Identificação de casos de uso: casos de uso opostos; que precedem outro caso de uso; que sucedem um caso de uso; temporais (não há atores diretamente envolvidos; algumas tarefas podem ser realizadas automaticamente); casos de uso relacionados a alguma condição interna (também não há atores envolvidos diretamente; o sistema notifica o usuário de que há mensagens novas, por exemplo.).

De 10 a 20% dos casos de uso mais importantes são identificados na fase de concepção dos modelos iterativos. Na fase de elaboração, a construção continua de tal forma que, ao seu término, 80% dos casos de uso já estão terminados. Na fase de construção, os casos de uso formam uma base natural através da qual se pode realizar as iterações do desenvolvimento. Um grupo de casos de uso é escolhido para cada iteração. Ele é detalhado e desenvolvido. Pode ser o caso de um caso de uso complexo precisar de mais de uma iteração. Este processo continua até que todos os casos de uso tenham sido desenvolvidos e o sistema esteja completamente construído. A esse processo todo, dá-se o nome de desenvolvimento dirigido a caso de uso (use case driven development).

Para considerar os casos de uso mais importantes há dois fatores: risco de desenvolvimento e prioridades estabelecidas pelo usuário.

Casos de uso que mencionam detalhes de interface são indesejáveis durante a análise. O mais adequado é utilizar casos de uso essenciais e, posteriormente, na etapa de projeto, transformá-los em casos de uso reais adicionando detalhes. Na fase de análise, descrições devem capturar

Page 153: Apam

os requisitos funcionais do sistema e ignorar aspectos do projeto, como a interface gráfica com o usuário.

Um estado complexo pode ser dividido em diagramas de nível inferior, denominados estados compostos ou subestados: Algumas simulações de engenharia podem demorar vários dias. Como os computadores falham, é importante criar mecanismos que permitam o reinício da simulação do ponto em que parou. Para facilitar a criação destes pontos, os diagramas de máquina de estado acrescentaram o conceito de estado de história que é representado pela letra "H". As informações do sistema são armazenadas de tal forma que permitam o reinício da simulação a partir deste ponto.

###Sistemas de informação

BPM

Mapeamento de um processo se faz mediante a utilização de um fluxograma.

###Sistemas de informação

BPMN

Pools - Representa um participante em um processo. Um participante pode ser uma entidade de negócio ou pode ser um papel.

Lanes - Lane é uma subdivisão dentro de um Pool usado para organizar e categorizar as atividades

Gateways - É usado para controlar a divergência e/ou a convergência da sequência de um fluxo. Assim, determinará decisões tradicionais, como unir trajetos ou dividir trajetos

Data Object - Objeto de Dados é considerado um artefato porque não afeta o fluxo de mesnagem e nem o fluxo de sequência de um processo. Ele pode ser utilizado para representar documentos tais como: fatura, nota fiscal e etc.

Page 154: Apam

Sequence Flow - É usado para mostrar a ordem (sequência) com que as atividades serão executadas em um processo

BPMN usa o conceito de swimlanes para ajudar a dividir e a organizar atividades. Há dois tipos de swimlanes: Pool (Piscina) e Lane (Raia). Pools são utilizados quando o diagrama envolve duas entidades de negócio ou participantes que estão separados fisicamente no diagrama. Especifica "quem faz o que", colocando os eventos e os processos em áreas protegidas, chamadas de pools. Os objetos do tipo lane são utilizados para separar as atividades associadas para uma função ou papel específico. Um pool representa uma organização e uma lane representa tipicamente um departamento dentro dessa organização.

###Sistemas de informação

BPM

Segundo a FNQ, definimos processos por “um conjunto de atividades preestabelecidas que, executadas numa seqüência determinada, vão conduzir a um resultado esperado que assegure o atendimento das necessidades e expectativas dos clientes e outras partes interessadas”.

Ainda segundo a FNQ, os processos estão inter-relacionados e interagem entre si (logo, não são considerados um fim em si mesmos), de tal forma que, produtos e serviços deles provenientes, constituem a entrada para um ou mais processos na seqüência de execução, que busca o atendimento das necessidades e expectativas dos clientes.

Mapear os processos, a primeira etapa de uma gestão por processos efetiva, é um dos trabalhos mais importantes nesta metodologia de gestão. É a construção da principal ferramenta de gerenciamento e melhoria interna. (Aconselha-se que apenas os processos organizacionais críticos sejam otimizados, pois otimizar processos que não agregam valor, gerará custos sem retorno.)

Resumindo: toda organização é um sistema. Ou seja, funciona como um conjunto de processos. A identificação e o mapeamento destes processos permitem um planejamento adequado das atividades, a definição de responsabilidades e o uso adequado dos recursos disponíveis. (Lembrando que, deve-se levar em conta tanto os aspectos verticais como horizontais da empresa).

###Engenharia de software

Métodos ágeis (MA)

Características comuns dos MA:- envolvimento do cliente: devem ser profundamente envolvidos para fornecer e avaliar os requisitos do sistema e avaliar as iterações do sistema.- entrega incremental: o software é construído em incrementos e o cliente especifica os requisitos a serem incluídos.- pessoas, não processo: os membros da equipe devem trabalhar de acordo com as suas próprias maneiras de trabalho, sem processos prescritivos.

Page 155: Apam

- aceite as mudanças: criar o sistema de forma a acomodar as mudanças porque elas vão acontecer.- mantenha a simplicidade: concentre-se na simplicidade do software e, sempre que possível, trabalhe para eliminar a complexidade do sistema.

Problemas dos MA:- nem sempre o cliente está disponível para a equipe.- membros individuais da equipe podem não se envolver muito bem com outros membros.- priorização de mudanças pode ser difícil já que cada stakeholder adota diferentes prioridades para cada mudança.- manter a simplicidade requer tempo extra, o que pode não ser possível sob pressão de cronograma.

###Engenharia de software

Extreme Programming (XP)

Requisitos são expressos em cenários, chamados histórias do usuário, que são implementadas como uma série de tarefas.Os programadores trabalham em pares e desenvolvem testes para cada tarefa antes da escrita do código. Todos os códigos devem ser executados com sucesso quando um novo código é integrado com sucesso.

Práticas do XP:- planejamento incremental: os requisitos são divididos em histórias e estas a serem incluídas em um release são determinadas pelo tempo disponível e sua prioridade relativa.- pequenos releases: o conjunto mínimo útil de funcionalidade que agrega valor ao negócio é desenvolvido primeiro.- projeto simples: é realizado um projeto suficiente para atender aos requisitos e nada além.- desenvolvimento test-first: um framework automatizado de teste unitário é usado para escrever os testes para uma nova parte da funcionalidade antes que ela seja implementada.- refactoring: espera-se que todos os desenvolvedores recriem código continuamente assim que os aprimoramentos do código forem encontrados. Isso torna o código simples e fácil de manter.- programação em pares.- propriedade coletiva: os desenvolvedores trabalham em todas as áreas do sistema de forma que não se criem ilhas de conhecimentos, com todos os desenvolvedores de posse do código.- integração contínua: assim que o trabalho for concluído, ele é integrado ao sistema como um todo e todos os testes unitários do sistema devem ser realizados.- ritmo sustentável: grande quantidade de hora extra não é considerada aceitável, pois, no médio prazo, há uma redução de produtividade.- cliente on-site: um representante do usuário final deve estar disponível em tempo integral para apoiar a equipe do XP.

Os desenvolvedores dividem as histórias em tarefas e estima o esforço e os recursos necessários para a implementação. O cliente prioriza as histórias para implementação.XP descarta o princípio de que se deve projetar para o sistema aceitar mudanças. A justificativa é que isso é esforço inútil já que muitas vezes, as mudanças não ocorrem e as solicitações de mudanças são completamente diferentes.XP enfatiza o processo de teste mais do que outros métodos ágeis.

Page 156: Apam

As características principais de teste no XP:- desenvolvimento test-first.- desenvolvimento incremental de teste a partir de cenários.- envolvimento do usuário no desenvolvimento e validação de testes.- o uso de ferramentas automatizadas de teste.

###Gestão de TI

ITIL (IT Infrastructure Libray)Uma biblioteca composta das melhores práticas para Gerenciamento de Serviços de TI.Não se trata de uma metodologia e sim de um conjunto de melhores práticas adotadas em várias empresas. Atualmente é o framework mais adequado para o Gerenciamento de serviços para os departamentos de TI, sendo utilizado por mais de 10.000 empresas no mundo todo.

Os processos propostos são genéricos, podendo ser utilizados por qualquer empresa, seja pública ou privada, de grande ou pequeno porte. Estes processos devem ser adotados e adaptados ao negócio.

Não é correto afirmar que um processo é “compatível com a ITIL”, nem mesmo falar em implantar a ITIL. O objetivo é implementar o Gerenciamento de Serviços de TI, e para isto pode ser utilizado a ITIL como base das melhores práticas.

A biblioteca da ITIL foi desenvolvida pela CCTA (Central Computing and Telecommunications Agency), e tinha como objetivo melhorar os processos dos departamentos de TI do governo britânico.

A ITIL oferece um framework comum para todas as atividades do departamento de TI, como a parte da provisão dos serviços, baseada na infra-estrutura de TI.

As melhores práticas da ITIL têm como objetivos: - Servir de inspiração para melhorar os processos de TI;- Sugerir onde é possível chegar, pois outras empresas já conseguiram resultados positivos; - Sugerir para quê os processos e práticas servem; - Sugerir por que adotar os processos e práticas.

A vantagem da adoção das melhores práticas está no fato de não ter que “reinventar a roda”, adotar práticas já testadas propicia um ganho de tempo e retorno mais rápido sobre o projeto de implementação de uma Gestão de Serviços.

A ITIL define os objetivos e atividades, as entradas e saídas de cada um dos processos encontrados em uma organização de TI. Entretanto, a ITIL não dá uma descrição específica de como estas atividades devem ser executadas, porque em cada organização estas são diferentes, ou seja, não existe receita de bolo pronta para você implementar a ITIL.

A ITIL é baseada na necessidade de fornecer os serviços de alta qualidade, com uma ênfase no serviço e no relacionamento com cliente.

Sete módulos constituem o corpo da ITIL:

Suporte a Serviços: descreve os processos associados ao suporte do dia-a-dia e atividades de manutenção associadas com a provisão de Serviços de TI.

Page 157: Apam

Entrega de Serviços: cobre os processos necessários para o planejamento e entrega de Serviços de TI com qualidade e se preocupa ao longo do tempo com o aperfeiçoamento desta qualidade.

ICT - Gerenciamento da Infra-estrutura: cobre todos os aspectos do Gerenciamento da Inafra-estrutura como a identificação dos requisitos do negócio, testes, instalação, entrega, e otimização das operações normais dos componentes que fazem parte dos Serviços de TI.

Planejamento para Implementação do Gerenciamento de Serviços: examina questões e tarefas envolvidas no planejamento, implementação e aperfeiçoamento dos processos do Gerenciamento de Serviços dentro de uma organização. Também foca em questões relacionadas à Cultura e Mudança Organizacional.

Gerenciamento de Aplicações: descreve como gerenciar as aplicações a partir das necessidades iniciais dos negócios, passando por todos os estágios do ciclo de vida de uma aplicação, incluindo até a sua saída do ambiente de produção (quando o sistema é aposentado). Este processo dá ênfase em assegurar que os projetos de TI e as estratégias estejam corretamente alinhados com o ciclo de vida da aplicação, assegurando que o negócio consiga obter o retorno do valor investido.

Perspectiva de Negócio: fornece um conselho e guia para ajudar o pessoal de TI a entender como eles podem contribuir para os objetivos do negócio e como suas funções e serviços podem estar mais bem alinhados e aproveitados para maximizar sua contribuição para a organização.

Gerenciamento da Segurança: detalha o processo de planejamento e gerenciamento a um nível mais detalhado da segurança da informação e Serviços de TI, incluindo todos os aspectos associados com a reação da segurança dos incidentes. Também inclui uma avaliação e gerenciamento dos riscos e vulnerabilidade, e implementação de custos justificáveis para a implementação de contra-recursos (estratégia de segurança).

Entre os principais objetivos da adoção da melhores práticas da ITIL podemos destacar os seguintes: - Alinhar os Serviços de TI com as necessidades atuais e futuras do negócio e seus clientes. Todos os processos da ITIL falam que a TI precisa entender os requisitos de negócio da empresa para poder planejar e prover seus serviços para atender as expectativas. - Melhorar a qualidade dos serviços de TI. Através de um programa de melhoria contínua deve-se buscar a consistência na entrega dos serviços, atendendo as necessidades de negócio.- Reduzir custos na provisão de serviços. Este é um dos motivos chaves que levam os gestores de TI a adotarem as melhores práticas, já existem vários casos de sucesso onde houve grande redução dos custos operacionais e investimentos em TI.- Processos mais eficientes e eficazes, buscando rapidez e resultados nos processos. - Adoção das melhores práticas, evitando reinventar a roda.

Problemas enfrentados pela adoção do ITIL:

- Ausência de patrocínio, comprometimento e entendimento. É importante que todas as pessoas relacionadas com o projeto estejam conscientes das melhorias que a mudança poderá trazer. O comprometimento de todos é fundamental para fazer com que os processos sejam implementados.

Page 158: Apam

- Cultura da empresa. Se a empresa não tiver cultura para a gestão de serviços se torna muito complicado a TI obter a colaboração dos demais departamentos. - Excesso de expectativa. Tenha em mente que a adoção das melhores práticas não se faz em dias, é necessário planejamento, insistência, acompanhamento e adaptações ao longo do projeto. - Problemas na Gestão do Projeto. A implementação de um Programa de Gerenciamentos de TI deve ser encarado como um projeto, com responsáveis por cada etapa, prazos para implementação e recursos necessários.- Falhas de Comunicação.- Objetivos não alcançados: melhoria de qualidade, redução de custo, satisfação do usuário, alinhamento de TI com a estratégia de negócio.

Vantagens ao adotar o ITIL:- Melhor qualidade no serviço, com um suporte mais confiável.- Segurança e confiança da continuidade dos serviços de TI, aumentando a habilidade para restaurar os serviços quando houver necessidade. - Visão mais clara da capacidade atual.- Fornecimento de informações gerenciais para acompanhamento de desempenho, possibilitando traçar melhorias. - Equipe de TI mais motivada: conhecendo a carga de trabalho é possível gerenciar melhor as expectativas.- Maior satisfação para os clientes e usuários, entregando o serviço com mais qualidade e rapidez.- Redução de custos: a partir do melhor planejamento e controle dos processos internos é possível otimizar os custos operacionais. - Maior agilidade e segurança para realizar as mudanças propostas pelo negócio. Com processos definidos e controlados é mais fácil implementar várias mudanças simultaneamente.

Serviço é definido como um conjunto de componentes relacionados fornecidos para suporte a um ou mais processo de negócios. Exemplo: - Um sistema de faturamento é fornecido usando uma base Oracle e uma rede.- E-mail utiliza recurso de rede, servidor e link internet.

Para não dar confusão sobre o que é serviço e o que é recurso de TI, tenha em mente que serviço é sempre o que o usuário interage diretamente.

###Gestão de TI

CSF (Critical Success Factors)- Liderança executiva forte: ela define os objetivos para implementar Gerenciamento de Serviços de TI; ela dá suporte para a transformação organizacional que é necessário para o sucesso; deve resistir a tendência para permitir operações que revertem a velhos hábitos.- Uma avaliação de maturidade dos processos existentes de TI que compara o quão você faz com as melhores práticas deve ser tomada como o passo inicial no caminho para o gerenciamento de serviços de TI. Se não se sabe onde está, quais lacunas existem no ambiente atual e não se sabe onde quer estar, é muito improvável que se tenha uma implementação de gerenciamento de serviços de TI. É crítico para a organização saber o que já tem e construir a partir desta base.

Page 159: Apam

- Objetivos claros e mensuráveis: eles tem que estar alinhados com os objetivos do projeto de implementação de ITSM, que são baseados em critérios não ambíguos e que podem ser usados para determinar se os objetivos foram alcançados.- Papéis e responsabilidades claramente definidos: tanto para o staff que implementará o ITSM como também para aqueles que executam-no em modo operacional. Os papéis dos negócios, os vários staff’s de TI, fornecedores e organizações externas de suporte precisam ser bem definidos.- Uma implementação bem definida e um plano de melhoria de serviço contínuo são críticos: todo pessoal afetado deve ser treinado e pronto para as suas novas atribuições. Isso deve ocorrer antes que a implementação seja feita.- Sistematizar cada processo: utilizar medidas de performance de cada processo para ajudar identificar oportunidades de melhoria. O trabalho real começa quando o projeto de implementação termina.

KPI (Key Performance Indicators)Representam um valor particular ou característico que é medido para avaliar se os objetivos de uma organização estão sendo atingidos. Eles refletem os fatores de sucesso críticos, necessidades dos stakeholders e as expectativas da organização. Para os KPI’s e suas medidas serem efetivas, os objetivos da organização precisam ser específicos, mensuráveis, combinados, realistas e baseados no tempo. KPI’s podem ser usados como métricas financeiras ou não financeiras.Alguns conceitos importantes precisam ser destacados:- Objetivos da organização: é imperativo que KPI’s não sejam atribuídas aos objetivos de uma indústria padrão e sim aos objetivos da própria indústria. Eles devem refletir suas circunstâncias.- KPI’s precisam ser específicos, mensuráveis, realistas e baseado no tempo: deve-se olhar para os KPIs através do tempo à medida que se faz melhorias para os processos de ITSM baseado nos KPIs.- Combinado: é imperativo que todo mundo deve estar na mesma página e os KPIs devem ser construídos por pessoas com diferentes pontos de vista no serviço ou processo que está sendo medido.

KPIs são usados em conjunto com CSFs e devem ser um alvo a ser atingido. O alvo para um KPI pode ser expresso como uma porcentagem, uma razão simples, um índice, uma média composta, etc.

Um KPI é uma parte chave do objetivo mensurável, que é feito de direção, KPI, benchmark ou alvo e um quadro de tempo. Por exemplo: “5% de redução de CIs de erro em cada mês” onde “redução de CIs de erro em cada mês” é o KPI.

###Gestão de TI

Modelo RACIUm modelo usado para ajudar definir quem é responsável/encarregado.A matriz RACI é um modelo usado para ajudar a definir papéis e responsabilidades. RACI é um acrônico para as quatro funções principais.

Responsible → Pessoa responsável por fazer com que o trabalho seja feito. São os que colocam a mão na massa!Accountable → É quem presta conta pela atividade.

Page 160: Apam

Consulted → Pessoas que são consultadas antes da execução da tarefa, pois suas opiniões são importantes para a execução da atividade.Informed → Pessoas que se mantêm atualizadas constantemente. Normalmente são informadas depois da execução da atividade.

O modelo é usado durante a análise e esforços de documentação em todos os tipos de Gerenciamento de Serviço, Gerenciamento de Qualidade, Gerenciamento de Processos e Projetos. O modelo RACI resultante é um veículo de comunicação simples e poderoso.

Definir e documentar responsabilidade são dois dos princípios fundamentais em todos os tipos de Governança.

Na Matriz RACI, representada na figura acima, podemos verificar que uma série de informações está disposta em forma de tabela, o que facilita a identificação dos responsáveis por cada tarefa dentro de cada processo do ITIL. Apesar disso, existem potenciais problemas relacionados ao modelo RACI que devem ser tratados. Dentre eles podemos citar: ter mais de uma pessoa que presta conta (Accountable) por um processo (na prática, processo com dois donos na verdade não tem nenhum), delegação de responsabilidade ou prestação de contas sem autoridade necessária para tanto, foco na correlação de processos e atividades com os departamentos, etc.

Passos para se construir uma tabela RACI:- Identificar as atividades;- Identificar os papéis funcionais;- Atribuir os códigos RACI;- Identificar quaisquer lacunas ou sobreposições – por exemplo, onde tem dois A’s ou nenhum R. - Distribuir o gráfico, incorporar feedback;- Alcançar um acordo com os stakeholders envolvidos;- Assegurar que as alocações estão sendo seguidas.

Fonte: http://www.continentalsoftware.com/raci-model/

###Gestão de TI

Service Desk

Page 161: Apam

É o primeiro e, idealmente, o único ponto de contato para usuários (SPOC – single point of contact for users). Não é um processo.

Os dois principais focos são: comunicação e controle de incidente.

Idealmente, o Service Desk terá acesso a uma base de conhecimento que conterá uma lista de soluções conhecidas para incidentes comuns. Desse modo, dúvidas e incidentes poderão ser resolvidos pelo pessoal do Service Desk sem tomar tempo dos técnicos de TI.

Para o cliente, a vantagem é que eles não tem que ficar procurando pela pessoa certa para resolver seu problema. Para o pessoal de TI, significa que eles só tem que lidar com problemas relacionados às suas habilidades ou áreas de responsabilidade.

O Service Desk é responsável por manter o cliente informado do status do seu pedido.

Um catálogo de serviço deve estar disponível que lista todos os serviços que o TI provê ao negócio. Este catálogo deve listar serviços de uma perspectiva dos usuários.

CSFs:- garantir, a longo termo, retenção e satisfação do cliente;- ajudar na identificação de oportunidades de negócio;- reduzir custos de suporte pelo uso eficiente de recursos e tecnologia.

KPIs:- percentual de clientes dados os exames de satisfação;- taxa de satisfação do cliente do Service Desk;- percentual de vezes que uma pessoa fica na linha dentro dos alvos do serviço;- percentual de chamadas respondidas para dentro dos alvos do serviço;- número de registros de incidentes ainda não fechados;- número de chamadas abandonadas.

Não existe dúvida que a implantação da Central de Serviços terá barreiras de sucesso. Algumas barreiras típicas que poderão ocorrer: - Usuários não ligarem para Central de Serviços, mas tentarem buscar uma solução diretamente com uma pessoa que conhece, ou que a ajudou da última vez.- A equipe técnica não estar preparada para atender as necessidades do negócio ou usuários.- Nem todas as partes estão informadas sobre os serviços fornecidos e os níveis de serviços acordados, resultando em frustração por parte dos usuários.

###Gestão de TI

ITIL v3 tem cinco volumes:

1) Estratégia de Serviço:

Os serviços, para serem bem sucedidos, devem atender às expectativas dos clientes entregando um valor diferenciado para os mesmos. O provedor de serviços deve entender o mercado que opera para então entender as necessidades dos clientes.A Estratégia de Serviços não pode existir de forma isolada. O Serviço de Estratégia traz orientações a todos os prestadores de serviços de TI e seus clientes, para ajudá-los a operar e

Page 162: Apam

prosperar no longo prazo através da construção de uma estratégia clara de serviço. Para tanto se necessita de:- quais os serviços que devem ser oferecidos;- a quem os serviços devem ser oferecidos;- como os clientes e os acionistas perceberão e medirão o valor, e como o valor será criado;- como o desempenho do serviço será medido;- entre outros.

Processos chave da Estratégia de Serviço:- Geração de Estratégia- Gerenciamento Financeiro- Gerenciamento de Portfólio de Serviço- Gerenciamento de Demanda

2) Desenho de Serviço:

Representa o desenho de serviços de TI apropriados e inovadores, incluindo arquitetura, processos, políticas e documentação para satisfazer requisitos, presentes e futuros, de acordos de negócios.

Os principais objetivos do Desenho de Serviço são:- identificar e gerenciar riscos;- desenvolver habilidades e capacidades dentro da TI;- produzir e manter planos, processos, políticas, padrões, arquiteturas, modelos e documentos para suportar o desenho de qualidade das soluções de TI;- contribui para melhorar toda a qualidade do serviço de TI.

O Desenho de Serviço começa com um conjunto de necessidades empresariais e termina com o desenvolvimento de uma solução de serviço concebido para satisfazer as necessidades empresariais para em seguida seguir para a fase da Transição de Serviço.

O bom desempenho da fase de Desenho de Serviço depende do eficiente uso dos quatros “P's" do Desenho: - Pessoas: pessoas, habilidades e competências para o fornecimento de serviços de TI; - Produtos: a tecnologia e gerenciamento de sistemas usados na entrega dos serviços de TI; - Processos: os processos, papéis e atividades envolvendo o fornecimento de serviços de TI; - Parceiros: os vendedores, fabricantes e fornecedores usados para assistir e suportar o fornecimento de serviços de TI.

Processos chave do Desenho de Serviço:- Gerenciamento do Catálogo de Serviços;- Gerenciamento do Nível de Serviço;- Gerenciamento de Capacidade;- Gerenciamento de Avaliação;- Gerenciamento contínuo do serviço de TI;- Gerenciamento da Segurança da Informação;- Gerenciamento de Fornecimento.

3) Transição de Serviço:

Incide sobre todos os aspectos da execução do serviço. É necessário assegurar que o serviço pode funcionar em circunstâncias anormais previsíveis ou não e apoio às falhas e erros.

Page 163: Apam

Processos chaves da Transição de Serviços:- Gerenciamento de Mudanças;- Gerenciamento de Configuração e Serviço de Ativos;- Gestão do Conhecimento;- Planejamento de Transição e Suporte;- Gerenciamento de Desdobramento e Reparo;- Validação de Serviço e Teste;- Avaliação.

4) Operação de serviço

O propósito da Operação de Serviço é entregar níveis aceitos do serviço para usuários e clientes, e administrar as aplicações, tecnologia e infraestrutura que suporte a entrega dos serviços.Somente durante este estágio que o ciclo de vida dos serviços realmente entrega valor ao negócio, e é de responsabilidade da Operação de Serviço assegurar que este valor é entregue.É importante que este serviço equilibre a qualidade do serviço versus o custo do serviço, de maneira a evitar conflito de metas.

Processos chaves de Operação de Serviços- Gestão de Eventos;- Gerenciamento de Incidentes;- Gerenciamento de Problemas;- Gestão de Solicitações;- Gestão de Acesso;- Gerenciamento de Monitoramento e Controle;- Operações de TI.

5) Melhoria Contínua do Serviço

Representa a contínua avaliação e melhora da qualidade dos serviços e toda a maturidade do gerenciamento dos serviços de TI.

Melhoria Contínua do Serviço combina princípios, práticas e métodos para gerenciamento da qualidade, gerenciamento da mudança e melhoria da capacidade, gerando melhorias em cada estágio do ciclo de vida do serviço, bem como os serviços correntes, processos e atividades relacionadas e tecnologia.

Tipos de métricas Métrica de serviço: resultado de um serviço de ponta a ponta;Métrica de Processo: FCs, KPIs, e métricas de atividades para os processos de gerenciamento de Serviço;Métricas de tecnologias: Métricas baseadas em componentes e aplicação, tais como: utilização, desenho, disponibilidade.

Processos chave da Melhoria Contínua do Serviço:- Sete passos do processo de melhoria- Medição do Serviço- Relatório de Serviço

Esses livros seguem uma ordem prática:

Page 164: Apam

1 – Como desenvolver uma estratégia orientada para negócios dos serviços de TI?2 – Como desenhar um sistema de apoio à estratégia escolhida?3 – Como fazer a transição do sistema recém desenhado para o ambiente de produção?4 – Como fazer com que as operações em curso façam parte da cultura da empresa?5 – Como fazer a continua melhoria dos processos e operações?

###Gestão de TI

Gerências em ITIL (estratégica)

Gerência de Demanda

O processo de gerenciamento de demanda analisa, rastreia, monitora e documenta os padrões de atividade do negócio (PAN – Patterns of Business Activity – PBA) para prever as demandas atuais e futuras por serviços. Os padrões de atividade vão dizer como o cliente usa os serviços e quais são os períodos de pico. Por exemplo: o sistema de faturamento é mais usado no final do mês para fechamento financeiro da organização.

Papel: Gerente de Demanda - Criar e gerenciar políticas de incentivos e penalidades - Participar na criação dos acordos de nível de serviço (ANSs ou SLAs) - Monitorar toda a demanda e capacidade - Gerenciar recursos do processo - Responde as mudanças do PAN (Padrão de Atividade do Negócio)

Aconselham-se atividades baseadas no Gerenciamento da Demanda e no relacionamento de padrões de demanda para assegurar que os planos de negócio do cliente estejam sincronizados com os planos de negócio do provedor de serviço.

Gerência de Portfólio de ServiçosO Portfólio é o conjunto de todos os serviços que eram ofertados, que estão em operação e que pretendem entrar em produção. O próprio Catálogo faz parte do Portfólio, que é dividido em três partes: Pipeline (também conhecido como funil) que é onde entram todas as demandas e passam por um processo que decide se serão serviços ou não; o Catálogo de Serviços, onde estão os serviços em produção ou liberados para entrar em operação e o Serviços Obsoletos que mantém as informações dos serviços que existiram e já não são mais ofertados. Olhando dessa forma, o Portfólio gera conhecimento sobre todos os serviços: a história da TI. Também permite aprender com os erros do passado, pois um serviço obsoleto é uma lição aprendida, uma experiência que serve para averiguar e não repetir eventuais enganos, e ajuda a prospectar o alcance de um serviço e seus riscos antes mesmo que ele seja colocado em produção.

Para gerenciar o Portfólio existe um processo no livro de Estratégia que prevê quatro etapas: Definir, Analisar, Aprovar e Contratar. Em cada mudança de etapa o serviço ou demanda muda de status. Quando esse processo está sendo estabelecido definem-se os responsáveis por cada atividade, gerando assim a transparência porque mostra em que fase está o serviço e quem é o responsável por ele naquele momento.Depois de aprovado, o serviço é desenvolvido e liberado para produção. Aí sim ele vai para o Catálogo de Serviços. O Gerente do Catálogo vai receber todas as informações sobre aquele serviço, o que vai permitir a acuracidade e qualidade do Catálogo.

Page 165: Apam

E o que fica registrado com esse processo? Relação custo x benefício, oferta x demanda, riscos e recursos, viabilidade técnica, além da decisão de aprovação.

###Gestão de TI

ITILGerência de Nível de serviçoO gerenciamento do nível de serviço visa à melhoria da qualidade dos serviços de TI através de um ciclo contínuo de negociação e monitoração, promovendo ações para eliminar níveis de serviço inaceitáveis.ANS (Acordo de nível de serviço – SLA, Service level agreement) funciona como um contrato entre o cliente e a TI. O ANS deve descrever, em detalhes, os serviços fornecidos, além de especificá-los quanto à qualidade, quantidade, desempenho e disponibilidade.Objetivos:- Melhorar a especificação dos serviços;- Reduzir demandas imprevistas;- Avaliar o custo dos serviços;- Controlar o nível de serviço;- Promover a melhoria da qualidade do serviço;- Manter alinhamento com o negócio.

Para atingir os objetivos, é necessário:- Catálogo de serviços: define os serviços fornecidos;- ANS: ele deve conter informações como descrição do serviço, agenda, suporte, procedimentos para mudanças, metas para disponibilidade, confiabilidade, segurança, capacidade, etc;- Requisições de nível de serviço (SLR): documento usado para fornecer uma visão detalhada do cliente, usados para ajustar ou criar novos serviços;

###Gestão de TI

Gerência de capacidade

O processo de Gerenciamento da Capacidade foi desenhado para assegurar que a capacidade da infra-estrutura de TI esteja alinhada com as necessidades do negócio. O propósito principal do Gerenciamento da Capacidade é entender e manter os níveis de entrega de serviços requisitados a um custo aceitável.

Através da investigação sobre as necessidades de capacidade técnicas e do negócio, este processo irá planejar a capacidade necessária para que a infra-estrutura de TI cumpra os requisitos do negócio.

O objetivo principal do Gerenciamento da Capacidade é entender os requisitos de capacidade do negócio e controlar a entrega desta capacidade no presente e no futuro. O Gerenciamento da Capacidade é também responsável por entender as vantagens potenciais que as novas tecnologias podem trazer para a organização.

O processo de Gerenciamento da Capacidade é dividido em três sub-processos listados abaixo:

Page 166: Apam

Gerenciamento da Capacidade de Negócio Este sub-processo tem foco no longo prazo. Ele é responsável por assegurar que os requisitos futuros do negócio sejam levados em consideração, estejam sendo planejados e implantados quando necessário. Gerenciamento da Capacidade de Serviço É responsável por assegurar que a performance de todos os Serviços de TI atuais estejam dentro dos parâmetros definidos nos ANS’s. Gerenciamento da Capacidade de Recursos É responsável pelo gerenciamento de componentes individuais dentro da infra-estrutura. Este processo tem foco mais técnico.

###Gestão de TI

ITIL

Gerência de disponibilidade

O processo de gerenciamento de disponibilidade visa garantir que os serviços de TI estarão disponíveis sempre que os clientes necessitarem deles, de acordo com os níveis de disponibilidade acordados. Os principais elementos de disponibilidade de um serviço são:- Disponibilidade: Tempo durante o qual o serviço estará disponível;- Confiabilidade: Capacidade de se manter operacional dentro de um determinado período de tempo;- Sustentabilidade: Capacidade de retorno ao estado normal após algum incidente;- Resiliência: Capacidade de se manter operacional mesmo na falta de um ou mais componentes;- Oficiosidade: Obrigações contratuais com terceiros (Contratos de Apoio);- Segurança: Confidencialidade, Integridade e Segurança.

Se um incidente ocorre em t1. É reparado em t2. E volta a ocorrer em t3, então:TMPR (tempo médio para reparo): t2 – t1.TMEF (tempo médio entre falhas): t3 – t2.TMEIS (tempo médio entre incidentes de sistemas): t3 – t1.

Gerência de continuidade

Principal objeto é dar continuidade operacional aos serviços de TI em ocasiões de desastre, a fim de dar suporte aos requisitos mínimos de negócio. O principal produto desse processo é um documento chamado Plano de continuidade dos Negócios (Business Continuity Plan – BCP). Os principais componentes de um plano de continuidade são:- administração: quando e como invocar o plano;- infraestrutura de TI: quais os itens envolvidos;- procedimentos operacionais: instruções de trabalho;- pessoal: responsáveis, contatos e substitutos;- site de convergência: localização, contato e transporte;

Page 167: Apam

- retorno ao normal: como, onde e quanto tempo para o retorno.

Métricas de retorno: RTO (recovery time objective): último instante no tempo, a partir do qual, a operação deve ser restabelecida após um desastre.RPO (recovery point objective): determina o ponto, a partir do qual, os dados devem ser recuperados após um desastre.

Nessa gerência de continuidade, análises detalhadas de riscos e impactos são realizadas, utilizando metodologias de análise e risco como CRAMM, OCTAVE, CORAS, etc.Todas elas são baseadas nas normas da ISO 27001. Uma elaboração de análise de risco e impacto, geralmente, se baseia na identificação de três elementos: ativos, ameaças e vulnerabilidade.

Os estágios são:- Início: obtenção do aval gerencial e levantamento dos serviços de TI críticos para o negócio;- Requisitos estratégicos: análise de risco e de impacto e elaboração da estratégia de continuidade;- Implementação: planejamento e implementação das instalações para recuperação, elaboração do plano de continuidade, medidas para redução de riscos e realização de testes iniciais.- Gerenciamento operacional: educação, revisão, auditoria, testes, treinamento e gerenciamento de mudanças.

Tipos de continuidade:- soluções de contorno manuais: medidas temporárias até que os serviços sejam restabelecidos;- acordos de reciprocidade: organizações concordam auxiliar uma a outra em caso de desastres;- recuperação gradual (cold standby): ambiente computacional vazio, exceto por energia e telecomunicações. Mínimo de 72 horas para restabelecimento dos serviços.- recuperação intermediária (warm standby): ambiente com equipamentos para recuperação dos serviços mais críticos entre 24 e 72 horas;- recuperação imediata (hot standby): instalação alternativa com espelhamento contínuo de equipamentos e dados.

###Gestão de TI

ITIL

Gerência de segurança da informação

O objetivo é alinhar a segurança de TI à do negócio e garantir que a segurança da infraestrutura seja gerenciada eficazmente em todos os serviços e atividades. Trata da segurança alinhada à governança corporativa.Além de garantir o CID (confidencialidade, integridade e disponibilidade) também cuida da Autenticidade e não repúdio.Este processo de gerenciamento de SI é baseado na norma ISO/IEC 27001, que aponta um ciclo para a gestão de segurança da informação: EIOMAMM (ciclo PDCA) = Estabelecer / Implementar e Operar / Monitorar e Analisar (Criticamente) / Manter e Melhorar.

Page 168: Apam

O ciclo descrito no ITIL usa a seguinte terminologia CPIAM:

- controlar: é a primeira atividade do gerenciamento de segurança e trata da organização e do gerenciamento do processo.- planejar: define os aspectos de segurança do SLA em conjunto com o Gerenciamento de nível de serviço, detalhando em ANO’s posteriormente. Também define as atividades em contratos com terceiros relacionados à segurança. Importante lembrar que os ANO’s (acordos de nível operacional) são planejamentos para uma unidade do provedor de serviço, como por exemplo, para cada plataforma de TI, aplicação e rede.- implantar: implanta todas as medidas especificadas nos planejamentos. Classifica e gerencia os recursos de TI, trata da segurança pessoal (job-description, seleção, treinamentos) e gerencia a segurança como um todo (implantação de responsabilidades e tarefas, desenvolve regulamentos e instruções, cobre todo o ciclo de vida, tratamento de ambientes, mídias, proteção contra vírus e ameaças).- avaliar: avalia o desempenho das medidas planejadas e atende aos requisitos de clientes e terceiros. Os resultados podem ser usados para atualizar medidas acordadas em consulta com os clientes e para sugerir mudanças. Pode ser feita de três formas: autoavaliação, auditorias internas e auditorias externas.- manutenção: mantém a parte do SLA que trata de segurança e mantém os planos detalhados de segurança. É feita baseada nos resultados da avaliação e na análise de mudanças nos riscos.

###Gestão de TI

ITIL

Gerenciamento de mudança

Assegurar que mudanças são feitas de forma controlada, e são avaliadas, priorizadas, planejadas, testadas, implantadas e documentadas.Os riscos devem ser mapeados e gerenciados. A área de TI precisa ser responsiva às mudanças no negócio.O escopo deste processo cobre as mudanças desde a base de ativos de serviço e itens de configuração até o completo ciclo de vida do serviço. Isso implica dizer que este processo pode ser usado para implantar melhorias nos processos de Gerenciamento de serviços de TI.

Requisições de mudança (RDM ou RFC) são requisições formais para mudar um ou mais itens de configuração.Comitê consultivo de mudanças (CCM ou change advisory board – CAB) reúne pessoas que autorizam a mudança e auxiliam na sua avaliação e priorização.

O processo de mudança começa com uma RDM. Uma RDM pode conter proposta de mudança que crie novas facilidades ao negócio, ou conter justificativa do gerente de problema para implantar mudança que corrija um problema. A RDM é verificada em termos de conformidade, se é necessária, se está completa e já não havia outro registro aberto. Aqui se aplicam os 7R’s. Depois da análise e avaliação, o comitê decide pela implementação, priorizando com base no impacto e na urgência. Em seguida é coordenada a implantação que, após feita, deve ser avaliada para saber se cumpriu o seu propósito.Resultados esperados:- redução de erros em serviços novos ou alterados;- maior velocidade e precisão na realização de mudanças;- priorização de mudanças com maior benefício para o negócio.

Page 169: Apam

Os 7 R’s são:- Raise: quem submeteu a mudança?- Reason: qual é a razão da mudança?- Return: qual é o retorno requerido a partir da mudança?- Risks: quais os riscos com a mudança?- Resources: quais são os recursos necessários para a mudança?- Responsible: quem é o responsável por construir, testar e implantar a mudança?- Relationship: qual é a relação desta mudança com as outras mudanças?

###Gestão de TI

ITIL

Gerência de configuração

Identifica todos os itens de configuração necessários para entregar os serviços de TI, fornecendo um modelo lógico da estrutura de TI.Item de configuração é um ativo, um componente de serviço ou qualquer outro item sob controle do processo de gerenciamento de configuração.

Quanto mais dependente dos sistemas de TI as organizações são, mais importante se torna o Gerenciamento de configuração.

As informações sobre os itens de configuração são mantidas na base de dados do gerenciamento de configuração.BDGC ou CMDB (banco de dados de gerenciamento de configuração) é um repositório de informações relacionado aos registros de itens de configuração.

Este processo identifica, controla e presta contas por ativos de serviço e itens de configuração protegendo e garantindo sua integridade ao longo do ciclo de vida. Incluem ativos que não sejam de TI e ativos provedores de serviços, quando necessário.

Objetivos em resumo:- gerenciar a TI com maior controle sobre os itens de configuração da organização;- fornecer informação precisa para outros processos da ITIL;- Criar e manter uma base de dados do gerenciamento da configuração (BDGC).

Diferença entre gerenciamento de ativos e gerenciamento da configuração é que o primeiro fornece uma lista de itens (normalmente software e hardware), enquanto o segundo define o relacionamento entre os itens de configuração.

A principal entrada no processo vem do Gerenciamento de Mudanças, requisitando informações sobre itens que serão afetados ou reportando o status dos itens mudados.

O processo inicia com o projeto, população e implantação do BDGC (Banco de Dados do Gerenciamento da Configuração). É responsabilidade do Gerenciamento da Configuração manter o BDGC. A população do BDGC pode ser cara e um exercício prolongado dependendo do escopo da infra-estrutura de TI que

Page 170: Apam

está sendo gerenciado e do nível de detalhes sobre cada item requisitado. Ferramentas de auditoria automática podem ajudar em grande parte nesse aspecto. As Saídas do Processo são relatórios para o gerenciamento de TI e também a constante disponibilidade de informação que podem ser fornecidas a partir do BDGC a outros processos.

Termos relacionados:- Biblioteca segura (secure library): coleção de itens de configuração de software, eletrônicos ou documentos.- Armazém seguro (secure store): é o local onde se armazenam os ativos de TI.- Biblioteca de mídia definitiva (BMD ou DSL em inglês): biblioteca onde se armazenam as versões de software autorizadas.- Peças definitivas (definitive spares): armazena peças sobressalentes (reserva) de hardware.- Linha de base de configuração: é a configuração aprovada de um serviço, produto ou infraestrutura.- Snapshot (instantâneo): cópia do estado atual de um item de configuração ou ambiente. Ferramentas de inventário mantem a rastreabilidade desses estados.

O produto desse processo é o Sistema de Gerenciamento da Configuração. Este serve para gerenciar serviços de TI. Consiste de quatro camadas:- Camada de apresentação: formatação das informações em relatórios específicos para determinados públicos.- Camada de processamento de conhecimento: é onde se produzem as queries para extrair os dados a serem exibidos em relatórios.- Camada de integração de informação: coleta e estrutura os dados.- Camada de dados: dados e informações de diferentes origens, como BDGC’s, ferramentas de inventário, informações de projeto, etc.

###Gestão de TI

ITIL

Gerenciamento de liberação

Tão logo o gerenciamento de mudança aprovar a mudança (através do comitê consultivo), ela é passada para este processo, para que seja liberada e implantada no ambiente de produção.Este processo faz o controle de versões e controla as instalações de software, hardware e outros componentes de infraestrutura, do ambiente de desenvolvimento ao ambiente de teste e depois para o ambiente de produção.Não desenvolve a mudança, apenas sua liberação (ex: deployment de um software). Liberações são planejadas e este processo deve atender até o suporte inicial da entrada em produção.

Opções mais frequentes para o lançamento de liberações:- Big bang ou por fase: big bang implanta o serviço para todos ao mesmo tempo, enquanto por fase a liberação é feita para partes de usuários.- Empurrada ou Puxada (Push/Pull): na liberação empurrada o componente do serviço é implantado a partir da área central para usuários em localizações remota. Puxada os usuáriosDevem trazer para si as atualizações, através de downloads ou requisições.- Automatizada ou manual: as automatizadas fazem uso de scripts que rodam atualização em cada máquina na rede, através de um comando central, por exemplo. Alguns softwares fazem isso. Já a liberação manual requer intervenção ponto a ponto.

Page 171: Apam

- Atividades de liberação: Planejamento / Preparação para Construção, Teste e Implantação / Construção e Teste / Teste de Serviço e Pilotos / Planejamento e Preparação para Implantação / Transferência, Implantação e Retirada / Verificação / Suporte.

Produtos/Saídas deste processo: - Aumento de valor para o negócio pela otimização de velocidade, custo e risco das mudanças;- Consistência e auditabilidade na implantação de serviços úteis ao negócio;- Correção de desvios no SDP.

SDP (service design package): documento de especificações e características dos serviços.

Unidade de liberação: é a porção de um serviço ou infraestrutura de TI que é normalmente liberada de acordo com a política de liberação da organização. Esta unidade varia em termos de item, ativo de serviço e componente de serviço (hardware e software).

###Gestão de TI

ITIL

Validação de serviço e testeTem foco na qualidade. Deve checar que o serviço atende ao requisito do SDP, dentro dos níveis de risco aceitos pelo negócio.

Objetivo: certificar de que o serviço (novo ou alterado) suporta os requisitos de negócio, incluindo os acordos de nível de serviço (SLA) estabelecidos.

Gerência do Conhecimento

Tem como objetivo garantir que as pessoas certas tenham o conhecimento adequado e oportuno para entregar e dar suporte aos serviços requeridos.Trata o conhecimento como forma de prover serviços eficientes e com qualidade, de valor compreensível a todos.

Principal saída: SKMS ou SGCS (sistema de gestão do conhecimento de serviços).

###Gestão de TI

ITIL

Gerência de evento

Evento refere-se a qualquer ocorrência identificável que seja significativa para a gestão da infraestrutura de TI ou para a entrega do serviço de TI. São tipicamente notificações criadas por um serviço de TI, item de configuração ou ferramenta de monitoração, indicando uma alteração de estado.Um evento pode indicar que algo não está funcionando como deveria, levando ao registro de um incidente. Mas também pode indicar atividade normal de serviço, ou a necessidade de uma intervenção de rotina, como a troca de uma fita de backup, ou o fim da execução de um job.

Page 172: Apam

O processo de gerenciamento de eventos proporciona entradas para muitos processos e atividades da Operação de Serviço. Também permite comparar o comportamento real com o planejado nos padrões de desenho e Acordos de Nível de Serviço.Este processo também inclui quaisquer aspectos do gerenciamento de serviço que precisem ser controlados, tais como itens de configuração, condições do ambiente, licenciamento de software, etc.Os eventos são classificados como Informativos (ex: o usuário fez logon), alertas (ex: tempo de transação está acima do normal) ou Exceções (ex: o servidor de rede respondeu de maneira inesperada).

###Gestão de TI

ITIL

Gerência de incidentes

Objetivo é restaurar o serviço o mais rápido possível, além de minimizar o impacto no negócio.Incidentes são:- frequentemente detectados pelo gerenciamento de eventos, ou por usuários entrando em contato no central de serviços;- categorizados para identificar quem deverá trabalhar neles e para análises de tendência;- priorizados de acordo com a urgência e os impactos para o negócio.- quaisquer eventos que não fazem parte da operação padrão de um serviço e que causam, ou podem causar, uma interrupção ou uma redução na qualidade deste serviço.

Se um incidente não puder ser resolvido rapidamente, ele pode ser escalado. Há dois tipos:- escalação funcional: passa o incidente para uma equipe técnica de suporte com habilidades apropriadas;- escalação hierárquica: envolve os níveis apropriados de gerência.

É essencial uma ferramenta de gerenciamento de incidentes.

Elementos que devem ser tratados no gerenciamento de incidentes:- limites de tempo: os limites de tempo para todas as etapas na resolução de incidentes devem ser definidos e acordados, usando as metas do ANS e contratos com fornecedores.- modelos de incidente: determinam os passos que são necessários para executar a recuperação dos incidentes corretamente. Processa, com mais eficiência, incidentes que são mais comuns.- incidentes graves: ITIL recomenda que incidentes graves precisem de um processo de resolução exclusivo.

Atividades do gerenciamento de incidentes:1. Identificação: o processo é iniciado somente quando o incidente é identificado.2. Registro: todos os incidentes precisam ser registrados em um sistema. O registro deve conter data, hora e informações relevantes.3. Classificação: devem-se registrar todos os tipos de chamada e classificá-las. Esta classificação será útil para o “Gerenciamento de Problemas” identificar quais são os tipos de incidentes mais recorrentes.4. Priorização: priorização determinado pelo impacto e pela urgência.

Page 173: Apam

5. Diagnóstico: o diagnóstico inicial é realizado pela Central de Serviços, que averigua preliminarmente possíveis causas para o incidente, bem como o que não está funcionando adequadamente.6. Escalação: se o incidente não puder ser resolvido pela central de serviços, ele será escalado dentro do tempo hábil para outro nível de suporte com maior capacidade.7. Investigação e diagnóstico: determina a natureza da requisição. Quando o incidente é tratado, cada grupo de suporte investiga o que aconteceu de errado e faz um diagnóstico.8. Resolução e recuperação: identifica uma solução, a mesma deve ser aplicada e testada.9. Fechamento: a central de serviços deverá categorizar o motivo do incidente, documentar, pedir para que o usuário responda a pesquisa de satisfação e fazer o fechamento formal junto ao mesmo.

Os eventos do ciclo de vida de um incidente são: Detecção, Diagnóstico, Reparo, Recuperação e Restauração.

Gerência (Cumprimento) de requisição

Uma requisição de serviço é a requisição de um usuário por informações, ou por uma mudança padrão, ou por acesso a um serviço de TI. O propósito deste processo é:- Permitir ao usuário requerer e receber serviços padronizados; - Fornecer e entregar esses serviços; - Prover informações aos usuários e clientes sobre serviços e procedimentos para obtenção do que desejam;- Oferecer suporte com informações gerais, reclamações e sugestões. Todas as requisições devem ser registradas e rastreadas. O processo deve incluir aprovação apropriada antes de cumprir a requisição.

Atividades:- Seleção de Menu: os usuários podem fazer solicitações usando ferramentas de Gerenciamento de serviço que possuem interfaces web. Nelas, o usuário solicita o que precisa.- Autorização financeira: muitas requisições podem ter implicações financeiras. O custo de cada uma deve ser determinado e podem-se limitar as solicitações de usuários para controlar o custo.- Cumprimento: é a entrega do serviço. Geralmente a central de serviço é envolvida em soluções mais simples, enquanto mais complexas são encaminhadas para especialistas ou fornecedores externos.- Conclusão: uma vez completa, a Central de Serviço fecha o registro da requisição.

Não há nenhum papel específico aqui neste processo, pois o cumprimento de requisições fica a cargo da Central de Serviços.

###Gestão de TI

Gerência de problemasOs objetivos deste processo são a prevenção de problemas e incidentes resultantes deles, eliminando incidentes recorrentes e minimizando o impacto de incidentes que não podem ser prevenidos.Os problemas são a causa de um ou mais incidentes. Mesmo assim, um incidente nunca “vira” problema: sempre há o registro dos dois separados, um para cada processo. Este processo tem a intenção de encontrar erros conhecidos na infraestrutura de TI. O foco é:

Page 174: Apam

- Encontrar qual é o erro conhecido (diagnóstico);- Identificar soluções alternativas para a remoção do erro conhecido (controle de erro);- Emitir uma requisição de mudança para requisitar que a supressão ocorra;- Depois que a mudança é feita, checar se o erro conhecido foi removido.A meta do processo é gerenciar o ciclo de vida de todos os problemas. O gerenciamento de problema também pode ter um elemento proativo de resolução de problemas. A idéia é identificar e facilitar remoção de erros antes que eles se manifestem como reclamações ou perguntas de usuários finais.O processo, ainda, mantém informações sobre problemas e resoluções, e soluções de contorno apropriadas para que a organização seja capaz de, com o tempo, reduzir o número de impacto de incidentes, tendo forte interface com o Gerenciamento do Conhecimento. As atividades do gerenciamento de problema são geralmente exercidas por times de suporte avançados. A central de serviços já cuida das atividades de Incidente, portanto não tem habilidade e tempo para investigar as causas-raiz.

É o processo de Gerenciamento de Problemas que fica responsável por manter a BDEC (base de dados de erros conhecidos).

Erro conhecido (Known Error): É um problema que tem causa raiz documentada e uma solução de contorno identificada.

Base de Erros Conhecidos: Local onde se registram erros conhecidos. Esses registros são utilizados pelo processo de gerenciamento de incidente para resolver incidentes. Faz parte de gerenciamento do conhecimento de serviço.

Gerência de acesso

O gerenciamento de acesso deve prover os privilégios necessários para usuários acessarem um serviço ou um grupo de serviços. No mesmo sentido, previne o acesso de usuários não-autorizados.O gerenciamento de acesso ajuda a gerenciar a confidencialidade, disponibilidade e integridade dos dados, além da propriedade intelectual.Este processo se preocupa com a identidade (informação única que distingue um indivíduo) e direitos (configurações que fornecem acesso a dados e serviços).O processo inclui verificar identidade, conceder acesso a serviços, registrar e rastrear acesso e remover ou modificar direitos quando o status ou os papéis mudam.

Atividades:- Verificação da legitimidade das requisições: verificar a cada requisição de serviço se é mesmo a pessoa que está solicitando o acesso e se esta pessoa tem motivos legítimos para usar o serviço.- Fornecer os direitos: Executa a política e as regras definidas na Estratégia de Serviço e Desenho de Serviço. Esta atividade não tem poder decisório sobre quem acessa a qual serviço, é apenas a execução da política. - Monitorar o status da identidade (mudança de papéis): caso um usuário mude de departamento, seja demitido da empresa, promovido, etc., seu perfil deve ser atualizado ou removido para acompanhar esta mudança.- Registrar e monitorar o acesso: garante que os direitos foram dados corretamente ao usuário, sem se preocupar em responder às requisições de acesso. - Remover e limitar direitos: assim como uma atividade dá o direito de acesso ao uso de um serviço, esta também é responsável por remover estes direitos. Obviamente aqui também há apenas a execução, não a decisão para tal.

Page 175: Apam

###Gestão de TI

ITIL

Melhoria contínua Para que uma organização de TI possa funcionar como um negócio dentro de um negócio, é preciso traçar uma visão que inclua objetivos, metas e métricas. O gerenciamento de serviços deve ter um programa de melhoria contínua. A cada ciclo devem ser traçados os objetivos que se espera atingir em determinado prazo, sendo avaliados continuamente os processos e adaptando-os para obter a melhor eficiência e eficácia nos resultados.

A melhoria continuada de serviço, ao contrário dos demais livros da biblioteca, não é uma fase separada, suas atividades são executadas durante todo o ciclo de vida. O foco é aumentar a eficiência, maximizar a efetividade e otimizar o custo dos serviços e processos relacionados ao Gerenciamento de Serviço de TI.

A melhoria de serviço continuada atua integrando todo o ciclo de vida, fazendo melhorias em cada fase ou no total delas. Aqui é importante observar que SEMPRE a visão do negócio deverá nortear os serviços.Além disso, tem os seguintes objetivos:- Aperfeiçoar a qualidade do serviço, da eficiência e da eficácia dos processos;- Buscar o custo efetivo na entrega de serviços de TI;- Verificar se os níveis de serviços estão sendo alcançados;- Assegurar que os métodos de Gerenciamento da Qualidade suportem as atividades de melhoria contínua.A mensuração e a análise são cruciais para a Melhoria Continuada de Serviço. Através da mensuração é possível identificar quais serviços podem melhorar. Isso quer dizer que assim como processos devem ter metas e objetivos claros, a mensuração também deve ser definida de forma clara.

MSC e PDCA – A melhoria de serviço continuada faz uso do ciclo PDCA para aperfeiçoar continuamente a qualidade dos serviços e também a própria implantação da melhoria continuada.Modelo de MSC – recomendado pela ITIL, consiste em 6 fases: 1) determinar a visão;2) identificar onde se está no momento; 3) identificar onde se quer chegar;4) saber como se chegar à meta;5) verificar se os objetivos foram alcançados; 6) manter a continuidade deste ciclo.

Validação da estratégia – métricas servem para validar decisões da estratégia.O ITIL recomenda três tipos de métricas:- Métricas de Serviço: resultado de um serviço de ponta a ponta;- Métricas de Processo: Fcs (Fatores-chave), KPIs (Indices-chave de desempenho) e métricas de atividades para os processos de Gerenciamento de Serviço;- Métricas de Tecnologia: baseadas em componentes e aplicações.

Atividades da Melhoria de Serviço Continuada:

Page 176: Apam

- Verificar os resultados dos processos;- Reportar e propor melhorias para todas as fases do ciclo de vida;- Aperfeiçoar introduzindo atividades que aumentam qualidade, eficiência e eficácia para atingir a satisfação do cliente.

###Gestão de TI

Conceitos de governança de TI

Governança de TI é um conjunto de práticas, padrões e relacionamentos estruturados, assumidos por executivos, gestores, técnicos e usuários de TI de uma organização, com a finalidade de garantir controles efetivos, ampliar os processos de segurança, minimizar os riscos, ampliar o desempenho, otimizar a aplicação de recursos, reduzir os custos, suportar as melhores decisões e conseqüentemente alinhar TI aos negócios.

Governança de TI é o conjunto estruturado de políticas, normas, métodos e procedimentos destinados a permitir à alta administração e aos executivos o planejamento, a direção e o controle da utilização atual e futura de tecnologia da informação, de modo a assegurar, a um nível aceitável de risco, eficiente utilização de recursos, apoio aos processos da organização e alinhamento estratégico com objetivos desta última. Seu objetivo, pois, é garantir que o uso da TI agregue valor ao negócio da organização.

Dentro destes conceitos, uma governança de TI eficaz deve tratar de três questões:1. Quais decisões devem ser tomadas para garantir a gestão e o uso eficaz de TI? 2. Quem deve tomar essas decisões? 3. Como essas decisões serão tomadas e monitoradas?

Governança de TI é capaz de entregar benefícios diversos, tais como:- Confiança: constrói confiança entre os envolvidos, mediante transparência e clara definição de responsabilidades.- Melhores Entregas: direciona a organização para o desenvolvimento de projetos, serviços e aquisições de TI que suportem as metas e os objetivos organizacionais e que, dessa forma, possam agregar valor à organização.- Sincronia: sincroniza a estratégia de TI com as estratégias de negócio/governo, permitindo que as atividades da TI reflitam as estratégias.- Encoraja comportamentos desejados: cria ambiente e princípios para comportamentos como diminuição de custos, compartilhamento de dados, flexibilidade ou estímulo à inovação; além de assegurar que os comportamentos de indivíduos estejam alinhados às metas e objetivos organizacionais.

Uma governança de TI efetiva exige, antes de tudo, que os envolvidos possuam conhecimento sobre seus principais fundamentos, componentes e requisitos para implementação.

###Gestão de TI

COBIT

Significa, em português, Objetivos de Controle para a Informação e Tecnologia Relacionada.É baseado em práticas utilizadas por organizações que foram reunidas e desenvolvidas em um framework baseado em controles, pela ITGI (antes ISACA).

Page 177: Apam

Inicialmente era um modelo voltado para auditoria, hoje é considerado um framework de Governança de TI.O COBIT pode ser utilizado para alinhar os objetivos de negócio (obtidos através de planejamento estratégico) aos objetivos de TI.Fornece apoio a Governança de TI, Gerenciamento de projetos de TI e de Serviços de TI.Pode ser utilizado para qualquer empresa, qualquer tamanho.Não é uma norma.Não é considerado um modelo de auditoria.

Objetivos do COBIT: Investigar, desenvolver, publicar e proporcionar um conjunto de objetivos de controle geralmente aceitos para as tecnologias da informação que sejam autorizados (dados por alguém com autoridade), autorizados (dados por alguém com autoridade), atualizados, e internacionais para o uso do dia a dia dos gestores de negócios (e também diretores) e auditores.

- É aceito por órgãos reguladores;- É compatível com outros modelos e frameworks de qualidade e governança de TI e coorporativa;- Facilita auditorias internas e externas;- Pode ser utilizado como passo inicial para a aplicação de projetos de governança de TI;- Baseado em práticas vividas, experimentadas e documentadas por especialista.

Características do COBIT:1) Focado no negócio:- O COBIT deve ser utilizado “de fora para dentro”, ou seja, da área de Negócio para a área de TI; - Deve ser baseado em objetivos de Negócio da empresa;- Os Objetivos de negócio incluem: requisitos obrigatórios e requisitos de negócio (regulamentos e performance);- Os processos buscam traduzir os objetivos de processo em objetivos de TI.

2) Orientado a processos:- O COBIT divide os objetivos de controle em 34 processos;- Os processos estão distribuídos em 4 domínios;- Os domínios são: Organização e Planejamento; Aquisição e Implementação; Entrega e Suporte; Monitoração e Avaliação.

3) Baseado em controles:- Para cada processo de TI, existem objetivos de controle definidos;- São, ao todo, 210 objetivos de controle;- Cada objetivo de controle contém, ainda, práticas de controle para auxiliar em sua utilização.

4) Orientado por métricas:- Sugere um conjunto de indicadores que permitem medir o desempenho das atividades;- São Indicadores de Performance e Indicadores e Meta (eficiência e eficácia).

Page 178: Apam

O COBIT foca em “O que precisa ser alcançado” em vez de “Como alcançar”. Para complementar o COBIT, existem outros padrões de gestão e boas práticas que podem ser utilizados.

O COBIT suporta os 05 requisitos que um framework de controle:Ele deve ser focado no Negócio, Orientado a Processos, ter uma Linguagem em comum, requisitos regulatórios e aceitabilidade geral.

COBIT é baseado na premissa de que Recursos de TI precisam ser gerenciados por um conjunto de processos de TI que fornecem informação para os processos de negócio com o fim de atingirem-se os objetivos do negócio.

COBIT pode ser utilizado por qualquer empresa, qualquer tamanho. Os objetivos de controle não são projetados para atender apenas a regulamentos, mas também objetivos de performance de negócio.

###Gestão de TI

COBIT

Os quatro domínios:- Planejar e Organizar.- Adquirir e Implementar.- Entregar e Suportar.- Monitorar e Avaliar.

Domínio “Planejar e Organizar”- É o domínio que tem o foco em relacionar os objetivos do negócio aos objetivos de TI.- É o domínio onde deve ser desenvolvido o Plano Estratégico de TI, alinhado ao Plano Estratégico de Negócio.- Garante que toda a organização conheça as metas estratégicas.

Domínio tático e estratégico. Não trata questões operacionais e de baixo nível. É o domínio de alto nível, que cuida de questões de longo prazo, estratégicas e fundamentais para a sobrevivência da empresa. Diz como a TI pode contribuir para o atendimento dos objetos de negócio e envolve planejamento, comunicação e gerenciamento em diversas perspectivas.

Processos deste domínio:PO1 Definir um Plano Estratégico de TITudo começa neste processo. A empresa precisa saber como vai se posicionar no mercado e daí criar um plano estratégico de TI. Integrar e alinhar a gestão de TI ao negócio. Traduz os objetivos de negócio em objetivos e serviços de TI. Diz quais projetos e serviços serão escolhidos e disponibilizados. 

PO2 Definir a Arquitetura da InformaçãoDefinir o modelo coorporativo de dados. É importante ter uma arquitetura global de dados para a organização. Sempre que um novo projeto começa, já pode utilizar este modelo coorporativo. Criar também uma classificação das informações na sua organização. 

PO3 Determinar o Direcionamento Tecnológico

Page 179: Apam

Define o padrão tecnológico da empresa. Aplicativos, plataformas, etc. Isso é estratégico, já que ambientes muito heterogêneos ou com pouca portabilidade podem prejudicar a estratégia da empresa. Algumas empresas utilizam toda a plataforma de um mesmo fornecedor. Exemplo: plataforma da Oracle ou Microsoft.

PO4 Definir os Processos, Organização e os Relacionamentos de TIDefinir como a área de TI vai funcionar. Escolher quais processos do COBIT você vai usar. Definir os comitês. Escolher quais coisas do modelo do COBIT aplicam-se a realidade da sua empresa. 

PO5 Gerenciar o Investimento de TIDefinir os critérios para o investimento em TI. Decidir como e onde investir. Quais projetos são prioritários e o quanto será alocado em cada um deles. É extremamente estratégico, pois pode levar a empresa à falência. A gerência pode considerar o retorno de investimento ou outros fatores financeiros para tomar tal decisão. 

PO6 Comunicar as Diretrizes e Expectativas da DiretoriaÉ preciso comunicar as metas, políticas, procedimentos, guias e diretrizes às pessoas para que tudo, que foi definido, seja seguido. É preciso disseminar o conhecimento. 

PO7 Gerenciar os Recursos Humanos de TIGerenciar as pessoas. Contratar, definir competências, responsabilidades e cargos. Definir quantas pessoas de cada perfil. Quantos programadores? Quantos analistas? Gerentes? Projetistas?

PO8 Gerenciar a QualidadeÉ importante definir os critérios de qualidade e uma forma de controlar a qualidade nos processos de TI. Determinar o que vai ser feito na TI para manter a qualidade.

PO9 Avaliar e Gerenciar os Riscos de TIDefinir uma forma para avaliar, mitigar e tratar os riscos. Mapear todos os riscos importantes que podem afetar a organização, classificá-los e definir estratégias para tratá-los.

PO10 Gerenciar ProjetosGerenciar os projetos com a integração de todos os outros gerenciamentos. Integra todos os planos de gerenciamento de projetos. 

Domínio “Adquirir e Implementar”- É o domínio que tem o foco no desenvolvimento ou aquisição da solução.- Garante que mudanças necessárias em sistemas serão tratadas.- Cobre também a validação das soluções implantadas e modificações.

Pega as diretrizes vindas dos processos de PO, que identifica o que deve ser implementado, e executa os processos de implementação. Cobre a identificação, desenvolvimento e aquisição de soluções de TI. Neste domínio você decide se desenvolve a solução desde o início ou se adquire a solução pronta.

Processos deste domínio:AI1 Identificar Soluções AutomatizadasÉ necessário realizar uma análise para certificar que os requerimentos serão satisfeitos antes de criar ou adquirir um software para automatização de processos. O processo aborda a definição das necessidades, soluções alternativas, viabilidade econômica e tecnológica, análise

Page 180: Apam

de risco e de custo-benefício, e uma decisão final de comprar ou desenvolver o próprio software.

AI2 Adquirir e Manter Software AplicativoAs aplicações devem estar disponíveis para atender às necessidades do negócio. Este processo aborda o design de aplicações, inclusão apropriada de controles e requerimentos de segurança, desenvolvimento e configuração de acordo com padrões. Isto permitirá às organizações suportar as operações de negócio corretamente por meio de aplicações automatizadas.

AI3 Adquirir e Manter Infraestrutura de TecnologiaAborda o planejamento de aquisições, manutenção e proteção da infraestrutura alinhado com estratégias tecnológicas, além do provimento de ambientes de desenvolvimento e testes. Isto garantirá um suporte tecnológico para as aplicações de negócio.

AI4 Habilitar Operação e UsoNovos sistemas instalados devem ser divulgados na organização. Por isso, é necessária a produção de documentação e manuais para todos os usuários e a própria TI, além do treinamento para o uso adequado das aplicações e infraestrutura.

AI5 Adquirir Recursos de TIOs recursos de TI, como software, serviços, equipamentos e pessoas precisam ser encontrados. Esse processo irá auxiliar na seleção de fornecedores, criação de contratos de aquisição e a própria aquisição do produto. Isso garantirá que todos os recursos necessários estarão disponíveis quando necessários, em uma maneira eficiente de custos.

AI6 Gerenciar MudançasTodas as alterações em softwares e os procedimentos devem ser gerenciados, mesmo aqueles feitos às pressas em uma situação de emergência. Essas mudanças devem ser registradas, avaliadas e autorizadas antes da implementação, além de revisadas depois para saber se está de acordo com os resultados esperados. Esses cuidados irão diminuir consideravelmente a possibilidade de falhas e instabilidades nos sistemas de produção.

AI7 Instalar e Homologar Soluções e MudançasNovos sistemas precisam ser instalados após o desenvolvimento ser concluído. Isso requer um ambiente de testes apropriado. Isso certificará que os novos softwares estarão de acordo com as expectativas e resultados esperados.

Domínio “Entregar e Suportar”- É o domínio que mantém foco na operação, comunicação e funcionamento dos serviços.- Deve garantir que os serviços de TI estejam alinhados ao negócio conforme planejado e desenvolvido nos domínios anteriores.- Deve trabalhar de forma a otimizar custos, treinar equipe e manter a estabilidade e qualidade dos serviços.

Cobre a entrega propriamente dita dos serviços. É na execução destes processos que colocam os serviços para funcionar. É onde o valor é agregado de fato. Gerencia a segurança e a continuidade dos serviços. Dá suporte aos usuários. Aqui estão os processos operacionais, como gestão dos dados e da infraestrutura.

Processos deste domínio:DS1 Definir e Gerenciar Níveis de Serviços

Page 181: Apam

Devem ser criados e cumpridos os Acordos de Nível de Serviço – SLA, para manter os usuários cientes da disponibilidade dos serviços. O processo inclui o monitoramento e avisos aos “stakeholders” sobre o cumprimento dessas metas de entrega de serviço.

DS2 Gerenciar Serviços de TerceirosÉ preciso definir os papéis, responsabilidades e expectativas acerca dos serviços prestados por terceiros, a fim de minimizar os riscos associados.

DS3 Gerenciar Capacidade e DesempenhoO processo deve, periodicamente, verificar a capacidade e performance dos sistemas em produção. Ainda deve fazer uma análise de “forecast”, ou seja, prever as necessidades futuras de recursos de TI. Isto garantirá um crescimento contínuo e sustentado da organização.

DS4 Assegurar Continuidade de ServiçosÉ preciso prover serviços contínuos de TI, e isso requer o desenvolvimento, manutenção e teste dos planos de continuidade, backup, etc. Esse processo minimiza os impactos de uma falha de algum serviço de TI, por exemplo.

DS5 Assegurar a Segurança dos ServiçosO processo aborda a criação de procedimentos de segurança, responsabilidades, políticas de uso e padrões. Também inclui a tarefa de monitoramento e testes periódicos e implementação de ações corretivas para falhas identificadas ou incidentes. Isso minimizará o impacto de problemas relacionados à segurança.

DS6 Identificar e Alocar CustosÉ preciso ter uma medida eficiente dos custos necessários para o setor de TI. Por isso esse processo visa tornar público aos usuários todos os custos de TI a fim de melhorar o uso geral dos recursos.

DS7 Educar e Treinar os UsuáriosÉ preciso treinar todos os usuários dos serviços de TI, além dos próprios funcionários de TI. Definir, executar uma estratégia de treinamento eficiente e aferir os resultados. Um treinamento efetivo ocasionará na redução de erros dos usuários, aumentando a produtividade e observância com controles-chave como medidas de segurança de usuários.

DS8 Gerenciar a Central de Serviço e os IncidentesUm serviço de suporte interno com respostas rápidas e eficientes necessita de um processo bem desenvolvido e executado. É preciso criar um serviço com registros, classificação dos incidentes, tendências e análises de causas, além da resolução. O benefício esperado é o aumento da produtividade por meio da resolução rápida de problemas. Também será possível descobrir as causas principais de problemas (como falta de treinamento).

DS9 Gerenciar a ConfiguraçãoÉ preciso garantir a integridade do hardware utilizado nos sistemas de produção. Para isso é preciso ter um gerenciamento completo das configurações dos equipamentos, a fim de minimizar problemas que podem ocorrer.

DS10 Gerenciar os ProblemasO processo prevê a identificação e classificação dos problemas reportados, análise de causa e resolução de problemas. Identificação e recomendações para melhoramento também é abordado. Um correto gerenciamento de problemas irá melhorar os níveis de serviços prestados, irá reduzir custos, além de aumentar a satisfação do usuário.

Page 182: Apam

DS11 Gerenciar os DadosO gerenciamento de dados será feito baseado nos requerimentos de dados da organização. É preciso ter um controle eficiente dos backups, recuperação de dados, descarte apropriado de mídias (simplesmente jogar um HD, que não funciona, no lixo é uma péssima ideia – alguém mais tarde poderia obter dados sensíveis.)

DS12 Gerenciar o Ambiente FísicoA segurança dos equipamentos e das pessoas requer instalações muito bem desenhadas e construídas. Esse processo inclui a definição das requisições para o ambiente, gerenciamento de acesso físico de pessoas, etc.

DS13 Gerenciar as OperaçõesO processamento de dados requer uma infraestrutura de hardware bem gerenciada. Definição de políticas e procedimentos para um gerenciamento efetivo de tarefas agendadas, proteção das saídas dos processos, monitoramento da infra-estrutura, e manutenção preventiva do hardware. Isso ajudará a manter a integridade dos dados, além de reduzir atrasos nos processos de negócio e custos de operação de TI.

Domínio “Monitorar e Avaliar”- É o domínio que mantém foco na avaliação constante dos processos de TI.- Este domínio endereça o gerenciamento de desempenho e Governança de TI.- Responsável por monitorar os controles internos.

Visa assegurar a qualidade dos processos de TI e manter a conformidade com os objetivos de controle. É um domínio voltado para melhoria continua da qualidade dos processos. Garante que os resultados prometidos e esperados estão sendo alcançados. Utiliza mecanismos de acompanhamento e monitoramento dos controles internos com avaliações ou auditorias internas e externas.

Processos deste domínio:ME1 Monitorar e Avaliar o Desempenho de TI.O gerenciamento efetivo da performance de TI precisa de um processo próprio. São definidos indicadores de performance, um sistema de relatórios sistemáticos sobre performance. O monitoramento é necessário para garantir que as coisas serão feitas e estarão de acordo com as diretivas e políticas estabelecidas.

ME2 Monitorar e Avaliar os Controles Internos.Esse processo aborda o monitoramento de exceções, resultados de auto-avaliações e revisões de terceiros. Um benefício desse processo será o provimento de garantias acerca da efetividade e eficiência das operações, além da observância das leis aplicáveis e entidades reguladoras.

ME3 Assegurar a Conformidade com Requisitos Externos (Garantir a conformidade regulatória).É preciso o estabelecimento de um processo de revisão independente para garantir a conformidade com leis e órgãos reguladores.

ME4 Prover a Governança de TI.O estabelecimento de um framework de governança inclui a definição das estruturas organizacionais, processos, lideranças, papéis e responsabilidades para garantir que os investimentos da organização em TI estarão alinhados e entregues de acordo com as estratégias e objetivos.

Page 183: Apam

###Gestão de TI

COBIT

Os recursos de TI precisam ser gerenciados por processos para gerar informação aos processos de negócio que buscam atingir aos objetivos.

Os recursos são:Aplicativos: Sistemas de Informação para processar as informações.Informações: Dados que são processados por todos os sistemas de informação.Infraestrutura: Toda estrutura de tecnologia necessária, tal como hardware, SO, estrutura de rede.Pessoas: Recursos Humanos necessários para Planejar, Desenvolver, Entregar e Avaliar os serviços.

Critérios da Informação do COBIT para atender ao negócio:

Requisitos da Qualidade:

- eficácia: está relacionada com atingir ao objetivo; informação eficaz é aquela que é entregue de um modo correto, consistente e útil.- eficiência: capacidade de atingir o objetivo com a melhor performance possível; pode estar relacionado com menor tempo ou custo e esforço (recursos).

Requisitos Fiduciários:

- conformidade: disponibilizar informações que comprovem o cumprimento dos regulamentos.- confiabilidade: informação confiável é a informação livre de falhas; informação apropriada.

Requisitos de segurança:

- confidencialidade: informação disponível apenas a quem tem direito.- integridade: exatidão da informação.- disponibilidade: capacidade da informação de estar disponível no momento que for requisitada.

###Gestão de TI

Áreas de foco da Governança de TI

1. Alinhamento Estratégico: foca em garantir a ligação entre os planos de negócios e de TI, definindo, mantendo e validando a proposta de valor de TI, alinhando as operações de TI com as operações da organização. O alinhamento corresponde à aplicação da TI de forma apropriada e em harmonia com as estratégias, objetivos e necessidades organizacionais. O retorno sobre o investimento é função deste alinhamento. Entender e medir o alinhamento são um desafio para executivos que não são da TI.

2. Entrega de Valor: é a execução da proposta de valor de TI através do ciclo de entrega, garantindo que TI entrega os benefícios prometidos previstos na estratégia da organização, se

Page 184: Apam

concentrado em otimizar custos e provendo o valor intrínseco de TI. Segundo o ITGI, o valor é uma função do grau pelo qual a organização da TI está alinhada aos objetivos estratégicos e alcançar as expectativas de negócios. Avaliar o valor da TI e qual a sua magnitude continuam sendo um grande desafio. Weill sugere um conjunto de práticas de gerenciamento que ajudam na busca de valor:- padronização de tecnologia;- gerenciamento de projetos;- clarificação do valor;- governança de TI.

3. Gestão de Recursos (Otimização dos Investimentos): refere-se à melhor utilização possível dos investimentos e o apropriado gerenciamento dos recursos críticos de TI: aplicativos, informações, infraestrutura e pessoas. Questões relevantes referem-se à otimização do gerenciamento da infraestrutura. A TI precisa de boa infraestrutura tecnológica, pessoal técnico capacitado e bem treinado, orçamento adequado para a manutenção dos serviços de TI e realização de novos investimentos. Aspectos relacionados ao bom uso de recursos e a definição do que deve ser terceirizado são importantes. Os ativos de TI podem ser tangíveis (HW-SW) e intangíveis (conhecimento, relacionamento). O uso adequado dos recursos se dá com o seu uso nas atividades e processos da organização.

4. Gestão de Risco: requer a preocupação com riscos pelos funcionários mais experientes da corporação, um entendimento claro do apetite de risco da empresa e dos requerimentos de conformidade, transparência sobre os riscos significantes para a organização e inserção do gerenciamento de riscos nas atividades da companhia. A informação é um recurso da organização, portanto falar de gestão de riscos de TI é falar de gestão de riscos da Organização. Assim é necessário identificar, mensurar e gerenciar os riscos de TI. Gerenciar os riscos corresponde ao processo de analisar e gerenciar o risco. A análise de risco trata a identificação, estimativa e avaliação de riscos.

5. Mensuração de Desempenho (Transparência): acompanha e monitora a implementação da estratégia, término do projeto, uso dos recursos, processo de performance e entrega dos serviços, usando, por exemplo, “balanced scorecards” que traduzem as estratégia em ações para atingir os objetivos, medidos através de processos contábeis convencionais. Um sistema de mensuração de desempenho é um conjunto de pessoas, métodos, ferramentas e indicadores formatados para coletar, descrever e representar os dados, com a finalidade de gerar informações que permitam a avaliação do desempenho da TI por diferentes níveis organizacionais. O uso de indicadores de desempenho é uma forma de avaliar o desempenho da TI. O BSC é muito utilizado para gerar os indicadores de desempenho da TI.Alguns autores definem ainda um sexto foco:

6. Accountability: A definição clara dos papéis e responsabilidades é foco importante da governança de TI. Inclui definir, comunicar, dar apoio e definir consequências quando ocorrer uma não conformidade.

###Gestão de TI

Modelo de maturidade para o COBIT

- Inexistente. Ausência total de processos identificáveis. A organização não reconhece que é um aspecto a ser considerado.

Page 185: Apam

- Inicial. Há evidências de que a organização reconhece que o aspecto existe e deve ser considerado. Entretanto, não há processos padronizados, apenas abordagens eventuais que tendem a ser aplicadas em bases isoladas ou caso a caso. A abordagem da administração em geral não é organizada.- Repetitivo. Os processos foram desenvolvidos até o estágio em que procedimentos similares são adotados por pessoas distintas que realizam a mesma tarefa. Não há treinamento ou divulgação formal de procedimentos padronizados e as responsabilidades são deixadas a cargo das pessoas. Há um alto grau de confiança no conhecimento pessoal e consequente tendência a erros.- Definido. Os procedimentos foram padronizados e documentados, bem como divulgados através de treinamento. Contudo, cabe às pessoas seguir tais processos, sendo pouco provável que desvios sejam detectados. Os procedimentos em si não são sofisticados, consistindo na formalização de práticas existentes.- Gerenciado. É possível monitorar e mensurar o cumprimento dos procedimentos, bem como adotar medidas quando os processos aparentarem não funcionar efetivamente. Os processos estão sob constante melhoria e propiciam boas práticas. Automação e ferramentas são utilizadas de forma limitada ou fragmentada.- Otimizado. Os processos foram refinados ao nível das melhores práticas, com base nos resultados de melhorias contínuas e modelagem da maturidade com outras organizações. A TI é utilizada como uma forma integrada para automatizar os fluxos dos procedimentos (“workflow”), provendo ferramentas para melhorar a qualidade e a efetividade, tornando a empresa ágil para adaptações.

###Gestão de TI

COBIT

Medição de PerformanceOs objetivos e métricas são definidos no CobiT em três níveis:- Objetivos e métricas de TI que definem o que os negócios esperam de TI e como medir isso.- Objetivos e métricas dos processos que definem o que os processos de TI precisam entregar para dar suporte os objetivos de TI e como medir isso.- Objetivos e métricas de atividades que estabelecem o que precisa acontecer dentro do processo para atingir a requerida performance e como medir isso.

###Arquitetura de computadores

RISC x CISC

Exemplos de RISC: RISC I, MIPS, RS6000, SPARC.Exemplos de CISC: 386, 68030.

Principais características de máquinas CISC: conjunto de instruções de linguagem de máquina maior e mais complexa. Microprograma maior e mais lento.

Principais características de máquinas RISC: - em uma máquina RISC, há um pequeno número de instruções executadas diretamente pelo hardware sem nenhum interpretador ou microprograma. - a unidade de dados da máquina RISC é otimizada para garantir um mínimo de tempo de ciclos de dados.

Page 186: Apam

- poucas instruções e modos de endereçamento.

RISC CISC

Instruções simples levando um ciclo Instruções complexas levandomúltiplos ciclos

Apenas LOAD´s e STORE´sreferenciam a memória

Qualquer instrução podereferenciar a memória

Altamente pipelined (2 ciclos:busca, executa)

Pouco pipelined

Instruções executadas pelohardware

Instruções interpretadas pelomicroprograma

Instruções de formato fixo Instruções de vários formatos

Poucas instruções e modos de endereçamento

Muitas instruções e modos de endereçamento

Compilador complexo Microprograma complexo

Muitos registradores (+/- 500) Poucos registradores

Menos transistores na pastilha Mais transistores na pastilha

Projeto mais rápido Projeto mais lento

Linguagem de montagem ou assembly: notação legível por humanos para o código de máquina que uma arquitetura de computador específica utiliza.Montador/Assembler: tradutor onde a linguagem fonte é a linguagem de montagem e a linguagem alvo é a linguagem de máquina.

Linguagem de montagem: código menor e mais rápido.Ligador – cria um programa executável a partir de um objeto.

Arquitetura de computador oferece, pelo menos, dois modos de operação:Supervisor (privilegiado/protegido):- possibilita a execução de todas as instruções do processador;- modo de execução sistema operacional.Usuário:- certas instruções não podem ser executadas;- modo de execução dos processos usuários.

Chaveamento de modos:- interrupção (usuário -> protegido).- instrução (protegido -> usuário).

###Arquitetura de computadores

Sincronização

Page 187: Apam

- Usar a variável “busy”: a região crítica começa como falso. Quando o processo acessa a RC, ele muda a variável para verdadeiro. O problema é que se houver uma troca de contexto no momento de entrar na RC, mais de um processo pode acessar a RC.- Alternância de uso: definir uma variável “vez” para indicar qual processo pode acessar a RC. O problema é que se um processo não acessar a RC, essa variável “vez” não evolui.

- Algoritmo de Peterson: antes dele, Dekker tinha criado um algoritmo correto e Peterson o deixou mais simples. Quando o processo tenta entrar, ele pega a vez e fica testando se a vez é dele e se o outro está na RC. Quando isso der falso, ele entra na RC.

- Instruções de máquina test-and-set.

Problemas:Ineficiência: as tarefas que aguardam o acesso a uma seção crítica ficam testando continuamente uma condição, consumindo tempo de processador sem necessidade. O procedimento adequado seria suspender essas tarefas até que a seção crítica solicitada seja liberada.Injustiça: não há garantia de ordem no acesso à seção crítica; dependendo da duração de quantum e da política de escalonamento, uma tarefa pode entrar e sair da seção crítica várias vezes, antes que outras tarefas consigam acessá-la.

Semáforos: counter e queue.Ao usar semáforos, um programador define explicitamente os pontos de sincronização necessários em seu programa. Essa abordagem é eficaz para programas pequenos e problemas de sincronização simples, mas se torna inviável e suscetível a erros em sistemas mais complexos.

Variáveis de condição: Uma variável de condição não representa um valor, mas uma condição, que pode ser aguardada por uma tarefa. Quando uma tarefa aguarda uma condição, ela é colocada para dormir até que a condição seja verdadeira. Assim, a tarefa não precisa testar continuamente aquela condição, evitando uma espera ocupada.

Um monitor é uma estrutura de sincronização que requisita e libera a seção crítica associada a um recurso de forma transparente, sem que o programador tenha de se preocupar com isso. Um monitor consiste de:- um recurso compartilhado, visto como um conjunto de variáveis internas ao monitor.- um conjunto de procedimentos que permitem o acesso a essas variáveis;- um mutex ou semáforo para controle de exclusão mútua; cada procedimento de acesso ao recurso deve obter o semáforo antes de iniciar e liberar o semáforo ao concluir;- um invariante sobre o estado interno do recurso.

###Sistemas operacionais

Gerenciamento de E/S

Polling

Na e/s com polling, o processador controla toda a transferência de dados entre a memória e a interface de e/s.

Page 188: Apam

Normalmente, o registrador de estado possui um bit, chamado done bit, que é desativado quando um dado é escrito no registrador de dados, sendo ativado quando este dado é escrito no setor do disco.Após escrever um dado no registrador de dados, o processador lê o registrador de estado e testa o done bit, para verificar se o mesmo já foi escrito no setor do disco. Este teste do bit de estado é chamado polling. O processador continua realizando o polling até encontrar o done bit ativado, o que indica que o dado já foi escrito no setor do disco. Quando isto acontece, e se ainda existe algum dado a ser enviado, o processador escreve o novo dado no registrador de dados e reinicia o polling. Este ciclo é repetido até que todos os dados tenham sido escritos no setor do disco.A principal vantagem da e/s com polling é a sua simplicidade. No entanto, esta técnica possui a desvantagem de que o processador fica dedicado à operação de e/s. Isto pode ser extremamente ineficiente, sob o ponto de vista da utilização do processador. Considere uma operação de envio de um bloco de caracteres para uma impressora. O tempo de impressão de um caracter é infinitamente maior que o tempo de execução de uma instrução.Manter o processador em polling durante o tempo de impressão de cada caracter é um desperdício, já que durante este intervalo de tempo o processador poderia executar alguns milhões de instruções de um outro programa. Devido ao fato que o processador fica dedicado à operação de e/s até o seu término, o uso da técnica de e/s com polling é restrito apenas a sistemas onde apenas um programa pode se encontrar em execução a cada instante.

Interrupção

Nesta técnica, a interface é responsável por notificar o processador quando um novo dado pode ser transferido. Enquanto a e/s com polling é uma técnica puramente de software, a e/s com interrupção requer um suporte de hardware. A interface deve gerar um sinal de interrupção, através do qual ela notifica o processador quando uma operação de e/s foi concluída.A interface inicia a fase de transferência de dados fazendo um pedido de interrupção ao processador, através do sinal de interrupção. Ao receber o pedido de interrupção, o processador suspende a execução do programa corrente e passa a executar uma rotina especial, chamada rotina de serviço de interrupção (também chamada device driver ou device handler). Nesta rotina, o processador verifica inicialmente se o último dado já foi enviado. Se este é o caso, o processador conclui a escrita do setor do disco lendo o registrador de estado da interface. Caso contrário, o processador envia um novo dado e retorna para o programa que se encontrava em execução.Durante a fase de transferência de dados, a interface faz um pedido de interrupção a cada dado escrito no setor do disco. O processador responde ao pedido de interrupção executando a rotina de serviço e enviando um novo dado. Isto se repete até que todos os dados tenham sido escritos no setor do disco. Normalmente, a interface de disco conhece o tamanho do setor e mantém uma contagem dos dados já recebidos, de forma que ela pode determinar quando deve encerrar a seqüência de pedidos de interrupção.Em um sistema é comum existirem várias interfaces diferentes que fazem pedidos de interrupção ao processador. Cada interface deve ser atendida por uma rotina de serviço de interrupção específica para aquela interface. Assim, ao receber um pedido de interrupção, o processador deve determinar qual a rotina de serviço a ser executada. Além disso, quando duas ou mais interfaces fazem pedidos de interrupção simultâneos, é necessário decidir qual o pedido de interrupção que será atendido. Estas duas funções são suportadas por um componente do subsistema de e/s, chamado controlador de interrupção (interrupt controller).

Acesso Direto à Memória

Page 189: Apam

Na e/s com DMA (Direct Memory Access) um componente do sub-sistema de e/s, chamado controlador de DMA,  é responsável por transferir os dados entre a memória e a interface de e/s.O processador participa apenas da fase de disparo. Na fase de transferência de dados, o controlador de DMA assume o controle dos barramentos para realizar a transferência entre a memória e a interface. Para tanto, o controlador de DMA coloca o processador em um estado, chamado hold state, no qual o processador fica impedido de iniciar ciclos de barramento.

###Sistemas operacionais

CPU Bound means the rate at which process progresses is limited by the speed of the CPU. A task that performs calculations on a small set of numbers, for example multiplying small matrices, is likely to be CPU bound.I/O Bound means the rate at which a process progresses is limited by the speed of the I/O subsystem. A task that processes data from disk, for example, counting the number of lines in a file is likely to be I/O bound.

Chamadas ao sistema

O conjunto de chamadas ao sistema oferecido pelo SO é a interface entre o próprio SO e os programas do usuário. Fazer uma chamada ao SO é como fazer uma chamada de procedimento, exceto que este é em modo usuário e aquele é em modo núcleo ou supervisor.

###Sistemas operacionais

Comunicação com dispositivos

As características que regem a comunicação de cada um dos dispositivos de E/S (entrada e saída) com o núcleo do computador (composto de UCP e memória principal) são muito diferentes entre si. Cada dispositivo de E/S se comunica com o núcleo de forma diversa do outro. Entre outras diferenças, os dispositivos de entrada e saída são muito mais lentos que o computador, característica essa que impõe restrições à comunicação, de vez que o computador precisaria esperar muito tempo pela resposta do dispositivo.

Outra diferença fundamental diz respeito às características das ligações dos sinais dos dispositivos. A UCP não se comunica diretamente com cada dispositivo de E/S e sim com "interfaces", de forma a compatibilizar as diferentes características. O processo de comunicação ("protocolo") é feito através de transferência de informações de controle, endereços e dados propriamente ditos. Inicialmente, a UCP interroga o dispositivo, enviando o endereço do dispositivo e um sinal dizendo se quer mandar ou receber dados através da interface. O periférico, reconhecendo seu endereço, responde quando está pronto para receber (ou enviar) os dados. A UCP então transfere (ou recebe) os dados através da interface, e o dispositivo responde confirmando que recebeu (ou transferiu) os dados (acknowledge ou ACK) ou que não recebeu os dados, neste caso solicitando retransmissão (not-acknowledge ou NAK).

Na transmissão síncrona, o intervalo de tempo entre dois caracteres subseqüentes é fixo.Já na transmissão assíncrona, o intervalo de tempo entre os caracteres não é fixo.

Page 190: Apam

Uma comunicação é dita simplex quando permite comunicação apenas em um único sentido, tendo em uma extremidade um dispositivo apenas transmissor (transmitter) e do outro um dispositivo apenas receptor (receiver).

Uma comunicação é dita half-duplex (também chamada semi-duplex) quando existem em ambas as extremidades dispositivos que podem transmitir e receber dados, porém não simultaneamente.

Uma transmissão é dita full-duplex (também chamada apenas duplex) quando dados podem ser transmitidos e recebidos simultaneamente em ambos os sentidos.

###Sistemas operacionais

Estruturas dos discos

As unidades de armazenamento em disco, como o HD, são divididas em círculos concêntricos chamados trilhas. Essas trilhas por sua vez são divididas em pequenas unidades para armazenamento chamadas setores. Os setores são, efetivamente, locais onde os dados digitais são armazenados. Não são todos os sistemas operacionais que conseguem entender a grande quantidade de setores quem há em um disco rígido (depende do sistema operacional); portanto, os setores são reunidos em pequenos grupos chamados clusters, que passam a ser a mínima quantidade de informação que um disco consegue entender.Um cluster é um conjunto de setores contíguos que são reunidos simplesmente para que seja possível gerenciar o conteúdo do disco. Como um disco rígido tem muitos setores, gerenciá-lo um a um seria muito custoso para o sistema operacional.Como um disco rígido pode possuir diversas partições de tamanhos variados. As partições terão seu próprio número estipulado de clusters dependendo da divisão ocorrida no disco. O particionamento é muito mais comum quando se deseja instalar mais de um sistema operacional no computacional.

Escalonamento dos discos

A política de escalonamento dos acessos a discos rígidos tem um impacto importante no throughput de um sistema (número de bytes lidos ou escritos no disco por segundo). Algumas políticas bem conhecidas são:- First Come, First Served (FCFS): os pedidos são atendidos na ordem em que são gerados pelas tarefas; sua implementação é simples, mas não oferece um bom desempenho;- Shortest Seek-Time First (SSTF): os acessos a disco são ordenados conforme sua distância relativa: primeiro são atendidos os pedidos mais próximos à posição atual da cabeça de leitura do disco.- Circular Scan (CSCAN): os pedidos são atendidos sempre em ordem crescente de suas posições no disco; após tratar o pedido com a maior posição, a cabeça do disco retorna ao próximo pedido com a menor posição no disco.

###Sistemas operacionais

Sistemas de arquivo

Sistema de arquivos é a forma que o sistema operacional usa para representar determinada informação em um espaço de armazenagem. É o método de identificar e indexar as

Page 191: Apam

informações que estão armazenadas em qualquer mídia: disquetes, discos rígidos, drives em memória, CDs, etc.Quando se prepara um disco para o trabalho através do processo de formatação física, criam-se os meios magnéticos necessários para armazenar os dados. Este processo faz uma preparação do dispositivo de armazenagem para que ele possa receber um sistema de arquivos e futuramente os dados do usuário. Um sistema de arquivos, portanto, é necessário para manter padrões, para controlar o tamanho das partições, permissões de arquivos, tamanho dos arquivos e sua organização, entre muitas outras funções.

Diretório: conjunto de entradas para identificação e localização dos arquivos. Forma de organização para facilitar acessos.

Métodos de acesso aos arquivos:

Acesso sequencial- Leitura dos dados (bytes/registros) se dá a partir do início- Não permite acesso fora de ordem- Primeiros SOs só armazenavam arquivos em fitas magnéticas

Acesso aleatório- Leitura dos dados (bytes/registros) pode ser feito fora de ordem- Essencial para sistemas tal como base de dados- Sistemas de arquivo atuais empregam este tipo

Modos de alocação de arquivos:

Alocação contígua- Consiste em armazenar um arquivo em blocos contíguos- Implementação bem simples- Endereço do bloco onde inicia o arquivo- Número de blocos que são empregados

Problemas- Alocação de novos arquivos em espaços livres - Pode gerar fragmentação externa- E se o tamanho de arquivo armazenado precisar ser estendido

Lista encadeada- Só é preciso conhecer o primeiro bloco- Primeira palavra utilizada como ponteiro para próximo bloco- Último bloco aponta para endereço nulo- Não causa fragmentação externa

Problemas- Acesso aleatório é lento, pois os blocos tem de ser sequencialmente buscados- Para se chegar ao bloco n, deve-se passar por n-1 blocos antes- Vinculo está armazenado em disco- Bloco não é usado somente para dados

Exemplo- Bloco de 1kbytes e endereçamento de 16 bits- 1022 bytes armazenam informações

Page 192: Apam

- 2 bytes endereçam o próximo bloco

Alocação indexada (usada pelo Linux)

- Cada arquivo possui um bloco de índices- O diretório possui o endereço do bloco de índices de cada arquivo- Para acessar um bloco específico do arquivo é necessário acessar o bloco de índices para determinar o seu endereço físico no disco- Os arquivos podem ser criados com tamanho zero- Permite acesso direto- Ocupa-se um setor inteiro para índices- Para arquivos grandes são necessários vários setores de índices

Alocação por extensão (usada pelo windows)

Usada pelo Windows NT. O SO aloca uma extensão para o arquivo conforme a sua necessidade. Há uma estrutura de controle por arquivo que contém as informações de bloco inicial, quantidade de blocos na extensão e o número do bloco do arquivo na extensão. Há preocupação com a fragmentação do arquivo no disco, o que irá gerar o crescimento da estrutura de controle.

###Sistemas operacionais

Cache de disco

Quando o sistema operacional precisa de mais memória do que a instalada no micro, o sistema operacional precisa usar a memória virtual, movendo parte dos dados para o arquivo de troca (swap file) no HD.Por outro lado, quando você tem instalado mais memória do que o sistema realmente precisa, é feito o inverso. Ao invés de copiar arquivos da memória para o HD, arquivos do HD, contendo os programas, arquivos e bibliotecas que já foram anteriormente abertos é que são copiados para a memória, fazendo com que o acesso a eles passe a ser instantâneo. Os programas e arquivos passam a ser abertos de forma gritantemente mais rápida, como se você tivesse um HD muito mais rápido do que realmente é.Esse recurso é chamado de cache de disco e (sobretudo no Linux) é gerenciado de forma automática pelo sistema, usando a memória disponível. Naturalmente, o cache de disco é descartado imediatamente quando a memória precisa ser usada para outras coisas. Ele é apenas uma forma de aproveitar o excedente de memória, sem causar nenhum efeito desagradável.Ironicamente, a forma mais eficiente de melhorar o desempenho do HD, na maioria das aplicações, é instalar mais memória, fazendo com que uma quantidade maior de arquivos possa ser armazenada no cache de disco. É por isso que servidores de arquivos, servidores proxy e servidores de banco de dados costumam usar muita memória RAM, em muitos casos 4 GB ou mais.Outra forma de melhorar o desempenho do HD é usar RAID, onde dois ou quatro HDs passam a ser acessados como se fossem um só, multiplicando a velocidade de leitura e gravação. Esse tipo de RAID, usado para melhorar o desempenho, é chamado de RAID 0. Existe ainda o RAID 1, onde são usados dois HDs, mas o segundo é uma cópia exata do primeiro, que garante que os dados não sejam perdidos no caso de algum problema mecânico em qualquer um dos dois. O RAID tem se tornado um recurso relativamente popular, já que atualmente a maioria das placas-mãe já vem com controladoras RAID onboard.

Page 193: Apam

###Arquitetura de computadores

Representação de números inteiros

Módulo e sinal

Neste sistema de representação, o bit que está situado mais à esquerda representa o sinal, e o seu valor será 0 para o sinal + e um para o sinal -. Os bits restantes (N-1) representam o módulo do número. Por exemplo, supondo que exista a limitação de 8 bits (N=8), o valor 00101010 representa o número +42 e o valor 10101010 representa o número -42.

Complemento de 1

Este sistema de representação também utiliza o bit mais à esquerda para o sinal, correspondendo o 0 ao sinal + e o 1 ao sinal -. Para os números positivos, os N - 1 bits da direita representam o módulo (assim como no MS). O simétrico de um número positivo é obtido pelo complemento de todos os seus dígitos (trocando 0 por 1 e vice-versa), incluindo o bit de sinal. Por exemplo, supondo que exista a limitação de 8 bits (N=8 ), o valor 00101010 representa o número +42 e o valor 11010101 representa o número -42.

Representação de números reais

Existe a parte fracionária, o expoente, o sinal do expoente e o sinal do número.A mantissa é a parte fracionária normalizada.Normalizar a parte fracionária seria: -3,14 = 0,314 x 10¹Mantissa = 0,314Expoente = 1Sinal do número (SN) = -1Sinal do expoente (SE) = 1

SN SE Expoente Mantissa

###Arquitetura de computadores

A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity - CPU) é a responsável pelo processamento e execução dos programas armazenados na memória principal. As funções da UCP são: executar as instruções e controlar as operações no computador.

A UCP é composta de duas partes:UAL - Unidade Aritmética e Lógica - tem por função a efetiva execução das instruções.UC - Unidade de Controle - tem por funções a busca, interpretação e controle de execução das instruções, e o controle dos demais componentes do computador.

Um símbolo esquemático típico para uma ULA, onde "A" e "B" são operandos, "R" é a saída, "F" é a entrada da unidade de controle e "D" é a saída de status.

Page 194: Apam

###Arquitetura de computadores

Contenção significa aguardar numa fila para poder ser servido. Existem várias filas na execução de tarefas em uma arquitetura moderna. Filas de disco, filas de espera da liberação do locking de certos registros ou tabelas do Banco de Dados, etc. Contenções são difíceis de serem tratadas e podem causar deadlocks. Embora muitas ferramentas implementem schedulers que reordenam seqüências de operações conflitantes (que é o que acontece num Banco de Dados).

###Arquitetura de TI

Principais Problemas com TI- Pouca eficácia nas soluções de TI para o negócio- Falta de flexibilidade e alto custo para adaptação dos sistemas às mudanças- Baixa qualidade das informações- Redundâncias, inconsistências, falta de semântica explícita e consensual- Múltiplas Tecnologias- Necessidade de soluções de curto prazo- Necessidade de contínuo gerenciamento e adaptação às mudanças tecnológicas e de negócio

Por que isto acontece?- Grandes distâncias entre o planejamento do negócio e os desenvolvimentos de TI- Falta de visão da estratégia de TI ao longo prazo- Mercado de tecnologias muito voláteis e ágeis para atendimento das exigências do negócio- Ausência de modelos conceituais de representação do domínio- Fraca integração de dados e aplicações- Baixo nível de padronização de tecnologia

Mas, como resolver estes problemas?- “Conhecendo” a organização: objetivos e metas, processos, conceitos e dados, sistemas e componentes, infra-estrutura- Promovendo alinhamento entre a TI e processos de negócio- Integrando e otimizando aplicações, informações e tecnologias- Definindo melhores práticas para TI

Page 195: Apam

- Definindo e organizando: modelos, métodos e ferramentas para suporte ao desenvolvimento de TI- Estabelecendo padrões - Gerindo os repositórios de informações- Prospectando novas soluções no mercado

Durante os próximos 3 a 5 anos, tendências no negócios e na tecnologia (excesso de informação, novos processos de negócio, crescimento de serviços e o poder crescente dos indivíduos) irão reforçar a necessidade de um foco mais profundo e claro na Arquitetura Corporativa, e de investimentos mais altos em pessoas, processos e tecnologia.

Conceitos de arquitetura Corporativa de TI- Conjunto estruturado de dados e modelos descritivos que definem o negócio, a informação e a tecnologia suportada para operar a empresa, num processo contínuo de alinhamento com o negócio.

- Visão holística e integrada do motivo, onde e quem utiliza sistemas de TI, além de como e para quê eles são utilizados dentro de uma organização.

As arquiteturas são compostas por: arquitetura de negócio, arquitetura da informação, arquitetura de sistemas e arquitetura da tecnologia.

1) Arquitetura de negócio

Domínio das áreas de negócio- Processos do Negócio: suportar as estratégias da organização e de cada área do negócio- “O coração de uma boa arquitetura de negócios é a definição dos processos de negócio com suas características funcionais e operacionais, se tornando a base para manusear a aplicação das estratégias de negócio”.

Organização e Estratégia do negócio- Vasta coletânea de pensamentos com os propósitos, metas, estruturas e planos da organização- Múltiplas formas possíveis: principal objetivo é contextualizar o desenho dos processos de negócio- Tecnicamente, não faz parte da Arquitetura Corporativa de TI, mas é crítico o suficiente para que o desenho de arquitetura garanta o que está sendo levado em consideração como parte dos processos de TI

Arquitetura de processos de negócio- Define os principais processos da empresa: desenvolvimento de produtos, vendas, distribuição, etc.- Detalha processos específicos e reflete parâmetros operacionais: volumes de transações, regras, operação centralizada ou distribuída, etc.- Primeiro ponto de contato entre o negócio e a arquitetura de TI- Apresenta a visão do negócio que será detalhada o suficiente para que sejam definidos os planos e estratégias para a construção dos SI

2) Arquitetura da informação

- No domínio da Gerência de Dados

Page 196: Apam

- Orienta e organiza toda a informação que trafega em uma organização: descreve a sua estrutura conceitual, lógica e física; viabiliza conhecimento da organização sobre seus dados, facilita acesso e trata aspectos de eficiência- Visão dos Dados -> Informação -> Conhecimento: Operacionalizar e otimizar as estratégias e decisões de negócio- Base para o desenho e implantação dos SI

Arquitetura de Dados- Dados, Metadados, Modelos:

Princípios e Políticas: quem é o responsável pela informação, pelo uso e gerenciamento; Estratégias de uso dos dados

Semântica (conceitual)Estruturas de armazenamento (lógico)Eficiência no acesso (físico)

- Objetivos: Facilitar o acesso à informação (abstração; transformações entre os modelos,

rastreabilidade); Fornecer subsídios para: mapear a arquitetura de sistemas; definir a arquitetura futura

- Orientar a arquitetura tecnológica: bases de dados, serviços de gerência de dados, modelagem física

Serviços de Dados- Serviços para acesso às informações: Informação-como-um-Serviço (information-as-a-service – IaaS)- Camada que encapsula as necessidades de dados das aplicações: transparência- Altamente re-utilizável- Implementação diversa: Remete à abordagem SOA

3) Arquitetura de sistemas

- Muitas vezes dispersa entre as múltiplas Gerências de TI- Compreende o mapeamento e planejamento adequado de todos os componentes de sistemas: para suportar o negócio e as atividades de uma organização e para manipular as informações que trafegam na organização- Contempla:

Identificação de quais SI são necessários para suportar o negócio Desenho, construção (ou aquisição) e integração dos sistemas

- Composta porArquitetura de AplicaçõesArquitetura de IntegraçãoArquitetura de Serviços

- Arquitetura de Aplicações- Contempla

- Documentação das aplicações: Análise, projeto, construção- Informação trafegada entre os sistemas- Processos suportados pelos sistemas

- Objetivo é promover desenvolvimento de aplicações- De fácil integração- Consistentes com os requisitos identificados- Que manipulam dados conhecidos- Adequadas às características do ambiente operacional

Page 197: Apam

Restrições e requisitos não funcionais

- Arquitetura de Integração- Visão única corporativa da integração de sistemas

Baseada no reuso e da distribuição de funcionalidades por um barramento (BUS) lógico

Middleware de integração entre aplicações- Relacionamentos entre os diversos componentes implementados

Serviços, APIs, conectores, interfaces e protocolos de comunicação disponíveis e padronizados.

- Arquitetura de Serviços- Serviços como paradigma de construção das aplicações

Encapsulamento de detalhes de funcionamento e acesso às informações, interoperabilidade- Cria uma camada que encapsula componentes da aplicação

Conceito de barramento – Enterprise Service Bus (ESB)- Aderente à abordagem SOA

4) Arquitetura de Tecnologia

- Também conhecida como arquitetura de infra-estrutura: muito próxima do operacional e produção da organização- Abrange todos os elementos para suportar TI que devem ser operados no dia a dia, bem como software e processos para gerenciá-los

Hardware, infra-estrutura de rede, ambientes de desenvolvimento, plataformas de gerência de dados, etc.

Recursos que representam uma significativa parte dos ativos da organização- Influencia diretamente a implementação dos SI

- Arquitetura TécnicaInfra-estrutura de hardware e software para as aplicações e dados empresariais

Plataformas de e-mail, compartilhamento de arquivos, especificação dos equipamentos

Plataformas de SGBD, servidores, protocolos de rede, ambiente de data warehousing

- Arquitetura de OperaçõesFerramentas e processos necessários para construir, monitorar, gerenciar e medir todos

os aspectos de tecnologia, aplicações e ativos de dados da empresa

- Arquitetura de Segurança- Proteger a informação corporativa e os processos de negócio da organização

Políticas de privacidade das informações, políticas para detecção e tratamento de invasões e ataques, avaliação de incidentes de segurança- Aspectos de segurança de vários itens de TI

Especificação de sistemas de firewall, políticas de acesso a aplicações e arquivos, perfis de acesso às bases de dados, proteção contra vírus e espionagem eletrônica, políticas de recuperação após desastre- Tem ganhado cada vez mais projeção

Lei Sarbanes Oxley, etc.

Page 198: Apam

Benefícios:- Melhoria no processo de planejamento de TI: mapa para a priorização de projetos, estabelecimento de metas, dimensionamento de equipes- Apoio ao planejamento financeiro de TI: racional para orçamentação de projetos; uso otimizado de recursos e de uma gerência mais simplificada - Redução da curva de aprendizado dos especialistas de TI- Melhoria dos trabalhos em equipe dentro da TI: todos passam a conhecer todo o ambiente

- Redução de prazos - Simplifica projeto- Redução de riscos no desenvolvimento: maior clareza do escopo e missão da iniciativa; subsídios para planejamento de substituições de tecnologias e produtos obsoletos- Aumento da rastreabilidade: maior clareza do impacto da mudança dos processos e requisitos- Facilidade na divulgação de padrões e produtos homologados

###Arquitetura de TI

Análise de GAP

Também conhecida como análise de diferença.Corresponde a uma análise da situação atual existente na organização em relação à situação futura que se deseja alcançar. A análise de diferença deve produzir um relatório de diferenças entre a arquitetura atual e um detalhamento das atividades a serem executadas para implantação da nova arquitetura (roadmap), através da definição de projetos que estão contemplados no escopo definido.

Roadmap

A technology roadmap is a plan that matches short-term and long-term goals with specific technology solutions to help meet those goals. It is a plan that applies to a new product or process, or to an emerging technology.

Three uses:- It helps reach a consensus about a set of needs and the technologies required to satisfy those needs;- It provides a mechanism to help forecast technology developments;- It provides a framework to help plan and coordinate technology developments.

The Technology Roadmapping Process conducts 3 phases:

Phase 1: Preliminary phaseThe first phase, the preliminary phase consists of 3 steps: satisfy essential conditions (In this step it must become clear what the conditions are), provide leadership / sponsorship (Committed leadership is needed) and define the scope and boundaries for the technology roadmap (In this step the context for the roadmap will be specified). In this phase the key decision makers must identify that they have a problem and that technology roadmapping can help them in solving the problem.

Phase 2: Development phaseThe second phase, the development of the technology roadmap phase consists of 7 steps: identify the “product” that will be the focus of the roadmap, identify the critical system

Page 199: Apam

requirements and their targets, specify the major technology areas, specify the technology drivers and their targets, identify technology alternatives and their timelines, recommend the technology alternatives that should be pursued and create the technology roadmap report. These steps create the actual roadmap.

Phase 3: Follow-up activity phaseThis is the moment when the roadmap must be critiqued, validated and hopefully accepted by the group that will be involved in any implementation. For this a plan needs to be developed using the technology roadmap. Next there must be a periodical review and update point, because the needs from the participants and the technologies are evolving.

###Sistemas operacionais

Cluster

Conjunto de servidores agrupados com intenção de ganho de desempenho, disponibilidade, ou facilidade no gerenciamento.Normalmente um cluster é composto por máquinas convencionais ligadas em uma rede de alto desempenho e fornecendo a abstração ao usuário de uma única máquina.

Balanceamento de carga

Um sistema distribuído consiste numa coleção de computadores autônomos conectados por uma rede de comunicação. Devido a flutuações na taxa de chegadas e no tempo de serviço das tarefas submetidas pelos usuários durante certo intervalo de tempo, algumas máquinas poderão estar ociosas enquanto outras estarão pesadamente carregadas [Livny & Melman, 1982]. Os algoritmos de compartilhamento ou distribuição de carga tentam melhorar o desempenho deste tipo de sistema compartilhando a carga de trabalho do sistema entre as máquinas que o compõem. Os algoritmos de balanceamento de carga vão além, visando equilibrar a carga de todas as máquinasO problema do balanceamento de carga é um problema de escalonamento, que consiste em determinar qual máquina da rede irá executar uma determinada tarefa de maneira a otimizar o desempenho do sistema. Encontrar a solução ótima para este tipo de problema é em geral um problema NP-Completo.

###Arquitetura de TI

Portais corporativos

Personalização - cada usuário é um usuário diferente e precisa receber informação de seu interesse apenas. Com essa premissa é que as ferramentas de Portais Corporativos devem oferecer mecanismos de personalização para que o conteúdo ideal seja entregue para o usuário, de acordo com seu interesse. A personalização pode ser passiva, quando o conteúdo é entregue de acordo com o perfil ou ativa quando o usuário define o que quer e o que não quer nas páginas de seu portal corporativo.

Integração de Sistemas - integração com demais aplicações é indispensável. Se não houver integração o portal jamais conseguirá ser a interface única dos usuários de uma empresa. A integração é um dos pontos mais complexos no desenvolvimento de um Portal Corporativo. As

Page 200: Apam

boas ferramentas de Portais Corporativos possuem diversos componentes de integração disponíveis para facilitar essa tarefa.

ColaboraçãoEstabelecer a aproximação, mediada e apoiada pela tecnologia, dos cérebros e talentos da organização.

TaxonomiaHierarquia lógica de termos, em torno da qual uma organização estrutura sua vida.

Web 2.0Web 2.0 é a mudança para uma internet como plataforma, é um entendimento das regras para obter sucesso nesta nova plataforma. Entre outras, a regra mais importante é desenvolver aplicativos que aproveitem os efeitos de rede para se tornarem melhores quanto mais são usados pelas pessoas, aproveitando a inteligência coletiva.

Gerenciador de Conteúdo Segundo definição, Gerenciador de Conteúdo é um sistema, software ou aplicação que permite aos usuários de negócio gerenciar os conteúdos de seus websites, Portais Corporativos, Intranets, Extranets, Sites Móveis ou Aplicações Web, sem a necessidade de conhecimentos técnicos (programação) e através de um software de Gerenciador de Conteúdo - CMS. Um Sistema de Gerenciamento de Conteúdo (do inglês Content Management System – CMS) é um aplicativo usado para criar, editar, gerenciar e publicar conteúdo de forma consistentemente organizada permitindo que o mesmo seja modificado, removido e adicionado com facilidade. CMSs são frequentemente usados para armazenar, controlar, versionar, e publicar documentação empresarial tais como notícias, artigos, manuais de operação, manuais técnicos, guias de vendas e brochuras de marketing. O conteúdo pode incluir arquivos de computador, imagens, áudios, vídeos, documentos eletrônicos e conteúdo Web.

PortletsSão componentes de Portais Corporativos que oferecem conteúdo, colaboração ou mesmo informações transacionais, vinda de sistemas já existentes que são integrados ao Portal como portlets. O conceito de um portlet é o de um componente que, ao ser desenvolvido, pode ser reutilizado por quantas vezes forem necessárias e pelos mais diversos tipos de portais. Por conta disso, a especificação JSR 168 surgiu, um padrão Java para portlets e portais corporativos, que os melhores softwares de portais e as melhores ferramentas de portais utilizam, como por exemplo, o Agile Portal.

###Arquitetura de software

Inversão de controlePadrão é muito usado em projetos orientados a objeto e utiliza conceitos como interface, herança e polimorfismo, e, tem como objetivo reduzir o acoplamento, facilitar o reuso e os testes no projeto de software.

Programação por contrato é um paradigma de programação no qual o tratamento é governado por regras. Estas regras, chamadas assertions, formam um contrato que especifica responsabilidade entre o cliente e o provedor de código de software. É um método semi-formal de programar cujo propósito principal é reduzir o número de bugs em um programa.

Page 201: Apam

###Engenharia de software

CMMI

Desenvolvimento de requisitos

- Identifica as necessidades do cliente;- Traduz essas necessidades em requisitos;- Os requisitos são analisados para gerar uma solução conceitual de alto nível;- Fornece requisitos para a área de processo de Solução técnica, onde os requisitos são convertidos em arquitetura do produto, design de componentes de produto e no próprio componente do produto;- Fornece requisitos para a área de processo Integração do produto, onde os componentes de produto são combinados e as interfaces são verificadas para assegurar que os requisitos de interface, fornecidos pelo Desenvolvimento de requisitos sejam atendidos;

Aliada a essa área, tem a área de processo Gestão de requisitos.- Mantém os requisitos;- Descreve atividades para obter e controlar mudanças de requisitos e assegurar que outros planos e dados relevantes se mantenham atualizados;- Assegura que as mudanças ocorridas nos requisitos sejam refletidas em planos, atividades e produtos de trabalho de projeto;

Solução técnica

- Desenvolve pacotes de dados técnicos para componentes de produto que serão utilizados pela área de processo Integração de produto ou pela área de processo Gestão de contrato com fornecedores;- Soluções alternativas são examinadas a fim de escolher o design ótimo com base em critérios previamente estabelecidos;- Apóia-se nas práticas específicas da área de processo Verificação para realizar verificações de design e revisões por pares durante o design e antes da construção final;

Verificação

- Assegura que os produtos de trabalho selecionados satisfaçam aos seus requisitos especificados, selecionando métodos para sua verificação em relação aos requisitos especificados;- Incremental e iniciado com a verificação de componentes de produto e concluído com a verificação de produtos completos;- Também envolve revisão por pares que é um método comprovado para a remoção efetiva e antecipada de defeitos e proporciona um conhecimento valioso sobre os produtos de trabalho e componentes de produto que estão sendo desenvolvidos;- Pode ser feito em ambiente real ou em um ambiente simulado;- Aspecto importante é o alinhamento dos requisitos de validação com o cliente;- Engloba validação de produtos, componentes de produto, produtos intermediários de trabalho e processos;- Questões críticas são solucionadas, normalmente, nas áreas de processo Desenvolvimento de requisitos ou Solução técnica;

Page 202: Apam

Integração de produto

- Contém as práticas específicas associadas à geração da melhor sequência de integração possível, envolvendo a integração de componentes de produto e a entrega do produto ao cliente;- Utiliza práticas específicas das áreas de processo Verificação e Validação;- As práticas de Verificação possibilitam a verificação das interfaces e dos requisitos de interface de componentes de produto antes da integração do produto;

###Engenharia de software

Testes de software

Teste de CargaExecução de testes para verificar se o sistema suporta a carga prevista, e avaliar a sua robustez quando submetido a uma carga acima do previsto, assim como determinar o seu limite de capacidade com um tempo de resposta considerado aceitável para o sistema e infra- estrutura em causa.

Obter linhas de base de desempenho no sentido de permitir a comparação com resultados de testes futuros (testes de regressão) e avaliar eventuais impactos negativos ou positivos de alterações efetuadas no sistema, arquitetura ou topologia.

Teste de vulnerabilidadeMétodos para testar a vulnerabilidade do sistema

Prova de conceito• Usado para demonstrar a existência de uma vulnerabilidade.• Fornecido por um fornecedor ou um pesquisador em um fórum aberto.• É uma demonstração do problema através de um bloco pequeno de código que não

explora um sistema em benefício do atacante. • Não é uma descrição que mostra ao usuário como reproduzir o problema.• Usada para identificar a origem do problema e recomendar uma solução.• Usada para notificar a comunidade de segurança, sobre um problema.• O objetivo é ganhar tempo entre o momento em que a vulnerabilidade é anunciada e o

momento em que usuários maliciosos começam a produzir código para tirar proveito dessa vulnerabilidade e lançar ataques.

Código de exploração• Um programa escrito para tirar vantagem de um problema em alguma parte de um

software. • É elaborado para mostrar mais detalhes de como uma vulnerabilidade pode ser explorada. • Pode ser escrito em várias linguagens. • Fornece à comunidade de segurança, um programa para demonstrar uma vulnerabilidade,

produzir algum ganho para o usuário executando o programa. • Também torna possível o ataque a sistemas por usuários maliciosos. • Oferece clareza na exploração da vulnerabilidade e motivação para fornecedores

produzirem um patch. • Lançar uma exploração funcional significa lançar um programa que tire proveito de um

problema.

Page 203: Apam

• Fóruns que divulgam detalhes técnicos sobre uma vulnerabilidade e compartilham explorações funcionais são observados por muitos membros, todos com as suas motivações.

Ferramentas automatizadas• São pacotes de software criados por fornecedores para permitir testes de segurança

(descobertas de vulnerabilidades) de forma automática. • Geram relatórios sobre lista detalhada dos problemas de vulnerabilidades com o sistema. • Permitem usuários legítimos realizarem auditorias para controlarem o andamento da

proteção do sistema.• Usuários maliciosos, com a mesma ferramenta, podem identificar vulnerabilidades em

hosts. • Usuários com pouco conhecimento técnico têm a capacidade de identificar e proteger seus

hosts.

Versioning• Consiste em identificar versões ou revisões de software que um sistema está usando. • Muitos pacotes de software possuem uma versão (Windows 2000 Professional ou Solaris

8).• E muitos pacotes de software incluídos em um software versionalizado, também incluem

uma versão (como uma distribuição LINUX, que é uma coleção de pacotes de software, cada um com sua próprias versões).

• O método consiste na observação de uma lista de pacotes de software com versões anunciadas contendo vulnerabilidades, por um fornecedor.

• Um método de realizar Versioning é executar o comando de versão em um pacote de software:

• Como, por exemplo, o comando uname –a que fornece a revisão de kernel rodando em uma máquina LINUX.

• Outro modo é usar uma ferramenta de gerenciamento de patch, provida por um fornecedor para verificar o software pela última versão.

###Engenharia de software

Teste de Usabilidade

- O Teste de Usabilidade avalia o sistema do ponto de vista do usuário final.- O teste de usabilidade não substitui o design adequado.- Ele é mais eficaz quando combinado com o Design Centrado no Usuário.- O Teste de Usabilidade deve ocorrer logo no início. O teste com o usuário no início significa a criação inicial de protótipos, normalmente esboços e modelos descritos como protótipos de baixa fidelidade. Os protótipos de alta fidelidade serão criados posteriormente;

###Engenharia de software

Validação e Verificação

• Objetivo: assegurar que o software que o software– cumpra as suas especificações e– atenda às necessidades dos usuários e clientes.• Verificação:

Page 204: Apam

– “Estamos construindo certo o produto?”– O software deve está de acordo com a sua especificação.Checar algo contra suas “especificações”.

• Validação:– “Estamos construindo o produto certo?”– O software deve atender às necessidades dos usuários.Testar (homologar) se foi produzido o produto correto, no ambiente-alvo pretendido, atendendo às “reais” expectativas pretendidas, e não só aquelas que estavam especificadas.

• Ocorrem em todo o ciclo de vida completo– Revisões de requisitos, revisões de design, testes de código

Técnicas de V&V• Inspeções de software (V & V estática)– Análise da documentação e código fonte do software;– Pode ser auxiliado por ferramentas de depuração;• Testes de software (V & V dinâmica)– O programa ou um protótipo deve ser executado;– Casos de testes devem ser elaborados: dados de entrada e comportamento esperado.• O processo de V&V ocorre durante todo o ciclo de vida• Precisa ser planejado em conjunto com outras atividades do processo de software

###Engenharia de software

Medição e análise

O propósito do processo Medição é coletar, analisar e relatar os dados relativos aos produtos desenvolvidos e aos processos implementados na organização e em seus projetos, de forma a apoiar os objetivos organizacionais.

Medição e Análise1. Identifica-se a necessidade de informação2. Estabelece-se um método para medição3. Determinam-se medidas básicas e derivadas4. Determinam-se indicadores e critérios de decisão

Exemplo1. Necessidade de informação: “quantos erros são identificados nos testes de aceitação?”2. Método de medição: Coleta semanal através dos dados dos relatórios de testes;3. Medidas básicas: quantidade de erros introduzidos, iteração identificada, origem...4. Indicador: x erros encontrados é considerado severidade alta.

Análise de Decisão e ResoluçãoProcesso que faz parte do nível de maturidade C. O propósito do processo Análise de Decisão e Resolução é analisar possíveis decisões usando um processo formal, com critérios estabelecidos, para avaliação das alternativas identificadas.

Resultados esperados:ADR 1. Guias organizacionais para a análise de decisão são estabelecidos e mantidos;

Page 205: Apam

ADR 2. O problema ou questão a ser objeto de um processo formal de tomada de decisão é definido; ADR 3. Critérios para avaliação das alternativas de solução são estabelecidos e mantidos em ordem de importância, de forma que os critérios mais importantes exerçam mais influência na avaliação; ADR 4. Alternativas de solução aceitáveis para o problema ou questão são identificadas; ADR 5. Os métodos de avaliação das alternativas de solução são selecionados de acordo com sua viabilidade de aplicação; ADR 6. Soluções alternativas são avaliadas usando os critérios e métodos estabelecidos; ADR 7. Decisões são baseadas na avaliação das alternativas utilizando os critérios de avaliação estabelecidos.

###Engenharia de software

Manutenção

1) Identificar e Corrigir Erros ð Manutenção Corretiva2) Atender Pedidos do Usuário para Modificar Funções Existentes, Incluir Novas Funções e Efetuar Melhoramentos Gerais ð Manutenção Evolutiva3) Melhorar a manutenibilidade ou confiabilidade futuras e fornecer uma base melhor para futuros melhoramentos ð Manutenção Preventiva

• Fase mais problemática do Ciclo de Vida de Software;• Pode despender mais de 70% de todo esforço de uma Organização;• Esses sistemas devem continuar rodando e as alterações são inevitáveis .

• Por que é exigida tanta Manutenção e por que é despendido tanto Esforço nessa atividade?

o Idade Média dos sistemas são de 10 a 15 anos;o Quando foram implementados, o tamanho do programa e o espaço de

armazenamento eram o principal interesse;o Migração Para Novas Plataformas;o Sistemas mal estruturados.

• A maioria dos problemas com a manutenção do software é causada por deficiências na maneira como o software foi planejado e desenvolvido

PROBLEMAS CLÁSSICOS • É difícil ou impossível traçar a evolução do software através das várias versões. • As alterações não são adequadamente documentadas• É difícil ou impossível traçar o processo através do qual o software foi criado.• É muito difícil entender programas "de outras pessoas". • "As outras pessoas" freqüentemente não estão presentes para explicar.• A documentação não existe, é incompreensível ou está desatualizada.• A maioria dos processos de construção de softwares não foi projetada para suportar

alterações.• A manutenção não é vista como um trabalho “glamouroso”.

Page 206: Apam

- A Manutenibilidade pode ser definida qualitativamente como a facilidade com que o software pode ser entendido, corrigido, adaptado e ou melhorado.

###Engenharia de software

Análise de pontos de função (APF)

É uma técnica de medição das funcionalidades fornecidas por um software do ponto de vista de seus usuários.

Ponto de função (PF) é a sua unidade de medida, que tem por objetivo tornar a medição independente da tecnologia utilizada para a construção do software.

– A APF mede o que o software faz, e não como ele foi construído. Mede apenas as funcionalidades do software (ou requisitos funcionais) solicitadas e

recebidas pelo usuário– Requisitos funcionais representam as práticas e procedimentos de negócio que o

software deve executar para atender às necessidades do usuário, em termos de tarefas e serviços

– O gestor do negócio é quem define requisitos funcionais Em fases iniciais do projeto os requisitos costumam não estar detalhados, mas ainda assim

é possível estimar o tamanho em PFs

O que a APF não mede

Não mede diretamente esforço, produtividade ou custo. É exclusivamente uma medida de tamanho funcional do software. Este tamanho, junto com outras variáveis, é que pode ser usado para derivar produtividade, esforço e custo do projeto de software.

Requisitos não funcionais são desconsiderados na medição de PFs – Tecnologia: sistema operacional, linguagem de programação, etc – Qualidade: performance, usabilidade, portabilidade, etc – Padrões: interface, segurança, auditoria, etc – Manutenções que não mudam funções não são medidas em PF

Em contratos por PF, o que a APF não mede pode afetar o R$/PF ou ser alvo de uma métrica diferente.

Para que medir?

Derivar indicadores do processo de desenvolvimento e manutenção– Permitem avaliar o impacto da introdução de mudanças no processo de

desenvolvimento de software (novas ferramentas, métodos, etc.) Comparar software e processos (benchmarking) Apoiar gestão do projeto de software (escopo, requisitos) Estimar custo, esforço de projetos de software Unidade de medição de contratos de software Enfim, medir para poder gerenciar!

###Engenharia de software

Integração contínua

Page 207: Apam

É a integração do trabalho da equipe frequentemente ao dia. Sendo que teremos ao final de cada integração a garantia de código consistente.

Segundo Martim Fowler, a integração contínua é:“Integração Contínua é uma pratica de desenvolvimento de software onde os membros de um time integram seu trabalho freqüentemente, geralmente cada pessoa integra pelo menos diariamente – podendo haver múltiplas integrações por dia. Cada integração é verificada por um build automatizado (incluindo testes) para detectar erros de integração o mais rápido possível. Muitos times acham que essa abordagem leva a uma significante redução nos problemas de integração e permite que um time desenvolva software coeso mais rapidamente.”

O processo da integração contínua Executa freqüentemente: Build automático, testes, analise estática de código,

estimativas e métricas. Disponibiliza o último executável; Informa a equipe sobre o estado atual do projeto. Isso significa que a cada build e

bateria de testes, a equipe será informada automaticamente se algum teste quebrar. Assim, a equipe poderá providenciar o conserto o mais rápido possível do problema.

###Engenharia de software

Refatoração

- Refatoração é o processo de mudança do design uma aplicação sem modificar o seu comportamento original.- Uma [pequena] modificação no sistema que não altera o seu comportamento funcional, mas que melhora alguma qualidade não funcional.

Possíveis aspectos de qualidade não-funcional melhorados:– simplicidade– flexibilidade– clareza– desempenho

Objetivos & aplicações- Prevenir o envelhecimento do design e garantir a flexibilidade adequada para permitir a integração tranquila de futuras extensões/alterações [Mens e Tourwé, 2004]- Código legado.- Métodos ágeis incorporam como uma prática – Extreme Programming.

Exemplos de refatoração- Mudança do nome de variáveis;- Mudanças nas interfaces dos objetos;- Pequenas mudanças arquiteturais;- Encapsular código repetido em um novo método;- Generalização de métodos: raizQuadrada(float x) ⇒ raiz(float x, int n).

- Em geral, uma refatoração é tão simples que parece que não vai ajudar muito.- Mas quando se juntam 50 refatorações, bem escolhidas, em seqüência, o código melhora radicalmente.

Page 208: Apam

Passos para refatoração:- Detectar quando uma aplicação precisa ser refatorada.- Identificar quais refatorações devem ser aplicadas e onde.- Realizar (automaticamente) as refatorações.

Problemas- Código duplicado;- Método muito longo;- Classe muito grande;- Intimidade inapropriada.

- Antes de começar a refatoração, verifique se você tem um conjunto sólido de testes para verificar a funcionalidade do código a ser refatorado.- Refatorações podem adicionar erros.- Os testes ajudá-lo-ão a detectar erros se eles forem criados.

###Engenharia de software

Métodos ágeis – Kanban

É um método ágil de desenvolvimento de software baseado nas práticas Lean (evitar desperdício) e tem como objetivo otimizar o processo de desenvolvimento de software.O Kanban tem como foco o trabalho em progresso, apresentando a evolução de forma visual, tornando os problemas evidentes e favorecendo uma cultura de melhoria contínua.

Prós- Entregas a qualquer momento;- Muda a prioridade a qualquer instante;- Visualização do fluxo de trabalho;- Não quer se preocupar com iterações;- Não quer se preocupar com estimativas.

Contra- Entregas baseadas em iterações com tamanhos fixos;- Foco no desenvolvimento do produto;- Visualização da Sprint;- Estórias devem ser estimadas;- Necessidade de ter papéis bem definidos, tais como Product Owner.

###Arquitetura de TI

Servidor de aplicação

Um Servidor de Aplicações (em inglês Applications Server) é um servidor que disponibiliza um ambiente para a instalação e execução de certas aplicações, centralizando e dispensando a instalação nos computadores clientes. Os servidores de aplicação também são conhecidos por middleware.O objetivo do servidor de aplicações é disponibilizar uma plataforma que separe do desenvolvedor de software algumas das complexidades de um sistema computacional. No desenvolvimento de aplicações comerciais, por exemplo, o foco dos desenvolvedores deve ser

Page 209: Apam

a resolução de problemas relacionados ao negócio da empresa, e não de questões de infraestrutura da aplicação. O servidor de aplicações responde a algumas questões comuns a todas as aplicações, como segurança, garantia de disponibilidade, balanceamento de carga e tratamento de exceções.

###Linguagem de programação

Em Java EE, o container contém os componentes construídos como Servlets (container para aplicações Web) ou EJBs (container para componentes de negócio). Um exemplo de container para Web é o Tomcat. Quando uma aplicação web faz uma solicitação para um Servlet, o servidor não entrega a solicitação diretamente ao Servlet, mas para o container que contém o Servlet. O container gerencia o ciclo de vida, dá suporte ao multithread, segurança, e suporte para páginas JSP, no caso dos containers web.

EJB ou Enterprise JavaBeans é um dos principais componentes da plataforma J2EE (Java 2 Enterprise Edition). É um componente do tipo servidor que executa no container do servidor de aplicação. Os principais objectivos da tecnologia EJB são fornecer um rápido e simplificado desenvolvimento de aplicações Java baseado em componentes distribuídos, transacionais, seguros e portáveis.

Três tipos de EJBs

Entity BeansRepresenta um objeto que vai persistir numa base de dados ou outra unidade de armazenamento.

Session BeansExecuta uma tarefa para o cliente. Pode manter o estado durante uma sessão com o cliente (Subtipo "Stateful") ou não (Subtipo "Stateless").

Message Driven BeansProcessa mensagens de modo assíncrono entre os EJB's e cuja API de mensagens é Java Message Service (JMS).

Interfaces de acessoPara acessar os EJB é necessário definir as suas interfaces de acesso que são: Interface Local, Interface Remota ou Ambas. AInterface Local define o acesso ao bean somente no computador onde está sendo executado o servidor de aplicação. A Interface Remota define o acesso ao bean somente a computadores externos. E ambas define acesso ao bean tanto do computador com o servidor de aplicação ou computadores externos.

Entity BeansThey can be used to map an entry in a database table to a class. (Object Relational Mapping) instead of using result Sets from a database query you work with a class. The applicationserver provides the functionality to load, update or delete the values of a class instance to the database.

Session BeansSession beans are used to implement the functionality of your application. There are two kind of session beans: Stateful and Stateless. A stateful session bean is for example a shopping

Page 210: Apam

cart class. The state is the cart holding the shopping items and the quantity. The cart class is old in your application session and disposed at the end when the user checked out.A stateless bean is a short living class. A typical example is a MailSender class sending a message. You call a method and dispose it. With an application server you do not instantiate the class each time you need it. The application server passes an instance from a pool. This is more efficient.

Message Driven BeansMessage beans provide functionality to implement messaging in your business logic. When you want to send a message to one or more recipients to start another business logic, you can usemessage beans. A Shop application could send an order message to the Warehouse management. Once the warehouse management software is started, it receives the orders from the shop application.

RMIRMI (Remote Method Invocation) é uma forma que Java adotou para trabalhar com objetos Java/Java distribuídos. A idéia básica do RMI é obter um conjunto de objetos colaboradores que se comuniquem através de uma rede.

Para entender as aplicações RMI, vamos analisar um problema: supondo a existência de sistema bancário implementado em Java. Neste sistema, cada terminal bancário pode requerer informações dos clientes do banco para um centro de informações. Estas informações, uma vez obtidas, devem retornar ao terminal. Sob o ponto de vista de programação, pode se pensar que o terminal bancário é o cliente e o centro de informações é o servidor.

A implementação deste problema pode ser realizada de várias formas, tais como:* Abrir uma conexão através de sockets para o envio de dados puros;* Utilizar JDBC caso o servidor tenha as informações implementadas em um banco de dados relacional;* Utilizar outras tecnologias como CORBA (Common Object Request Broker Architecture), caso se esteja trabalhando com aplicativos Java/Java e Java/outras linguagens como C++ e SmallTalk;* Ou implementar o pedido e a resposta da informação como objetos. Neste modelo, através de RMI, os objetos podem ser transportados entre o cliente e o servidor.

Com RMI é possível transportar objetos pela rede e também chamar métodos que estejam em outro computador, mantendo o objeto na máquina remota.

Supondo que o código do computador cliente invoca um método de um objeto no servidor. Para um cliente invocar um método RMI, ele cria um objeto stub que encapsula o pedido do cliente em um pacote de bytes composto por:

* Um identificador do objeto remoto a ser usado;* Um número de operação para descrever o método a ser invocado;* Um conjunto de parâmetros codificados (marshalling – processo de codificação dos parâmetros para um formato apropriado para o transporte de rede).

Para o servidor receber a informação que está no stub, ele cria um objeto skeleton. O skeleton executa as seguintes ações:

* Decodifica os parâmetros;

Page 211: Apam

* Chama o método desejado;* Captura o valor de retorno ou exceção e codifica (marshalling);* Retorna o valor codificado para o cliente.

O stub decodifica o valor de retorno do servidor, que pode ser uma exceção, mas que em geral é o retorno da chamada do método remoto.

Deve-se ter um cuidado especial no momento em que não estão mais sendo utilizados os objetos remotos. Isto porque o Garbage Collection não pode detectar ligações de objetos remotos não referenciados. Desta forma as ligações devem ser explicitamente quebradas pelo programador.Sempre que é evocado um método remoto, as classes stub e skeleton serão carregadas com um gerenciador de segurança, que determina o que uma classe pode fazer. Semelhante aos gerenciadores de segurança dos browsers. O gerenciador de segurança é definido pelo programador, no momento da implementação do programa. Java já dispõe de gerenciadores de segurança bastante eficazes, porém, o programador pode criar novos gerenciadores, caso ache necessário.Para realizar uma operação RMI, é preciso criar, tanto do lado do cliente, quanto do lado do servidor, uma interface para o objeto que será referenciado. Isto porque o cliente, embora não tenha o objeto real, que está no servidor, deve saber as ações que pode executar sobre este objeto (o protocolo).

###Linguagem de programação

JavaServer Faces (JSF) é um framework MVC de aplicações Web baseado em Java que se destina a simplificar o desenvolvimento de interfaces de usuário baseadas em web.

Características- Permite que o desenvolvedor crie UIs através de um conjunto de componentes UIs pré-definidos;- Fornece um conjunto de tags JSP para acessar os componentes;- Reutiliza componentes da página;- Associa os eventos do lado cliente com os manipuladores dos eventos do lado do servidor (os componentes de entrada possuem um valor local representando o estado no lado servidor);- Fornece separação de funções que envolvem a construção de aplicações Web.- Utiliza Ajax em alguns de seus componentes tornando alguns processos mais rápidos e eficientes.

O framework JSF permite a inserção, via IDE, de:• Folhas de estilo (CSS);• Comandos em JavaScript;• Metodologia Ajax.

###Linguagem de programação

In computing, Facelets is an open source Web template system under the Apache license and the default view handler technology (aka view declaration language) for JavaServer Faces (JSF). The language requires valid input XML documents to work. Facelets supports all of the JSF UI components and focuses completely on building the JSF component tree, reflecting the view for a JSF application.

Page 212: Apam

Although both JSP and JSF technologies have been improved to work better together, Facelets eliminates the issues noted in Hans Bergsten's article "Improving JSF by Dumping JSP"[1]

Facelets draws on some of the ideas from Apache Tapestry, and is similar enough to draw comparison. The project is conceptually similar to Tapestry's, which converts HTML elements into the corresponding framework components. Facelets also has some similarities to the Tiles framework with respect to support templating as well as composition.

Filtros em Java

A filter is an object that performs filtering tasks on either the request to a resource (a servlet or static content), or on the response from a resource, or both.

Filters perform filtering in the doFilter method. Every Filter has access to a FilterConfig object from which it can obtain its initialization parameters, a reference to the ServletContext which it can use, for example, to load resources needed for filtering tasks.Filters are configured in the deployment descriptor of a web applicationExamples that have been identified for this design are

1) Authentication Filters 2) Logging and Auditing Filters 3) Image conversion Filters 4) Data compression Filters 5) Encryption Filters 6) Tokenizing Filters 7) Filters that trigger resource access events 8) XSL/T filters 9) Mime-type chain Filter

Funções da interface Filter: init(FilterConfig fc), doFilter(ServletRequest, ServletResponse, FilterChain) throws IOException, ServletException e destroy().

###Linguagem de programação

Arquitetura Java Persistence API (JPA)

Persistência de dados, a capacidade de manter os dados entre as execuções de aplicativos, é vital para aplicativos corporativos por causa do acesso necessário aos bancos de dados relacionais. Os aplicativos desenvolvidos para esse ambiente devem gerenciar, sozinhos, a persistência ou utilizar soluções de terceiros para manipular atualizações e recuperações do banco de dados com a persistência. O Java Persistence API (JPA) fornece um mecanismo para gerenciar persistência e mapeamento de objeto relacional e funções para as especificações EJB 3.0 e mais recentes.A especificação JPA define o mapeamento relacional de objetos internamente, em vez de depender das implementações de mapeamento específicas do fornecedor. A JPA está baseada no modelo de programação Java que se aplica aos ambientes Java EE, mas a JPA pode funcionar em um ambiente Java SE para teste das funções do aplicativo.A JPA representa uma simplificação do modelo de programação de persistência. A especificação JPA define explicitamente o mapeamento relacional de objetos, em vez de depender das implementações de mapeamento específicas do fornecedor. A JPA padroniza a importante tarefa de mapeamento relacional de objetos utilizando anotações ou o XML para

Page 213: Apam

mapear objetos para uma ou mais tabelas de um banco de dados. Para simplificar ainda mais o modelo de programação de persistência: A API EntityManager pode persistir, atualizar, recuperar ou remover objetos de um banco

de dados A API EntityManager e os metadados do mapeamento relacional de objetos manipulam a

maioria das operações do banco de dados sem exigir a gravação de código JDBC ou SQL para manter a persistência

A JPA fornece uma linguagem de consulta, estendendo a linguagem de consulta EJB independente (também conhecida como JPQL), que pode ser utilizada para recuperar objetos sem a gravação de consultas SQL específicas do banco de dados com o qual se está trabalhando.

A JPA foi projetada para operar dentro e fora de um contêiner Java Enterprise Edition (Java EE). Ao executar a JPA em um contêiner, os aplicativos podem utilizar o contêiner para gerenciar o contexto de persistência. Se não houver contêiner para gerenciar a JPA, o aplicativo deverá manipular o gerenciamento do contexto de persistência sozinho. Os aplicativos projetados para persistência gerenciada por contêiner não exigem muita implementação de código para tratar a persistência, mas esses aplicativos não podem ser utilizados fora de um contêiner. Os aplicativos que gerenciam sua própria persistência podem funcionar em um ambiente de contêiner ou em um ambiente Java SE.

Java messaging system (JMS)

Enterprise messaging systemsThe Java Message Service was developed by Sun Microsystems to provide a means for Java programs to access enterprise messaging systems. Before we discuss JMS, let's take a look at enterprise messaging systems.Enterprise messaging systems, often known as message oriented middleware (MOM), provide a mechanism for integrating applications in a loosely coupled, flexible manner. They provide asynchronous delivery of data between applications on a store and forward basis; that is, the applications do not communicate directly with each other, but instead communicate with the MOM, which acts as an intermediary.The MOM provides assured delivery of messages (or at least makes its best effort) and relieves application programmers from knowing the details of remote procedure calls (RPC) and networking/communications protocols.Messaging flexibilityAs shown in the figure below, Application A communicates with Application B by sending a message through the MOM's application programming interface (API).The MOM routes the message to Application B, which can exist on a completely different computer; the MOM handles the network communications. If the network connection is not available, the MOM will store the message until the connection becomes available, and then forward it to Application B.Another aspect of flexibility is that Application B might not even be executing when Application A sends its message. The MOM will hold the message until Application B begins execution and attempts to retrieve its messages. This also prevents Application A from blocking while it waits for Application B to receive the message.This asynchronous communication requires applications to be designed somewhat differently from the way most are designed today, but it can be an extremely useful method for time-independent or parallel processing.

Loose coupling

Page 214: Apam

The real power of enterprise messaging systems lies in the loose coupling of the applications. In the diagram on the previous section, Application A sends its messages indicating a particular destination, for example "order processing." Today, Application B provides order-processing capabilities.But, in the future, we can replace Application B with a different order-processing program, and Application A will be none the wiser. It will continue to send its messages to "order processing" and the messages will continue to be processed.Likewise, we could replace Application A, and as long as the replacement continued to send messages for "order processing," the order-processing program would not need to know there is a new application sending orders.

Publish and subscribeOriginally, enterprise messaging systems were developed to implement a point-to-point model (PTP) in which each message produced by an application is received by one other application. In recent years, a new model has emerged, called publish and subscribe (or pub/sub).Pub/sub replaces the single destination in the PTP model with a content hierarchy, known as topics. Sending applications publish their messages, indicating that the message represents information about a topic in the hierarchy.Applications wishing to receive those messages subscribe to that topic. Subscribing to a topic in the hierarchy that contains subtopics allows the subscriber to receive all messages published to the topic and its subtopics.This figure illustrates the publish and subscribe model.Multiple applications can both subscribe and publish messages to a topic, and the applications remain anonymous to one another. The MOM acts as a broker, routing the published messages for a topic to all subscribers for that topic.

What is JMS?JMS is a set of interfaces and associated semantics that define how a JMS client accesses the facilities of an enterprise messaging product.Prior to JMS, each MOM vendor provided application access to its product through a proprietary API, often available in multiple languages, including the Java language. JMS provides a standard, portable way for Java programs to send and receive messages through a MOM product. Programs written with JMS can run on any MOM that implements the JMS standard.The key to JMS portability is the fact that the JMS API is provided by Sun as a set of interfaces. Products that provide JMS functionality do so by supplying a provider that implements these interfaces.As a developer, you build a JMS application by defining a set of messages and a set of client applications that exchange those messages.

JMS objectivesTo better understand JMS, it helps to know the objectives set by the authors of the JMS specification.There are many enterprise messaging products on the market today, and several of the companies that produce these products were involved in the development of JMS.These existing systems vary in capability and functionality. The authors knew that JMS would be too complicated and unwieldy if it incorporated all of the features of all existing systems. Likewise, they believed that they could not limit themselves to only the features that all of the systems had in common.The authors believed that it was important that JMS include all of the functionality required to implement "sophisticated enterprise applications."

Page 215: Apam

The objectives of JMS, as stated in the specification, are to: Define a common set of messaging concepts and facilities. Minimize the concepts a programmer must learn to use enterprise messaging. Maximize the portability of messaging applications. Minimize the work needed to implement a provider. Provide client interfaces for both point-to-point and pub/sub domains. "Domains" is

the JMS term for the messaging models discussed earlier. (Note: A provider need not implement both domains.)

###Linguagem de programação

Portlets are pluggable user interface software components that are managed and displayed in a web portal. Portlets produce fragments of markup code that are aggregated into a portal. Typically, following the desktop metaphor, a portal page is displayed as a collection of non-overlapping portlet windows, where each portlet window displays a portlet. Hence a portlet (or collection of portlets) resembles a web-based application that is hosted in a portal. Some examples of portlet applications are email, weather reports, discussion forums, and news.Portlet standards are intended to enable software developers to create portlets that can be plugged into any portal supporting the standards.

The Java Portlet Specification defines a contract between the portlet container and portlets and provides a convenient programming model for Java portlet developers.

JSR 168The Java Portlet Specification V1.0 was developed under the Java Community Process as Java Specification Request JSR 168.The Java Portlet Specification V1.0 introduces the basic portlet programming model with: Two phases of action processing and rendering in order to support the Model-View-

Controller pattern. Portlet modes, enabling the portal to advise the portlet what task it should perform and

what content it should generate Window states, indicating the amount of portal page space that will be assigned to the

content generated by the portlet Portlet data model, allowing the portlet to store view information in the render

parameters, session related information in the portlet session and per user persistent data in the portlet preferences

A packaging format in order to group different portlets and other Java EE artifacts needed by these portlets into one portlet application which can be deployed on the portal server.

Portal development is a way to integrate the different web-based applications for supporting deliveries of information and services.

JSR 286JSR-286 is the Java Portlet specification v2.0 as developed under the JCP and created in alignment with the updated version 2.0 of WSRP. It was developed to improve on the short-comings on version 1.0 of the specification, JSR-168. Some of its major features include: Inter-Portlet Communication through events and public render parameters Serving dynamically generated resources directly through portlets Serving AJAX or JSON data directly through portlets Introduction of portlet filters and listeners

###

Page 216: Apam

Arquitetura de TI

O controle de acesso – mecanismo responsável pela liberação ou não de recursos, operações ou informações a um usuário autenticado – é parte integrante da grande maioria dos sistemas computacionais. Ele é responsável por cruzar as informações do usuário, da operação desejada (por exemplo, “incluir”, “visualizar”, “alterar” ou “excluir”) e do recurso computacional em questão e decidir se o acesso é permitido ou não. Com origem nos sistemas militares, os estudos sobre modelos, métodos e técnicas de implementação de controle de acesso vêm, desde os anos 70, se aprimorando e estendendo-se aos sistemas civis e comerciais. Muitos modelos – dentre os quais destacam-se o DAC (do inglês Discretionary AccessControl), o MAC (do inglês Mandatory Access Control) e o RBAC (do inglês Role-Based Access Control) – foram formulados e estão hoje implementados em diversos dos sistemas que conhecemos e utilizamos. O modelo RBAC tem seu funcionamento baseado na definição de “papéis” (ou perfis), que representam níveis funcionais hierárquicos dentro de uma organização, e “recursos” que são objetos ou componentes do sistema. Cada usuário deverá estar associado a um ou mais papéis (relações Usuário-Papel) e estes, por sua vez, estarão relacionados às “autorizações” (relações Permissão-Papel), que definem o tipo de acesso (leitura, execução, criação, modificação, exclusão etc.) permitido a cada recurso cadastrado. Em situações reais, na maioria das vezes, as políticas de controle de acesso são mais complexas do que simplesmente definir papéis e a eles associar permissões. Há casos em que há restrições de domínio como, por exemplo, em uma agência bancária: há vários gerentes, todos no mesmo nível hierárquico; no entanto, cada um deles é responsável por um conjunto de clientes e não deve ter acesso aos dados das contas-correntes de outros clientes (aqueles que não estão em seu rol de administração). Outro exemplo pode ser observado na situação hipotética de uma empresa de auditoria externa em que os Auditores, buscando evitar vícios e conivência no processo de análise, são anualmente revezados entre as diversas empresas-cliente. Assim, determinado Auditor somente possuirá acesso aos dados de uma determinada empresa referentes ao período em que a esta estava sob sua análise. O objetivo deste trabalho de pesquisa é estudar, modelar, implementar um protótipo e validar um mecanismo de controle de acesso que implemente restrições de domínio da forma como foram apresentadas nos parágrafos anteriores. Espera-se chegar a um modelo que possa ser implementado em plataformas distintas e que, principalmente, seja transparente à aplicação principal, possibilitando todas as restrições de acesso sejam implementadas sem a necessidade de promover alterações significativas no código originalmente escrito.

###Arquitetura de TI

AuditoriaO processo de auditar um sistema é um dos mais importantes mecanismos de segurança que se pode fazer uso na hora de examinar, verificar e corrigir o funcionamento geral de um sistema. Conceitualmente o processo de auditar um sistema verifica se o mesmo está executando suas funções corretamente.

Page 217: Apam

Existem duas etapas básicas de Auditoria, que na verdade, são apenas variações do mesmo conceito.A primeira forma trata do registro de mudanças no estado do sistema, ou seja, eventos e/ou mudanças de estados são registrados. A segunda forma seria um processo sistemático que examina e verifica o sistema, trata-se de uma consulta ao ambiente para avaliação do funcionamento do mesmo, ou seja, verifica-se se o sistema está funcionando de forma correta.Para um processo de auditoria ser eficiente, ambas as formas mencionadas precisam estar construídas e sintonizadas, é impossível executar uma avaliação sistemática de um sistema ou de um evento se esses não foram registrados, e mais, se os estados do sistema não forem gravados, não há a menor necessidade de se guardar, também, as mudanças no sistema, assim vamos consideramos que uma auditoria será satisfatória se esta:

Registrar os estados do sistema. Verificar, sistematicamente, os estados armazenados. Permitir que os registros sejam checados.

###Padrões arquiteturais: http://martinfowler.com/eaaCatalog/

###Engenharia de software

CMMIO CMMI apresenta dois caminhos para melhoria. Um caminho permite que as organizações melhorem de forma incremental os processos correspondentes a uma ou mais áreas de processo individualmente selecionadas pela organização. O outro caminho permite que as organizações melhorem um conjunto de processos inter-relacionados e, de forma incremental, tratem sucessivos conjuntos de áreas de processo.

- Representação ContínuaA representação contínua oferece máxima flexibilidade na utilização de um modelo CMMI para melhoria de processo. Uma organização pode focar na melhoria do desempenho de um ponto problemático associado a um processo isolado, ou pode trabalhar em várias áreas que estejam fortemente ligadas aos objetivos estratégicos da organização. A representação contínua também permite que uma organização melhore diferentes processos com diferentes ênfases ao longo do tempo. Existem algumas limitações nas escolhas de uma organização devido a dependências entre algumas áreas de processo. Se os processos da organização que precisam ser melhorados são conhecidos e se as dependências entre as áreas de processo descritas no CMMI são bem compreendidas, a representação contínua é uma boa escolha para essa organização.

- Representação por EstágiosA representação por estágios oferece uma forma sistemática e estruturada para abordar a melhoria de processo, baseada em modelo, enfocando um estágio por vez. A conquista de cada estágio assegura que foi estabelecida uma infraestrutura adequada de processos que servirá de base para o próximo estágio. As áreas de processo são organizadas em níveis de maturidade, o que reduz a necessidade de escolhas associadas à melhoria de processo. A representação por estágios prescreve uma ordem de implementação das áreas de processo de acordo com níveis de maturidade, definindo um caminho de melhoria para a organização, do nível “inicial” ao nível “em otimização”. A conquista de cada nível de maturidade assegura que foi estabelecida uma base de melhoria adequada para o próximo nível de maturidade, permitindo uma melhoria incremental e duradoura. Se não se sabe por onde começar e quais processos escolher para serem melhorados, a representação por estágios é uma boa opção. Ela fornece

Page 218: Apam

um conjunto específico de processos para melhorar em cada estágio, determinado por mais de uma década de experiência e pesquisas em melhoria de processo.

Esses dois caminhos de melhoria associam-se aos dois tipos de níveis correspondentes às duas representações apresentadas anteriormente. Para a representação contínua, emprega-se a expressão “nível de capacidade” e para a representação por estágios, emprega-se a expressão “nível de maturidade”.

Independentemente da representação escolhida, o conceito de níveis é o mesmo. Os níveis caracterizam melhorias a partir de um estado em que processos estão mal definidos em direção a um estado que utilize informações quantitativas a fim de determinar e gerenciar melhorias necessárias para satisfazer aos objetivos estratégicos da organização.

Nível de Capacidade 0: IncompletoUm “processo incompleto” é um processo que não é executado ou é executado parcialmente. Uma ou mais metas específicas da área de processo não são satisfeitas e não existem metas genéricas para este nível, já que não há razão para institucionalizar um processo executado parcialmente.

Nível de Capacidade 1: ExecutadoUm processo de nível de capacidade 1 é caracterizado como um “processo executado”. É um processo que satisfaz às metas específicas da área de processo, apoiando e viabilizando o trabalho necessário para produzir os produtos de trabalho.Embora o nível de capacidade 1 resulte em melhorias importantes, elas podem ser perdidas ao longo do tempo se não forem institucionalizadas. A institucionalização, por meio da implementação das práticas genéricas do CMMI nos níveis de capacidade de 2 a 5, contribui para que as melhorias sejam mantidas.

Nível de Capacidade 2: GerenciadoUm processo de nível de capacidade 2 é caracterizado como um “processo gerenciado”. É um processo executado (nível de capacidade 1) que dispõe de infraestrutura adequada para apoiar o processo; é planejado e executado de acordo com uma política; emprega pessoas experientes que possuem recursos adequados para produzir saídas controladas; envolve partes interessadas relevantes; é monitorado, controlado e revisado; e sua aderência em relação à descrição de processo é avaliada. A disciplina de processo refletida pelo nível de capacidade 2 contribui para assegurar que as práticas existentes sejam mantidas durante períodos de stress.

Nível de Capacidade 3: DefinidoUm processo de nível de capacidade 3 é caracterizado como um “processo definido”. É um processo gerenciado (nível de capacidade 2), adaptado a partir do conjunto de processos-padrão da organização de acordo com as diretrizes para adaptação da organização, e contribui com produtos de trabalho, medidas e outras informações de melhoria de processo para os ativos de processo da organização. Uma distinção importante entre os níveis de capacidade 2 e 3 é o escopo de padrões, descrições de processo e procedimentos. No nível de capacidade 2, os padrões, as descrições de processo e os procedimentos podem ser diferentes em cada instância específica do processo (por exemplo, em um projeto específico). No nível de capacidade 3, os padrões, as descrições de processo e os procedimentos para um projeto são adaptados a partir do conjunto de processos-padrão da organização para se ajustar às necessidades de um projeto específico ou uma unidade organizacional. Desse modo, a adaptação conduz a uma maior homogeneidade, exceto por diferenças permitidas pelas diretrizes para adaptação.

Page 219: Apam

Outra distinção importante é que, no nível de capacidade 3, os processos são geralmente descritos de forma mais rigorosa que no nível de capacidade 2. Um processo definido estabelece claramente o objetivo, as entradas, os critérios de entrada, as atividades, os papéis, as medidas, etapas de verificação, saídas e os critérios de saída. No nível de capacidade 3, os processos são gerenciados mais proativamente, baseando-se na compreensão de como as atividades de processo relacionam-se e nas medidas detalhadas do processo, seus produtos de trabalho e serviços.

Nível de Capacidade 4: Gerenciado QuantitativamenteUm processo de nível de capacidade 4 é caracterizado como um “processo gerenciado quantitativamente”. É um processo definido (nível de capacidade 3), controlado por meio de técnicas estatísticas e outras técnicas quantitativas. Objetivos quantitativos para qualidade e para desempenho de processo são estabelecidos e utilizados como critérios na gestão de processo. A qualidade e o desempenho de processo são entendidos em termos estatísticos e gerenciados ao longo da vida do processo.

Nível de Capacidade 5: Em OtimizaçãoUm processo de nível de capacidade 5 é caracterizado como um “processo em otimização”. É um processo gerenciado quantitativamente (nível de capacidade 4) e melhorado com base no entendimento das causas comuns de variação inerentes ao processo. O foco de um processo em otimização é a melhoria contínua do desempenho de processo tanto por meio de melhorias incrementais quanto de inovação. Vale lembrar que os níveis de capacidade de 2 a 5 utilizam os mesmos termos em relação às metas genéricas de 2 a 5.

----

Nível de Maturidade 1: InicialNo nível de maturidade 1, geralmente os processos são ad hoc e caóticos. Esse tipo de organização não fornece um ambiente estável para apoiar os processos. O sucesso depende da competência e do heroísmo das pessoas e não do uso dos processos comprovados. Apesar deste caos, organizações no nível de maturidade 1 frequentemente produzem produtos e serviços que funcionam. Entretanto, com frequência, eles extrapolam seus orçamentos e não cumprem seus prazos. As organizações no nível de maturidade 1 são caracterizadas pela tendência de se comprometer além da sua capacidade, por abandonar o processo em um momento de crise, e por serem incapazes de repetir os próprios sucessos.

Nível de Maturidade 2: GerenciadoNo nível de maturidade 2, os projetos da organização têm a garantia de que os processos são planejados e executados de acordo com uma política; os projetos empregam pessoas experientes que possuem recursos adequados para produzir saídas controladas; envolvem partes interessadas relevantes; são monitorados, controlados e revisados; e são avaliados para verificar sua aderência em relação à descrição de processo. A disciplina de processo refletida pelo nível de maturidade 2 contribui para que as práticas existentes sejam mantidas durante períodos de stress. Quando essas práticas estão em vigor, os projetos são executados e gerenciados de acordo com seus planos documentados. No nível de maturidade 2, o status dos produtos de trabalho e a entrega dos serviços estão visíveis para a gestão em pontos definidos (por exemplo, nos principais marcos e no término das principais tarefas). Os compromissos com as partes interessadas relevantes são estabelecidos e revisados conforme necessário. Os produtos de trabalho são controlados adequadamente. Os produtos de trabalho e serviços satisfazem às descrições de processo, aos padrões e procedimentos especificados.

Nível de Maturidade 3: Definido

Page 220: Apam

No nível de maturidade 3, os processos são bem caracterizados e entendidos, e são descritos em padrões, procedimentos, ferramentas e métodos. O conjunto de processos-padrão da organização, que é a base para o nível de maturidade 3, é estabelecido e melhorado ao longo do tempo. Estes processos-padrão são utilizados para estabelecer uniformidade no contexto da organização. Os projetos estabelecem seus processos definidos ao adaptar o conjunto de processos-padrão da organização de acordo com as diretrizes para adaptação.Uma distinção importante entre os níveis de maturidade 2 e 3 é o escopo de padrões, descrições de processo e procedimentos. No nível de maturidade 2, os padrões, as descrições de processo e os procedimentos podem ser diferentes em cada instância específica do processo (por exemplo, em um projeto específico). No nível de maturidade 3, os padrões, as descrições de processo e os procedimentos para um projeto são adaptados a partir do conjunto de processos-padrão da organização para se ajustar a um projeto específico ou uma unidade organizacional e, portanto, mais homogêneos, exceto por diferenças permitidas pelas diretrizes para adaptação. Outra distinção importante é que no nível de maturidade 3, os processos são geralmente descritos de forma mais rigorosa que no nível de maturidade 2. Um processo definido estabelece claramente o objetivo, as entradas, os critérios de entrada, as atividades, os papéis, as medidas, etapas de verificação, saídas e os critérios de saída. No nível de maturidade 3, os processos são gerenciados mais proativamente, com base na compreensão de como as atividades de processo relacionam-se e nas medidas detalhadas do processo, seus produtos de trabalho e serviços.No nível de maturidade 3, a organização deve amadurecer mais as áreas de processo do nível de maturidade 2. As práticas genéricas associadas à meta genérica 3 que não foram tratadas no nível de maturidade 2 são aplicadas para alcançar o nível de maturidade 3.

Nível de Maturidade 4: Gerenciado QuantitativamenteNo nível de maturidade 4, a organização e os projetos estabelecem objetivos quantitativos para qualidade e para desempenho de processo, utilizando-os como critérios na gestão de processos. Objetivos quantitativos baseiam-se nas necessidades dos clientes, dos usuários finais, da organização e dos responsáveis pela implementação de processos. A qualidade e o desempenho de processo são entendidos em termos estatísticos e gerenciados ao longo da vida dos processos [SEI2001].Para subprocessos selecionados, medidas detalhadas de desempenho de processo são coletadas e analisadas estatisticamente. As medidas da qualidade e do desempenho de processo são incorporadas no repositório de medições da organização para apoiar a tomada de decisão baseada em fatos [McGarry 2000]. Identificam-se as causas especiais de variação de processo e, onde apropriado, as fontes dessas causas são corrigidas para prevenir sua recorrência.Uma distinção importante entre os níveis de maturidade 3 e 4 está relacionada à previsibilidade do desempenho de processo. No nível de maturidade 4, o desempenho dos processos é controlado por meio de técnicas estatísticas e outras técnicas quantitativas, e é previsível quantitativamente. No nível de maturidade 3, os processos geralmente são previsíveis apenas qualitativamente.

Nível de Maturidade 5: Em OtimizaçãoNo nível de maturidade 5, uma organização melhora continuamente seus processos com base no entendimento quantitativo das causas comuns de variação inerentes ao processo. O nível de maturidade 5 tem foco na melhoria contínua do desempenho de processo por meio de melhorias incrementais e inovadoras de processo e de tecnologia. Os objetivos quantitativos de melhoria de processo para a organização são estabelecidos, continuamente revisados para refletir as mudanças nos objetivos estratégicos e são utilizados como critérios na gestão de melhoria de processo. Os efeitos das melhorias de processo implantadas são medidos e avaliados em relação aos objetivos quantitativos de melhoria de processo. Tanto os processos

Page 221: Apam

definidos quanto o conjunto de processos-padrão da organização são alvo de atividades de melhoria mensuráveis. Uma distinção importante entre os níveis de maturidade 4 e 5 é o tipo de variação de processo. No nível de maturidade 4, a organização preocupa-se em tratar causas especiais de variação de processo e conseguir previsibilidade estatística dos resultados. Embora os processos possam produzir resultados previsíveis, os resultados podem ser insuficientes para satisfazer aos objetivos estabelecidos. No nível de maturidade 5, a organização preocupa-se em tratar as causas comuns de variação de processo e promover mudanças no processo (deslocando a média de desempenho de processo ou reduzindo a variação de processo observada) a fim de melhorar o desempenho de processo e satisfazer aos objetivos quantitativos de melhoria de processo estabelecidos.

###Engenharia de software

MPS.BR

Uma das metas do MPS.BR é definir e aprimorar um modelo de melhoria e avaliação de processo de software, visando preferencialmente as micro, pequenas e médias empresas, de forma a atender as suas necessidades de negócio e ser reconhecido nacional e internacionalmente como um modelo aplicável à indústria de software. O MPS.BR estabelece um modelo de processos de software e um processo e um método de avaliação de processos que dá sustentação e garante que o MPS.BR está sendo empregado de forma coerente com as suas definições. O MPS.BR estabelece também um modelo de negócio para apoiar a sua adoção pelas empresas brasileiras desenvolvedoras de software.

A capacidade do processo no MPS possui nove (9) atributos de processos (AP) que são: AP 1.1, AP 2.1, AP 2.2, AP 3.1, AP 3.2, AP 4.1,AP 4.2, AP 5.1 e AP 5.2.

AP 1.1 O processo é executado Este atributo é uma medida do quanto o processo atinge o seu propósito. Resultado esperado: RAP 1. O processo atinge seus resultados definidos.

AP 2.1 O processo é gerenciado Este atributo é uma medida do quanto a execução do processo é gerenciada.Resultados esperados: RAP 2. Existe uma política organizacional estabelecida e mantida para o processo; RAP 3. A execução do processo é planejada; RAP 4 (Para o Nível G). A execução do processo é monitorada e ajustes são realizados para atender aos planos; RAP 4 (A partir do Nível F). Medidas são planejadas e coletadas para monitoração da execução do processo; RAP 5. Os recursos necessários para a execução do processo são identificados e disponibilizados; RAP 6. As pessoas que executam o processo são competentes em termos de formação, treinamento e experiência; RAP 7. A comunicação entre as partes interessadas no processo é gerenciada de forma a garantir o seu envolvimento no projeto; RAP 8. Métodos adequados para monitorar a eficácia e adequação do processo são determinados. RAP 9 (A partir do Nível F). A aderência dos processos executados às descrições de processo, padrões e procedimentos é avaliada objetivamente e são tratadas as não-conformidades.

Page 222: Apam

AP 2.2 Os produtos de trabalho do processo são gerenciadosEste atributo é uma medida do quanto os produtos de trabalho produzidos pelo processo são gerenciados apropriadamente. Resultado esperado: RAP 10. Requisitos para documentação e controle dos produtos de trabalho são estabelecidos; RAP 11. Os produtos de trabalho são documentados e colocados em níveis apropriados de controle; RAP 12. Os produtos de trabalho são avaliados objetivamente com relação aos padrões, procedimentos e requisitos aplicáveis e são tratadas as não-conformidades.

AP 3.1. O processo é definido Este atributo é uma medida do quanto um processo padrão é mantido para apoiar a implementação do processo definido. Resultados esperados: RAP 13. Um processo padrão é definido, incluindo diretrizes para sua adaptação para o processo definido; RAP 14. A seqüência e interação do processo padrão com outros processos são determinadas.

AP 3.2 O processo está implementado Este atributo é uma medida do quanto o processo padrão é efetivamente implementado como um processo definido para atingir seus resultados.Resultado esperado: RAP 15. Dados apropriados são coletados e analisados, constituindo uma base para o entendimento do comportamento do processo, para demonstrar a adequação e a eficácia do processo, e avaliar onde pode ser feita a melhoria contínua do processo.

AP 4.1 O processo é medido Este atributo é uma medida do quanto os resultados de medição são usados para assegurar que o desempenho do processo apóia o alcance dos objetivos de desempenho relevantes como apoio aos objetivos de negócio definidos. Resultados esperados: RAP 16. As necessidades de informação requeridas para apoiar objetivos de negócio relevantes da organização e dos projetos são identificadas; RAP 17. A partir do conjunto de processos padrão da organização e das necessidades de informação são selecionados os processos e/ou elementos do processo que serão objeto de análise de desempenho;RAP 18. Objetivos de medição do processo e/ou sub-processo são derivados das necessidades de informação; RAP 19. Objetivos quantitativos de qualidade e de desempenho dos processos e/ou sub-processos são derivados das necessidades de informação; RAP 20. Medidas e a freqüência de realização das medições são identificadas e definidas de acordo com os objetivos de medição do processo/sub-processo e os objetivos quantitativos de qualidade e de desempenho do processo; RAP 21. Resultados das medições são coletados, analisados e reportados para monitorar o atendimento dos objetivos quantitativos de qualidade e de desempenho do processo/sub-processo; RAP 22. Resultados de medição são utilizados para caracterizar o desempenho do processo/sub-processo.

AP 4.2 O processo é controlado

Page 223: Apam

Este atributo é uma medida do quanto o processo é controlado estatisticamente para produzir um processo estável, capaz e previsível dentro de limites estabelecidos. Resultados esperados: RAP 23. Técnicas de análise e de controle de desempenho são identificadas e aplicadas quando necessário; RAP 24. Limites de controle de variação são estabelecidos para o desempenho normal do processo; RAP 25. Dados de medição são analisados com relação às causas especiais de variação;RAP 26. Ações corretivas são realizadas para tratar causas especiais de variação;RAP 27. Limites de controle são redefinidos, quando necessário, seguindo as ações corretivas.RAP 28. Modelos de desempenho do processo são estabelecidos e mantidos.

AP 5.1 O processo é objeto de inovações Este atributo é uma medida do quanto as mudanças no processo são identificadas a partir da análise de causas comuns de variação do desempenho e da investigação de enfoques inovadores para a definição e implementação do processo. Resultados esperados: RAP 29. Objetivos de melhoria do processo são definidos de forma a apoiar os objetivos de negócio relevantes; RAP 30. Dados adequados são analisados para identificar causas comuns de variação no desempenho do processo; RAP 31. Dados adequados são analisados para identificar oportunidades para aplicar melhores práticas e inovações;RAP 32. Oportunidades de melhoria derivadas de novas tecnologias e conceitos de processo são identificados; RAP 33. Uma estratégia de implementação é estabelecida para alcançar os objetivos de melhoria do processo.

AP 5.2 O processo é otimizado continuamente Este atributo é uma medida do quanto as mudanças na definição, gerência e desempenho do processo têm impacto efetivo para o alcance dos objetivos relevantes de melhoria do processo. Resultados esperados: RAP 34. O impacto de todas as mudanças propostas é avaliado com relação aos objetivos do processo definido e do processo padrão; RAP 35. A implementação de todas as mudanças acordadas é gerenciada para assegurar que qualquer alteração no desempenho do processo seja entendida e sejam tomadas as ações pertinentes; RAP 36. A efetividade das mudanças, levando em conta o seu desempenho resultante, é avaliada com relação aos requisitos do produto e objetivos do processo, para determinar se os resultados são devidos a causas comuns ou a causas especiais.

Nível GGerência de Requisitos – GREGerência de Projetos – GPRAP 1.1 e AP 2.1

Nível FMedição – MED Garantia da Qualidade – GQA Gerência de Configuração – GCO Aquisição – AQUAP 2.2

Page 224: Apam

Nível EGerência de Projetos – GPR (evolução) Gerência de Reutilização – GRU Gerência de Recursos Humanos – GRH Definição do Processo Organizacional – DFP Avaliação e Melhoria do Processo Organizacional – AMPAP 3.1 e AP 3.2

Nível DVerificação – VER Validação – VAL Projeto e Construção do Produto – PCP Integração do Produto – ITP Desenvolvimento de Requisitos – DRE-

Nível CGerência de Riscos – GRI Desenvolvimento para Reutilização – DRU Análise de Decisão e Resolução – ADR Gerência de Reutilização – GRU (evolução)-

Nível BGerência de Projetos – GPR (evolução)AP 4.1 e AP 4.2

Nível AAnálise de Causas de Problemas e Resolução – ACPAP 5.1 e AP 5.2

Gerência de Projetos – GPRO propósito do processo Gerência de Projetos é estabelecer e manter planos que definem as atividades, recursos e responsabilidades do projeto, bem como prover informações sobre o andamento do projeto que permitam a realização de correções quando houver desvios significativos no desempenho do projeto. O propósito deste processo evolui à medida que a organização cresce em maturidade. Assim, a partir do nível E, alguns resultados evoluem e outros são incorporados, de forma que a gerência de projetos passe a ser realizada com base no processo definido para o projeto e nos planos integrados.

Gerência de Configuração – GCO O propósito do processo Gerência de Configuração é estabelecer e manter a integridade de todos os produtos de trabalho de um processo ou projeto e disponibilizá-los a todos os envolvidos.

Avaliação e Melhoria do Processo Organizacional – AMP O propósito do processo Avaliação e Melhoria do Processo Organizacional é determinar o quanto os processos padrão da organização contribuem para alcançar os objetivos de negócio da organização e para apoiar a organização a planejar, realizar e implantar melhorias contínuas nos processos com base no entendimento de seus pontos fortes e fracos.

Page 225: Apam

Definição do Processo Organizacional – DFP O propósito do processo Definição do Processo Organizacional é estabelecer e manter um conjunto de ativos de processo organizacional e padrões do ambiente de trabalho usáveis e aplicáveis às necessidades de negócio da organização.

Gerência de Reutilização – GRUO propósito do processo Gerência de Reutilização é gerenciar o ciclo de vida dos ativos reutilizáveis.

Desenvolvimento para Reutilização – DRU O propósito do processo Desenvolvimento para Reutilização é identificar oportunidades de reutilização sistemática na organização e, se possível, estabelecer um programa de reutilização para desenvolver ativos a partir de engenharia de domínios de aplicação.

Níveis de maturidade:A (Em Otimização), B (Gerenciado Quantitativamente), C (Definido), D (Largamente Definido), E (Parcialmente Definido), F (Gerenciado), G (Parcialmente Gerenciado).

###Banco de dados

Arquitetura de banco de dados (Padrão ANSI)

Abordagens

Baseada em componentes- Os componentes do sistema são definidos junto com as relações entre os componentes. - Bom para projeto e implementação de sistemas.

Baseada em funções- Classes de usuários são identificadas junto com a funcionalidade que o sistema fornecerá a cada classe.- Os objetivos são identificados. Mas como alcançar?

Baseada em dados- Identifica as diferentes formas de descrever dados e especifica as unidades funcionais que irão definir e usar os dados de acordo com as formas.

1) Propósito da ArquiteturaO American National Standards Institute (ANSI) através do Standards Planning and Requirements Committee (SPARC) estabeleceu um padrão para o desenvolvimento de tecnologias de Banco de Dados (BD), definindo uma arquitetura de 3 níveis independentes:

Interno Conceitual Externo

Page 226: Apam

Essa arquitetura deveria atender a uma série de requisitos básicos: All users should be able to access same data. A user’s view is immune to changes made in other views. Users should not need to know physical database storage details. DBA should be able to change database storage structures without affecting the users’

views. Internal structure of database should be unaffected by changes to physical aspects of

storage. DBA should be able to change conceptual structure of database without affecting all

users.

2) Níveis da Arquitetura External Level

o Refere-se à independência programa/dadoso Como cada utilizador não necessita de trabalhar com a totalidade do esquema

conceptual, o SGBD permite definir para cada um, uma view, que determina a janela de dados com que necessita de trabalhar

o Este conceito aplica-se também às aplicações

Page 227: Apam

o Users’ view of the databaseo Describes that part of database that is relevant to a particular user.

Conceptual Levelo É também designado por esquema conceitualo Refere-se ao modelo conceitual dos dados, independente dos utilizadores e

das aplicaçõeso Constitui a estrutura do Banco de Dadoso É o nível que permite esconder os detalhes do armazenamento físico dos

dados, do nível de aplicaçãoo Community view of the database.o Describes what data is stored in database and relationships among the data.

Internal Levelo Refere-se ao armazenamento físico dos dados, organização de ficheiros,

métodos de acesso e organização das estruturas físicaso Deve ser organizado para permitir um melhor desempenho nas operações que

previsivelmente se realizem com maior frequênciao Physical representation of the database on the computero Describes how the data is stored in the database

###Banco de dados

Commit em duas fases

Commit em duas fases refere-se a uma transação que pode utilizar dois ou mais bancos de dados (multi-database), que podem estar localizados em servidores diferentes. Durante uma transação em bancos com essa característica garante-se que o Commit seja realizado em todos os bancos participantes ou em nenhum, ou seja, ou grava tudo ou não grava nada. Por exemplo, se sua aplicação atualiza dados em 2 banco de dados e você faz um commit, o recurso de commit em duas fases previne situações como a de um dos bancos ficar indisponível e suas mudanças serem atualizadas somente em um dos bancos envolvidos. Se qualquer um dos bancos em uma transação multi-database falhar no commit (realizando assim o roll back), a transação é marcada com o status de "limbo" em todos os bancos. Mais tarde você pode utilizar o utilitário de linha de comando GFIX ou o Interbase Server Manager para Windows para resolver a questão de transações em limbo.

###

Page 228: Apam

Banco de dados

Bloqueios

Bloqueio GranularBloqueio multigranular permite a uma transação bloquear diferentes tipos de recursos. Para minimizar o custo de bloqueio, o Mecanismo de Banco de Dados bloqueia recursos automaticamente, em um nível apropriado para a tarefa. Bloquear em uma granularidade menor (por exemplo, linhas) aumenta a simultaneidade, mas tem uma sobrecarga maior, devido à exigência de mais bloqueios mantidos, se muitas linhas forem bloqueadas. Bloqueando em uma granularidade maior, como tabelas, é dispendioso em termos de simultaneidade, porque bloquear a tabela inteira restringe o acesso a qualquer parte da tabela por outras transações. No entanto, tem uma sobrecarga menor, porque menos bloqueios estão sendo mantidos.O Mecanismo de Banco de Dados precisa, freqüentemente, adquirir bloqueios em vários níveis de granularidade para proteger totalmente um recurso. Esse grupo de bloqueios em vários níveis de granularidade é chamado de uma hierarquia de bloqueio. Por exemplo, para proteger inteiramente a leitura de um índice, uma instância do Mecanismo de Banco de Dados pode ter que adquirir bloqueios compartilhados em linhas e tentar bloqueios compartilhados nas páginas e na tabela.

ExclusivoBloqueios exclusivos (X) evitam o acesso a um recurso através de transações simultâneas. Com um bloqueio exclusivo (X), nenhuma outra transação pode modificar os dados; operações podem ser realizadas somente com o uso da dica NOLOCK ou nível de isolamento não confirmado.Instruções de modificação de dados como INSERT, UPDATE e DELETE combinam operações de modificação e de leitura. Primeiramente, a instrução executa as operações de leitura para adquirir dados, antes de executar as operações de modificação necessárias. Assim, as instruções de modificação de dados normalmente solicitam bloqueios compartilhados e bloqueios exclusivos. Por exemplo, uma instrução UPDATE poderia modificar linhas em uma tabela com base em uma junção com outra tabela. Nesse caso, a instrução UPDATE solicita bloqueios compartilhados nas linhas lidas na junção de tabela, além de solicitar bloqueios exclusivos nas linhas atualizadas.

CompartilhadoBloqueios compartilhados (S) permitem que transações simultâneas leiam um recurso (SELECT) sob controle de simultaneidade pessimista. Nenhuma outra transação pode modificar os dados enquanto bloqueios compartilhados (S) existirem no recurso. Bloqueios compartilhados (S) em um recurso são liberados quando a operação de leitura termina, exceto se o nível de isolamento da transação for configurado para leitura repetida ou maior ou uma dica de bloqueio for usada para reter os bloqueios compartilhados (S) pela duração da transação.

IntencionalO Mecanismo de Banco de Dados usa bloqueios intencionais para proteger a colocação de um bloqueio compartilhado (S) ou bloqueio exclusivo (X) em um recurso inferior na hierarquia de bloqueio. Bloqueios intencionais são assim chamados porque eles são adquiridos antes de um bloqueio em um nível inferior, e dessa forma, sinalizam a intenção de colocar bloqueios em um nível inferior.Os bloqueios intencionais têm duas finalidades:

Para evitar que outras transações modifiquem recursos de alto nível de uma forma que inviabilizaria o bloqueio em um nível inferior.

Page 229: Apam

Para melhorar a eficiência do Mecanismo de Banco de Dados, detectando conflitos de bloqueio em um nível mais alto de granularidade.

Por exemplo, um bloqueio de tentativa compartilhado é solicitado no nível de tabela antes que os bloqueios compartilhados (S) sejam solicitados em páginas ou linhas dentro dessa tabela. Configurar um bloqueio intencional no nível de tabela evita que outra transação subseqüentemente adquira um bloqueio exclusivo (X) em uma tabela contendo essa página. Bloqueios intencionais aumentam o desempenho porque o Mecanismo de Banco de Dados examina os bloqueios intencionais somente no nível de tabela para determinar se a transação pode adquirir um bloqueio de forma segura nessa tabela. Isso remove a necessidade de examinar cada bloqueio de linha ou página na tabela para determinar se a transação pode bloquear a tabela inteira.

###Banco de dados

Controles de concorrência

A teoria do controle de simultaneidade tem duas classificações para os métodos de instituição do controle de simultaneidade:

Controle de simultaneidade pessimistaUm sistema de bloqueios impede que os usuários modifiquem os dados de uma forma que afete outros usuários. Depois que um usuário executa uma ação que aplica um bloqueio, outros usuários não podem executar ações que estariam em conflito com o bloqueio até o proprietário liberar o bloqueio. Isso é chamado de controle pessimista porque é principalmente usado em ambientes em que existe contenção elevada dos dados, e que o custo da proteção dos dados com bloqueios é inferior ao custo de reversão de transações, caso ocorram conflitos de simultaneidade.

Controle de simultaneidade otimistaNo controle de simultaneidade otimista, os usuários não bloqueiam os dados quando os lêem. Quando um usuário atualiza os dados, o sistema verifica se outro usuário alterou os dados depois de lidos. Se outro usuário tiver atualizado os dados, um erro é ativado. Normalmente, o usuário que recebe o erro reverte a transação e inicia novamente. Isso é chamado de controle otimista porque é usado principalmente em ambientes em que existe contenção reduzida dos dados, e que o custo de reversão ocasional de uma transação é inferior ao custo de bloqueio dos dados quando os mesmos são lidos.

###Banco de dados

Isolamento de transação

As transações especificam um nível de isolamento que define o grau em que uma transação deve ser isolada contra modificações de recursos ou de dados feitas por outras transações. Os níveis de isolamento são descritos em termos de quais efeitos colaterais de simultaneidade são permitidos, como leituras sujas ou leituras fantasma.Níveis de isolamento da transação controlam:

Se são feitos bloqueios quando os dados são lidos, e que tipo de bloqueio é solicitado. Por quanto tempo os bloqueios de leitura são mantidos. Se uma linha de referência de operação de leitura foi modificada por outra transação:

o Bloqueia até que o bloqueio exclusivo na linha seja liberado.

Page 230: Apam

o Recupera a versão confirmada da linha existente no momento em que a instrução ou transação foi iniciada.

o Lê a modificação de dados não confirmados.Escolhendo um nível de isolamento da transação não afeta os bloqueios obtidos para proteger as modificações de dados. Uma transação sempre obtém um bloqueio exclusivo em quaisquer dados que modifica e mantém tal bloqueio até que a transação seja concluída, sem considerar o conjunto de níveis de isolamento para a transação em questão. Para operações de leitura, níveis de isolamento da transação definem principalmente o nível de proteção dos efeitos das modificações feitas por outras transações.Um nível de isolamento inferior aumenta a capacidade de muitos usuários acessarem dados ao mesmo tempo, mas aumenta o número de efeitos de simultaneidade (como leituras sujas ou atualizações perdidas) que os usuários podem encontrar. Inversamente, um nível de isolamento mais alto reduz os tipos de efeito de simultaneidade que os usuários podem encontrar, mas requer mais recursos do sistema e aumenta as chances de uma transação bloquear outra. Escolher o nível de isolamento apropriado depende de equilibrar os requisitos de integridade de dados do aplicativo em relação à sobrecarga de cada nível de isolamento. O nível de isolamento mais alto, serializável, garante que uma transação recuperará exatamente os mesmos dados toda vez que repetir uma operação de leitura, mas faz isto executando um nível de bloqueio que provavelmente causará impacto em outros usuários em sistemas multiusuários. O mais baixo nível de isolamento, leitura de dados não confirmados, pode recuperar dados que foram modificados, mas não foram confirmados por outras transações. Todos os efeitos colaterais de simultaneidade podem acontecer em leitura não confirmada, mas não há nenhum bloqueio de leitura ou controle de versão, assim a sobrecarga é minimizada.

O padrão ISO define os seguintes níveis de isolamento:

Leitura não confirmada (o mais baixo nível onde transações só estão isoladas o bastante para assegurar que dados corruptos fisicamente não são sejam lidos)

Leitura confirmada (Mecanismo de Banco de Dados nível padrão) Leitura repetida Serializável (o nível mais alto, onde as transações estão completamente isoladas uma

da outra)

Nível de isolamento

Leitura suja Leitura não repetível

Fantasma

Leitura não confirmada

Sim Sim Sim

Leitura confirmada Não Sim SimLeitura repetível Não Não SimInstantâneo Não Não NãoSerializável Não Não Não

Dependência não confirmada (leitura suja)A dependência não confirmada acontece quando uma segunda transação seleciona uma linha que está sendo atualizada por outra transação. A segunda transação está lendo dados que não foram confirmados ainda e podem ser alterados pela transação que atualiza a linha.Por exemplo, um editor está fazendo mudanças em um documento eletrônico. Durante as mudanças, um segundo editor pega uma cópia do documento que inclui todas as mudanças feitas até o momento e distribui o documento para a audiência destinada. O primeiro editor

Page 231: Apam

decide então que as mudanças feitas até o momento estão erradas, remove as edições e salva o documento. O documento distribuído contém edições que já não existem e que deveriam ser tratadas como se nunca tivessem existido. Esse problema poderia ser evitado se ninguém pudesse ler o documento alterado até que o primeiro editor salvasse a versão final com as modificações e confirmasse a transação.

Análise inconsistente (leitura não-repetível)Ocorre análise inconsistente quando uma segunda transação acessa a mesma linha várias vezes e lê dados diferentes a cada vez. A análise inconsistente é semelhante à dependência não confirmada, no sentido em que outra transação está alterando os dados que uma segunda transação está lendo. No entanto, na análise inconsistente os dados lidos pela segunda transação foram confirmados pela transação que fez as alterações. Além disso, a análise inconsistente envolve leituras múltiplas (duas ou mais) da mesma fila, e a cada vez as informações são alterada por outra transação; daí a denominação leitura não-repetível.Por exemplo, um editor lê o mesmo documento duas vezes, mas entre cada leitura o escritor reescreve o documento. Quando o editor lê o documento pela segunda vez, este já foi alterado. A leitura original não era repetível. Esse problema poderia ser evitado se o escritor não pudesse alterar o documento até que o editor tivesse terminado de lê-lo pela última vez.

Leituras fantasmaLeituras fantasma acontecem quando uma ação de inserção ou exclusão é executada em uma linha que pertence a um intervalo de linhas que estão sendo lidas por uma transação. A primeira leitura do intervalo de linhas da transação mostra uma linha que já não existe mais na segunda leitura ou leitura posterior, como resultado de uma exclusão por uma transação diferente. De maneira semelhante, a segunda leitura ou leitura posterior da transação mostra uma linha que não existia na leitura original, como resultado de uma inserção por uma transação diferente.Por exemplo, um editor faz alterações em um documento enviado por um escritor, mas quando as alterações são incorporadas na cópia mestra do documento pelo departamento de produção, descobre-se que material novo não editado foi acrescentado ao documento pelo autor. De modo semelhante à situação de leitura não-repetível, esse problema poderia ser evitado se ninguém pudesse acrescentar material novo ao documento até o editor e o departamento de produção terminarem de trabalhar com o documento original.

###Banco de dados

Data warehouse

Agregados

Um agregado é um registro da tabela de fatos que representa o resumo dos registros de nível básico desta tabela, pois reduz o detalhamento das dimensões não importantes numa análise (resumindo estes dados), detalhando apenas as dimensões necessárias a uma determinada restrição. A utilização de agregados faz com que as consultas sejam mais rápidas. Porém, o grande aumento do espaço necessário para seu armazenamento e o efeito "dispersão" – causador de um excesso de registros de agregados – são dois pontos negativos desta utilização.

Modos de utilização de agregados

Pré-Agregação

Page 232: Apam

A pré-agregação é a mais utilizada em projetos de data warehouse. Segundo [MCG98], se a tabela de fatos é relativamente pequena e a computação e estrutura complexas, então a pré-agregação é uma alternativa viável. O processo de pré-agregação inicia com a determinação de quais dimensões devem ser agregadas (se parte de uma dimensão deve ser agregada, então toda a dimensão deve ser agregada).Uma maneira prática de medir os benefícios de uma pré-agregação para uma determinada dimensão é determinar o fator de compressão para cada nível da dimensão. Este é o número de linhas produzidas por uma agregação divididas pelo número de linhas recuperadas. Este cálculo deve ser feito para todas as dimensões, usando-se dados reais, durante um longo período. Uma vez que se tenham estes resultados, podem-se avaliar quais dimensões devem ser pré-agregadas [MCG98], usando o seguinte critério: dimensões com menores fatores de compressão são melhores para serem agregadas.

Agregação DinâmicaPara tabelas de fatos muito grandes, porém simples em termos de estrutura e cálculo, encontram-se casos em que a agregação dinâmica é preferível [MCG98]. A grande vantagem da agregação dinâmica é economia de espaço de armazenamento. Porém, é fato que os meios de armazenamento vêm sendo barateados continuamente nos últimos anos.

###Banco de dados

Data warehouse

ETL

Fase extremamente critica de um Data Warehouse, pois envolve a movimentação dos dados de origem nos sistemas transacionais e/ou sistemas legados, obedecendo as regras de negócio. Ela se dá basicamente em três passos: extração (E), transformação (T) e carga (L – Loader) dos dados. Esses são os mais trabalhosos, complexos e também muito detalhados, embora tenhamos várias ferramentas (falaremos mais abaixo) que nos auxiliam na execução desse trabalho.O primeiro passo a ser tomado no processo de ETL: a definição das fontes de dados e fazer a extração deles.

As origens deles podem ser várias e também em diferentes formatos, onde poderemos encontrar desde os sistemas transacionais das empresas até planilhas, flat files (arquivos textos), dados do Mainframe, etc.

O segundo passo: transformar e limpar esses dados. Mas, o que, afinal de contas, é isso? É muito comum, na obtenção dos dados que, no mais das vezes, são antigos e

desconhecidos, encontrarmos muito ‘lixo’ e inconsistências. Por exemplo. Quando um vendedor de linhas telefônicas for executar uma venda, ou inscrição, ele está preocupado em vender, e não na qualidade dos dados que está inserindo na base, então se por acaso o cliente não tiver o número do CPF a mão, ele cadastra um número qualquer, desde que o sistema aceite, um dos mais utilizados é o 999999999-99. Agora imagine um diretor de uma companhia telefônica consultar o seu Data Warehouse (DW) para ver quais são os seus maiores clientes, e aparecer em primeiro lugar o cliente que tem o CPF 999999999-99? Seria no mínimo estranho. Por isso, nessa fase do DW, fazemos a limpeza desses dados, para haver compatibilidade entre eles.

Além da limpeza, temos de fazer na maioria das vezes uma transformação, pois os dados provêm de vários sistemas, e por isso, geralmente uma mesma informação tem diferentes formatos, por exemplo: Em alguns sistemas a informação sobre o sexo do cliente pode estar armazenada no seguinte formato: “M” para Masculino e “F” para

Page 233: Apam

Feminino, porém em algum outro sistema está guardado como “H” para Masculino e “M” para Feminino, em outro ainda, podemos encontrar “1” para Masculino e “2” para Feminino, e assim sucessivamente. Quando levamos esses dados para o DW, deve-se ter uma padronização deles, ou seja, quando o usuário for consultar o DW, ele não pode ver informações iguais em formatos diferentes. Assim sendo, quando fazemos o processo de ETL, transformamos esses dados e deixamos num formato uniforme sugerido pelo próprio usuário, como por exemplo “M” para Masculino e “F” para Feminino. No DW, teremos somente M e F, fato esse que facilitará a análise dos dados que serão recuperados pela ferramenta OLAP.

Além desses exemplos acima, nós podemos integrar todas as fontes de dados num único banco. Com isso não existirão mais “ilhas” de dados, mas sim teremos informações ricas e totalmente integradas.

Como o volume de dados é muito grande, há muitos casos que não temos condições de processar as extrações e transformações na janela de tempo em que o DW não está sendo usado, então temos de fazer uso do que chamamos de staging área para conseguirmos executar os processos com sucesso. Segundo Kimball, a Staging Area é parte do Data Warehouse responsável por receber a extração, transformação e carga (ETL) das informações dos sistemas transacionais legados, para posterior geração dos Data Marts de destino, com as características:

A Staging Area é considerada área fora do acesso dos usuários. A Staging Area não deve suportar queries dos Usuários. Ela pode ser composta por flat files (arquivos textos) ou tabelas de banco de dados na

terceira forma normal (normalizadas).A seguir são apresentados alguns dos fatores que devem ser analisados antes de começar a fase de extração dos dados:

A extração de dados do ambiente operacional para o ambiente de data warehouse demanda uma mudança na tecnologia. Os dados são transferidos de bancos de dados hierárquicos, tal como o adabas, ou de bases do grande porte, como o DB2, para uma nova estrutura de SGBD relacional para Data Warehouse, tal como o DB2 UDB, Oracle, Teradata e etc;

A seleção de dados do ambiente operacional pode ser muito complexa, pois muitas vezes é necessário selecionar vários campos de um sistema transacional para compor um único campo no data warehouse;

Page 234: Apam

Outro fator que deve ser levado em conta é que dificilmente há o modelo de dados dos sistemas antigos, e se existem não estão documentados;

Os dados são reformatados. Por exemplo: um campo data do sistema operacional do tipo DD/MM/AAAA pode ser passado para o outro sistema do tipo ano e mês como AAAA/MM;

Quando há vários arquivos de entrada, a escolha das chaves deve ser feita antes que os arquivos sejam intercalados. Isso significa que se diferentes estruturas de chaves são usadas nos diferentes arquivos de entrada, então se deve optar por apenas uma dessas estruturas;

Os arquivos devem ser gerados obedecendo à mesma ordem das colunas estipuladas no ambiente de data warehouse;

Pode haver vários resultados. Dados podem ser produzidos em diferentes níveis de resumo pelo mesmo programa de geração das cargas;

Valores default devem ser fornecidos. Às vezes pode existir um campo no data warehouse que não possui fonte de dados, então a solução é definir um valor padrão para estes campos.

O data warehouse espelha as informações históricas necessárias, enquanto o ambiente operacional focaliza as informações pontuais correntes. A parte de carga dos dados também possui uma enorme complexidade, e os seguintes fatores devem ser levados em conta:

A parte de Integridade dos dados. No momento da carga é necessário checar os campos que são chaves estrangeiras com suas respectivas tabelas para certificar-se de que os dados existentes na tabela da chave estrangeira estão de acordo com a tabela da chave primária;

Se a tabela deve receber uma carga incremental ou a carga por cima dos dados. A carga incremental normalmente é feita para tabelas fatos e a carga por cima dos dados é feita em tabelas dimensões onde o analista terá que deletar os dados existentes e incluí-los novamente. Mas em alguns casos poderá acontecer que as tabelas de dimensões tem de manter o histórico, então o mesmo deverá ser mantido (slowly change dimension);

Apesar de existirem ferramentas de ETL como o DTS (Data Transformation Service), Data Stage, ETI, Business Objects Data Integration, Sunopsis – atual Oracle Data Integrator, Oracle Warehouse Builder e o Informática, ainda tem-se a necessidade de criar rotinas de carga para atender determinadas situações que poderão ocorrer. Pode ser em shell script, SQL puro ou em C, quando precisa de performance.

Page 235: Apam

###Arquitetura de computadores

Memória cache- É comumente encontrada em processadores RISC.- Não é implementada pelo sistema operacional com suporte do hardware (essa é a memória virtual).- Os dados nela armazenados são cópias de parte da memória principal.- Pode ser inserida diretamente no chip do processador.

###Sistemas operacionais

Objetivos dos algoritmos de escalonamento de processos utilizados em sistemas voltados para o processamento em lote- Manter a CPU ocupada o tempo todo.- Manter os dispositivos de E/S ocupados o máximo de tempo possível.- Maximizar o número de jobs processados por unidade de tempo.- Minimizar o tempo entre a submissão e o término de um job.“Atender às requisições dos usuários o mais rápido possível.” <= é um objetivo de sistemas online (ou interativos).

###Engenharia de software

Page 236: Apam

Métrica de controle de softwareRelacionada ao processo de software.Exemplos:- Tempo médio para reparar defeito de software;- Tempo médio para rastrear um módulo.

Métrica de predição de softwareRelacionada a produtos de software.Exemplos:- Complexidade de um módulo;- Número de mensagens de erro;- Número de atributos e operações com objetos em um projeto.

###Engenharia de software

Fator de estimativa de qualidade (EQF, estimate quality factor) é definido como a área sob a curva do valor atual pela área entre o valor estimado e o atual. Isto é o inverso da percentagem de erro ou o erro médio relativo.

###Padrões de arquitetura de aplicações empresariais

Padrões de lógica de domínio

Script de transação

Most business applications can be thought of as a series of transactions. A transaction may view some information as organized in a particular way, another will make changes to it. Each interaction between a client system and a server system contains a certain amount of logic. In some cases this can be as simple as displaying information in the database. In others it may involve many steps of validations and calculations.A Transaction Script organizes all this logic primarily as a single procedure, making calls directly to the database or through a thin database wrapper. Each transaction will have its own Transaction Script, although common subtasks can be broken into subprocedures.

Modelo de domínio

At its worst business logic can be very complex. Rules and logic describe many different cases and slants of behavior, and it's this complexity that objects were designed to work with. A Domain Model creates a web of interconnected objects, where each object represents some meaningful individual, whether as large as a corporation or as small as a single line on an order form.

Módulo de tabela

A single instance that handles the business logic for all rows in a database table or view.One of the key messages of object orientation is bundling the data with the behavior that uses it. The traditional object-oriented approach is based on objects with identity, along the lines of Domain Model (116). Thus, if we have an Employee class, any instance of it corresponds to a particular employee. This scheme works well because once we have a reference to an employee, we can execute operations, follow relationships, and gather data on him.

Page 237: Apam

One of the problems with Domain Model (116) is the interface with relational databases. In many ways this approach treats the relational database like a crazy aunt who's shut up in an attic and whom nobody wants to talk about. As a result you often need considerable programmatic gymnastics to pull data in and out of the database, transforming between two different representations of the data.A Table Module organizes domain logic with one class per table in the data-base, and a single instance of a class contains the various procedures that will act on the data. The primary distinction with Domain Model (116) is that, if you have many orders, a Domain Model (116) will have one order object per order while a Table Module will have one object to handle all orders.

Camada de serviço

Defines an application's boundary with a layer of services that establishes a set of available operations and coordinates the application's response in each operation.Enterprise applications typically require different kinds of interfaces to the data they store and the logic they implement: data loaders, user interfaces, integration gateways, and others. Despite their different purposes, these interfaces often need common interactions with the application to access and manipulate its data and invoke its business logic. The interactions may be complex, involving transactions across multiple resources and the coordination of several responses to an action. Encoding the logic of the interactions separately in each interface causes a lot of duplication.A Service Layer defines an application's boundary [Cockburn PloP] and its set of available operations from the perspective of interfacing client layers. It encapsulates the application's business logic, controlling transactions and coordinating responses in the implementation of its operations.

###Engenharia de software

Tipos de escritórios de gerência de projeto

- Projeto AutônomoEscritório de projeto separado das operações da empresa; é destinado ao gerenciamento de um projeto ou programa específico.

- Escritório de Suporte a ProjetosÉ escritório de projeto de esfera departamental para apoio a diversos projetos simultâneos; fornece suporte, ferramentas e serviços de planejamento, controle de prazos, custos, qualidade, dentre outros; ele fornece recursos técnicos, metodologia de gerenciamento de projetos, metodologia de gestão do conhecimento, interfaces organizacionais.

- Centro de ExcelênciaNão assume responsabilidade pelo sucesso do projeto. Sponsorship: apoio de cima;Liderança: conhecimento e capacidade de gerenciar e influenciar stakeholders;Valor agregado: demonstrar benefício de se adotar as práticas de GP propostas;Desenvolvimento profissional: desenvolver GPs, líderes e membros de equipes competentes.

- Escritório de Projetos CorporativoÉ escritório de projetos de esfera corporativa, atuando no gerenciamento estratégico de todos os projetos da organização.

Page 238: Apam

Suas principais funções são:– Planejamento estratégico dos projetos;– Gerenciamento de projetos interdepartamentais;– Gestão do conhecimento empresarial.

###Engenharia de software

Gestão de projeto

Os 10 mandamentos do gerenciamento de projetos

I – Estreitarás teus escopos. Nada é pior do que um projeto interminável. Ele pode sugar todos os recursos e esgotar até mesmo a equipe mais motivada. Para manter os projetos firmes e orientados, concentre seus maiores esforços em projetos menores, que tenham entregas (“deliverables“) alcançáveis e que possam cumprir seus prazos. Em longo prazo, uma série de vitórias pequenas tem mais impacto sobre a organização do que uma gigantesca orquestra sinfônica que nunca chega a tocar.

II – Não tolerarás equipes inchadas. Uma boa maneira de começar com o pé direito é garantir que a equipe do projeto terá o tamanho certo. Equipes maiores são mais difíceis de motivar e administrar, e as personalidades podem ficar no meio do caminho, atrapalhando o trabalho. Não existe um tamanho ideal para a equipe, mas uma boa regra empírica é ter uma pessoa para cada papel e um papel para cada pessoa. Se alguns integrantes tiverem que desempenhar mais de um papel, tudo bem – se você for errar o dimensionamento, erre a favor de uma equipe menor.

III – Exigirás dedicação de todas as áreas envolvidas. Se a área de TI aceitar um prazo apertado, mas parte dos documentos de projeto precisar ser aprovado pelas demais áreas da organização, e elas não estiverem comprometidas da mesma forma, o projeto acaba virando uma gincana. Se as áreas de negócio aceitam um prazo apertado, mas dependem de um aplicativo a ser desenvolvido pela área de TI, que não está comprometida da mesma forma, o projeto também acaba virando uma gincana. O gerente de projeto deve se posicionar de forma a que todas as áreas diretamente envolvidas no sucesso do projeto estejam comprometidas, e disponíveis na medida da necessidade, desde o princípio.

IV – Estabelecerás um comitê para analisar o andamento. O comitê de acompanhamento, qualquer que seja seu título oficial, é o corpo diretivo do projeto. Ao mesmo tempo em que lida com questões relacionadas às políticas e estratégias da empresa, ele pode e deve remover as lombadas e obstáculos do caminho do projeto. Um arranjo típico envolve reuniões quinzenais das áreas de gerência intermediária envolvidas no projeto, para analisar seu andamento e verificar como se envolver das formas descritas acima.

V – Não consumirás tua equipe. O ‘burnout’, ou esgotamento físico e mental dos membros da equipe, causado pelo stress e esforço das atividades, não é incomum. Fique atento às necessidades das pessoas e evite este efeito que reduz a efetividade da equipe – não planeje de forma que o envolvimento das pessoas vá exigir sacrifícios incomuns e continuados. Em particular, evite o efeito do envolvimento serial: o popular efeito “sempre os mesmos” – pessoas que se destacam por

Page 239: Apam

resolver bem os problemas que recebem, e assim acabam sendo envolvidos em mais projetos do que seria racional, gerando stress para elas, e disputa de recursos para os projetos.

VI – Buscarás apoio externo quando necessário. Adotar consultores em gerenciamento de projetos é uma forma de prevenir o esgotamento. Além de aumentar as equipes, os especialistas externos muitas vezes podem trazer valiosas novas idéias, perspectivas e energias. É essencial trazer o profissional certo no momento certo: especialistas nos aspectos técnicos e de mercado não são a mesma coisa que especialistas em gerenciamento de projetos. Considere as características do projeto e da equipe antes de definir o tipo de apoio externo necessário.

VII – Darás poder às tuas equipes. Equipes de projeto que já estejam se esforçando para cumprir seus escopos e prazos não precisam ter preocupações adicionais com questões formais como o preenchimento de formulários de registro de atividades para seus departamentos, ou participação em reuniões periódicas de seu órgão de origem. Ao invés disso, eles devem ter o poder discricionário de dedicar-se às atividades essenciais e que agregam valor ao projeto, e a estrutura deve se esforçar para adaptar-se a estas condições. Mas é importante que os membros da equipe correspondam a esta confiança, saibam claramente o que se espera deles e de que forma devem usar sua iniciativa.

VIII – Usarás ferramentas de gerenciamento de projetos. Tarefas mundanas de gerenciamento de projetos podem ser automatizadas. Procure ferramentas que ofereçam acompanhamento do andamento, gerenciamento de tarefas, gerenciamento do fluxo de trabalho e análise de recursos, e que funcionam em uma plataforma de Intranet que promova o compartilhamento e a comunicação. Mas lembre-se de que usar tecnologias que acrescentem uma camada extra de complexidade a um projeto já desafiador por si pode não ser uma boa idéia.

IX – Reconhecerás o sucesso. Todos os participantes do projeto devem ser reconhecidos de forma positiva pelo esforço que praticaram. As recompensas não precisam ser extravagantes. É fundamental que a origem real do reconhecimento – seja a Presidência, a direção da filial regional, o principal patrocinador do projeto ou o seu gerente – fique clara para todos, e que se manifeste de forma tão individual e personalizada quanto possível.

X – Não tolerarás gambiarras. Políticas sólidas de gerenciamento de projetos devem eliminar antecipadamente a tentação de recorrer a alternativas rápidas e rasteiras, que só levam a erros, desperdício, retrabalho e frustração.

###Engenharia de software

Métodos ágeis

FDD (Feature driven development)

A FDD chama a atenção por algumas características peculiares:– Resultados úteis a cada duas semanas ou menos;– Blocos bem pequenos de funcionalidade valorizada pelo cliente, chamados "Features";– Planejamento detalhado e guia para medição;

Page 240: Apam

– Rastreabilidade e relatórios com incrível precisão;– Monitoramento detalhado dentro do projeto, com resumos de alto nível para clientes e

gerentes, tudo em termos de negócio;– Fornece uma forma de saber, dentro dos primeiros 10% de um projeto, se o plano e a

estimativa são sólidos.

A FDD é uma metodologia muito objetiva. Possui apenas duas fases: Concepção & Planejamento: Pensar um pouco antes de fazer (tipicamente de 1 a 2

semanas) Construção: Fazer de forma iterativa (tipicamente em iterações de 2 semanas)

Os cinco processos são bem definidos e integrados:1. DMA (Desenvolver um Modelo Abrangente): Análise Orientada por Objetos2. CLF (Construir a Lista de Funcionalidades): Decomposição Funcional3. PPF (Planejar por Funcionalidade): Planejamento Incremental4. DPF (Detalhar por Funcionalidade): Desenho (Projeto) Orientado por Objetos5. CPF (Construir por Funcionalidade): Programação e Teste Orientados por Objetos

DSDM (Dynamic System Development Method)

Dynamic Systems Development Method (DSDM) is a framework based originally around Rapid Application Development (RAD), supported by its continuous user involvement in an iterative development and incremental approach which is responsive to changing requirements, in order to develop a system that meets the business needs on time and on budget. It is one of a number of agile methods for developing software and forms part of the Agile Alliance.

There are 9 underlying principles of DSDM consisting of four foundations and five starting-points for the structure of the method. These principles form the cornerstones of development using DSDM.

User involvement is the main key in running an efficient and effective project, where both users and developers share a workplace, so that the decisions can be made accurately.

The project team must be empowered to make decisions that are important to the progress of the project, without waiting for higher-level approval.

DSDM focuses on frequent delivery of products, with assumption that to deliver something "good enough" earlier is always better than to deliver everything "perfectly" in the end. By delivering product frequently from an early stage of the project, the product can be tested and reviewed where the test record and review document can be taken into account at the next iteration or phase.

The main criterion for acceptance of deliverable in DSDM is on delivering a system that addresses the current business needs. It is not so much directed at delivering a perfect system addressing all possible business needs, but focuses its efforts on critical functionality.

Development is iterative and incremental, driven by users’ feedback to converge on an effective business solution.

All changes during the development are reversible. The high level scope and requirements should be base-lined before the project

starts. Testing is carried out throughout the project life-cycle. Communication and cooperation among all project stakeholders are required to

be efficient and effective.

Page 241: Apam

The Phases of DSDMThe DSDM framework consists of three sequential phases, namely the pre-project, project life-cycle and post-project phases. The project phase of DSDM is the most elaborate of the three phases. The project life-cycle phase consists of 5 stages that form an iterative step-by-step approach in developing an IS (Information System). The three phases and corresponding stages are explained extensively in the subsequent sections. For each stage/phase, the most important activities are addressed and the deliverables are mentioned.

Phase 1: The Pre-ProjectIn the pre-project phase candidate projects are identified, project funding is realized and project commitment is ensured. Handling these issues at an early stage avoids problems at later stages of the project.

Phase 2: The Project life-cycleThe process overview in the figure above shows the project life-cycle of this phase of DSDM. It depicts the 5 stages a project will have to go through to create an IS. The first two stages, the Feasibility Study and Business Study are sequential phases that complement to each other. After these phases have been concluded, the system is developed iteratively and incrementally in the Functional Model Iteration, Design & Build Iteration and Implementation stages. The iterative and incremental nature of DSDM will be addressed further in a later section.Feasibility StudyBusiness StudyFunctional Model IterationDesign and Build IterationImplementation

Phase 3: Post-projectThe post-project phase ensures the system operating effectively and efficiently. This is realized by maintenance, enhancements and fixes according to DSDM principles. The maintenance can be viewed as continuing development based on the iterative and incremental nature of DSDM. Instead of finishing the project in one cycle usually the project can return to the previous phases or stages so that the previous step and the deliverable products can be refined.

###Gestão de TI

Help Desk – ITIL

Primeiro nível de atendimentoDestino das ligações dos usuários quando em busca de ajuda para a tecnologia em uso. Esse primeiro nível pode ser caracterizado em dois modelos:

SolucionadorGrupo de atendentes que resolve o problema durante a própria ligação do usuário. Através do uso de ferramentas complementares (base de conhecimento, software de controle remoto) e treinamento adequado, o atendente tem como objetivo o encerramento do problema sem a necessidade de transferir (ou escalar) o assunto para outro colega.Em alguns centros de suporte, o primeiro nível solucionador pode ser particionado por especialidades, facilitando com que técnicos com a habilidade adequada resolvam mais rapidamente o problema (exemplo: células de atendentes peritos em Microsoft Office, outros em redes e segurança etc.).

Page 242: Apam

DirecionadorAinda dentro do primeiro nível, conforme o tipo de atendimento realizado, a equipe que recepciona o problema apenas registra o assunto, anota os detalhes e direciona o atendimento para um colega com maior conhecimento no tema. Isso faz com que o registro seja feito de maneira rápida, garantida e o direcionamento conduz para uma equipe mais apropriada.

Segundo nível de atendimentoExistem controvérsias no mercado, mas em geral assume-se que é um time com maiores conhecimentos sobre o problema em questão. Significa que se o atendente de primeiro nível não conseguiu resolver um problema do usuário para se conectar na rede e ele irá transferir a responsabilidade desse atendimento para a equipe de administração de redes.O segundo nível pode também se caracterizar por uma equipe de campo (ou deskside) que vai até o local do usuário para solucionar um problema que, por telefone, seria impossível (uma impressora quebrada, cabos soltos, etc.).

Terceiro nível de atendimentoSão os terceiros especialistas (ou ainda, outro nível interno mais especializado no assunto) que podem ser os fabricantes de determinados hardwares ou softwares, consultores contratados e assim por diante.Esses são pessoas que tem a capacidade de resolver os problemas não solucionados nos níveis anteriores.

###Gestão de TI

ITILGerência de Continuidade de Serviço

O objetivo da Gerência da Continuidade dos Serviços de TI é proteger o desempenho dos serviços em qualquer eventualidade baseado no planejamento e na execução de medidas preventivas.

As empresas dependem de uma significante extensão da disponibilidade e funcionalidade da Tecnologia da Informação em uso. Portanto, o preparo para qualquer eventualidade, combinado com gerenciamento da continuidade do negócio, assume uma grande importância, com metas específicas para proteger a disponibilidade dos serviços, tomando medidas preventivas para reduzir a probabilidade de falhas e, se um evento catastrófico ocorrer, restaurar os serviços dentro do tempo requerido.

O planejamento da Continuidade dos Serviços de TI está sempre baseado no Plano de Continuidade de Negócio de alto nível (BCM). A estratégia e a política de avaliação de riscos nos Serviços de TI devem ser de responsabilidade da Gerência de Negócio. A viabilidade e custos são determinados pela TI; ao final de certa forma eles têm uma influência sobre o nível de serviço requerido.

Tarefas Realizar a análise de riscos como parte do gerenciamento da continuidade do negócio; Preparar o plano de recuperação para os Serviços de TI; Fornecer os recursos requeridos; Fornecer treinamento para o pessoal envolvido;

Page 243: Apam

Testar e verificar os planos para capacitar os serviços de recuperação em uma emergência dentro do tempo requerido, com segurança e de forma controlada;

Implementar programas de melhoria do serviço; Manter os planos de recuperação atualizados.

Benefícios Em caso de evento catastrófico as restrições do negócio diário serão reduzidas; Redução do número de falhas são reduzidas ao mínimo, pela implementação de

medidas preventivas; A perda de dados em caso de evento catastrófico pode ser evitada, com uma infra-

estrutura de TI moderna; Em caso de evento catastrófico, os serviços da TI são ativados e colocados de volta

dentro da normalidade por pessoal treinado.

Indicadores de Performance Nível de serviço da continuidade do negócio (o tempo de atraso e a perda dos dados

no caso que de um evento catastrófico); Custos do investimento e de manutenção da solução de recuperação da TI; Teste com sucesso (tecnologia, casos de negócio, e situação atual dos dados); Custos do processo.

###Sistemas de informação

SOA (Arquitetura orientada a serviços)

WPDLO formato específico para definição e troca de processo de negócio entre WfMS (ou entre a engine de um WfMS e uma ferramenta de especificação), que seguem o padrão de referência da WfMC (Workflow Management Coalition) e a gramática usada para sua descrição.

###Gestão de TI

ITIL

OLAAn operational level agreement (OLA) is a contract that defines how various IT groups within a company plan to deliver a service or set of services. OLAs are designed to address and solve the problem of IT silos by setting forth a specific set of criteria and defining the specific set of IT services that each department is responsible for. It should be noted that the term Service Level Agreement (SLA) is used in many companies when discussing agreements between two internal groups, but according to the Information Technology Infrastructure Library (ITIL) framework for best practices, this type of internal contract should be called an Operational Level Agreement.

Six tips for crafting an OLA1. Define all the services IT is responsible for in a Service Catalog.2. As CIO, get involved in the process by understanding what each service entails.3. Define the key players (the networking team, the server group, etc.) and their responsibilities.4. Lay out each IT group's expectations for delivering each service.

Page 244: Apam

5. Come up with contingency plans for unexpected events. 6. Test and retest OLAs, and make changes when needed. OLAs, like SLAs, shouldn't be static and should have a beginning, middle and end date.

UCConcept 1:Where an external supplier provides services that underpin the delivery of an IT service, it is essential that the provisions of the contract with the external supplier are consistent with the targets built into any SLA that depends on the external supplier. SLM must avoid making commitments in SLAs that cannot be guaranteed because the Underpinning Contract with an external supplier offers a lower standard. For example, it would make little sense for SLM to base an SLA availability target on a projected server availability of 99.9 per cent when the support and maintenance contract for the server guarantees no better than 98 per cent. It is the responsibility of SLM to ensure consistency, seeking to renegotiate UCs where contractual commitments fall short of customer needs. The ongoing relationship between the IT service provider & the customer will be covered in future in the chapter on Supplier Management, but it is important to recognize here that UCs must always be kept in line with the needs of the business. This means that as business requirements change, the IT service provider must ensure that UCs are renegotiated or replaced, if cost-effective to do so, to ensure they continue to serve the business.

Concept 2:

PurposeAn underpinning contract is an agreement on the level of IT services that a service provider is able to provide, at a price that is acceptable to the service recipient. The recipient must define the services required and determine whether the provider is capable of delivering those services at the required level.

ContentsThis type of contract must be carefully worded in relation to how and when breaches of contract are to be measured. Any obligations on the customer, such as timely reporting of problems, must also be clearly stated.

Operational and Service Level AgreementsA UC is a supporting document for a service level agreement (SLA), and the external equivalent of an operational level agreement (OLA). It is, however, a legally binding contract, so failure to meet agreed targets may well result in legal action.

###Gestão de TI

ITIL

Diferenças entre V2 e V3(http://pt.scribd.com/doc/34267921/Resumo-Diferencas-entre-a-ITIL-V2-E-V3)

ITIL V2 Visão Modular (Todo “formado por partes” lembra um quebra cabeça) 2 Livros Principais (Entrega e Suporte) Não existe linha do tempo para lidar com o Serviço, ele é abordado na sua forma

“adulta”

Page 245: Apam

Maior relação com a equipe de TI e com os Clientes Pode se escolher um livro e adotá-lo sem se preocupar com os demais Mais flexível e menos complexa do que a ITIL V3 Pode ser adotada facilmente em pequenas empresas

ITIL V3 Visão Holística (Todo “misturado” lembra um liquido) 5 Livros Principais (Melhoria Contínua, Service Strategy, Service Design, Service

Transition e Service Operation) Aborda os Serviços sobre a perspectiva da Governança de TI Maior relação com o Negócio (antes era alinhamento, agora é integração) Introduzido conceito de Ciclo de Vida do Serviço Serviços são abordados desde seu nascimento até a sua morte Difícil ou até mesmo inviável adotar apenas um livro, todos devem ser adotados Abriu mão de boa parte da flexibilidade ITIL V2 ao incorporar os conceitos de

Governança de TI Difícil de ser adotada em empresas pequenas Maior integração com outros modelos de Governança de TI e Normas ISO (CMMi,

COBIT, PMBOK, ISO 20000, ISO 27001, Six Sigma)

(http://alexvillaverde.blogspot.com.br/2009/05/diferencas-entre-as-vesoes-da-itil-v2-e.html)

As mudanças entre as versões são substanciais, a abordagem dos processos e o modo de pensar em ITIL com certeza mudou, na nova versão os processos estão agrupados por "módulos" e seguem uma sequência lógica para o entendimento das boas práticas. A grande mudança foi separar os processos através de um ciclo de vida: Estratégia, Desenho, Transição, Operação e Melhoria de serviço continuada.

A ITIL V2 foi lançada em 2000 com nove livros, mas apenas dois eram usados. Já a V3 foi lançada em 2007 e possui cinco livros principais que formam a base do ciclo de vida. Cada livro contém a visão geral, fundamentos, processos, papéis, considerações, diretriz de implementação, desafios, oportunidades e riscos.

Na ITIL V2 falavam em alinhamento com o negócio, hoje na V3 existe a integração com o negócio, isto pela demanda e pela necessidade das empresas que ao passar dos tempos passaram cada vez mais depender de TI, hoje conseguimos pensar em algum produto novo que não tenha a participação de TI em alguma fase do negócio?

Um dos fatores Importantes na ITIL V3 é o Portfólio de Serviços que englobam todos os serviços prestados, controlam status e separam entre serviços obsoletos, novos e em funcionamento. Outro fator importante é o Gerenciamento de Demanda que visa reduzir o risco do negócio, gerenciar os custos e equilibrar o fornecimento com a demanda de recursos.

Houve melhoras na Operação do Serviço, criando o Comprimento de Serviço, mudanças de baixo impacto ou simplesmente requisição de serviços pode ser tratada por este processo e não como na V2 que era realizado pelo Gerenciamento de Incidentes.

Outro ponto importante incorporado aos processos na ITIL V3 é o Gerenciamento de Segurança que garante a disponibilidade, confidencialidade e integridade da informação, tem a tarefa de produzir e manter as Políticas de Segurança.

Esta questão de ITIL V2 e ITIL V3, tem a tendência de sumir com o tempo, o que vai prosseguir

Page 246: Apam

é a biblioteca ITIL, o que vai interessar são as empresas seguirem um padrão, seguirem as boas práticas do mercado, adotarem uma biblioteca para orientar e criar responsáveis para cada processo.

Em breve, a ISSO É Tecnologia estará lançando o curso de ITIL Foundations V3, é importante realizar a certificação já na versão 3, existe consultorias e centros de treinamento que estão oferecendo e aconselhando os alunos a fazerem o curso na ITIL V2 e depois um upgrade para a versão 3, é um caminho totalmente incorreto pois na versão 3 como comentei acima a forma de pensar e aplicar alguns processos mudou, principalmente por ter um ciclo de vida de serviço.

Se existe uma versão nova e disponível, quais são os motivos para fazer a certificação na versão antiga e depois fazer um upgrade, para aqueles que já são certificados na versão 2 esta prática é viável, mas eu aconselho mesmo assim realizar um curso de ITIL V3 porque as mudanças foram grandes e com um alto nível de impacto.

###Gestão de TI

COBIT

Controle genéricos aplicáveis a todos os processos - PC1 Metas e Objetivos do Processo (Process Goals and Objectives)Define e comunica as metas e objetivos específicos, mensuráveis, acionáveis, realísticos, orientados a resultados e no tempo apropriado. Assegura que os processos estão ligados aos objetivos de negócio e que são suportados por métricas apropriadas.- PC2 Propriedade dos Processos (Process Ownewship)Designa um proprietário para cada processo de TI e claramente define os papéis e responsabilidades de cada proprietário.- PC3 Repetibilidade dos Processos (Process Repeatability)Elabora e estabelece cada processo de TI de maneira que possa ser repetido. Fornece uma sequência lógica (mas flexível) das atividades que levarão ao resultado desejado. Usa processos consistentes, quando possível, e processos personalizados apenas quando inevitável.- PC4 Papéis e Responsabilidades (Roles and Responsabilities)Define as atividades-chaves e as entregas do processo. Designa e comunica papéis e responsabilidades para uma efetiva e eficiente execução das atividades-chaves e sua documentação bem como a responsabilização pelo processo e suas entregas.- PC5 Políticas, Planos e Procedimentos (Policy, Plans and Procedures)As políticas, planos e procedimentos devem ser documentados, revisados, atualizados, aprovados e comunicados a todos os envolvidos, também designa responsáveis para cada uma dessas atividades.- PC6 Melhoria do Processo de Performance (Process Performance Improvement)Os processos devem ter o seu desempenho medido. Estabelece metas a serem atingidas, e como os dados serão obtidos

Controles de Aplicativos AC1 Preparação e Autorização de Dados Originais: assegura que os documentos fonte

sejam preparados por pessoal autorizado e qualificado seguindo os procedimentos estabelecidos, levando em consideração uma adequada segregação de funções relacionadas com a criação e aprovação desses documentos;

Page 247: Apam

AC2 Entrada e Coleta de Dados Fontes: estabelece que a entrada de dados seja executada de maneira apropriada por pessoal autorizado e qualificado;

AC3 Testes de Veracidade, Totalidade e Autenticidade: assegura que as transaçõessejam exatas, completas e válidas;

AC4 Processamento Íntegro e Válido: mantém a integridade e validade dos dados nociclo de processamento;

AC5 Revisão das Saídas, Reconciliação e Manuseio de Erros: estabelece procedimentos e responsabilidades associadas para assegurar que as saídas sejam manuseadas de uma forma autorizada, entregues para os destinatários corretos e protegidas durante a transmissão;

AC6 Autenticação e Integridade das Transações: antes de transportar os dados das transações entre os aplicativos e as funções de negócios/operacionais (internas ou externas à organização), verifica endereçamento adequado, autenticidade da origem e integridade do conteúdo.

###Banco de dados

The ROLLUP, CUBE, and GROUPING SETS operators are extensions of the GROUP BY clause. The ROLLUP, CUBE, or GROUPING SETS operators can generate the same result set as when you use UNION ALL to combine single grouping queries; however, using one of the GROUP BY operators is usually more efficient.The GROUPING SETS operator can generate the same result set as that generated by using a simple GROUP BY, ROLLUP, or CUBE operator. When all the groupings that are generated by using a full ROLLUP or CUBE operator are not required, you can use GROUPING SETS to specify only the groupings that you want. The GROUPING SETS list can contain duplicate groupings; and, when GROUPING SETS is used with ROLLUP and CUBE, it might generate duplicate groupings. Duplicate groupings are retained as they would be by using UNION ALL.

Técnica de indexação em DWHUma técnica chamada indexação bitmap (mapa de bits) constrói um vetor de bits para cada valor em um domínio (coluna) que está sendo indexado. Essa técnica funciona muito bem para domínios de baixa cardinalidade.

Em um esquema estrela, os dados dimensionais podem ser indexados para tuplas na tabela de fatos por uma indexação de junção. Índices de junção são índices tradicionais para a manutenção de relacionamentos entre os valores da chave primária e da chave estrangeira. Eles relacionam os valores de dimensão de um esquema estrela às linhas na tabela de fato.

###Linguagem de programação

J2EE

Backing beanA JavaBeans component that corresponds to a JSP page that includes JavaServer Faces components. The backing bean defines properties for the components on the page and methods that perform processing for the component. This processing includes event handling, validation, and processing associated with navigation.

###

Page 248: Apam

Governança de TI

Normas

ISO/IEC 15504 - Avaliação de Maturidade e Capacidade de Processos

A norma internacional ISO/IEC 15504 – Process Assessment estabelece os princípios, requisitos e metodologias a aplicar na avaliação (assessment) do estado de capacidade e maturidade das empresas, de acordo com o modelo de processos definido pela norma ISO/IEC 12207 – Software Life Cycle Processes.

ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, que se enquadra no modelo de qualidade das normas da família 9000. A norma brasileira correspondente é a NBR ISO/IEC 9126.

###Governança de TI

CMMI

Áreas de processo

Nível Nome Objetivo2 Gerência de configuração (CM) Manter a integridade dos produtos

de trabalho usando a identificação, controle, contabilidade de status e

auditoria de configuração.2 Medições e análise (MA) Desenvolver e manter uma

capacidade de medida usada para dar suporte ao gerenciamento das

necessidades de informação.3 Gerência de capacidade e disponibilidade

(CAM)Desempenho de sistema de serviço efetivo; recursos são providos para serem usados eficientemente para

dar suporte aos requisitos de serviços.

3 Definição de processo organizacional (OPD)

Estabelecer e manter um conjunto utilizável de ativos de processos

organizacionais, padrões de ambiente de trabalho e

regras/diretrizes para equipes.3 Foco no processo organizacional (OPF) Planejar, implementar e implantar

melhorias nos processos organizacionais baseado num

completo entendimento das forças atuais e fraquezas dos processos da organização e ativos dos processos.

3 Resolução e análise de decisão (DAR) Analisar possíveis decisões usando um processo de avaliação formal que

avalia alternativas identificadas contra critérios estabelecidos.

Page 249: Apam

3 Gerênciamento de projeto integrado (IPM)

Estabelecer e gerenciar o projeto e o envolvimento dos stakeholders de

acordo com um processo integrado e definido que é adaptado do conjunto de processos-padrão da organização.

4 Desempenho do processo organizacional (OPP)

Estabelecer e manter um entendimento quantitativo

5 Resolução e análise causal (CAR) Identificar causas de resultados selecionados; tomar providência para

melhorar o desempenho do processo.

5 Gerenciamento de desempenho organizacional (OPM)

Gerenciar, proativamente, o desempenho da organização para

encontrar seus objetivos de negócio.

###Gestão de TI

Princípios básicos da Governança Corporativa

TransparênciaMais do que "a obrigação de informar", a Administração deve cultivar o "desejo de informar", sabendo que da boa comunicação interna e externa (particularmente quando espontânea, franca e rápida) resulta um clima de confiança, tanto internamente, quanto nas relações da empresa com terceiros. A comunicação não deve restringir-se ao desempenho econômico-financeiro, mas deve contemplar também os demais fatores (inclusive intangíveis) que norteiam a ação empresarial e que conduzem à criação de valor.

EquidadeCaracteriza-se pelo tratamento justo e igualitário de todos os grupos minoritários, sejam do capital ou das demais "partes interessadas" (stakeholders), como colaboradores, clientes, fornecedores ou credores. Atitudes ou políticas discriminatórias, sob qualquer pretexto, são totalmente inaceitáveis.

Prestação de contas (accountability)Os agentes da governança corporativa devem prestar contas de sua atuação a quem os elegeu e respondem integralmente por todos os atos que praticarem no exercício de seus mandatos.

Responsabilidade CorporativaConselheiros e executivos devem zelar pela perenidade das organizações (visão de longo prazo, sustentabilidade) e, portanto, devem incorporar considerações de ordem social e ambiental na definição dos negócios e operações.

###Linguagens de programação

Extract method

antesFunção() {

Bla.print;

Page 250: Apam

Bla2.print;}depoisFunção() {

Imprimir();}Imprimir() {

Bla.print;Bla2.print;

}

Move method

Antesclass Project { Person[] participants;}

class Person { int id; boolean participate(Project p) { for(int i=0; i<p.participants.length; i++) {

if (p.participants[i].id == id) return(true); } return(false); } }

Depoisclass Project { Person[] participants; boolean participate(Person x) { for(int i=0; i<participants.length; i++) {

if (participants[i].id == x.id) return(true); } return(false); } }

class Person { int id;}

Extract class

Page 251: Apam

###Arquitetura de computadores

Pipeline

- A técnica Pipelining permite ao processador executar múltiplas instruções paralelamente em estágios diferentes.- Técnica que divide a execução da instrução em muitas partes, cada uma manipulada por uma parte dedicada do hardware, e todas elas podendo ser executadas em paralelo

Pipeline de 5 estágios1) Busca de instrução na memória .2) Leitura dos registradores e decodificação das instruções.3) Execução da instrução e cálculo do endereço de desvio.4) Acesso a um operando na memória .5) Escrita de um resultado em um registrador .

###Arquitetura de computadores

Características de projeto de I/O: robustez entre falhas e expansibilidade.Desempenho depende: característica do dispositivo, conexão do dispositivo e o resto do sistema, hierarquia de memória e do sistema operacional.

Tipos de barramentos:- Barramento processador-memória: curtos, geralmente de grande velocidade.- Barramento de I/O: longos, podem ter muitos tipos de dispositivos ligados a ele. Não são ligados diretamente na memória. São ligados a um barramento backplane ligado à memória.- Barramento backplane: é construído em uma estrutura de interconexão com o chassi (backplane).- Baramentos backplane e I/O: padrões.- Barramento processador-memória: proprietário.

Barramento síncrono: existe um sinal de clock para controle e um protocolo fixo de comunicação relativo ao clock.Vantagens: fácil implementação, máquina de estados para controle pequeno e, portanto, rápido.Desvantagens: cada dispositivo deve funcionar na mesma frequência do clock; não podem ter distâncias longas se a frequência for grande.

Page 252: Apam

O PCI Express oferece as seguintes vantagens sobre PCI: usa tecnologia serial provendo performance escalável; alta banda passante; link ponto a ponto para cada dispositivo em vez de um barramento compartilhado.

###Sistemas operacionais

Multiprogramação: quando se tem um CPU simulando o multiprocessamento.Multiprocessamento: quando se tem vários CPU’s de fato.

###Arquitetura de computadores

Dispositivos de E/SAs funções mais importantes de um módulo de E/S podem ser divididas nas seguintes categorias: controle e temporização, comunicação com o processador, comunicação com dispositivos, área de armazenamento temporário de dados e detecção de erros.

###