UNIVERSIDADE FEDERAL DE ALAGOAS Curso de Ciência da Computação Engenharia de Software I Prof. Rômulo Nunes de Oliveira
Engenharia de Sistemas
Computacionais
Detalhes no planejamento
Detalhes no planejamento
Introdução
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
Engenharia de Sistemas
Computacionais
Computacionais
A Engenharia de Sistemas Computacionais
corresponde ao conjunto de atividades que
deverão ser realizadas para definir sistema
computacional.
Especificação Projeto Implementação Validação Instalação ManutençãoO que é um Sistema
O que é um Sistema
Computacional?
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)
O que é um Sistema
O que é um Sistema
Computacional?
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
O que é um Sistema
Computacional?
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
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
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.
A Aquisição de Sistemas
A Aquisição de Sistemas
Em Sistemas Computacionais é 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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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.
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas
Computacionais
Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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)
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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.
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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)
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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)
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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.
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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)
Sistema de Radar Sistema de Rádio Sistema de Comunicação de Dados Comunicação da Aeronave Sistema de Telefonia Processador de Posição Backup de Posição Sistema de Simulação da Aeronave Sistema de Mapa Meteorológico Sistema de Contagem Sistema de Informações do Controle Base de Dados de Vôo Processador de Comunicação Backup de Comunicação Terminais de Controle Sistema de Registro de AtividadesEngenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas Computacionais
Engenharia de Sistemas Computacionais
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
Engenharia de Sistemas
Engenharia de Sistemas
Computacionais
Computacionais
Exemplo: classificação num sistema de segurança doméstica
Gerar mensagem de localização Sintetizador de voz Interface Coordenar os demais componentes Controlador do alarme Coordenação Realizar chamada a um sistema externo Ativador de chamada telefônica Comunicação
Gerar um sinal de alarme Sirene Atuador Detectar intrusão Sensor de movimento e da porta Sensor Função Componente Classe
Engenharia de Sistemas
Engenharia de Sistemas
Computacionais
Computacionais
Exemplo: classificação num sistema de segurança doméstica
Sensores de Movimento Sensores das Portas Sirene Ativador de chamada Sintetizador de voz Controlador do alarme para um sistema telefônico externo