quarta-feira, 25 de abril de 2012

Softwares

DEFINIÇÃO
As instruções processáveis pelos componentes eletrônicos do sistema de computação, escritas por desenvolvedores e organizadas de forma sequencialmente lógica, são chamadas de softwares.
Organizados em programas e mantidos geralmente nos grandes bancos de dados, os softwares são informações que existem em duas formas básicas: componentes não executáveis em máquina e componentes executáveis em máquina.
Esses componentes são criados por meio de uma série de conversões que mapeiam as exigências do cliente para código executável em máquina.
Um modelo ou protótipo das exigências é convertido num projeto, o qual é convertido numa forma de linguagem de programação que especifica a estrutura de seus dados, os atributos procedimentais e os requisitos relacionados.
Essa forma de linguagem, com vocabulário limitado, gramática explicitamente definida e regras de sintaxe e semântica bem formadas, é processada por um tradutor que a converte em instruções executáveis em máquina.


CLASSIFICAÇÃO
Segundo Pressman, os softwares se classificam em sete categorias, ampliando as três genéricas de Verzello (sistema, linguagem e aplicação), as quais se diferenciam pela complexidade de suas aplicações. São elas:
- Básico: auxilia outros programas;
- Tempo real: monitora, analisa e controla eventos do mundo real;
- Comercial: reestrutura os dados de uma forma que facilita as operações comerciais e as tomadas de decisões administrativas;
- Científico e de engenharia: algoritmos de processamento numérico;
- Embutido: controla produtos e sistemas para os mercados industriais e de consumo;
- Computador pessoal: processamento de textos, planilhas eletrônicas, computação gráfica, diversões, gerenciamento de dados, aplicações financeiras pessoais e comerciais, redes externas ou acesso a banco de dados, etc.;
- Inteligência artificial: algoritmos não numéricos para resolver problemas complexos que não sejam favoráveis à computação ou à análise direta.


EVOLUÇÃO
A primeira família  de linguagem de programação imperativa, desenvolvida a partir da década de
1950 e conhecida globalmente, foi a Fortran (acrônimo da expressão"IBM MathematicalFORmulaTRANslation System").



Sua principais versões foram:
- Fortran II (1958): cartão perfurado com colunas adequadas a programação;
- Fortran IV (1966): programas numericamente intensivos;
- Fortran 77 (1977): alinhamento das linhas do programa;
- Fortran 8X (1980): novos conceitos em programação, fundamentado outros, como a definição de novos tipos de dados, o que permitia ao programador definir estruturas de dados mais adequadas para resolver problemas, alocação dinâmica de dados, subprogramas recursivos;
- Fortran 90: mecanismos para manipulação de arranjos, que não são oferecidos por nenhuma outra linguagem;
- Fortran 95 (1996): próximo ao padrão à linguagem High Performance Fortran ou HPF a qual é voltada para o uso de computadores com arquiteturas avançadas;
- Fortran 2003: controle de exceções e programação orientada a objetos.

Seu primeiro compilador foi desenvolvido para o IBM 704 em 1954/57 por uma equipe da IBM, chefiada por John W. Backus. O compilador era optimizado, pois os autores acreditavam que ninguém iria usar essa linguagem se a sua prestação não fosse comparável com a da
linguagem assembly da época.
A Fortran permite a criação de programas que primam pela velocidade de execução. Com isso, reside seu uso em aplicações científicas computacionalmente intensivas como meteorologia, oceanografia, física, astronomia, geofísica, engenharia e economia, por exemplo.


Outra família de linguagens importante é a Lisp.


As primeiras idéias-chave para a linguagem foram desenvolvidas por John McCarthy em 1956, durante um projeto de pesquisa em Inteligência Artificial (IA), no qual surgiu-se a idéia de desenvolver uma linguagem algébrica para processamento de listas. A primeira implementação dessa linguagem deu-se no inverno de 1958.
 Esforços para a implementação de seus primeiros dialetos foram empreendidos no IBM 704, IBM 7090, DEC PDP-1, DEC PDP-6 e DEC PDP-10. O dialeto principal entre 1960 e 1965 foi o Lisp 1.5. No início dos anos 1970, houve outros dois dialetos predominantes, desenvolvidos através de esforços anteriores: MacLisp e Interlisp.
Linguagem madura, concebida atenciosamente, altamente portável, de força industrial com a qual desenvolvedores em todo o mundo contam para:
- Ferramenta rápida e altamente personalizável para fazer coisas do dia a dia.
- Aplicações grandes, complexas e críticas as quais seriam impossíveis desenvolver em outra linguagem.
- Prototipação rápida e Rapid Application Development (RAD).
- Aplicações de alta disponibilidade, principalmente aquelas que necessitam de mudanças após a etapa inicial.
A linguagem teve um grande sucesso em software do ramo de negócios, engenharia, processamento de documentos, hipermídia (incluindo a Web), matemática, gráficos e animação, Inteligência Artificial e processamento de linguagem natural.
Uma das grandes vantagens de Lisp é que ela trata o programa como dado, possibilitando assim um programa inteiro ser dado como entrada de um outro, coisa que não acontece em outras linguagens como C e Pascal. E usada algumas vezes para definir todos os aspectos de uma aplicação, ou apenas o motor de processamento interno, ou apenas a interface do usuário; e ainda é usada com rotina para prover linguagens de comando interativas, linguagens de macro ou script e linguagens extensoras de sistemas comerciais.


A linguagem de programação de alto nível voltada principalmente para aplicações científicas, foi denominada de Algol ("ALGOrithmic Language", isto é, Linguagem Algorítmica).
As duas características principais do Algol são: a clareza e a elegância da sua estrutura baseada nos blocos e o estilo de sua definição, que usa uma linguagem metalingüística para definir de forma concisa e relativamente completa a sua sintaxe.
Principais Versões:
- Algol 58: primeira proposta da linguagem;
- Algol 60: versão mais conhecida da linguagem de Programação Estruturada (evento-chave na história das linguagens de programação);
- Algol 68: versão bem mais poderosa, porém menos conhecida;
- Elliot Algol: a versão estendida da Burroughs;
- Dcalgol: Data Communications Algol, uma extensão da Burroughs para Algol;
- Algol-W: proposta por Niklaus Wirth, no comitê de transição de Algol 60 para Algol 68: antecessora de Pascal;
- S-algol: Algol com tipos de dados ortogonais, desenvolvido por Ron Morrison;
- Jovial;
- Simula.



Em 1991, na Sun Microsystems, foi iniciado o Green Project, o berço do Java, uma linguagem de programação orientada a objetos.
Os desenvolvedores do projeto eram Patrick Naughton, Mike Sheridan e James Gosling. O objetivo do projeto não era a criação de uma nova linguagem de programação, mas antecipar e planejar a próxima era do mundo digital. Eles acreditavam que, em algum tempo, haveria uma convergência dos computadores com os equipamentos e eletrodomésticos comumente usados pelas pessoas no seu dia-a-dia.
A dinâmica tecnologia Java foi projetada tendo em vista os seguintes objetivos:
- Orientação a objetos - Baseado no modelo de Simula67;
- Portabilidade - Independência de plataforma - "Escreva uma vez, execute em qualquer lugar" ("Write once, run anywhere");
- Recursos de Rede - Possui extensa biblioteca de rotinas que facilitam a cooperação com protocolos TCP/IP, como HTTP e FTP;
- Segurança. Pode executar programas via rede com restrições de execução.
Além disso, podem-se destacar outras vantagens apresentadas pela linguagem:
- Sintaxe similar a C/C++;
- Facilidades de Internacionalização - Suporta nativamente caracteres Unicode;
- Simplicidade na especificação, tanto da linguagem como do "ambiente" de execução (JVM);
- É distribuída com um vasto conjunto de bibliotecas (ou APIs);
- Possui facilidades para criação de programas distribuídos e multitarefa (múltiplas linhas de execução num mesmo programa);
- Desalocação de memória automática por processo de
coletor de lixo;
- Carga Dinâmica de Código (coleção de classes armazenadas independentemente e que podem ser carregadas no momento de utilização).




A maior empresa de software, fenômeno de crescimento e faturamento na economia mundial, é a Microsoft. Fundada em 4 de abril de 1975 por Bill Gates e Paul Allen, na cidade de Albuquerque, Condado de Bernalillo no estado do Novo México, e tem a com sua sede a One Microsoft Way na cidade Redmond, Condado de King no estado de Washington, EUA.



Cibernética
Teoria formada pelos aspectos relevantes de outras quatro teorias: informação, jogos, controle e algoritmo. Oriunda dos diferentes trabalhos de:
- Alan M. Turig: Lógica Das Máquinas;
- Claude Shammon: Teoria Da Informação;
- Ludwig Von Bertalanffy: Teoria Geral Dos Sistemas;
- James Watt: Inventor do regulador centrífugo de pressão nas máquinas á vapor, automatização via - Feedback (realimentação) negativo;
John Von Neumanm: Teoria Matemática Dos Jogos.
A Cibernética juntamente á Teoria da Informação de Shammon abriram um novo caminho para o entendimento entre o homem e a máquina. Ocupando-se de estruturas e funções lógico-matemáticas de autoregulação, construção de computadores e redes telefônicas mais elaboradas, permitindo a autonomia de um sistema (seja um organismo, uma máquina, um grupo social) e, a criação e o desenvolvimento de softwares.   


DESENVOLVENDO SOFTWARES
O processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com o objetivo de se obter um produto de qualidade, suprindo as necessidades do cliente.
Esse conjunto da-se da seguinte forma:
- Análise: extração e intensificação dos requisitos de um desejado produto de software, compreendendo o domínio da informação, bem como a função, desempenho e interface exigidos pelo cliente;
- Projeto: processo de múltiplos passos que se concentra em quatro atributos distintos do programa: estrutura de dados, arquitetura de software (representação abstrata do sistema), detalhes procedimentais e caracterização de interface;
 - Implementação (ou codificação): tradução do projeto numa forma legível por máquina, proporcionando a execução mecânica do projeto, quando executada detalhadamente;
- Teste: concentra-se na verificação dos aspectos lógicos internos do software, garantindo que todas as suas instruções funcionam corretamente;
- Manuntenção e melhorias: descoberta de novos problemas e requisitos para uma maior funcionalidade e qualidade do programa.

Os projetos de software, em sua grande parte, não atendem suas expectativas em termos de funcionalidades, custo, ou cronograma de entrega. Dessa forma, não existe um modelo de processo ou metodologia perfeito para todas aplicações, de forma previsível e repetível que melhore a sua produtividade e qualidade.
Alguns tentaram sintetizar e formalizar a tarefa aparentemente incontrolável de escrever um software. Outros, aplicaram técnicas de gerenciamento de projeto na escrita de software.
Dentre esses processos, destacam-se os:
- Cascata (Sequencial): estabelecem os requisitos, os analisam, projetam uma abordagem para solução, arquitetam um esboço do software, implementam o código, testam (inicialmente os testes unitários e então os testes de sistema), implantam e mantêm;
- Iterativo e incremental: prescreve a construção de uma pequena porção, mas abrangente, do projeto para ajudar a todos os envolvidos a descobrir mais rápido os problemas, suposições e/ou falhas que possam a levar a um desastre qualquer;
- Ciclo de vidas;
- Evolucional (Prototipação): especificação, projeto e desenvolvimento de protótipos;
- V-Model: organizado melhor que a Cascata, o qual permite que se compare com outros modelos mais modernos;
- Espiral: evolução através de vários ciclos completos de especificação, projeto e desenvolvimento;
- Componentizado: reuso através de montagem de componentes já existentes;
- RAD;
- Ágeis (Método Formal): abordagens matemáticas para resolver possíveis problemas de software e hardware ao nível de requisito, especificação e projetos. Como por exemplo, Método-B, Redes Petri, RAISE e VDM.




________________________________________________________________________________
' REFERÊNCIAS:
  Filho, Cléuzio Fonseca. História Da Computação: Teoria E Tecnologia
  http://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software
  http://pt.wikipedia.org/wiki/Fortran
  http://pt.wikipedia.org/wiki/Lisp
  http://pt.wikipedia.org/wiki/ALGOL
  http://pt.wikipedia.org/wiki/Java_%28linguagem_de_programa%C3%A7%C3%A3o%29
  http://www.batebyte.pr.gov.br/modules/conteudo/conteudo.php?conteudo=299

Nenhum comentário:

Postar um comentário