Engenharia de Sistemas Detalhes no planejamento UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira Introdução Na aplicação de um sistema computacional, o software é apenas um elemento do todo Além do software, devemos também considerar: Hardware Usuários Documentação (manuais, formulários etc) Regras e procedimentos adotados Engenharia de Sistemas A corresponde ao conjunto de atividades que deverão ser realizadas para definir sistema computacional. Especificação Projeto Implementação Validação Instalação Manutenção O que é um Sistema Computacional? Conjunto de elementos inter-relacionados que operam juntos para o alcance de algum objetivo. Exemplo: Um sistema de processamento de texto Integra funções de entrada e edição de texto com funções de produção de documentos (software e hardware) Associado a um usuário (elemento humano) 1
O que é um Sistema Computacional? Assim, os elementos de um sistema computacional são: Software: Os programas de computador, estruturas de dados e documentação. Hardware: Dispositivos que definem as capacidades de um computador. Inclui também os dispositivos eletromecânicos (robôs, máquinas mecânicas de produção etc) Pessoal: Usuários operadores do hardware e do software O que é um Sistema Computacional? Assim, os elementos de um sistema computacional são: (...cont) Banco de Dados: Coleção de informações organizadas de forma sistemática, acessada através de software. Documentação: Manuais formulários e outros documentos que podem auxiliar no conhecimento do uso e operação do sistema Procedimentos: Regras que especificam o uso específico de cada elemento do sistema computacional Sistemas e Subsistemas Os elementos de um determinado sistema podem operar de forma autônoma, são os subsistemas ou macroelementos. Exemplos: Uma câmera de vídeo é um sistema independente. Porém, num sistema de segurança, ela e sua configuração fazem parte do sistema geral. Robôs em processos de produção. São sistemas fechados independentes, mas operam num sistema mais abrangente. A Aquisição de Sistemas No desenvolvimento de sistemas, principalmente daqueles mais complexos, é comum adquirir determinados componentes: Desenvolver tudo normalmente custa mais Integrar partes nem sempre é fácil. É necessário que exista uma especificação prévia. O projeto de arquitetura do sistema ajuda a definir quais os subsistemas que serão adquiridos e quais serão desenvolvidos. 2
A Aquisição de Sistemas Em Sistemas é comum a utilização de componentes customizados (construídos sob medida) e componentes de prateleira. O software desenvolvido normalmente é o elo de ligação e adequação entre os componentes. A utilização de componentes free na elaboração de softwares, também segue a mesma idéia. Contratante (Usuário) Desenvolvedor Desenvolvedor subcontratado 1 Desenvolvedor subcontratado n Precisaremos Especificar softwares... Mas o que é isso? Estabelecer da forma mais precisa possível as funções a serem realizadas Alocar os diferentes componentes de um sistema de computação, como responsável por cada função a ser realizada (solução para implementações) Deve-se considerar: Realizabilidade Desempenho Padronização de interfaces Portabilidade Definição dos Requisitos Vimos que nesta etapa devemos trabalhar na identificação dos requisitos do Sistema Computacional a ser concebido. A forma usual de encaminhar esta etapa é caracterizada por um conjunto de reuniões estabelecidas entre: Equipe de desenvolvimento do sistema Clientes ou usuários Em alguns casos, é necessário investigar o processo de trabalho de funcionários. Pode-se considerar basicamente três categorias de requisitos: os básicos, as propriedades do sistema e as características indesejáveis. Definição dos Requisitos Requisitos básicos: Funções a serem desempenhadas pelo sistema; Não é necessário muito detalhamento nesta etapa (os detalhes vêm depois). Propriedades do sistema Questões relacionadas ao desempenho, segurança, disponibilidade etc; Características indesejáveis Propriedades que o sistema não deve possuir. São definições importantes para satisfação do cliente. 3
O projeto do sistema Particionamento dos Requisitos Agrupar os requisitos usando algum critério lógico Identificação dos Subsistemas Busca por subsistemas que irão compor o Sistema Computacional O entendimento e parcicionamento dos requisitos são importante nessa definição Alocação dos Requisitos Alocação ou implantação dos requisitos aos subsistemas estabelecidos. Engenharia de Sistemas O projeto do sistema Definição das interfaces dos Subsistemas É necessário que seja de forma precisa Atenção para o caso da padronização, especialmente quando desenvolvidos por diferentes equipes/empresas. Particionamento dos Requisitos Identificação dos Subsistemas Alocação de Requisitos Especificação das Funcionalidades Definição das Interfaces Desenvolvimento dos Subsistemas Cada subsistema terá suas funções bem definidas e suas especificidades quanto as competências necessárias ao seu desenvolvimento No caso de um subsistema de software, um processo de desenvolvimento será iniciado. De certa forma, o desenvolvimento de subsistemas está relacionado a uma seleção de componentes de hardware (Engenharia de Hardware) Definição de desempenho e funcionalidade de software. (Engenharia de Software) Desenvolvimento dos Subsistemas Como já discutimos em aula anterior, a Engenharia de Software envolve as fases: Definição; Desenvolvimento do Software; Verificação, Entrega e Manutenção. Em alguns casos é interessante que os diferentes subsistemas seja desenvolvidos em paralelo. Nos envolvimento de subsistemas de hardware, é interessante manter o desenvolvimento paralelo ou antecipado, para evitar incompatibilidades. 4
Integração do Sistema Conjunto de atividades para a conexão dos diferentes subsistemas. Um problema comum encontrado é nesta etapa é o mal funcionamento de um subsistema como conseqüência de uma definição imprecisa As duas estratégias para integração são: Conexão em um único passo (big-bang), onde tudo é integrado em um único passo Na Integração incremental as partes do sistema são integradas aos poucos (facilita a identificação de erros) Instalação do Sistema Problemas típicos nesta etapa: O ambiente para o qual o sistema foi concebido não é precisamente o mesmo que foi especificado no início do projeto (problema comum quando se usa certas facilidades do SO no projeto, e mude-se de SO) Resistência dos usuários à implantação do novo sistema (procurar dialogar, treinar, acompanhar) Instalação do Sistema Problemas típicos nesta etapa: (...cont.) Necessidade de coexistência entre um sistema antigo e o novo sistema. Principalmente, quando ambos os sistemas compartilham algum recurso. Obstáculos físicos à instalação do sistema: Ausência de pontos de energia devidamente aterrados Falta de pontos de rede (instalados corretamente) Falta de ar-condicionado etc Ativação do Sistema Processo de iniciar o sistema, incluindo toda informação primária necessária para seu funcionamento. Alguns erros podem ocorrer: É importante testar tudo e verificar incompatibilidades; Atenção para os procedimentos dos novos usuários. 5
Evolução do Sistema Por mais que um sistema tenha sido bem projetado, eventualmente necessitará de evoluções Atenção para os possíveis erros trazidos nessa evolução Uma evolução normalmente é um processo que envolve análise detalhada do sistema atual Associado à evolução, estão também as atualizações provenientes de ajustes no sistema Desativação do Sistema Retirar o sistema de operação, quando seu tempo previsto se esgota, sem comprometer uma futura reativação. A desativação deve ser rigorosa, principalmente se o sistema envolver componentes que prejudicam o meio ambiente. A desativação normalmente também está associada a um processo final de backup Projeto Arquitetural do Sistema Normalmente envolve a elaboração de um diagrama mostrando o fluxo e relacionamentos entre os subsistemas As caixinhas indicam os subsistemas e as setas indicam o fluxo de dados Nem sempre é interessante definir se um subsistema é um hardware ou software, ou híbrido. Projeto Arquitetural do Sistema (exemplo) Radar Processador de Posição Simulação da Aeronave Mapa Meteorológico Contagem Rádio Backup de Posição de Dados Base de Dados de Vôo Informações do Controle da Aeronave Processador de Registro de Atividades Telefonia Backup de Terminais de Controle 6
Projeto Arquitetural do Sistema Durante a definição dos subsistemas, diferentes categorias de componentes podem ser identificadas. Sensores: Elementos capazes de coletar informações a respeito do ambiente, onde o sistema está instalado. Ex.: radares do sistema de tráfego aéreo, sensores de posicionamento de papel numa impressora Atuadores:Componentes que têm por função realizar ações no sistema ou em seu ambiente. Ex.: Válvular para abertura ou fechamento de fluxo hidráulico, flaps das asas do avião, mecanismo de alimentação de papel numa impressora Componentes computacionais: São elementos capazes de exercer algum processamento de uma dada informação de entrada para gerar um conjunto de informações de saída. Ex.: processadores gráficos, processadores aritméticos, algoritmos de controle etc Componentes de comunicação: Componentes que irão viabilizar a comunicação entre partes de um sistema ou entre o sistema e seu ambiente. Ex.: Placas Tthernet, porta serial, modem Componentes de coordenação: São componente que executam funções de coordenação do sistema. Ex.: Um algoritmo de escalonamento em um sistema tempo-real, o controle da sincronia das atividades numa esteira de manufatura Componentes de interface: Componentes capazes de adaptar uma dorma de representação de informação na forma de representação utilizada pelo componente que vai processá-la. Ex.: Placa de vídeo, conversos analógico-digital 7
Engenharia de Sistemas Exemplo: classificação num sistema de segurança doméstica Engenharia de Sistemas Exemplo: classificação num sistema de segurança doméstica Classe Sensor Atuador Componente Sensor de movimento e da porta Sirene Ativador de chamada telefônica Função Detectar intrusão Gerar um sinal de alarme Realizar chamada a um sistema externo Sensores de Movimento Controlador do alarme Sensores das Portas Coordenação Controlador do alarme Coordenar os demais componentes Sirene Sintetizador de voz Ativador de chamada para um sistema telefônico externo Interface Sintetizador de voz Gerar mensagem de localização 8