ENGENHARIA DE NGENHARIA DE NGENHARIA DE NGENHARIA DE SSSS ISTEMAS ISTEMAS ISTEMAS ISTEMAS CCCC OMPUTACIONAIS OMPUTACIONAIS OMPUTACIONAIS OMPUTACIONAIS
2. ASPECTOS DA ENGENHARIA DE SISTEMAS COMPUTACIONAIS
2.1. Sistema Computacional
Antes de discutir os principais pontos relativos à Engenharia de Sistemas Computacionais, é imprescindível estabelecer uma definição do que é um sistema computacional. Isto é particularmente importante, uma vez que a palavra "sistema" é uma das mais empregadas em qualquer área da atividade humana (sistema político, sistema educacional, sistema de avaliação, etc...).
Dentro do contexto do que será discutido aqui, pode-se definir um Sistema Computacional como sendo um conjunto de elementos interrelacionados que operam
juntos para o alcance de algum objetivo.
Um sistema de processamento de texto, por exemplo, integra funções de entrada e edição de texto com funções de produção de documentos (software e hardware) manipuladas por um usuário (um elemento humano) para transformar um dado texto (uma entrada) num documento (a saída).
Pode-se listar os elementos de um sistema computacional como sendo:
• software, no caso, programas de computador, estruturas de dados, e documentação associada que serve a efetivar os métodos, procedimentos ou processo de controle lógico;
• hardware, que são os dispositivos eletrônicos que definem as capacidades de um computador e dispositivos eletromecânicos que oferecem funcionalidades ao ambiente externo;
• pessoal, usuários/operadores do hardware e do software;
• bancos de dados, uma coleção de informações organizada sistematicamente, acessada através do software;
• documentação, manuais, formulários e outros documentos que podem auxiliar no conhecimento do uso e operação do sistema;
• procedimentos, as regras que especificam o uso específico de cada elemento do sistema computacional.
As combinações destes elementos podem ser as mais diversas para permitir a transformação das informações. Um robô, por exemplo, é um sistema computacional que transforma um arquivo contendo instruções específicas num conjunto de movimentos e ações.
2.2. Composição dos Sistemas Computacionais e as Propriedades Emergentes
É importante reconhecer o papel das atividades relacionadas à Engenharia de Sistemas Computacionais como determinantes para as tarefas que se desenvolveram com base em seus resultados. Embora tenhamos dito que um Sistema Computacional é composto de diferentes elementos, não se deve negligenciar o fato de que a integração destes diferentes elementos é uma tarefa longe de ser trivial. O fato de se ter elementos concebidos com exemplar nível de qualidade não garante que a reunião destes vá originar um sistema excepcional.
Em tais sistemas, as dependências de um elemento do sistema com relação a outros podem se dar em muitos níveis. Por exemplo, o software só pode automatizar a solução de um problema se o processador estiver funcionando de forma adequada. Por outro lado, uma máquina de comando numérico só irá realizar corretamente o seu trabalho se o software de pilotagem tiver sido adequadamente concebido.
Entender o papel da Engenharia de Sistemas Computacionais é constatar que um sistema é algo mais do que a simples união de seus diversos elementos.
Num sistema de grande porte, existe um conjunto de propriedades que são verificados somente a partir do momento em que os diferentes elementos do mesmo são integrados. São as chamadas Propriedades Emergentes. Alguns exemplos destas propriedades são:
• o peso global do sistema, é um exemplo de propriedade que pode ser previamente determinada a partir de propriedades individuais dos componentes;
• a confiabilidade do sistema, que está fortemente dependente da confiabilidade de cada elemento;
• a facilidade de uso, que vai estar relacionada aos diferentes elementos do sistema como o hardware o software, mas também aos usuários do mesmo. 2.3. Sistemas e Subsistemas
Pode-se observar ainda que elementos de um determinado sistema podem operar de forma autônoma, constituindo-se num sistema independente. No entanto, ao serem incorporados ao sistema, suas funcionalidades vão estar dependendo de outros elementos deste. Uma câmera de vídeo, por exemplo, pode ser vista como um sistema independente. Por outro lado, quando ela está embutida num sistema de segurança automatizado, a maior parte de seus ajustes (enquadramento da imagem, foco, ativação e desativação) serão completamente dependentes de outros componentes do sistema de segurança.
Isto significa que, nos sistemas computacionais é comum um dado sistema compor um outro sistema computacional de nível hierárquico superior. Diz-se então que o sistema considerado é um macroelemento ou subsistema do sistema de nível superior.
Um exemplo típico desta situação é aquela dos equipamentos de manufatura, como por exemplo os robôs, máquinas de comando numérico e controladores lógicos
programáveis, que são sistemas computacionais e ao mesmo tempo subsistemas de um
sistema computacional de nível hierárquico superior: a célula de manufatura. A célula de manufatura pode ser definida como um sistema computacional, uma vez que esta é caracterizada por todos os elementos definidos acima. Se for feita uma análise considerando outros níveis hierárquicos, é possível visualizar a célula como um macroelemento de outro sistema computacional: o sistema de manufatura. A figura 3.1 ilustra esta relação entre os diferentes sistemas computacionais descritos.
2.4. Hierarquia e ambiente de um sistema
Reconhecido o fato de que um sistema pode ser obtido a partir de outros sistemas, como o exemplo ilustrado à figura 3.1, surge então o conceito de hierarquia de sistemas, que vai permitir utilizar a definição de subsistema, introduzida anteriormente.
Sistema de Automação da Fábrica Sistema de Manufatura Sistema de Estoques Sistema de Informações Sistema de Transporte de Material Célula Flexível de Manufatura Máquina de Comando Numérico Robô Controlador Lógico Programável
Por esta razão, o ambiente de um sistema deve ser cuidadosamente estudado nesta etapa de concepção. A importância do entendimento completo do ambiente de um sistema é justificada pelos fatores seguintes:
• em grande parte das vezes, o sistema é concebido para provocar alterações no ambiente; sendo assim, a compreensão dos principais aspectos de funcionamento do ambiente serão fundamentais para especificar de que forma o sistema deve agir para provocar as alterações de forma precisa; exemplos de tais sistemas são um sistema de iluminação, um sistema de aquecimento (ou refrigeração) de ambiente;
• mesmo quando a função do sistema não está relacionada a alterações de seu ambiente, é importante se conhecer o quanto o ambiente pode influenciar no funcionamento do sistema; por exemplo, numa rede de computadores a ser instalada numa unidade fabricação de uma empresa, o fato de naquela unidade existir um grande número de motores e inversores operando pode ser determinante para decidir que tipos de protocolos e meios de transmissão deverão ser empregados, devido à alta incidência de fontes de interferência que podem causar erros de comunicação.
Um outro aspecto a ser considerado é o conjunto de requisitos originado no próprio ambiente. Os exemplos deste aspecto são os mais diversos, mas pode-se citar normas de qualidade ou segurança de produtos, requisitos de interface numa dada plataforma, requisitos de vedação, para um sistema computacional que irá operar num ambiente úmido ou sujeito a poeira.
Por todas estas razões, é fundamental que um sistema seja visto sempre como um componente de um sistema maior, o estudo aprofundado das características mais importantes relativas ao ambiente e dos requisitos impostos por este sendo uma tarefa essencial.
2.5. A Aquisição de Sistemas
No desenvolvimento de sistemas, principalmente daqueles mais complexos, é comum que determinados componentes sejam adquiridos em lugar de serem completamente desenvolvidos pela equipe ou empresa envolvida no projeto. Em alguns casos, o próprio sistema pode ser completamente adquirido num fabricante específico e, em outros, partes do sistema serão obtidas de um mesmo ou de diferentes fornecedores. Por outro lado, pode haver sistemas onde todos os componentes podem ser completamente desenvolvidos pela equipe.
O processo de decisão sobre a compra ou o desenvolvimento de um sistema ou de parte dele é uma tarefa que requer um esforço e um tempo considerável, principalmente se o grau de complexidade do mesmo for elevado. Uma decisão baseada numa análise superficial pode conduzir ao fracasso do projeto.
Normalmente, para servir de referência à decisão, uma especificação do sistema e um projeto arquitetural devem ser conduzidos. Os resultados obtidos nesta tarefa são importantes pelas seguintes razões:
• para que o processo de aquisição seja encaminhado com sucesso, é necessária a existência de uma especificação e de uma visão arquitetural do sistema;
• o custo de aquisição de um sistema é, na maioria dos casos, menor que do desenvolvimento deste; por esta razão, o projeto arquitetural é importante como forma de decidir quais subsistemas serão adquiridos e quais serão desenvolvidos.
2.6. A Subcontratação
As situações em que uma empresa desenvolve completamente todos os componentes de um sistema são extremamente raras. Geralmente, a organização "usuária" vai encomendar o sistema a uma organização "fornecedora". A organização fornecedora, eventualmente, vai "terceirizar" o desenvolvimento do sistema, contratando outras empresas fornecedoras dos diferentes subsistemas. A figura 3.2 ilustra este processo.
Um aspecto interessante deste processo é a otimização, no que diz respeito aos contatos, entre a organização do usuário e as organizações desenvolvedoras. Na realidade, o único contato mantido pela organização usuária é com a principal contratante. As subcontratantes vão projetar e construir os subsistemas cujos requisitos foram especificados pela principal contratante que exerce o papel de aglutinadora de todas as empresas envolvidas no desenvolvimento.
2.7. A Importância do Software
No desenvolvimento de sistemas computacionais, é comum a utilização de componentes customizados (construídos sob medida) e componentes de "prateleira". Por esta razão, o componente de software assume um papel bastante importante no desenvolvimento do sistema, isto porque é este que pode assumir a função de elo de ligação entre os diferentes componentes, permitindo a adequação do funcionamento dos diferentes componentes de hardware (principalmente aqueles de "prateleira") aos requisitos do sistema.
Um exemplo deste fato está num dos sistemas computacionais mais utilizados nos dias atuais — os microcomputadores da linha PC. O PC da IBM, quando foi concebido, foi totalmente construído a partir de componentes de hardware disponíveis no mercado. Esta decisão foi tomada devido à urgência em ocupar o espaço do mercado no setor de computadores pessoais. Entretanto, a fórmula mágica da IBM para fazer com que todos estes elementos funcionassem harmonicamente foi buscada no software, no caso o ROM- BIOS, que continha todas as rotinas de programação e acesso aos dispositivos de hardware que compunham a arquitetura do PC.
Só a partir do momento em que as outras empresas conseguiram copiar o conteúdo do ROM-BIOS é que surgiram os conhecidos "clones" do PC que difundiram a tecnologia pelo mundo todo.
Usuário do Sistema
Principal Contratante
Subcontratante 1 Subcontratante 2 Subcontratante 2