domingo, 6 de novembro de 2016

Ferramentas CASE

1 - O que são ferramentas CASE?
As ferramentas CASE ( Computer Aided Software Engineering ) estão para a Engenharia de Software assim como o CAD ( Computer Aided Design ) está para a Engenharia Civil. São programas que auxiliam o Analista na construção do sistema, prevendo ainda na prancheta, como será sua estrutura, quais serão suas classes, entidades, seus fluxos internos e muitos outros detalhes. São elaborados vários diagramas que em conjunto constituem praticamente uma “planta” do sistema a ser desenvolvido.

2 - Ferramentas CASE se dividem em três categorias. Explique sobre as três

01. Lower CASE – ferramentas de codificação (front-end);
Apoia as etapas iniciais de criação dos sistemas: as fases de planejamento, análise e projeto do programa ou aplicação.
02. Upper CASE – ferramentas de análise, projeto e implementação;
Apoiam a parte física, isto é, a codificação testes e manutenção da aplicação.
03. Integrated CASE – união de Upper e Lower CASE, ou seja, cobrem todo o ciclo de vida do software.

3 - Como escolher a ferramenta?
O primeiro passo é saber qual será o uso da ferramenta na sua empresa. Isto é, ferramenta para codificação ou ferramenta para análise. Como existem inúmeras tarefas no desenvolvimento e várias ferramentas no mercado, responder esta pergunta não será atividade fácil.

Outro fator importante é que a ferramenta deve ser aderente ao conceitos (análise estruturada ou orientação a objetos, por exemplo) de trabalho na sua empresa.Como estes conceitos e técnicas evoluem no tempo. É importante que a ferramenta escolhida suporte várias técnicas ou esteja preparada para evoluir
(UPGRADE).

Vale a pena lembrar que, as perguntas abaixo são muito importantes na escolha da ferramenta:

01. O time de desenvolvimento está preparado tecnicamente para trabalhar com ferramentas case?
02. Preciso capacitar os recursos de minha empresa?
03. A metodologia de desenvolvimento em minha empresa está “amadurecida”?

Na prática, as ferramentas existentes no mercado possuem as características colocadas acima, destacam-se os seguintes pontos:

Desenvolvidas sobre uma arquitetura inteligente (customizável);
Possuem "facilitadores" para auxiliar nas tarefas repetitivas;
Verificação da consistência através de regras específicas;
Geração de relatórios para acompanhamento do trabalho;
Interfaces com outros aplicativos de desenvolvimento.

Em resumo, as ferramentas CASE automatizam uma grande variedade de tarefas: Geração de documentação,Testes, Engenharia Reversa, Geração de código, Geração
de Relatórios entre outras atividades. Por este motivo, também são conhecidas como “Ferramentas de Produtividade”.

Escolher a melhor ferramenta não é uma tarefa simples. Cada empresa tem necessidades e problemas específicos a serem resolvidos.

Referências

http://www.devmedia.com.br/ferramentas-case-parte-i/1505

Elementos de um Sistema Operacional

Um processo é definido como um programa em execução. Um mesmo programa pode ter mais de um processo. Cada um possui um espaço reservado na memória principal, contendo informações como a pilha de execução, o código-fonte e os dados utilizados por ele. Uma característica fundamental dos processos é que o sistema operacional tem controle sobre ele, podendo interromper, reiniciar, criar e destruir conforme necessário. Para que isso ocorra sem perdas de dados, são armazenados os identificadores de usuário (UID), do processo (PID) e às vezes de grupo (GID), além do estado no momento que o processo é interrompido para tratar outro, registrado nos registradores da CPU. Cada grupo de informações de determinado processo está armazenado na tabela de processos do sistema. Essa tabela é um vetor e portanto possui um limite para a quantidade de processos que o sistema operacional pode lidar. Outra característica é que um processo “pai” é capaz de criar novos processos “filhos”, gerando uma estrutura de árvore, uma hierarquia.

Os arquivos são como divisões que servem para organizar os dados no disco. Há arquivos especiais, denominados pastas ou diretórios, que são caracterizados por agrupar dentro de si outros arquivos comuns ou diretórios, e ajudam a regionalizar os arquivos, facilitando sua busca. A junção de todos os arquivos existentes é chamada de sistema de arquivos. Graças aos diretórios, são formadas hierarquias similares a aquelas de processos, representadas com uma estrutura de árvore também, onde o diretório-raiz / é o tronco, os diretórios do sistema os galhos principais e outros arquivos, as folhas e galhos menores. Para chamar um arquivo específico há dois modos: nome absoluto, onde chama-se cada diretório desde / até o nome do arquivo, ou relativo, partindo apenas do diretório de trabalho. Os únicos arquivos disponíveis a acesso são aqueles que integram o sistema operacional, portanto, para utilizar uma mídia removível como um CD, é necessário definir o ponto de montagem, um diretório no qual será inserido o sistema de arquivos do CD, e então montá-lo ali, resultando uma hierarquia singular. Há dois tipos de arquivos especiais: arquivos de bloco, que são maioria, podem ser acessados em qualquer ordem, enquanto os arquivos especiais de caracteres só podem ser acessados por certo fluxo de caracteres consecutivos. Podemos alterar a entrada e a saída de dados dos processos utilizando um pipe (do inglês “tubo”), uma espécie de pseudoarquivo.

O interpretador de comandos, conhecido como terminal ou shell, é uma interface capaz de receber comandos inseridos via teclado, interpretá-los e executar. Ele pode ser a interface principal do sistema, como no MS-DOS ou por opção no Linux, ou ser emulado no modo gráfico). Ao inicializar, ele apresenta o símbolo $, informando que está logado como usuário comum e pronto para receber o comando. Alguns comandos básicos são date, que mostra a data e a hora atual do sistema, e cat exemplo.txt, que mostrará o conteúdo do arquivo exemplo.txt. Ao digitar date e pressionar enter, o interpretador exibe a data e hora em uma linha, depois disso pula uma linha e mostra $ de volta. Esta é uma tarefa simples, mas outras mais complexas, como o download de um arquivo, pode demorar certo tempo e você pode não dispor de espera para executar outra coisa. Para isso, pode colocar um comando para rodar em segundo plano, e o interpretador libera sua interface para a inserção de novas tarefas, para tanto basta adicionar o símbolo & no final no comando lento.


Um processo não pode acessar diretamente o hardware; ele realiza chamadas ao sistema operacional, para que este execute aquilo que ele precisa. Entre eles, existem as bibliotecas, procedimentos pré-definidos que facilitam a escrita de atividades um pouco complexas. O procedimento chama a biblioteca que por sua vez chama o kernel do sistema.

Referências

http://www.videoaula.rnp.br/portal/videoaula.action?idItem=448

Fim do Império Romano


Roma foi a maior cidade de toda a Antiguidade, e teve também o império mais grandioso. Foi base para toda a cultura ocidental atual, na Arte, na guerra, na política, linguagem e assim por diante. Em seu auge, o Império Romano dominava um quinto da população mundial, entre 50 e 65 milhões de pessoas, estendendo-se ao redor de todo o Mar Mediterrâneo e além. Mesmo com tamanha supremacia, como regra, nenhum império é para sempre. Será abordado a seguir como aconteceu a queda de Roma em um contexto geral, seus motivos e consequências.

O Império Romano propriamente dito foi estabelecido em 27 a.C., ao fim da República Romana. Sua principal característica era uma estrutura em maioria comercial, ao invés de agrária, onde as províncias, terras conquistadas pelos romanos, forneciam recursos como escravos e impostos para a capital Roma, situada às margens do Rio Tibre, na Itália. Para manter esse sistema, possuiam exércitos poderosos, uma teia de estradas para facilitar a logística, e frequentemente guerreavam com povos vizinhos, seja para defesa ou conquistar novos espaços.


Seu auge foi em volta de 117 d.C., e a decadência se tornou perceptível no século III. Sendo a escravidão por dívida considerada ilegal, o único meio de obter novos escravos era a tomada de terras, mas nesta época, havia terminado o período de conquistas territoriais. O exército se dedicava exclusivamente para a defesa, e com a falta de mão de obra escrava nas lavouras, a produção começou a cair, enquanto dentro do governo, haviam altos gastos com luxo e corrupção.

Conforme a lei de oferta e procura, quanto menor a quantidade produzida de determinado produto e maior a necessidade por ele, maior é o preço, e vice-versa. Foi isso que aconteceu: a população, tendo que pagar mais para sobreviver, não mais conseguia pagar os impostos para o imperador. Os cofres do império se esvaziavam, e não havia dinheiro suficiente para a construção de estradas, pagamento de salários, compra de armas, muito menos serviços destinados à plebe. Uma grave inflação ocorria.
Ao manter grupos de militares patrulhando as fronteiras muito distantes dos líderes verdadeiros, esses grupos foram perdendo as características de lealdade, patriotismo e organização típicos de exércitos romanos. Eram recrutadas pessoas da redondeza, como camponeses e até mesmo os “bárbaros”: tribos germânicas que não estavam sob controle do Império e viviam ao oeste, noroeste e norte do território, algumas conhecidas por sua selvageria e caos ao lutar. Outro fator a enfraquecer o exército foi a falta de salário vindo da capital, que levou muitos a desistirem dos postos.

No ano de 395 d.C., o imperador Teodósio divide o território romano em dois: Império Romano Ocidental, cuja capital continuou a ser Roma, e o Império Romano Oriental, com a cidade de Bizâncio como capital, que foi rebatizada de Constantinopla sob comando de Constantino. Esta, por sua vez, se estendeu por mais de um milênio após o fim do outro império, se tornando o Império Bizantino.

Somada a condições climáticas, a fragilidade de Roma atraiu a atenção de muitos povos vizinhos do norte da Europa e regiões da Ásia. Iniciou-se uma onda migratória desses para dentro de terras romanas, em sua maioria pacífica, mas com conflitos com o exército romano. Por medo dos saques e assassinatos, a população urbana, que já estava em situação extremamente precária, realizou um êxodo urbano, indo se estabelecer no campo e criando o sistema de colonato, que consistia na relação entre pessoas com precárias condições de subsistência e grandes proprietários de terras, que contratavam seus serviços e, em troca, ofereciam proteção e terras para o trabalho. Muitos proprietários que possuíam escravos passaram a libertá-los e a estabelecer também o regime de colonato com eles. Esse processo acabou por provocar uma decadência dos centros urbanos e da atividade comercial nas cidades, deixadas nas mãos dos novos conquistadores.

Os hérulos, comandados pelo general Odoacro, invadem Roma no ano de 476 d.C., depondo Rômulo Augusto, um imperador de apenas 15 anos que foi viver com conforto em um castelo em Nápoles, assim dando fim ao império ocidental.

A queda de Roma foi um marco na história da humanidade, que permitiu o desenvolvimento das tantas culturas distintas na Europa, e consequentemente, tudo o que conhecemos hoje como Hemisfério Ocidental. As diferentes tribos que tomaram o território romano deram origem a agrupamentos que hoje são países como Inglaterra, Portugal, Espanha, França e em diante. No campo, o sistema de colonato foi uma das primeiras características da Idade Média, que didaticamente iniciou-se logo após a queda de Roma. O cristianismo, que ganhou adeptos durante a desestruturação do império, se torna a religião principal e ajuda a moldar a nova sociedade européia. 

Referências







Método de Ordenação Bubble Sort em Python

#Código adaptado de:
#http://www.devmedia.com.br/entendendo-o-algoritmo-bubble-sort-em-java/24812
desordenado = [ ]
n = input("Digite o tamanho da lista que deseja ordenar: ")
for i in range(n):
x = input("Digite valor: ")
desordenado.append(x)
print("Valores inseridos: "); print(desordenado)
for i in range(n):
for j in range(n-1):
if desordenado[j] > desordenado[j+1]:
aux = desordenado[j]
desordenado[j] = desordenado[j+1]
desordenado[j+1] = aux
ordenado = desordenado
print("Lista ordenada:"); print(ordenado)