Escolar Documentos
Profissional Documentos
Cultura Documentos
- Organização básica do PC: Memória central (RAM e ROM), Periféricos de Entrada, Periféricos de
Saída, Memória Secundária e no meio a CPU. Memória RAM é um tipo de memória volátil que serve para
rodar aplicações depois que o computador já está ligado, e cujas informações são perdidas depois do
desligamento da máquina (memória volátil, precisa de energia para armazenar as informações). Já a
memória ROM é algo completamente diferente, pois se refere a um tipo de memória quase permanente
(não-volátil, as informações ficam salvas mesmo sem energia, pc desligado). Memória Flash (pen-drive).
- Memória Lógica e Física: Os processos não enxergam a memória física, hardware usado para
endereçar os circuitos integrados de memória, e sim a memória lógica, que é a memória capaz de ser
endereçada e acessada pelo conjunto de instruções do processador, sendo que cada processo possui a
sua memória lógica que é independente da memória lógica dos outros processos. A memória física é
implementada pelos circuitos integrados de memória, pela eletrônica do computador. Ela possui espaço de
endereçamento físico que é o conjunto formado por todos os endereços dos circuitos integrados que
formam a memória, normalmente esses endereços são em formato hexadecimal. A memória lógica possui
um espaço de endereçamento lógico, maior que o espaço de endereçamento físico, é formado por todos
os endereços lógicos gerado pelo processo, sendo gerado pela CPU e único por processo. Como o
processo "enxerga" endereço de memória lógico e o hardware "enxerga" endereço de memória físico é
necessário ter a conversão de endereço de memória lógico para endereço de memória físico. Esse
mapeamento de endereço lógico em endereço físico é feito pela MMU, unidade de gerência de memória.
Basicamente a MMU que vai mapear os endereços lógicos gerados pelos processos nos correspondentes
endereços físicos que serão enviados para a memória.
- Tipos de Memória: Acesso sequencial – A memória fica organizada em unidades de dados chamadas
registros, sendo acessados de forma linear. Tem um tempo de acesso variável. Um exemplo deste tipo é a
fita magnética; Acesso direto – Assim como o acesso sequencial, o acesso direto envolve um mecanismo
compartilhado de leitura-escrita compartilhado, sendo os seus blocos ou registros com endereços
exclusivos, baseado no local físico. O tempo de acesso é variável. Um exemplo deste tipo de memória são
os discos; Acesso aleatório – Cada local endereçável na memória tem um mecanismo de endereçamento
exclusivo, fisicamente interligado. O tempo de acesso independe da sequência de acessos anteriores e é
constante. Algumas memórias principais e sistemas de cache são de acesso aleatório; Associativo –
Neste tipo, é utilizado também um acesso aleatório, mas que faz uma comparação de um certo número de
bit desejados dentro de uma palavra para uma combinação especificada, fazendo isso com todas as
palavras simultaneamente. A palavra será recuperada com base em uma parte de seu conteúdo, em vez
de seu endereço. As memórias cache podem empregar o acesso associativo. Quanto ao desempenho,
temos: Tempo de acesso (latência) – Para a memória de acesso aleatório, esse é o tempo gasto para
realizar uma operação de leitura e escrita. Já para a memória sem acesso aleatório, é o tempo gasto para
posicionar o mecanismo de leitura-escrita no local desejado; Tempo de ciclo de memória – Esse tipo é
aplicado ao acesso aleatório, sendo o tempo de acesso mais qualquer tempo adicional antes que um
segundo acesso possa iniciar. Este tipo se refere ao barramento do sistema, e não do processador; Taxa
de transferência – Essa é a taxa em que os dados podem ser transferidos para dentro ou fora de uma
unidade de memória. Para as de acesso aleatório, ela é igual a 1/(tempo de ciclo). Já para a memória de
acesso não aleatório, é utiliada a seguinte: Tempo de ler-escrever N bits = Tempo de acesso médio +
(número de bits/taxa de trasnferência de bits por segundo). Algumas outras características são: Memória
Volátil – A informação se deteriora naturalmente ou se perde quando a energia elétrica é desligada.
Exemplos: memória RAM, cache, registradores; Memória Não-Volátil – A informação fica guardada até
que seja deliberadamente mudada. Neste caso, nenhuma energia elétrica é necessária para reter
informação. Os dados são armazenados de forma mais permanentemente em dispositivos externos, de
armazenamento em massa, assim como arquivos de programas e dados, sendo este tipo, também
utilizado para oferecer uma extensão à memória principal, conhecida como memória virtual. Estas também
são conhecidas por memória secundária ou memória auxiliar. Exemplo: memórias com superfície
magnética (discos e fitas); Memória não apagável – Conhecidas por “Memória ROM”, ou “memória
somente leitura”. Consequentemente é uma memória não-volátil.
Componentes básicos do PC: Unidade Central de Processamento (CPU) – Módulo que realiza as
operações necessárias; Memória Principal – Uma área de trabalho para o armazenamento das
informações que serão processadas; Dispositivos de E/S – Dispositivos para o recebimento de
informações e retorno/armazenamento dos resultados; Sistemas de Interconexão – Um meio através do
qual os dispositivos possam se comunicar e transmitir dados. Os principais elementos da CPU são a
Unidade de Controle, a Unidade Lógica e Aritmética (ULA) e os Registradores. Esses elementos se
conectam internamente através do barramento interno da CPU. Unidade de Controle Responsável por
buscar as instruções na memória e determinar o seu tipo e pode ser pensada como uma máquina de
estados finitos. Controla não só a transferência de dados e instruções para dentro e parafora da CPU,
como também a operação da ULA. Unidade Lógica e Aritmética Responsável pelo processamento de
dados como executar operações de adição, e AND booleano, entre outras, e para executar as instruções.
Registradores Os registradores presente na CPU são memórias pequenas e de alta velocidade para
armazenar resultados temporários e controle de informações. Existem vários tipos de registradores de uso
geral ou específico. O mais importante deles é o contador do programa (PC – Program Counter). Este
contador indica a próxima instrução a ser buscada para execução. Outro de grande importância é o
Registrador de instrução (Instruction Register), que contém a instrução executada no momento em
questão. A CPU se comunica com o mundo externo através dos barramentos do sistema. Ao longo da
execução de um programa, os barramentos constituem os chamados caminho dos dados. No topo da
organização hierárquica de memória em um sistema se encontram os registradores. Esses se dividem em
dois tipos: Registradores visíveis ao Usuário e Registradores de Controle e de Estado. Os registradores
visíveis ao usuário são aqueles que podem ser referenciados pela linguagem de montagem. Eles podem
ser registradores de dados, endereço ou então de propósito geral. Os registradores de Controle e de
Estado são utilizados para controlar a operação da CPU. Na maioria das vezes não são visíveis aos
usuários. Exemplos de registradores de Controle e de Estado são o Program Counter (PC), Instruction
Register (IR), Memory Address Register (MAR), Memory Buffer Register (MBR), Program Status Word
(PSW), Stack Pointer (SI), Page Table Base Register (PTBR), Page Table Base Limit (PTBL). A sequência
de eventos ao longo de um ciclo de instrução depende do projeto da CPU, no entanto, em termos gerais,
pode-se indicar o que acontece em nos subciclos de busca, indireto e interrupção. O ciclo de execução
depende do código da operação que será executada. Durante o ciclo de busca, o contador de programa
contém o endereço da próxima instrução a ser buscada na memória. Esse endereço é movido para o
registrador MAR e a unidade de controle requisita uma leitura na memória. O resultado da leitura e
colocado no registrador MBR, que em seguida é copiado para o registrador IR. Enquanto isso o PC é
incrementado de 1 para preparar a busca da próxima instrução. Ao fim do ciclo de busca, o unidade de
controle examina se a instrução especifica algum operando com endereçamento indireto. Os n bits mais a
direita de MBR são colocados em MAR, e então a unidade de controle requisita uma leitura a memória
para carregar o valor do operando para MBR. No ciclo de interrupção, o conteúdo do registrador PC
dever ser salvo, para que mais tarde a CPU possa retornar sua atividade normal depois de processar a
interrupção. O conteúdo do PC é transferido para MBR. A endereço de memória reservado para guardar o
valor de PC (ex: topo da pilha) é carregado para MAR, e então a unidade de controle solicita uma escrita
na memória. Por fim o PC é carregado com o endereço da rotina de interrupção, para que o no próximo
ciclo de instrução seja feita a busca da instrução apropriada.
Um processo é basicamente um programa em execução. Associado a cada processo está o seu espaço
de endereçamento e uma lista de posições de memória que este processo pode ler e escrever. Também
associado a cada processo está um conjunto de registradores, que inclui o contador de programa, o
ponteiro para a pilha de execução e demais informações necessárias para executar um programa. Em um
sistema multiprogramado, a CPU salta de programa para programa, executando cada um deles por
dezenas ou centenas de vezes por segundo. Estritamente falando, enquanto a cada instante a CPU
executa somente um programa, no decorrer de um segundo ela pode trabalhar sobre vários programas,
dando a ilusão de um verdadeiro paralelismo. Fala-se em pseudoparalelismo para contrastar com o real
paralelismo dos sistemas multiprocessadores. Quando um processo é suspenso temporariamente dessa
maneira, ele deverá ser reiniciado mais tarde, exatamente do mesmo ponto em que ele estava quando foi
interrompido. Logo, todas as informações relativas ao processo devem ser explicitamente salvas. Por
exemplo, um processo pode ter vários arquivos abertos para leitura. Existe um ponteiro associado a cada
um desses arquivos, que indica a posição atual, assim quando o processo retorna a execução, a chamada
de sistema read sobre o arquivo poderá ler os dados corretamente de sua última posição manipulada. Em
muitos sistemas operacionais os dados relativos ao processo, que não estejam em seu espaço de
endereçamento, são armazenados em uma tabela do Sistema Operacional chamada de tabela de
processos, contendo uma entrada para cada processo. Estados de Processos Os processos em um
Sistema Operacional possuem três estados, estes estados são: Em execução: realmente usando a CPU
naquele instante; Pronto executável, temporariamente parado para dar lugar a outro processo;
Bloqueado incapaz de executar enquanto um evento externo esperado não ocorrer. As transições entre
os estados, estas transições são: 1 Processo bloqueia aguardando um entrada dos dispositivos de E/S. 2
O escalador de processos seleciona outro processo. 3 O escalador de processos seleciona este processo.
4 A entrada torna-se disponível. A transição 1 ocorre quando um processo descobre que ele não pode
prosseguir. No UNIX, quando um processo lê de um arquivo especial e não há entrada disponível, o
processo é automaticamente bloqueado. As transições 2 e 3 são causadas pelo escalonador de processos
sem que o processo saiba disso. A transição 2 ocorre quando o escalonador decide que o processo em
execução já teve tempo suficiente de CPU e é momento de deixar outro processo ocupar o tempo de CPU.
A transição 3 ocorre quando o escalonador define que é justo que o processo retorne a ser executado,
após ter compartilhado a CPU com outros processos. A transição 4 ocorre quando um evento externo pelo
qual um processo estava aguardando (por exemplo, a chegada de uma dado vindo da placa de rede).
Note que a transição 4 não leva o processo diretamente para o estado “Em Execução”, pois pode existir
um outro processo em execução e este processo que estava bloqueado deve aguardar sua vez no
escalonador. T
Memória Virtual O conceito básico da Memória Virtual é que um programa pode está com sua parte ativa
em memória e o restante em disco, por exemplo, um programa com 16MB de memória pode rodar em um
computador de 4MB de memória, sendo parte do programa dinamicamente carregado em memória de
acordo com a necessidade de execução. Na multiprogramação vários programas podem ter pedaços
ativos deles em memória, enquanto o resto se encontra em disco. Ficando como responsabilidade do
Sistema Operacional o controle de indicar que programas devem ficar na memória e quais devem ficar em
disco, chaveando estes programa a medida que forem sendo exigidos pelo usuário.
- Conversão de Base. Decimal – base 10, algarismos de 0 à 9; Binário – base 2, algarismos 0 e 1; Octal –
base 8, algarismos de 0 á 7; Hexadecimal – base 16, algarismos de 0 á 9 e letras A á F.
O sistema operacional é uma coleção de programas que: Inicializa o hardware do computador; Fornece
rotinas básicas para controle de dispositivos; Fornece gerência, escalonamento e interação de tarefas;
Mantém a integridade de sistema. Características: Ambiente de trabalho, barra de tarefas, ícones,
acessórios, painel de controle e explorador de arquivos.
1. Classificação Dos Sistemas Operacionais: Os primeiros Sistemas Operacionais foram feitos para
executarem uma única tarefa em um computador específico, sendo utilizado por um único usuário a cada
tarefa. Com o desenvolvimento da informática, os sistemas operacionais foram evoluindo, e hoje podem
ser classificados de acordo com as seguintes análises: •Características básicas da Arquitetura do Sistema:
Monolítico, Microkernel ou Híbrido. •Capacidade de execução das tarefas: Monotarefa ou Multitarefa;
•Quantidade de usuários que podem operar o sistema: Monousuário ou Multiusuário. Também pode ser
classificado em relação a: - Processamento (Multiprocessados, fortemente acoplados
(multiprocessadores), fracamente acoplados (multicomputadores)), - tarefas (monotarefa ou multitarefas), -
Usuário (Monousuario/monotarefa, monousuário/multitarefa ou multiusuario) e – Interface (Grafica ou
Linha de Comando).
Comunicação entre processos: é o grupo de mecanismos que permite aos processos transferirem
informação entre si. Pode ser feito por: Memória Compartilhada (Pipes nomeados(FIFO) ou Pipes
uniderecionais): uma região de memória é compartilhada entre os processos ou; Troca de Mensagem (filas
de mensagens): Ocorre por meio de troca de mensagens entre os processos.
Sincronização entre Processsos: permite gerir o acesso concorrente a recursos do sistema operativo de
forma controlada por parte dos processos, de maneira que um recurso não seja modificado em simultâneo,
ou que os processos não fiquem em espera que o recurso seja libertado. Pode ser feito por meio de: -
sinais; -semaforos; - Sinais Posix; -Tratamento de sinais; -ações default; - Bloqueio de sinais; - Pipe, -
Socket.
Concorrência entre Processos: As aplicações concorrentes tem como base a execução cooperativa de
múltiplos processos ou threads que trabalham em uma mesma tarefa na busca de um resultado comum
(exemplo de uma conta com saldo de R$ 100, duas retiradas de R$ 50 e uma de R$80 e o saldo fica –
R$30, onde neste caso os processos foram executados juntos ao invés de um de cada vez).
BANCO DE DADOS
São coleções organizadas de dados que se relacionam de forma a criar algum sentido (Informação).
Modelo E-R Um modelo entidade relacionamento é uma maneira sistemática de descrever e definir um
processo de negócio. O processo é modelado como componentes (entidades) que são ligadas umas as
outras por relacionamentos que expressam as dependências e exigências entre elas, como: um edifício
pode ser dividido em zero ou mais apartamentos, mas um apartamento pode estar localizado em apenas
um edifício. Entidades podem ter várias propriedades (atributos) que os caracterizam. Diagramas criados
para representar graficamente essas entidades, atributos e relacionamentos são chamados de diagramas
entidade relacionamento. Um modelo MER é normalmente implementado como um banco de dados. Nos
casos de um banco de dados relacional, que armazena dados em tabelas, as próprias tabelas
representam as entidades. Alguns campos de dados nestas tabelas apontam para índices em outras
tabelas. Tais ponteiros representam relacionamentos.
Análise de Requisitos O primeiro passo para a criação do modelo correto é entender a necessidade. A
isso chamamos de Análise de Requisitos. É preciso, primeiramente, levantar os requisitos que darão a
ideia inicial do sistema. Nessa fase — que é considerada a mais importante do processo —, procura-se
entender a regra de negócio estabelecida, por meio da qual será desenhado o que chamamos de
minimundo. Esse termo procura descrever o universo de relações de negócios que serão atendidas pelo
modelo a ser implementado. Na análise de requisitos, atividades como entrevistas e reuniões para discutir
os processos que serão controlados pelo sistema são de suma importância para que o desenho do modelo
seja o mais fiel possível à realidade e atenda de forma satisfatória à expectativa do interessado. Pode-se
dizer, sem medo, que o sucesso das próximas fases dependerá do entendimento claro da necessidade do
cliente.
Modelagem de dados conceitual Vem após a analise de requisitos. Nessa etapa as informações obtidas
servem como entrada para geração do desenho conceitual. Costuma-se utilizar o recurso chamado
modelo entidade-relacionamento, em que se define os agentes que farão parte das rotinas e os
relacionamentos entre esses agentes. Por exemplo, há uma entidade chamada “cliente” e outra chamada
“carro”. O relacionamento que é estabelecido entre essas duas entidades provavelmente será chamado de
"compra". Assim, no desenho conceitual, tem-se que “o cliente compra o carro”. Nesse momento, também
se estabelece a cardinalidade entre as entidades, ou seja, usando o exemplo citado, definem-se as regras,
como: Se um cliente compra um ou vários carros; Se um carro pode ser comprado por um ou vários
clientes. Nesse ponto, já se inicia a materialização das regras de negócios discutidas na primeira etapa.
Se fosse uma locadora de automóveis, um carro poderia ser alugado por um ou mais clientes (claro,
apenas por um de cada vez).
Projeto de BD O projeto de um novo banco de dados dá-se em três fases, descritas a seguir: 1.
Modelagem conceitual – nesta primeira fase, é construído um modelo conceitual, na forma de um
diagrama entidade-relacionamento. Este modelo captura as necessidades da organização em termos de
armazenamento de dados de forma independente de implementação. 2. Projeto lógico – a etapa de projeto
lógico objetiva transformar o modelo conceitual obtido na primeira fase em um modelo lógico. O modelo
lógico define como o banco de dados será implementado em um SGBD específico. 3. Projeto físico – na
etapa de projeto físico, o modelo do banco de dados é enriquecido com detalhes que influenciam no
desempenho do banco de dados, mas não interfere em sua funcionalidade. O modelo obtido neste passo
é o modelo físico do banco de dados. Este processo normalmente é chamado de sintonia (“tuning”).
continuo.
Programação de BD Os bancos de dados relacionais compartilham entre si, uma característica muito
interessante, todos eles usam uma linguagem chamada SQL. SQL não é uma linguagem de programação.
É um linguagem que é usada exclusivamente para criar tabelas, manipular os dados das tabelas e
principalmente, consultar os dados. É através do SQL, que os programas interagem com um banco de
dados relacional. Praticamente todas as linguagens de programação têm bibliotecas
Consultas em BD
XML é uma linguagem de marcação que possui como principal característica a capacidade de descrever
diversos tipos de dados com facilidade. Ela é considerado uma linguagem de marcação, pois ela contem
códigos que são utilizados para organizar, formatar e padronizar sequências de dados para posteriormente
serem interpretados. Dessa forma, a XML é um formato para a criação de documentos com dados
organizados de forma hierárquica. Ele carrega com ele tanto as informações como também marcações
que indicam o significado de cada informação descrita. Além disso, por conta de sua portabilidade (uma
vez que a XML é um formato independente de plataforma de hardware ou software), um sistema pode,
através de um conversor, escrever em um arquivo XML, e outro sistema distinto pode ler estes mesmos
dados. Isto facilita o trabalho de integração de ferramentas.
Ferramentas Case é uma classificação que abrange todas as ferramentas baseadas em computadores
que auxiliam atividades de engenharia de software, desde análise de requisitos e modelagem até
programação e testes. Podem ser consideradas como ferramentas automatizadas que tem como objetivo
auxiliar o desenvolvedor de sistemas em uma ou várias etapas do ciclo de vida do desenvolvimento de um
software. Objetivos - Melhoria da qualidade de software; Aumento da produtividade no processo de
software. Vantagens do uso de ferramentas CASE: Qualidade no produto final; Produtividade; Agilizar o
tempo para tomada de decisão; Menor quantidade de códigos de programação; Melhoria e redução de
custos na manutenção; Agilidade no retrabalho do software; Maior facilidade para desenvolvimento.
Desvantagens do uso de ferramentas CASE: - Incompatibilidade de ferramentas; - Formação para
utilização.
UML UML é um acrônimo para a expressão Unified Modeling Language. Pela definição de seu nome,
vemos que a UML é uma linguagem que define uma série de artefatos que nos ajuda na tarefa de modelar
e documentar os sistemas orientados a objetos que desenvolvemos.Ela possui nove tipos de diagramas
que são usados para documentar e modelar diversos aspectos dos sistemas. A maioria dos problemas
encontrados em sistemas orientados a objetos tem sua origem na construção do modelo, no desenho do
sistema. Muitas vezes as empresas e profissionais não dão muita ênfase à essa fase do projeto, e acabam
cometendo diversos erros de análise e modelagem. Isso quando há modelagem, pois nós profissionais da
área sabemos que muitas vezes o projeto começa já na fase de codificação. Aqui se faz o diagrama de
caso de uso (cenário, ator, tarefa).
Controle de Acesso É todo controle feito quanto ao acesso ao BD, impondo regras de restrição,
através das contas dos usuários. O Administrador do BD (DBA) é o responsável superior por declarar as
regras dentro do SGBD. Ele é o responsável por conceder ou remover privilégios, criar ou excluir usuários,
e atribuição de um nível de segurança aos usuários do sistema, de acordo com a política da empresa.
Controle de Inferência É um mecanismo de segurança para banco de dados estatísticos que atua
protegendo informações estatísticas de um individuo ou de um grupo. Bancos de dados estatísticos são
usados principalmente para produzir estatísticas sobre várias populações. O banco de dados pode conter
informações confidenciais sobre indivíduos. Os usuários têm permissão apenas para recuperar
informações estatísticas sobre populações e não para recuperar dados individuais, como, por exemplo, a
renda de uma pessoa específica.
Controle de Fluxo É um mecanismo que previne que as informações fluam por canais secretos e
violem a política de segurança ao alcançarem usuários não autorizados. Ele regula a distribuição ou fluxo
de informação entre objetos acessíveis. Um fluxo entre o objeto A e o objeto B ocorre quando um
programa lê valores de A e escreve valores em B. Os controles de fluxo têm a finalidade de verificar se
informações contidas em alguns objetos não fluem explicita ou implicitamente para objetos de menor
proteção. Dessa maneira, um usuário não pode obter indiretamente em B aquilo que ele ou ela não puder
obter diretamente de A.
Criptografia de Dados. É uma medida de controle final, utilizada para proteger dados sigilosos
que são transmitidos por meio de algum tipo de rede de comunicação. Ela também pode ser usada para
oferecer proteção adicional para que partes confidenciais de um banco de dados não sejam acessadas por
usuários não autorizados. Para isso, os dados são codificados através da utilização de algum algoritmo de
codificação. Assim, um usuário não autorizado terá dificuldade para decifrá-los, mas os usuários
autorizados receberão chaves para decifrar esses dados. A criptografia permite o disfarceda mensagem
para que, mesmo com o desvio da transmissão, a mensagem não seja revelada.
Usuários Abrange usuários e esquema do banco de dados onde cada banco de dados Oracle tem
uma lista de nomes de usuários. Para acessar um banco de dados, um usuário deve usar um aplicativo
desse tipo e tentar uma conexão com um nome de usuário valido. Cada nome tem uma senha associada
para evitar o uso sem autorização. Devem ser implementados ainda diferentes perfis de usuário para
diferentes tarefas no Oracle, tendo em vista que cada aplicação/usuário tem a sua necessidade de acesso.
Existe ainda a possibilidade de proteger os perfis com senha, o que é uma excelente medida. Além dessas
medidas, o uso de cotas aumenta a restrição de espaço em disco a ser utilizado por usuários/aplicativos.
Privilégios Os privilégios são permissões únicas dadas a cada usuário ou grupo. Eles definem
permissões para tipos de autorização. Pelos privilégios é possível autorizar o usuário a modificar ou
alcançar determinado recurso do Banco de Dados. Os privilégios também são armazenados em catálogos
do próprio Banco de Dados, visto que os grupos de autoridade por já possuírem grupos predefinidos de
privilégio concedem implicitamente privilégios a seus membros. Tipos de privilégios discricionários O
SGBD deve oferecer acesso seletivo a cada relação do banco de dados baseando-se em contas
específicas. As operações também podem ser controladas; assim, possuir uma conta não
necessariamente habilita o possuidor a todas as funcionalidades oferecidas pelo SGBD. Informalmente
existem dois níveis para a atribuição de privilégios para o uso do sistema de banco de dados: - O nível de
conta: Nesse nível, o DBA estabelece os privilégios específicos que cada conta tem, independente das
relações no banco de dados. - O nível de relação (ou tabela): Nesse nível, o DBA pode controlar o
privilégio para acessar cada relação ou visão individual no banco de dados.
Controle de acesso utilizando Triggers Com a utilização das Triggers é possível criar
mecanismos de segurança mais complexos que podem ser disparados cada vez que um evento é
chamado. O comando Insert na tabela é exemplo de um evento que pode ser usado para disparar uma
Triggers, além disso, as mesmas podem ser disparadas antes ou depois de comando especificado com o
objetivo de prover maior rigor no controle de segurança. Se o comando executado pelo usuário não for
validado pela Triggers, um erro é sinalizado do corpo da própria Triggers para impedir que a tabela seja
modificada indevidamente.
BD geográficos São banco de dados preparados para armazenar dados sobre informações espaciais.São
comumente chamados de Sistemas de Informações Geográficas (SIG). Este tipo de banco de dados tem o
intuito manipular um imenso volumes de informações de grande complexidade, como mapas e imagens de
satélite.
PROGRAMAÇÃO
Algoritmos um algoritmo é uma sequência finita de ações executáveis que visam obter uma
solução para um determinado tipo de problema.[1][2] Segundo Dasgupta, Papadimitriou e
Vazirani, "algoritmos são procedimentos precisos, não ambíguos, mecânicos, eficientes e
corretos". O conceito de algoritmo existe há séculos e o uso do conceito pode ser atribuído a
matemáticos gregos, por exemplo a Peneira de Eratóstenes e o algoritmo de Euclides. O conceito
de algoritmo é frequentemente ilustrado pelo exemplo de uma receita culinária, embora muitos
algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de
decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo
corretamente executado não irá resolver um problema se estiver implementado incorretamente ou
se não for apropriado ao problema. Jean Luc Chabert. Um algoritmo não representa,
necessariamente, um programa de computador,[4] e sim os passos necessários para realizar uma
tarefa. Sua implementação pode ser feita por um computador, por outro tipo de autômato ou
mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um
conjunto diferenciado de instruções em mais ou menos tempo, espaço ou esforço do que outros.
Tal diferença pode ser reflexo da complexidade computacional aplicada, que depende de
estruturas de dados adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode
especificar que você vista primeiro as meias e os sapatos antes de vestir a calça enquanto outro
algoritmo especifica que você deve primeiro vestir a calça e depois as meias e os sapatos. Fica
claro que o primeiro algoritmo é mais difícil de executar que o segundo apesar de ambos levarem
ao mesmo resultado. Algorithmics. O conceito de um algoritmo foi formalizado em 1936 pela
Máquina de Turing de Alan Turing e pelo cálculo lambda de Alonzo Church, que formaram as
primeiras fundações da Ciência da computação.
Duas técnicas muito usadas para resolver um problema de otimização são Programação
Dinâmica e Algoritmos Gulosos. Cada uma delas é capaz de resolver de forma eficiente
problemas com propriedades específicas, mas compartilham uma característica em comum:
ambas precisam que o problema exiba uma subestrutura ótima.
- Subestrutura Ótima: Esta propriedade do problema significa que posso construir a solução
ótima do problema a partir de soluções ótimas de partes do problema, ou seja, um problema
exibe esta estrutura se a solução ótima contém soluções ótimas de subproblemas do original. O
problema ter subestrutura ótima também implica que não preciso usar um algoritmo de
enumeração (que seria exponencial) para poder resolver o problema e que posso expressar a
solução do problema com uma recorrência. A partir desta recorrência posso desenvolver o
algoritmo. Para provar que um problema exibe esta propriedade normalmente supomos que
existe uma solução melhor para o subproblema e mostramos como esta suposição contradiz a
otimalidade do problema original.
- Algoritmos Gulosos: Um algoritmo Guloso resolve problemas que possuem subestrutura ótima
e que podemos fazer uma mesma escolha a cada passo do algoritmo e chegamos a solução
ótima global. Em um problema deste tipo, otimizo baseado em atributos locais e consigo uma
solução ótima global. Esta escolha é chamada de "Greedy Choice property" e é essencial para
um algoritmo guloso. Mostrar que essa escolha é válida significa que não preciso de nenhum
resultado futuro para saber se a solução que possuo em um passo qualquer é ótima. Para poder
provar que um problema admite como solução uma algoritmo guloso preciso provar, então, que o
problema possui subestrutura ótima e que possui a "Greedy Choice property"(algo potencialmente
difícil). Um jeito possível de se provar que posso fazer uma escolha gulosa é pegar uma solução
ótima do problema e mostrar que posso começá-la com uma escolha gulosa e que a cada passo
posso fazer essa escolha e reduzir o problema para um subproblema menor. Pela otimalidade da
subestrutura consigo uma solução ótima global.
Otimizar algoritmos é efetuar essa melhora em algum algoritmo pronto para resolução de um
determinado problema, mas que ainda pode ser alterado para efetuar a resolução da melhor
maneira possível ou encontrada, visto que para selecionar a melhor maneira dependemos de
termos escolhas e critérios
Programação Orientada a Objetos (também conhecida pela sua sigla POO) é um modelo de
análise, projeto e programação de software baseado na composição e interação entre diversas
unidades chamadas de 'objetos'.[1] A POO é um dos 4 principais paradigmas de programação (as
outras são programação imperativa, funcional e lógica). Os objetos são operados com o conceito
de 'this' (isto) ou 'self' (si), de forma que seus métodos (muitas vezes) modifiquem os dados da
própria instância. Os programas são arquitetados através de objetos que interagem entre si.
Dentre as várias abordagens da POO, as baseadas em classes são as mais comuns: objetos são
instâncias de classes, o que em geral também define o tipo do objeto. Cada classe determina o
comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim
como o relacionamento com outros objetos.[2] A alternativa mais usual ao uso de classes é o uso
de protótipos. Neste caso, objetos são cópias de outros objetos, não instâncias de classes.
Javascript e Lua são exemplos de linguagens cuja POO é realizada por protótipos. A diferença
prática mais evidente é que na POO baseada em protótipos apenas a herança simples é
implementada pela cópia do objeto. Assim, na POO, implementa-se um conjunto de classes
passíveis de serem instanciadas como objetos, e.g. Python e C++ (ou objetos protótipos que são
copiados e alterados, e.g. JavaScript e VimL).
Em alguns contextos, o termo modelagem orientada ao objeto (MOO) é preferível ao termo POO.
De fato, o paradigma "orientado ao objeto" tem origem nos estudos da cognição e influenciou a
inteligência artificial e a linguística, dada a relevância para a abstração de conceitos do mundo
real. A MOO é considerada a melhor estratégia para diminuir o "gap semântico" (o hiato entre o
mundo real e a representação dele), e facilita a comunicação das partes interessadas no modelo
ou software (e.g. o modelador e o usuário final) na medida em que conceitos, terminologia,
símbolos, grafismo e estratégias, são, potencialmente, mais óbvios, intuitivos, naturais e exatos.
Muitas das linguagens de programação mais utilizadas atualmente (talvez a maioria) são multi-
paradigma com suporte à POO. C++, C#, VB.NET, Java, Object Pascal, Objective-C, Python,
SuperCollider, Ruby e Smalltalk são exemplos de linguagens de programação orientadas a
objetos. ActionScript, ColdFusion, Javascript, PHP (a partir da versão 4.0), Perl (a partir da versão
5), Visual Basic (a partir da versão 4), VimL (ou Vim script) são exemplos de linguagens de
programação com suporte a orientação a objetos. Vivace[3] é um exemplo de linguagem sem
suporte à POO.
Os atributos e métodos podem ser referentes a uma classe (e todas as suas instâncias) ou a uma
única instância. O vínculo dos atributos aos métodos, de forma a manter uma interface bem
definida para operação sobre os dados, e a evitar corrupção dos dados, é chamado de
encapsulamento. O encapsulamento foi responsável pelo conceito de 'ocultamento de dados',
central para a POO. O encapsulamento pode ser realizado através de convenções (em Python,
underscores demarcam métodos e atributos protegidos e privados), ou via recursos da linguagem
(em Java ou C++, um método privado só é acessado pela própria classe). Encapsulamento
incentiva o desacoplamento.
Quando um objeto contém outros objetos, diz-se que há composição de objetos. A composição
de objetos é usada para representar uma relação 'tem um', usualmente uma meronímia. Já a
herança (quase sempre suportada pelas linguagens que utilizam classes) apresenta relações 'é
um' (i.e. 'é um tipo de'), ou seja, relações de hiperonímia cujo resultado final é a árvore
taxonômica. Na herança, tipicamente todos os atributos e métodos da classe pai/mãe estão
também disponíveis na classe filha, embora seja comum que algumas características sejam
substituídas. Assim, a herança permite reúso facilitado de características e muitas vezes reflete
relações do mundo real de forma intuitiva. Ambas a 'composição de objetos' e a 'herança'
constituem hierarquias entre as classes e objetos na POO.
Herança múltipla ocorre quando uma classe é filha de mais de uma classe. Mixin pode ser
considerado um tipo especifico de herança, embora haja uma diferença crucial: a classe da qual
são herdadas as características não é considerada pai/mãe.
Polimorfismo é quando alguma rotina pode ser chamada para objetos diferentes. Por exemplo,
assuma que a função retornaCorPrincipal() possa ser chamada tanto em um objeto da classe
Imagem quanto da classe Video. O polimorfismo é um tipo de abstração que simplifica códigos
externos à hierarquia de classes e uma separação forte das responsabilidades (separation of
concerns).
Fundamentos de Programação
HTML (abreviação para a expressão inglesa HyperText Markup Language, que significa
Linguagem de Marcação de Hipertexto) é uma linguagem de marcação utilizada na construção de
páginas na Web. Documentos HTML podem ser interpretados por navegadores. A tecnologia é
fruto da junção entre os padrões HyTime e SGML. HyTime é um padrão para a representação
estruturada de hipermídia e conteúdo baseado em tempo. Um documento é visto como um
conjunto de eventos concorrentes dependentes de tempo (como áudio, vídeo, etc.), conectados
por hiperligações. O padrão é independente de outros padrões de processamento de texto em
geral. SGML é um padrão de formatação de textos. Não foi desenvolvido para hipertexto, mas
tornou-se conveniente para transformar documentos em hiper-objetos e para descrever as
ligações.
CSS Cascading Style Sheets (CSS) é um mecanismo para adicionar estilo (cores, fontes,
espaçamento, etc.) a um documento web. O código CSS pode ser aplicado diretamente nas tags
ou ficar contido dentro das tags <style>. Também é possível, em vez de colocar a formatação
dentro do documento, criar um link para um arquivo CSS que contém os estilos. Assim, quando
se quiser alterar a aparência dos documentos vinculados a este arquivo CSS, basta modifica-
lo[2]. Com a variação de atualizações dos navegadores, o suporte ao CSS pode variar. A
interpretação dos navegadores pode ser avaliada com o teste Acid2, que se tornou uma forma
base de revelar quão eficiente é o suporte de CSS, fazendo com que a nova versão em
desenvolvimento do Firefox seja totalmente compatível a ele, assim como o Opera já é. O
Doctype informado, ou a ausência dele, determina o quirks mode ou o strict mode, modificando o
modo como o CSS é interpretado e a página desenhada.
Linguagem PHP O PHP (um acrônimo recursivo para PHP: Hypertext Preprocessor) é uma
linguagem de script open source de uso geral, muito utilizada, e especialmente adequada para o
desenvolvimento web e que pode ser embutida dentro do HTML. Em vez de muitos comandos
para mostrar HTML (como acontece com C ou Perl), as páginas PHP contém HTML em código
mesclado que faz "alguma coisa" (neste caso, mostra "Olá, eu sou um script PHP!"). O código
PHP é delimitado pelas instruções de processamento (tags) de início e fim <?php e ?> que
permitem que você entre e saia do "modo PHP". O que distingue o PHP de algo como o
JavaScript no lado do cliente é que o código é executado no servidor, gerando o HTML que é
então enviado para o navegador. O navegador recebe os resultados da execução desse script,
mas não sabe qual era o código fonte. Você pode inclusive configurar seu servidor web para
processar todos os seus arquivos HTML com o PHP, e então não há como os usuários dizerem o
que você tem na sua manga. A melhor coisa em usar o PHP é que ele é extremamente simples
para um iniciante, mas oferece muitos recursos avançados para um programador profissional.
Não tenha medo de ler a longa lista de recursos do PHP. Pode entrar com tudo, o mais rápido
que puder, e começar a escrever scripts simples em poucas horas. Apesar do desenvolvimento
do PHP ser focado nos scripts do lado do servidor, você pode fazer muito mais com ele.
C++ é uma linguagem de programação compilada multi-paradigma (seu suporte inclui linguagem
imperativa, orientada a objetos e genérica) e de uso geral. Desde os anos 1990 é uma das
linguagens comerciais mais populares, sendo bastante usada também na academia por seu
grande desempenho e base de utilizadores. - C++ é desenvolvido para ser uma linguagem tipada
estaticamente e de propósito geral que é tão eficiente e portátil quanto o C. - C++ é desenvolvido
para suportar múltiplos paradigmas. - C++ é desenvolvido para fornecer ao programador
escolhas, mesmo que seja possível ao programador escolher a opção errada. - C++ é
desenvolvido para ser o mais compatível com C possível, fornecendo transições simples para
código C. - C++ evita fornecer facilidades que são específicas a certas plataformas ou a certos
grupos de desenvolvedores. - C++ não exige overhead para facilidades que não são utilizadas. -
C++ é desenvolvido para ser utilizado mesmo sem um ambiente de desenvolvimento sofisticado.
Visual Basic é uma linguagem de programação produzida pela empresa Microsoft, e é parte
integrante do pacote Microsoft Visual Studio. Sua versão mais recente faz parte do pacote Visual
Studio .NET, voltada para aplicações .Net. Sua versão anterior fez parte do Microsoft Visual
Studio 6.0, ainda muito utilizado atualmente por aplicações legadas. Um aperfeiçoamento do
BASIC, a linguagem é dirigida por eventos (event driven), e possui também um ambiente de
desenvolvimento integrado (IDE — Integrated Development Environment) totalmente gráfico,
facilitando enormemente a construção da interface das aplicações (GUI — Graphical User
Interface).[1] O nome sabao, é Derivado de: Basic — a linguagem de Programação e Visual — o
Nome do Pacote EX: Visual studio (Visual C++, Visual C#, Visual Basic .NET). Visual Basic era
muito usada em ambientes corporativos: uma pesquisa de 2005 indicou que 62% dos
programadores usavam uma forma de Visual Basic, seguido de C++, JavaScript, C# e Java.
Atualmente foi suplantada pelo Java. Em suas primeiras versões, o Visual Basic não permitia
acesso a bancos de dados, sendo portanto voltado apenas para iniciantes, mas devido ao
sucesso entre as empresas — que faziam uso de componentes adicionais fabricados por
terceiros para acesso a dados — a linguagem logo adotou tecnologias como DAO, RDO, e ADO,
também da Microsoft, permitindo fácil acesso a bases de dados. Mais tarde foi adicionada
também a possibilidade de criação de controles ActiveX, e, com a chegada do Visual Studio
.NET, o Visual Basic — que era pseudo-orientada a objetos — tornou-se uma linguagem
totalmente orientada a objetos (OO). Existem várias linguagens derivadas, entre as quais: -
VBScript é a linguagem default (por definição) para Active Server Pages e pode ser usada no
scripting (programação) de Windows e de páginas da Internet; - Visual Basic .NET é a nova
versão do Visual Basic, que é parte integrante da plataforma Microsoft .NET. Essa versão não é
totalmente compatível com as versões anteriores, mas existe a possibilidade de converter códigos
antigos, que após uma revisão podem ser usados no Visual Basic .NET. Para fins de
comparação, essa linguagem usa o paradigma de Orientação a Objeto e você encontrará muita
semelhança com o Java; - Visual Basic for Applications (VBA) permite a criação de macros, e
está integrado em todos os produtos da família de produtos Microsoft Office, e também em outros
produtos de terceiros tais como Visio (agora pertencente à Microsoft) e WordPerfect Office 2002.
Programação java em arquitetura J2EE Podemos definir J2EE como a plataforma Java para
desenvolvimento e execução de aplicações servidoras, com capacidade de suporte ao
desenvolvimento de aplicações robustas e escaláveis. Consiste em um conjunto de serviços,
interfaces de programação de aplicação (APIs) e protocolos, que oferecem a funcionalidade para
o desenvolvimento de aplicações de multicamadas, baseadas na Web. A plataforma J2EE
estende a linguagem Java através de padrões simples e unificados em aplicações distribuídas
através do modelo baseado em componentes. Características como portabilidade e
interoperabilidade fizeram com que a tecnologia se difundisse e se consolidasse pela industria de
TI. Vale lembrar que Java permite o uso de qualquer sistema operacional, seja ele Windows, Unix
ou Linux, ou mesmo plataforma Mainframe. O foco é simplificar o desenvolvimento de soluções
no âmbito enterprise através de padrões, serviços e, principalmente, componentes modulares.
Estes componentes, unidades de software em nível de aplicação com suporte a um contêiner,
são configuráveis durante o desenvolvimento e incorporam um modelo de programação de
acordo com o "contrato de componente" com seu contêiner. Isto é, um contêiner, oferece serviços
de gerenciamento de ciclo de vida, segurança, distribuição e runtime para seus componentes. A
plataforma define, segunda a especificação da Sun, empresa criadora da linguagem Java, os
seguintes tipos de contêiner: - EJB (Enterprise Java Beans): um dos contêiner mais conhecidos
da arquitetura, especifica um ambiente de runtime para enterprise beans como serviços de
segurança, concorrência, gerenciamento de ciclo de vida, transação, entre outros serviços. Os
beans rodam no servidor J2EE. - WEB: trata-se da implementação de contrato de componente da
Web com a arquitetura J2EE, fornecendo ambiente de runtime para os componentes do tipo web
que incluem desde segurança até gerenciamento de ciclo de vida e transação. Inclui Servlets
(classes Java que podem ser carregadas dinamicamente e executar sob um servidor web)
disponibilizadas por serviços de rede referentes aos pedidos e respostas enviados, com uso
obrigatório do protocolo HTTP. E também engloba JSPs (Java Server Pages - tecnologia Web
que utiliza, por exemplo, linguagens de scripting e objetos Java no servidor para retorno dinâmico
a um cliente). - Applet: contêiner Web que gerencia a execução de applets. - Cliente da aplicação:
Um contêiner que aceita e gerencia a execução de componentes do cliente da aplicação.
Algumas das principais APIs e suas funcionalidades da versão mais atual de J2EE (1.4) são:
Enterprise JavaBeans (componentes do lado servidor); Java Servlet / JavaServer Pages
(webserver que pode usar qualquer outra api); Java Message Service API (JMS) (acesso
padronizado de serviço de mensagens); Java Transaction API (JTA) (gerenciamento de
aplicações distribuídas); JavaMail API / JavaBeans Activation Framework (JAF) (envio e
recebimento de email); J2EE Connector Architecture (JCA) (padronizar conexões entre Java e
ERPs); JDBC (APi de acesso a banco de dados);
O modelo Lógico está relacionado à perspectiva da pessoa: ela encara o problema de uma
perspectiva lógica. Ø Um programa lógico é equivalente à descrição do problema expressa de
maneira formal, similar à maneira que o ser humano raciocinaria sobre ele. Ø Escrever um
programa é como provar um teorema. Ø Exemplo: PROLOG.
O modelo Orientado a Objeto focaliza mais o problema, baseado na união dos conceitos de
dados e operações. Ø Um programa OO é equivalente a objetos que mandam mensagens entre
si. Os objetos do programa equivalem aos objetos da vida real (problema). Ø A primeira
linguagem OO foi Simula, desenvolvida em 1966 e depois refinada em Smalltalk. Existem
algumas linguagens híbridas: Modelo Imperativo mais características de Orientação a Objetos
(OO), assim como C++. Ø Exemplos: Simula, Smalltalk, Object Pascal, C++, Java, Visual Basic,
C#.
Arquitetura de Software
Modelos de Processos Gerais: Modelo cascata Atividades sequenciais Uma fase deve ser
terminada para a outra começar Raramente ocorre na prática. Vantagens: Documentação rígida
(idealmente completa) em cada atividade Reflete abordagens adotadas em outras engenharias
Aderência a outros modelos de processo Pode ser combinado a outros modelos. Desvantagens:
Projetos reais raramente seguem um fluxo sequencial Em geral, é difícil para o cliente
estabelecer todos os requisitos à priori Difícil se adequar a mudanças inevitáveis de requisitos
Uma versão executável somente ficará pronta na fase final do projeto. Quando Aplicar: Sistemas
críticos Quando os requisitos são bem compreendidos Quando há pouca probabilidade dos
requisitos mudarem. Desenvolvimento Incremental: Atividades são intercaladas Objetivo: dar
feedback rápido ao cliente. Vantagens: Permite trabalhar com o cliente o entendimento dos
requisitos Pode-se começar o sistema pelas partes melhor entendidas Feedback rápido ao
cliente. Desvantagens: O processo pode não ser muito claro A gerência do software é
complicada O sistema não é completamente especificado à priori O produto final é
frequentemente mal estruturado A mudança contínua tende a corromper a modularidade do
sistema. Os problemas do desenvolvimento incremental se tornam mais graves em sistemas
críticos. Baseado em Reuso: Baseia-se na existência de um número significativo de
componentes reusáveis O processo se concentra na integração dos componentes reusáveis
Inspirado na analogia com componentes de hardware Exemplo: componentes elétricos /
eletrônicos. Representação: Baseia-se na existência de um número significativo de componentes
reusáveis O processo se concentra na integração dos componentes. Alinhar componentes aos
requisitos: Análise de Componentes Dada uma especificação, encontrar componentes que a
atendam Alteração nos Requisitos Se possível, os requisitos são adaptados aos componentes
existentes. Integração dos componentes: Projeto do Sistema com Reuso Se necessário, projeta-
se novos componentes reusáveis Desenvolvimento e Integração Desenvolvimento de novos
componentes Integração de todos os componentes. Vantagens: Reduz a quantidade de software
a ser desenvolvido Espera-se reduzir os custos e os riscos Espera-se uma entrega do produto
mais rápida ao cliente. Desvantagens: Pode-se desenvolver um produto que não atenda aos
requisitos do cliente Pode ser mais difícil evoluir os sistemas Componentes de terceiros A
gerência de versões dos componentes pode ser complexa. Qual modelo de processo usar?
Sistemas Críticos Sugerido um modelo de processo mais estruturado / rigoroso como o Modelo
Cascata Sistemas de Negócios (requisitos mudam com frequência) Sugerido um modelo de
processo ágil e flexível como o Desenvolvimento Incremental ou o Baseado em Reuso.
10) Gerenciamento das Partes Interessadas do Projeto: O gerenciamento das partes interessadas
também se concentra na comunicação contínua com as partes interessadas para entender suas
necessidades e expectativas, abordando as questões conforme elas ocorrem, gerenciando os
interesses conflitantes e incentivando o comprometimento das partes interessadas com as
decisões e atividades do projeto.
Modelagem
A UML - Linguagem de Modelagem Unificada (do inglês, UML - Unified Modeling Language) é
uma linguagem-padrão para a elaboração da estrutura de projetos de software. Ela poderá ser
empregada para a visualização, a especificação, a construção e a documentação de artefatos
que façam uso de sistemas complexos de software. Em outras palavras, na área de Engenharia
de Software, a UML é uma linguagem de modelagem que permite representar um sistema de
forma padronizada (com intuito de facilitar a compreensão pré-implementação). A UML é
adequada para a modelagem de sistemas, cuja abrangência poderá incluir desde sistemas de
informação corporativos a serem distribuídos a aplicações baseadas na Web e até sistemas
complexos embutidos de tempo real. É uma linguagem muito expressiva, abrangendo todas as
visões necessárias ao desenvolvimento e implantação desses sistemas. A UML (Unified Modeling
Language) não é uma metodologia de desenvolvimento, o que significa que ela não diz para você
o que fazer primeiro e em seguida ou como projetar seu sistema, mas ela lhe auxilia a visualizar
seu desenho e a comunicação entre os objetos (e em certos casos a identificação dos
processos). Basicamente, a UML permite que desenvolvedores visualizem os produtos de seus
trabalhos em diagramas padronizados. Junto com uma notação gráfica, a UML também
especifica significados, isto é, semântica. É uma notação independente de processos, embora o
RUP (Rational Unified Process) tenha sido especificamente desenvolvido utilizando a UML. É
importante distinguir entre um modelo UML e um diagrama[2] (ou conjunto de diagramas) de
UML. O último é uma representação gráfica da informação do primeiro, mas o primeiro pode
existir independentemente. O XMI (XML Metadata Interchange) na sua versão corrente
disponibiliza troca de modelos mas não de diagramas. Os objetivos da UML são: especificação,
documentação, estruturação para sub-visualização e maior visualização lógica do
desenvolvimento completo de um sistema de informação. A UML pode ser vista em 5 visões:
Diagrama de Depuração: Representa uma coleção de componentes e mostra como esses são
distribuídos em um ou vários nós de hardware.
Diagrama de Pacotes: Representa uma coleção de outros elementos de modelagem e
diagramas.
Validação: tem por objetivo, assegurar que o sistema de software está atendendo às reais
necessidades do cliente;
Projeto Nesta fase é que deve ser considerado, como o sistema funcionará internamente, para
que os requisitos do cliente possam ser atendidos. Alguns aspectos devem ser considerados
nessa fase de projeto do sistema, como: arquitetura do sistema, linguagem de programação
utilizada, Sistema Gerenciador de Banco de Dados (SGBD) utilizado, padrão de interface gráfica,
entre outros. No projeto é gerada uma descrição computacional, mencionando o que o software
deve fazer, e deve ser coerente com a descrição realizada na fase de análise de requisitos. O
projeto possui duas atividades básicas: projeto da arquitetura (ou projeto de alto nível), e projeto
detalhado (ou projeto de baixo nível). Em um processo de desenvolvimento orientado a objetos, o
projeto da arquitetura normalmente é realizado por um arquiteto de software. O projeto da
arquitetura visa distribuir as classes de objetos relacionados do sistema em subsistemas e seus
componentes, distribuindo também esses componentes pelos recursos de hardware disponíveis.
Já no projeto detalhado, são modeladas as relações de cada módulo com o objetivo de realizar as
funcionalidades do módulo. Além de desenvolver o projeto de interface com o usuário e o projeto
de banco de dados.
Testes Diversas atividades de testes são executadas a fim de se validar o produto de software,
testando cada funcionalidade de cada módulo, buscando, levando em consideração a
especificação feita na fase de projeto. Onde o principal resultado é o relatório de testes, que
contém as informações relevantes sobre erros encontrados no sistema, e seu comportamento em
vários aspectos. Ao final dessa atividade, os diversos módulos do sistema são integrados,
resultando no produto de software.
Monitoramento e Controle.
Os processos de monitoramento e controle de projetos são vistos por vários frameworks como
processos altamente relacionados, na medida em que o monitoramento consiste na “coleta,
medição e distribuição das informações de desempenho e a avaliação das medições e
tendências para efetuar melhorias no processo” (PMI, 2013, p. 88), ações que passam a
fazer sentido apenas quando ligadas ao processo de controle. Este “inclui a determinação
de ações corretivas ou preventivas ou o replanejamento e acompanhamento dos planos de
ação para definir se as ações tomadas resolveram a questão de desempenho” (Ibid., p. 88).
Modelagem de Sistemas.
Sistemas de Informação
Sistemas de Apoio à Decisão (SAD): Atendem também o nível de gerência ajudando a tomar
decisões não usuais com rapidez e antecedência a fim de solucionar problemas não predefinidos,
usam informações internas obtidas dos SPT e SIG e também externas como preços de produtos
concorrentes etc, Têm maior poder analítico que os outros sistemas, construídos em diversos
modelos para analisar e armazenar dados, tomar decisões diárias, por isso possuem uma
interface de fácil acesso e atendimento ao usuário, são interativos, podendo-se alterar e incluir
dados através de menus que facilitam a entrada deles e obtenção de informações processadas.
Sistemas de Apoio ao Executivo (SAEs): Atendem o nível gerencial, os gerentes seniores que
têm pouco ou nenhuma experiência com computadores, servem para tomar decisões não
rotineiras que exigem bom senso avaliação e percepção. Criam um ambiente generalizado de
computação e comunicação em vez de aplicações fixas e capacidades específicas. Projetados
para incorporar dados externos como leis e novos concorrentes, também adquirem informações
dos SIG e SAD a fim de obter informações resumidas e úteis aos executivos. , não só sob forma
de textos, mas também gráficos projetados para solucionar problemas específicos que se alteram
seguidamente, através de modelos menos analíticos. Ele é formado por estações de trabalho,
menus gráficos , dados históricos e de concorrentes ,bancos de dados externos, e possuem fácil
comunicação e interface. Os Sistemas de Informação se relacionam um com outros a fim de
atender os diversos níveis e organizacionais, sendo os SPT a fonte de dados mais importante
para os outros sistemas, os SAEs são os recebedores de dados de sistemas de níveis inferiores,
os outros trocam dados entre si. Também atendem diferentes áreas funcionais, por isso é
importante e vantajoso a integração entre eles para há informação chegar a diferentes partes da
organização, ma isto tem alto custo, é demorado e complexo por isso cada organização deve ligar
os setores que acha necessário para atender suas necessidades. Quanto a função
organizacional, os SI se dividem em Sistemas de Venda e Marketing, responsável pela venda do
produto ou serviço. O Marketing procura identificar o que os clientes querem consumir e também
os melhores clientes, criando e mostrando novos produtos ou serviços através de propagandas e
promoções, já as Vendas contatam os clientes, oferecem os produtos e serviços fecham pedidos,
acompanham o comércio. No nível estratégico eles monitoram e apóiam novos produtos e
oportunidades e identificam o desempenho dos concorrentes. No nível de Gerência dão suporte a
pesquisas de mercado campanhas promocionais e determinação e preços, analisando o
desempenho do pessoal de vendas, No nível de conhecimento apóiam estações de trabalho
analisando marketing e no Operacional dão suporte ao atendimento e localização de clientes.
Sistemas de Informação de Fabricação e Produção, responsável pela produção de bens e
serviços tratam do planejamento, desenvolvimento, manutenção e estabelecimento de metas de
produção aquisição e armazenagem de equipamentos, matérias primas para fabricar produtos
acabados. No Nível Estratégico ajudam a localizar novas fábricas e investir em novas de
tecnologias de fabricação, no Nível de Gerência analisam e monitoram custos, recursos de
fabricação e produção no de Conhecimento criam e distribuem conhecimentos especializados
orientando o processo de produção e no Operacional monitoram e controlam a produção. Um
exemplo simples deste tipo de sistema s é o controle de estoque com emissão de relatórios.
Ciclos de Sistemas
Criação O sistema é criado com a utilização de um projeto que estabelece os objetivos que o
sistema deverá alcançar. Toda a expectativa em relação ao sistema deve ser declarada no
projeto. Essa criação envolve todo o processo de análise, refinamento de requisitos, declaração
de projeto, documentação, desenvolvimento, testes, implantação e treinamento. É um período
longo e trabalhoso.
Evolução Mudanças nas organizações, no mercado ou ações governamentais forçam os
sistemas a evoluírem para atender as novas necessidades das empresas. A mudança no ciclo de
vida dos sistemas de informação de criação para evolução ocorre quando os sistemas começam
a receber recursos que não estavam previsto no projeto original. Essas mudanças ou evoluções
como alguns chamam são benéficas quando bem implementadas e são necessárias em muitos
casos para dar um impulso no sistema a fim de adequá-lo a novas realidades que vão surgindo.
Novas leis, práticas de consumo, posicionamento da concorrência, entre outros fatores
geralmente forçam mudanças nos sistemas a fim de adequá-lo à nova realidade.
Morte A morte de um sistema de informação nem sempre é declarada, mas ela ocorre quando o
sistema já não atende mais as necessidades da empresa ou dos usuários. Há casos que a
empresa mantém o sistema apenas para consulta de dados antigos ou para operações básicas
que ainda sobrevivem.
Planejamento de Sistemas
A sigla ERP significa “Enterprise Resource Planning”, ou sistema de gestão integrado. Essa
tecnologia auxilia o gestor da empresa a melhorar os processos internos e integrar as atividades
de diferentes setores, como vendas, finanças, estoque e recursos humanos. A partir da
centralização das informações em uma plataforma única, o fluxo de dados corporativos se torna
mais fluido e é compartilhado com facilidade. Ao mesmo tempo, essas soluções eliminam a
duplicidade de informações. Com isso, a solução se mantém como uma base única e íntegra. O
resultado é o acesso a insights valiosos, que contribuem para uma tomada de decisão acertada.
Em um primeiro momento, o sistema ajuda o gestor a: administrar as contas a pagar e a receber,
monitorar as vendas e acompanhar os pedidos de compras. A ferramenta também contribui para
a gestão de pessoas, por meio da oferta de informações sobre a produtividade da equipe, por
exemplo. Dessa maneira, o sistema ERP facilita o gerenciamento das informações de diversos
setores da organização. Essa característica aumenta o controle e o acompanhamento dos
processo
Gestão da qualidade: Em outras palavras, a Gestão da Qualidade Total pode ser definida como
sendo qualquer atividade coordenada para dirigir e controlar uma organização no sentido de
possibilitar a melhoria de seus produtos ou serviços. Essas ações têm como objetivo garantir a
completa satisfação (ou superação) das necessidades e expectativas dos clientes, em relação ao
que está sendo oferecido. Dessa forma, a gestão da qualidade não precisa, necessariamente,
implicar na adoção de alguma certificação, embora este seja o meio mais comum e mais
difundido de garantir a qualidade nas empresas. As 7 ferramentas da gestão da qualidade são: -
Cartas de controle; - Histogramas; - Diagrama de Pareto; - Diagrama de dispersão; -
Fluxogramas; - Diagramas de Ishikawa (diagramas de causa-efeito ou ainda diagramas espinha
de peixe); - Folhas de verificação. O Sistema de Gestão da Qualidade (SGQ) é um conjunto de
elementos interligados, integrados na organização, que funciona como uma engrenagem para
atender à Política da Qualidade e os objetivos da empresa, tornando visível nos produtos e
serviços e atendendo as expectativas dos clientes. O SGQ é uma ferramenta que traz controle e
padronização dos processos e também permite a medição da eficácia das ações tomadas. Tudo
com foco na satisfação do cliente e na busca da melhoria contínua dos processos. Um programa
de gestão da qualidade bem implementado e bem gerenciado proporciona à alta direção
segurança para tomar decisões. O Sistema de Gestão da Qualidade (SGQ) tem o objetivo de
verificar todos os processos da empresa e como esses processos podem melhorar a qualidade
dos produtos e serviços frente aos clientes. A empresa poderá apenas implementar o Sistema de
Gestão da Qualidade e melhorar os processos, mas para que o resultado seja reconhecido, será
necessário que outra empresa especializada em auditoria de gestão da qualidade faça esse
serviço. Assim, obtém-se um certificado da qualidade, isso irá depender da área onde a empresa
atua, e também, das normas que regem esta área. Sendo assim, existem dois tipos de
certificados válidos: - Certificado de acreditação: baseado na norma ABNT NBR ISO/IEC 17025,
relacionada aos Requisitos Gerais para a Competência de Laboratórios de Ensaio e Calibração, e
a ABNT NBR ISO 15189, que diz respeito aos Laboratórios de Análises Clínicas; - Certificação: a
empresa baseia-se na norma NBR ISO 9001, ISO 14001, etc.
Gestão da Efetividade: A efetividade consiste em fazer o que tem que ser feito, atingindo os
objetivos traçados e utilizando os recursos da melhor forma possível. Os termos efetividade e
sucesso, associados a sistemas de informação, são usados como sinônimos na literatura e
significa a obtenção de efeitos desejados na aplicação dos Sistemas de Informação. Dione e
McLean (1992) criaram e apresentaram um modelo de efetividade dos sistemas de informação,
identificando seis categorias ou dimensões do sucesso dos Sistemas de Informações: a)
Qualidade dos Sistemas; b) Qualidade das Informações; c) Uso; d) Satisfação do Usuário; e)
Impacto individual; f) Impacto organizacional
Assim teríamos, por exemplo, a Metodologia Estruturada, na qual existem vários métodos, como
Análise Estruturada e Projeto Estruturado (muitas vezes denominados SA/SD, e Análise
Essencial). Dessa forma, tanto a Análise Estruturada quanto a Análise Essencial utilizam a
ferramenta Diagrama de Fluxos de Dados para modelar o funcionamento do sistema. Segue
abaixo as principais Metodologias e Métodos correspondentes no desenvolvimento de software:
Metodologia versus método: Há uma discussão na ciência a respeito das palavras: metodologia e
método. Elas são largamente utilizados como sinônimos, embora muitos autores acreditem que
seja importante destacar a diferença entre as duas. Uns entendem o método como um processo,
e a metodologia como o estudo de um ou vários métodos. Interessante observar a etimologia
destas palavras. Ambas as palavras derivam do mesmo radical do Grego, méthodos = ‘caminho
para chegar a um fim’ e logia = ‘estudo de’. Na Engenharia de Software, em particular, a
discussão continua. Uns argumentam que método é um processo com uma série de passos, para
construir um software, enquanto que uma metodologia é a codificação de um conjunto de práticas
recomendadas, às vezes acompanhada de material de treinamento, programas de educação
formal, Planilhas, Diagramas. Neste contexto, um método de Engenharia de Software pode ser
considerado como parte da metodologia. Também, alguns autores acreditam que uma
metodologia exista com base em uma abordagem filosófica do problema. Utilizando-se dessas
definições, pode-se afirmar que a Engenharia de Software é rica em métodos, mas com poucas
metodologias.
Uma forte motivação para o foco em qualidade é que o custo relativo de corrigir erros aumenta
drasticamente com a evolução do Ciclo de Vida do Software. Segundo Boehm, citado por
Pressman[5], há corrigir um erro ou defeito na fase de manutenção do software custa 100 vezes
mais que corrigi-lo na fase de requisitos. Pressman[5] indica os seguintes custos relacionados a
qualidade de software, podendo eles ocorrerem tanto na prevenção quanto no tratamento dos
problemas: - Custos de Prevenção: Planejamento da qualidade, Revisões técnicas formais,
Testes, Treinamento; - Custos de Falha Interna: Retrabalho, Reparo, Modo de análise de falha; -
Custo de Falha Externa: Resolução das reclamações, Devolução e substituição, Suporte,
Atendimento à garantia.
- JAD – Joint Application Design: Também chamado de Métodos de Projeto Interativo, substitui as
entrevistas individuais por reuniões degrupo, onde participam os representantes dos envolvidos
no projeto. Essas reuniões são intensas e levam tipicamente de um a três dias. É um método
destinado a extrair informações de alta qualidade dos envolvidos, em curto espaço de tempo,
através de reuniões estruturadas que buscam decisões por consenso. Os benefícios do JAD são:
- Maior produtividade; - Maior qualidade; - Trabalho em equipe; - Custos mais baixos de
desenvolvimento e manutenção.
- Entrevista: Diálogo entre entrevistador e entrevistado. Trata-se uma situação social objetiva,
pois permite que os envolvidos interajam de maneira mais completa.
- Brainstorming: Buscar soluções através de geração espontânea de ideias, onde as regras são:
É permitido ter ideias; Não é permitido julgar ou criticar ideias; Ambiente é não avaliativo. Tem
como base a descontração, o pensamento de que quanto mais ideias melhor, o enriquecimento
da ideia alheia e o evitamento de discussão de ideias.
- Prototipação: Utilizado no estágio inicial do projeto. Ajuda aos stakeholders a desenvolver uma
forte noção sobre a aplicação a qual ainda não foi implementada, que através da visualização da
mesma eles podem identificar os reais requisitos e fluxos de trabalho do sistema. É muito
utilizado quando os stakeholders são incapazes de expressar os seus requisitos ou se os
mesmos não têm nenhuma experiência com o sistema.
Projeto de Arquivos
Engenharia de programas
Testes de software
Documentação
Implantação