TPG RELATÓRIO DE PROJETO. folité. enico 1 daiguarda Poiyleehnic of Guarda. Licenciatura em Engenharia Informática. Marco Alexandre da cunha Lucas



Documentos relacionados
O aumento da força de vendas da empresa

Rock In Rio - Lisboa

2 Diagrama de Caso de Uso

PLATAFORMA INFORMÁTICA DE REQUISIÇÃO DE POLICIAMENTO DE ESPETÁCULOS DESPORTIVOS (PIRPED)

1 Sumário O Easy Chat Conceitos Perfil Categoria Instalação O Aplicativo HTML...

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

PHC dteamcontrol Interno

PHC dteamcontrol Externo

UML - Unified Modeling Language

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Aplicações de Escritório Electrónico

Engenharia de Requisitos Estudo de Caso

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

MANUAL ARTSOFT Mobile POS

Manual utilização. Dezembro Instituto Politécnico de Viseu

Manual SAGe Versão 1.2 (a partir da versão )

MANUAL DO UTILIZADOR

Breves indicações para a utilização do sistema pelo Fabricante/Mandatário

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

Desenvolvimento de Aplicação Windows Mobile Acessando um WebService

Manual de Configuração

Manual do usuário - Service Desk SDM - COPASA. Service Desk

Módulo 6: Linguagem de Programação IV 6.1. Introdução 6.2. Bases de Dados Visão Estrutural SGBD: Sistema de Gestão de Bases de Dados

Base de Dados para Administrações de Condomínios

Sistema de Gestão de Ciclo de Vida de Farmácias AVP003. Manual de Utilizador Externo - Entregas ao Domicílio e Vendas via Internet

Sistema de Controle de Solicitação de Desenvolvimento

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

PortugalAves Introdução online de dados do Atlas

Manual do Utilizador do Registo Prévio (Entidades Coletivas e Singulares)

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

MANUAL DO GERENCIADOR ESCOLAR WEB

Manual de Utilizador

Mobile Business. Your sales on the move.

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Escola Superior de Tecnologia de Setúbal. Projecto Final

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

Documento de Análise e Projeto VideoSystem

Construir um e-portefólio com o Blogger

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI

Aula 1: Noção Básica e Criação de Tabelas.

TUTORIAL DE UTILIZAÇÃO. Rua Maestro Cardim, cj. 121 CEP São Paulo - SP (11)

Módulo SAC Atendimento ao Cliente

PHC dteamcontrol Interno

UFG - Instituto de Informática

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Plano de Gerenciamento do Projeto

Educação Digital

Aplicação Prática de Lua para Web

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Manual de utilização do Moodle

MANUAL DO FORMANDO FORMAÇÃO À DISTÂNCIA Introdução

Administração da disciplina

Manual de utilização da aplicação web Gestão de Delegados de Informação Médica

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS (GRUPO INFORMÁTICA) Ano Letivo de 2014/2015 MÓDULO 1 FOLHA DE CÁLCULO

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

POSTOUCH. Manual Software

PHC dcontroldoc. O acesso a diversos tipos de ficheiros

Manual de utilização do Moodle

Módulo 4: Gerenciamento de Dados

Manual Operacional do SISCOAF

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

A SÈTIMA. O nosso principal objectivo

Orientação a Objetos

Projeto Disciplinar de Infra-Estrutura de Software SISPA FACULDADE SENAC

A interface do Microsoft Visual Studio 2005

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

INTRODUÇÃO 2 ACESSO AO SIGTECWEB 3 TEMPO DE CONEXÃO 5 NAVEGAÇÃO 7 BARRA DE AÇÕES 7 COMPORTAMENTO DOS BOTÕES 7 FILTROS PARA PESQUISA 8

Supply4Galp (S4G) FAQs Fornecedores Versão

MANUAL DE UTILIZADOR/A. mwba.montemor.jeec an.pt mwba.viseu.jeec an.pt

RELATÓRIO DE ESPECIFICAÇÃO DE REQUISITOS

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Programação de Computadores - I. Profª Beatriz Profº Israel

Como funciona a MEO Cloud?

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Aplicações de Escritório Electrónico

Vendas. Manual do Usuário. Copyright ControleNaNet

Manual de Transição TWT Sítio de Disciplina para Moodle 2.6

MANUAL DE UTILIZAÇÃO TERMINAL DE PORTA

Manual de utilizador CRM

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

PROJ. Nº LLP NL-ERASMUS-ECUE

SISTEMA DE GERENCIAMENTO DO PROGRAMA NACIONAL DE DRAGAGEM META 03

OFICIAL DA ORDEM MILITAR DE CRISTO MEDALHA DE EDUCAÇÃO FÍSICA E BONS SERVIÇOS. Circular n.º 029/2014 PORTAL FPT Abertura aos atletas

02 - Usando o SiteMaster - Informações importantes

Bolsa de Contratação de Escola. Criação de Oferta

LOJAS VIRTUAIS COMPLETAS

bit Tecnologia ao Serviço do Mundo Rural

Sumário. Apresentação O que é o Centro de Gerenciamento de Serviços (CGS) NTI? Terminologia Status do seu chamado Utilização do Portal Web

Sumário INTRODUÇÃO... 3 INTEGRAÇÃO COM O EMPRESÁRIOERP... 3 AGILIDADE NOS PROCESSOS E APOIO AOS CONTROLES INTERNOS... 3 SAC - ATENDIMENTO...

Manual de Usuário Versão 3.0

Capítulo 6. Criando um Diagrama de Caso de Uso Inicial

Manual de Registro de Saída. Procedimentos e Especificações Técnicas

Transcrição:

TPG folité enico 1 daiguarda Poiyleehnic of Guarda RELATÓRIO DE PROJETO Licenciatura em Engenharia Informática Marco Alexandre da cunha Lucas dezembro 1 2014

Instituto Politécnico da Guarda Escola Superior de Tecnologia e Gestão Aplicação Web de Gestão de Recursos Marco Alexandre da Cunha Lucas Nº 1008375 Projeto de Informática em contexto de estágio do curso Engenharia Informática Dezembro de 2014

2

Instituto Politécnico da Guarda Escola Superior de Tecnologia e Gestão Aplicação Web de Gestão de Recursos Marco Alexandre da Cunha Lucas Nº 10008375 Projeto de Informática em contexto de estágio do curso Engenharia Informática Supervisor: Paulo Sequeira, Comandante dos Bombeiros Voluntários Egitanienses. Orientador: Doutor Noel Lopes. Dezembro de 2014 3

4

Agradecimentos Agradeço em primeiro lugar a todos os elementos dos Bombeiros Voluntários Egitanienses pela sua disponibilidade em me ajudarem em alguns problemas que foram aparecendo, em especial ao Comandante dos Bombeiros Paulo Sequeira pela ajuda e na disponibilidade de toda a informação que necessitei. Em segundo agradecer aos docentes do curso de Engenharia Informática pelos conhecimentos fornecidos ao longo de todo o curso, em especial ao Professor Noel Lopes o meu orientador. Gostaria ainda de agradecer a todos os colegas que me ajudaram, com destaque aos meus colegas Júlio Antunes e Ruben Ventura, pela ajuda nos problemas encontrados no decorrer da elaboração deste projeto. Por último, mas não menos importante um agradecimento mais pessoal a toda a minha família que me apoiou ao longo destes anos. Um obrigado a todos. i

ii

Resumo O presente documento descreve o trabalho realizado em contexto de estágio no âmbito da Unidade Curricular Projeto de Informática, que está englobada na Licenciatura em Engenharia Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda. Hoje em dia é cada vez mais importante o acesso e partilha da informação a qualquer hora e em qualquer lugar, nas Instituições. Em particular no caso dos Bombeiros Voluntários da Guarda onde existia uma necessidade da gestão das ocorrências e dos diversos setores desta Instituição de forma a informatizar os dados que atualmente são registados em papel. O presente projeto consistiu no desenvolvimento de uma aplicação web, preparada para dispositivos móveis, onde é possível gerir (consultar, editar, inserir, apagar) a informação relativamente a cada setor, para dar resposta ao problema acima descrito. O trabalho foi proposto pelo Comandante dos Bombeiros, Paulo Sequeira, com o intuito de simplificar e controlar a informação que é gerada no Corpo de Bombeiros, bem como facilitar o acesso a essa mesma informação. A aplicação desenvolvida serve como complemento a uma outra já utilizada nos Bombeiros, com o intuito de colmatar algumas lacunas na gestão de determinadas informações. A presente aplicação já esteve a funcionar para a realização de testes da mesma, entrando em pleno funcionamento quando criados todos os requisitos (quer de servidor quer de dispositivos finais) na Instituição. As ferramentas utilizadas no desenvolvimento desta aplicação foram o Microsoft Visual Studio 2013, SQL Server e Windows server 2008, já a linguagem utilizada foi o C# e ASP.NET. Palavras-chave: Aplicação Web, C#, ASP.NET, Base de Dados, SQL Server, Bombeiros, Ocorrências, Setor. iii

iv

Abstract This document describes the work done in stage context in the Course Unit Computer Project, which is embraced in Bachelor in Engineering Informatics, School of Technology and Management, Polytechnic Institute of Guarda. Nowadays it is increasingly important to access and share information anytime and anywhere, in the institutions. Particular in the case of voluntary firemen of the Guarda where there was a need for management of occurrences and of the various sectors of the institution in order to computerize data that are currently registered on paper. This project consisted in the development of a web application, ready for mobile devices, where it is possible to manage (consult, edit, insert, delete) the information in respect of each sector, to respond to the problem described above. The work was proposed by the Commander of the Firemen, Paulo Sequeira, with the intentionof simplifying and controlling the information that is produced in the Fire brigade, as well asmaking easy the access to the same information. The developed application serves as a complement to another already used at the fire station, in order to bridge some gaps in the management of certain information. This application has already been up and running for testing the same, coming into full operation when created all requirements (either server or end devices) in the institution. The tools used in developing this application were Microsoft Visual Studio 2013, SQL Server and Windows server 2008, the language used was C# and ASP.NET. Keywords: Web Application, C #, ASP.NET, Database, SQL Server, fire department, occurrences, sector. v

vi

Índice Resumo... iii 1. Introdução... 3 1.1 Instituição... 3 1.2 Definição do Problema... 4 1.3 Objetivos Previstos... 5 1.5 Estrutura do Documento... 6 2. Estado da Arte... 7 2.1 Introdução... 7 2.2 Aplicações Existentes... 7 2.3 Análise Crítica... 10 3. Metodologia... 11 3.1 Metodologia... 11 3.2 Descrição das Tarefas... 12 4. Tecnologias e Software utilizado... 14 4.1 Tecnologias... 14 4.2 Software... 17 5. Análise dos Requisitos... 18 5.1 Diagrama de Contexto... 18 5.2 Casos de Uso... 19 5.3 Diagramas de Sequência... 26 5.6 Diagrama de Classes... 31 5.5 Diagrama de Atividades... 64 5.6 Diagrama de Instalação... 65 6. Implementação da Solução... 66 6.1 Introdução... 66 6.2 Base de Dados... 67 6.2 Código Utilizado na Aplicação e Testes... 68 7. Conclusões e Trabalho Futuro... 74 7.1 Conclusões... 74 7.2 Trabalho Futuro... 75 Bibliografia... 76 Anexos A... 78 vii

viii

Lista de Figuras Figura 1: Faixada principal do Quartel... 4 Figura 2: Página de ocorrências... 8 Figura 3: IFFIRE Ecrã Principal... 9 Figura 4: DecimalFire... 9 Figura 5: Mapa de Gantt previsto... 13 Figura 6: Mapa de Gantt efetivo... 13 Figura 7: Visual Studio 2013... 17 Figura 8: Diagrama de Contexto da Aplicação... 18 Figura 9: Diagrama de Casos de Uso... 21 Figura 10:Diagrama de Sequência Inserir Bombeiro... 27 Figura 11: Diagrama de Sequência Inserir equipamento de saúde... 28 Figura 12: Diagrama de Sequência Atribuir equipamento a bombeiro... 28 Figura 13: Diagrama de Sequência Inserir anomalia veículo... 29 Figura 14: Diagrama de Sequência Inserir talão de combustível... 29 Figura 15: Diagrama de Sequência Inserir saída de chave... 30 Figura 16: Diagrama de Sequência Inserir ocorrência... 30 Figura 17: Diagrama de Classes... 32 Figura 18: Diagrama de Atividades: Inserir Ocorrência... 64 Figura 19: Diagrama de Instalação... 65 Figura 20: Página de Inicio... 66 Figura 21: Base de Dados... 67 Figura 22: Página Central de Comunicações... 68 Figura 23: Página ocorrências: inserir ocorrência pré-hospitalar... 69 Figura 24: Página ocorrências: inserir ocorrência pré-hospitalar, adicionar veículo... 70 Figura 25: Página veículo: ocorrência... 70 Figura 26: Página ocorrências: editar ocorrência... 72 Figura 27: Página Inserir Bombeiro... 73 ix

Lista de Tabelas Tabela 1: Atores e respetivos casos de uso... 19 Tabela 2: Inserir Bombeiro... 22 Tabela 3: Inserir equipamento de saúde... 23 Tabela 4: Atribuir equipamento a bombeiro... 23 Tabela 5: Inserir anomalia em veículo... 24 Tabela 6: Inserir talão de combustível... 25 Tabela 7: Inserir saída de chave... 25 Tabela 8: Inserir ocorrência... 26 Tabela 9: Semântica de Classe: AnomaliaEquipamento... 33 Tabela 10: Operadores da Semantica de Classes: AnomaliaEquipamento... 34 Tabela 11: Semântica de Classe: AnomaliaVeiculo... 35 Tabela 12: Operadores da Semantica de Classes: AnomaliaVeiculo... 36 Tabela 13: Semântica de Classe: ArmazemSaude... 36 Tabela 14: Operadores da Semantica de Classes: ArmazemSaude... 37 Tabela 15: Semântica de Classe: ArmazemSaudeSaida... 38 Tabela 16: Operadores da Semantica de Classes: ArmazemSaudeSaida... 39 Tabela 17: Semântica de Classe: Bombeiro... 39 Tabela 18: Operadores da Semântica de Classes: Bombeiro... 41 Tabela 19: Semântica de Classe: CedenciaChave... 41 Tabela 20: Operadores da Semântica de Classes: CedenciaChave... 42 Tabela 21: Semântica de Classe: Chave... 43 Tabela 22: Operadores da Semântica de Classes: Chave... 44 Tabela 23: Semântica de Classe: CheckListVeiculo... 44 Tabela 24: Operadores da Semântica de Classes: CheckListVeiculo... 46 Tabela 25: Semântica de Classe: CombustivelRepsol... 46 Tabela 26: Operadores da Semântica de Classes: CombustivelRepsol... 47 Tabela 27: Semântica de Classe: Entidade... 48 Tabela 28: Operadores da Semântica de Classes: Entidade... 49 Tabela 29: Semântica de Classe: Equipamento... 49 Tabela 30: Operadores da Semântica de Classes: Equipamento... 50 Tabela 31: Semântica de Classe: Escala... 51 Tabela 32: Operadores da Semântica de Classes: Escala... 51 Tabela 33: Semântica de Classe: Informacao... 52 Tabela 34: Operadores da Semântica de Classes: Informacao... 53 Tabela 35: Semântica de Classe: OrdensServico... 53 Tabela 36: Operadores da Semântica de Classes: OrdenServico... 54 Tabela 37: Semântica de Classe: TipoEquipamento... 54 Tabela 38: Operadores da Semântica de Classes: TipoEquipamento... 55 Tabela 39: Semântica de Classe: EstadoEquipamento... 55 Tabela 40: Operadores da Semântica de Classes: EstadoEquipamento... 56 x

Tabela 41: Semântica de Classe: TamanhoEquipamento... 56 Tabela 42: Operadores da Semântica de Classes: TamanhoEquipamento... 57 Tabela 43: Semântica de Classe: Ocorrencia... 57 Tabela 44: Operadores da Semântica de Classes: Ocorrencia... 58 Tabela 45: Semântica de Classe: OcorrenciaVeiculo... 59 Tabela 46: Semântica de Classe: OcorrenciaTipo... 59 Tabela 47: Operadores da Semântica de Classes: OcorrenciaTipo... 60 Tabela 48: Semântica de Classe: Veiculo... 60 Tabela 49: Operadores da Semântica de Classes: Veiculo... 61 Tabela 50: Semântica de Classe: VeiculoEstado... 62 Tabela 51: Operadores da Semântica de Classes: VeiculoEstado... 63 Tabela 52:Semântica de Classe: VeiculoTipo... 63 Tabela 53: Operadores da Semântica de Classes: VeiculoTipo... 63 xi

Glossário ASP.NET Active Server Pages é a plataforma da Microsoft para desenvolvimento de aplicações Web. Base de Dados Conjunto de dados estruturados e relacionados entre si. C# - É uma linguagem de programação orientada a objetos, desenvolvida pela Microsoft como parte da plataforma.net. HTML Hyper Text Markup Language, linguagem de marcação para produção de páginas Web. Site Site ou web site é um conjunto de páginas web. SQL Server- É um Sistema de Gestão de Base de Dados (SGBD), criado pela Microsoft e Sysbase que permite interação com os dados através da linguagem SQL. Visual Studio 2013 Plataforma de desenvolvimento de aplicações ASP.NET. Windows Server 2008 Sistema operacional de servidores da Microsoft. 1

2

1. Introdução Neste primeiro capítulo é dada a conhecer a Instituição. Por outro lado é ainda definido o problema, os objetivos previstos e a contribuição. Finalmente descreve-se a estrutura do documento. 1.1 Instituição O Projeto de Informática foi realizado em contexto de estágio na Associação Humanitária dos Bombeiros Voluntários Egitanienses situa-se na Rotunda dos Bombeiros Voluntários, em Guarda. Tem como missão: A Proteção, prevenção e combate a incêndios; O socorro às populações em caso de incêndios, inundações, desabamentos, abalroamentos e em todos os acidentes, catástrofes ou calamidades; O socorro a náufragos e buscas subaquáticas; A prevenção contra incêndios em edifícios públicos, casas de espetáculos e divertimento público e outros recintos, mediante solicitação e de acordo com as normas em vigor, nomeadamente durante a realização de eventos com aglomeração de público; A emissão, nos termos da lei, de pareceres técnicos em matéria de prevenção e segurança contra riscos de incêndios e outros sinistros; A colaboração em outras atividades de proteção civil, no âmbito do exercício das funções específicas que lhe forem cometidas; A participação noutras ações, para as quais estejam tecnicamente preparados e se enquadrem nos seus fins específicos; O exercício da atividade de formação cívica, com especial incidência nos domínios da prevenção contra o risco de incendio e outros acidentes domésticos. 3

Esta Associação foi fundada em 5 de Agosto de 1876, com o lema Periculis Ire Obviam, (para enfrentar os perigos) que permanece até aos dias de hoje. Nos dias de hoje a Corporação de Bombeiros conta com 140 elementos, 30 dos quais contratados pela Associação e os restantes elementos são voluntários. Onde estes prestam socorro numa área de atuação que tem uma população de mais de 40 600 Habitantes numa área de 618,18 Km2. Figura 1: Faixada principal do Quartel 1.2 Definição do Problema Na Instituição existia uma necessidade de uma aplicação que colmata-se as lacunas, de uma outra aplicação já em funcionamento, e que toda a informação que era preenchida em papel fosse informatizada. Assim pretendia-se desenvolver uma aplicação Web para os Bombeiros Voluntários Egitanienses, de modo a ter todas as funcionalidades necessárias: Manipular (inserir, alterar, consultar) toda a informação relativa a cada um dos setores existentes no corpo de bombeiros (setor saúde, setor central, setor fardamento, setor secretaria, setor incêndios e oficina). 4

Acessos personalizados aos diversos setores, dependendo da função atribuída. Criar alerta de ocorrência e enviar informação para dispositivo móvel no veículo. Elaborar com o dispositivo móvel Verificações diárias dos veículos. Acesso a todos os bombeiros a toda a informação e escalas. A aplicação deve ser desenvolvida juntamente com uma base de dados, de modo a não ser necessária a instalação de qualquer outro programa ou de ter a base de dados num servidor independente. A principal motivação para o desenvolvimento deste projeto é o facto de eu também ser bombeiro nesta Corporação, e com esta aplicação poder vir a melhorar o funcionamento da Instituição. Trabalhar com uma linguagem de programação com que me sentisse à vontade também contribuiu para aumentar a motivação em avançar com este projeto. Como a Instituição não tem fins lucrativos todas as soluções, com custos reduzidos, são boas para que ajudem a melhorar o funcionamento e reduzir os custos. 1.3 Objetivos Previstos Os objetivos que pretendo atingir consistem em: Criar, editar e pesquisar toda a informação de acesso livre a todos os bombeiros; Criar, editar e pesquisar todos os veículos do corpo de bombeiros; Criar, editar e pesquisar todos os equipamentos de cada setor; Criar, editar e enviar para dispositivo móvel as ocorrências criadas; Diferenciação entre bombeiros com responsabilidades em cada setor; 5

1.5 Estrutura do Documento Sendo este um relatório que relata todo o processo de conceção da aplicação, a sua estrutura seguirá uma ordem cronológica de todos os acontecimentos, tal como aconteceu na realidade. Este documento está dividido em 6 capítulos: Capítulo 1 apresentação da Instituição e sua história, definição do problema, objetivos previstos, contribuição e estrutura do documento. Capítulo 2 descrição do estado da arte, onde são apresentadas aplicações já existentes no mercado bem como opinião em relação à esta aplicação. Capítulo 3 apresenta a metodologia utilizada no desenvolvimento desde projeto e descrição das tarefas que foram seguidas ao longo do desenvolvimento da aplicação. Capítulo 4 descrita a análise pormenorizada dos requisitos necessários da aplicação através dos diversos diagramas. Capítulo 5 apresenta a implementação da solução proposta com ilustração de algumas imagens da aplicação. Capítulo 6 descritas as conclusões mais relevantes do trabalho e as perspetivas de desenvolvimento que se pretendem efetuar no futuro. 6

2. Estado da Arte Neste capítulo está descrito o estado da arte, que visa o estudo de aplicações semelhantes existentes no mercado e a análise critica destas em relação à aplicação a desenvolver. 2.1 Introdução As aplicações existentes no mercado são aplicações que se destinam a uma gestão da parte operacional e da gestão financeira, destinadas à gestão das ocorrências, dos veículos e faturação. Enquanto esta aplicação, tendo em conta que é uma aplicação personalizada e elaborada de acordo com os requisitos pedidos, vai incidir mais na partilha de informação e nas lacunas que a aplicação já existente não implementa. 2.2 Aplicações Existentes IFFIRE Esta aplicação foi desenvolvida exclusivamente para as Corporações de Bombeiros, é uma solução modular que cobre a área operacional e administrativa. O IFFIRE é totalmente desenvolvido em ambiente gráfico, podendo ser utilizado por qualquer pessoa sem conhecimentos informáticos. O IFFIRE foi desenvolvido numa plataforma evolutiva, sofrendo atualizações periódicas de acordo com as sugestões dos clientes. Esta aplicação dispões de um serviço de assistência (help-desk), para esclarecimento de dúvidas ou problemas. A aplicação divide-se em três áreas: Administrativa gestão de toda a faturação; Operacional gestão das ocorrências; 7

Stocks gestão de equipamentos. Na área administrativa é possível a criação de faturas bem como o registo de toda a informação relativamente a cada elemento do Corpo de Bombeiros. Na parte de gestão de ocorrências a aplicação é capaz de registar uma ocorrência com os dados do veículo, os elementos e todos os tempos e dados que uma ocorrência necessita. Permite também a consulta de ocorrências quer por data ou por o número da mesma. Na figura 2 mostra a interface de gestão de ocorrências. Figura 2: Página de ocorrências Já na área de gestão de equipamentos é possível introduzir um equipamento ou atribuir a um veículo um determinado equipamento. Esta aplicação está atualmente em funcionamento no Corpo de Bombeiros da Guarda. Na figura 3 é possível ver a página principal da aplicação, onde é possível ver os menus da aplicação das diversas áreas de trabalho. 8

Figura 3: IFFIRE Ecrã Principal DecimalFire O DecimalFire é uma aplicação exclusivamente concebida para servir a Gestão de Bombeiros, usando base de dados SQL, com arquitetura servidor/cliente e interface WINDOWS. A base de dados corre a partir dum computador (servidor). Esta aplicação está preparada para responder às novas exigências no domínio da apresentação de contas, poe parte das Associações de Bombeiros. O DecimalFire contempla também o módulo de processamento de salários, necessário às Associações de Bombeiros. Esta aplicação também integra a gestão de correspondência. Como é uma aplicação paga e não está disponibilizada uma versão demo, não é possível mostrar a aplicação e nem especificar com mais detalhe as funcionalidades da mesma [1]. Figura 4: DecimalFire 9

2.3 Análise Crítica As aplicações apresentadas nos tópicos anteriores já realizam algum trabalho nesta área, mas nenhuma é uma aplicação Web, e por isso tem todas as vantagens de se poder em qualquer lugar aceder a toda a informação. Qualquer uma das aplicações anteriormente descritas estão centradas na gestão das ocorrências e na gestão financeira, não incluindo a gestão e partilha da informação que é criada na Instituição e que está disponível para todos os elementos do Corpo de Bombeiros. Na aplicação IFFIRE a grande lacuna é o fato de a gestão de equipamentos estar toda na mesmas página e não dividida por tipo de equipamento e por setor, assim tornase um pouco confuso e desordenado a área dos equipamentos. Já no que toca à criação de ocorrências é um processo um pouco demoroso porque o bombeiro tem de inserir demasiada informação para a criação da mesma. No DecimalFire, como não foi possível trabalhar com a mesma, mas pelo estudo e informação disponibilizada por a empresa detentora do software é possível dizer que no que refere à gestão de equipamentos está tudo dividido por setores e não foi possível verificar mais a fundo toda a aplicação [2]. 10

3. Metodologia Nesta parte do relatório é descrita a metodologia a seguir na elaboração do trabalho. É um conjunto de passos parcialmente ordenados, cujo objetivo é atingir uma meta que é entregar um produto de software de maneira eficiente, previsível e que cumpra as necessidades de negócio. Também neste capítulo são descritas as tarefas a serem realizadas ao longo do desenvolvimento do projeto bem como o tempo da realização das mesmas. 3.1 Metodologia Para o desenvolvimento deste projeto foi utilizada a metodologia de Desenvolvimento Ágil XP, que consiste em desenvolver, implementar e testar a aplicação. O principal objetivo desta metodologia é dar agilidade ao desenvolvimento do projeto e garantir a satisfação do cliente [3]. Os princípios da metodologia Ágil XP são: Princípio da Comunicação Cooperação constante entre o cliente e o programador, dando prioridade a conversas pessoais com o cliente. Princípio da Simplicidade Implementação do software com o menor número de classes e métodos, e implementar apenas requisitos atuais, evitando adicionar funcionalidades que podem ser importantes apenas no futuro. Princípio do Feedback Constante feedback por parte do cliente, a fim de garantir que as soluções usadas estão de acordo com o cliente. Princípio da Coragem Oportunidade de simplificar o software é percebida, a equipa pode experimentar e buscar novas soluções, além disso, é preciso coragem para obter e cobrar constantemente um feedback do cliente. Indivíduos e interações em vez de processos e ferramentas Existiu sempre uma cooperação constante entre nós e o cliente e também com os 11

professores acompanhantes em vez de mantermos a análise inicial de requisitos. Esta metodologia Ágil não descarta os métodos tradicionais tais como documentação, ferramentas e processos, planeamentos e negociações, mas visa dar a esses uma cotação secundária. Para o bom funcionamento do software, a colaboração do cliente é uma mais-valia para qualquer projeto, pelo que deverá ser um método a utilizar. 3.2 Descrição das Tarefas De acordo com os objetivos previstos descritos no capítulo 1 foram identificadas as seguintes tarefas a serem realizadas: 1) Análise de requisitos. 2) Discussão com a Instituição Bombeiros da Guarda sobre o trabalho a ser implementado. 3) Estudo da Arte. 4) Obtenção da documentação, formulários em papel. 5) Criação da base de dados. 6) Criação e discussão do Form inicial e dos menus da aplicação. 7) Criação dos restantes Forms e programação das mesmas. 8) Teste da aplicação. 9) Elaboração do relatório. O agendamento das tarefas são apresentados nos Mapas de Gantt das figuras 5 e 6, sendo o primeiro um mapa previsto e o segundo um mapa efetivo do tempo real da elaboração das tarefas. Mapa de Gantt previsto 12

Figura 5: Mapa de Gantt previsto Mapa de Gantt efetivo Figura 6: Mapa de Gantt efetivo 13

4. Tecnologias e Software utilizado Neste capítulo são analisadas as tecnologias utilizadas para o desenvolvimento do projeto, bem como o software utilizado. 4.1 Tecnologias HTML Hypertext Markup Language (Linguagem de Marcação de Hipertexto), é uma das linguagens que utilizamos para desenvolver web sites, podendo ser considerada a linguagem base da Internet. Existem outras linguagens mais avançadas para desenvolver sites, porém dificilmente conseguimos encontrar um site que não utilize HTML [4]. Na listagem a seguir (Listagem 1) mostra um pequeno exemplo de código HTML 5. Listagem 1 Exemplo de código HTML 5 <!DOCTYPE html> <html> <head> <!--conteudo do head--> </head> <body> <!--conteudo do body--> </body> </html> 14

C# CSharp é uma linguagem de programação orientada a objetos criada pela Microsoft, fazendo parte da sua plataforma.net. A linguagem C# baseou-se no C++ e no Java. Foi criada junto com a arquitetura. NET, embora existam várias outras linguagens que suportam essa tecnologia (como VB.NET, C++, J#). É considerada a linguagem símbolo do.net, por várias razões: foi criada de novo para funcionar logo na plataforma, o compilador da linguagem foi o primeiro a ser desenvolvido e a maior parte das classes do.net Framework foram desenvolvidas na mesma linguagem. [5] Na listagem a seguir (Listagem 2) mostra um pequeno exemplo de código C#, onde mostra na consola Olá!. Listagem 2 Exemplo de código C# using System; namespace Exemplo { class Ola { static void Main() { Console.WriteLine("Olá!"); } } } ASP.NET O ASP.NET (Active Server Pages) é um ambiente de desenvolvimento onde são desenvolvidos aplicativos para a Web, sendo uma tecnologia da Microsoft que é uma evolução do ASP. Os aplicativos feitos neste ambiente rodam no servidor Web especificamente dentro da Internet Information Services (IIS) e necessitam do.net Framework, onde as páginas do aplicativo, vão ficar disponíveis para poderem ser acedidas por qualquer sistema operacional e navegador [6]. 15

ASP.NET. Na listagem a seguir (Listagem 3) mostra um pequeno exemplo de código Listagem 3 Exemplo de código ASP.NET <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:label ID="Label1" runat="server" Text="Olá Mundo!"> </asp:label> <asp:textbox ID="TextBox1" runat="server"></asp:textbox> </div> </form> </body> </html> SQL Server O SQL (Structured Query Language ou Linguagem de Consulta Estruturada), é uma linguagem de pesquisa declarativa para base de dados relacionais. [23] O Microsoft SQL SERVER foi o SGBD (Sistema de Gestão de Base de dados) usado no projeto, já que é uma base de dados robusta que vem incluída no Microsoft Visual Studio (software usado na elaboração do projeto) [7]. 16

4.2 Software Microsoft Visual Studio 2013 O Microsoft Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software especialmente dedicado ao. NET Framework e às linguagens Visual Basic (VB), C, C++, C# (C Sharp) e J# (J Sharp). É também um grande produto de desenvolvimento na área web, usando a plataforma do ASP.NET. As linguagens usadas nesta plataforma são: VB.NET (Visual Basic.Net) e o C# (C Sharp) [8]. Figura 7: Visual Studio 2013 17

5. Análise dos Requisitos Este capítulo descreve a análise pormenorizada dos requisitos necessários da aplicação através de uma Linguagem de Modelagem Unificada (UML), que é uma linguagem de modelagem visual e não uma linguagem de programação. Esta linguagem permite a utilização de diagramas padronizados para especificação e visualização de um sistema [9]. 5.1 Diagrama de Contexto O diagrama de contexto é composto por fluxos de dados que apresentam o fluxo de informação entre o sistema e as entidades externas. Descreve a ideia geral do sistema de um recurso visual facilitando assim a sua compreensão. Um diagrama de contexto permite identificar os limites dos processos, as áreas envolvidas com o processo e os relacionamentos com outros processos e elementos externos, como se pode visualizar na figura 8 [9]. Figura 8: Diagrama de Contexto da Aplicação 18

5.2 Casos de Uso Atores e Respetivos Casos de Uso A tabela seguinte (Tabela 1) tem como objetivo definir o ator/atores bem como os respetivos casos de uso que interferem com o sistema. Os casos de uso definem a maioria dos requisitos de um sistema computacional [9]. Tabela 1: Atores e respetivos casos de uso Ator Caso de Uso Objetivos Bombeiro setor Central Bombeiro Inserir Ocorrências Consultar Ocorrências Consultar Verbetes Inserir Veículo Consultar Veículo Inserir Saída de Chave Consultar Saída de Chave Inserir Talões de Combustível Consultar Talões de Combustível Consultar escalas, informações e ordens de serviço Inserir anomalias em equipamentos e veículos O objetivo é o bombeiro inserir todos os dados de uma ocorrência O objetivo é o bombeiro consultar todas as ocorrências O objetivo é o bombeiro consultar todo os verbetes, criados automaticamente quando inserida uma ocorrência O objetivo é o bombeiro inserir todos os dados de um veículo O objetivo é o bombeiro consultar todos os dados de um veículo O objetivo é o bombeiro inserir todos os dados de uma cedência de chave O objetivo é o bombeiro consultar todos os dados de uma cedência de chave O objetivo é o bombeiro inserir todos os dados de um talão de combustível O objetivo é o bombeiro consultar todos os dados de um talão de combustível O objetivo é o bombeiro consultar todas as informações, escalas e ordens de serviço. O objetivo é o bombeiro inserir todos os dados de uma anomalia de equipamento ou veículo. 19

Ator Caso de Uso Objetivos Bombeiro setor saúde Bombeiro setor Fardamento Inserir equipamento de saúde Consultar equipamentos de saúde Inserir saída de equipamento de saúde Consultar saída de equipamento de saúde Inserir equipamento de fardamento Consultar equipamentos de fardamento Atribuir equipamento a bombeiro Consultar equipamento atribuído a bombeiro O objetivo é o bombeiro inserir todos os dados de um equipamento. O objetivo é o bombeiro consultar todos os dados de um equipamento O objetivo é o bombeiro inserir todos os dados de uma saída de equipamento O objetivo é o bombeiro consultar todos os dados de uma saída de equipamento O objetivo é o bombeiro inserir todos os dados de um equipamento O objetivo é o bombeiro consultar todos os dados de um equipamento O objetivo é o bombeiro atribuir fardamento a bombeiro O objetivo é o bombeiro consultar equipamento atribuído Administrador Inserir informações, escalas e ordens de serviço Consultar as informações, escalas e ordens de serviço Inserir bombeiros Consultar todos os bombeiros O objetivo é o Administrador inserir as informações, escalas e ordens de serviço O objetivo é o Administrador consultar as informações, escalas e ordens de serviço O objetivo é o Administrador inserir o bombeiro como utilizador O objetivo é o Administrador consultar todos os dados de um bombeiro Diagrama de Casos de Uso Um diagrama de casos de uso, como se pode ver na figura 9, descreve um cenário que mostra as funcionalidades do sistema do ponto de vista do utilizador. Este permite definir o ator bem como a interação que este tem com o sistema. [9] 20

Figura 9: Diagrama de Casos de Uso 21

Descrição de Casos de Uso Esta seção descreve alguns dos casos de uso mais relevantes que utilizei (Tabelas 2, 3, 4, 5, 6, 7 e 8). Cada tabela é constituída por: Nome Indica o nome do caso de uso que se trata. Descrição Descreve o objetivo do caso de uso. Atores Envolvidos Indica os atores que interagem no caso de uso. Pré Condições Indica se existir a pré condição necessária para se poder dar início ao caso de uso. Fluxo principal Descreve as várias etapas do caso de uso entre o ator e o sistema. Fluxos Alternativos Descreve validações de campos e operações anormais ao fluxo principal. Suplementos Indica os casos de teste concretos ao caso de uso. Inserir Bombeiro A tabela seguinte (Tabela 2) descreve com detalhe o caso de uso inserir bombeiro. Tabela 2: Inserir Bombeiro Nome: Descrição: Atores Envolvidos: Pré Condições Fluxo Principal: Fluxos Alternativos: Suplementos: Pós-Condições Inserir Bombeiro O objetivo é o administrador inserir um novo bombeiro Administrador Login Válido 1. O caso de uso começa quando o administrador seleciona a opção Inserir Bombeiro ; 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O administrador preenche todos os campos: nome curto, o número, a categoria, a seção, a localidade, o telemóvel da casa, o telemóvel, o nome completo, o correio eletrónico, uma pergunta, uma resposta e a palavra-chave; 4. O sistema pede para confirmar. 5. O administrador confirma 6. O sistema guarda A qualquer momento o sistema cancela o pedido se o administrador pressionar o botão da página de início; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o administrador não confirmar Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Não tem. 22

Inserir equipamento de saúde A tabela seguinte (Tabela 3) descreve com detalhe o caso de uso inserir equipamento de saúde. Tabela 3: Inserir equipamento de saúde Nome: Descrição: Atores Envolvidos: Pré Condições Fluxo Principal: Fluxos Alternativos: Suplementos: Pós-Condições Inserir equipamento de saúde O objetivo é o bombeiro do setor de saúde inserir um equipamento de saúde Bombeiro do setor de saúde Login Válido 1. O caso de uso começa quando o bombeiro do setor de saúde seleciona a opção Entrada ; 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro do setor de saúde preenche todos os campos: quantidade e descrição; 4. O sistema pede para confirmar. 5. O bombeiro do setor de saúde confirma 6. O sistema guarda A qualquer momento o sistema cancela o pedido se o bombeiro do setor de saúde pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor de saúde não confirmar Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Não tem. Atribuir equipamento a bombeiro A tabela seguinte (Tabela 4) descreve com detalhe o caso de uso atribuir equipamento a bombeiro. Tabela 4: Atribuir equipamento a bombeiro Nome: Descrição: Atores Envolvidos: Pré Condições Fluxo Principal: Atribuir equipamento a bombeiro O objetivo é o bombeiro do setor de fardamento atribuir um equipamento a um bombeiro Bombeiro do setor de fardamento Login Válido 1. O caso de uso começa quando o bombeiro do setor de fardamento tem selecionado o fardamento seleciona a opção Atribuir 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro do setor de fardamento preenche todos os campos: elemento; 23

Fluxos Alternativos: Suplementos: Pós-Condições 4. O sistema pede para confirmar. 5. O bombeiro do setor de fardamento confirma 6. O sistema guarda A qualquer momento o sistema cancela o pedido se o bombeiro do setor de fardamento pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor de fardamento não confirmar Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Não tem. Inserir anomalia em veículo A tabela seguinte (Tabela 5) descreve com detalhe o caso de uso inserir anomalia em veículo. Tabela 5: Inserir anomalia em veículo Nome: Descrição: Atores Envolvidos: Pré Condições Fluxo Principal: Fluxos Alternativos: Suplementos: Pós-Condições Inserir anomalia em veículo O objetivo é o bombeiro inserir uma anomalia de um veículo Bombeiro Login Válido 1. O caso de uso começa quando o bombeiro na pagina das Anomalias seleciona a opção Veículos 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro preenche todos os campos: veículo, data, descrição; 4. O sistema pede para confirmar. 5. O bombeiro confirma 6. O sistema guarda A qualquer momento o sistema cancela o pedido se o bombeiro pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor de fardamento não confirmar Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Não tem. Inserir talão de combustível combustível. A tabela seguinte (Tabela 6) descreve com detalhe o caso de uso inserir talão de 24

Tabela 6: Inserir talão de combustível Nome: Descrição: Atores Envolvidos: Pré Condições Fluxo Principal: Fluxos Alternativos: Suplementos: Pós-Condições Atribuir equipamento a bombeiro O objetivo é o bombeiro do setor da central inserir um talão de combustível Bombeiro do setor da central Login Válido 1. O caso de uso começa quando o bombeiro do setor da central na pagina das Combustíveis seleciona a opção Inserir 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro do setor da central preenche todos os campos: veículo, os quilómetros, o valor, o talão e o motorista; 4. O sistema pede para confirmar. 5. O bombeiro do setor da central confirma 6. O sistema guarda A qualquer momento o sistema cancela o pedido se o bombeiro do setor da central pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor da central não confirmar Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Não tem. Inserir saída de chave chave. A tabela seguinte (Tabela 7) descreve com detalhe o caso de uso inserir saída de Tabela 7: Inserir saída de chave Nome: Atribuir equipamento a bombeiro Descrição: O objetivo é o bombeiro do setor da central inserir uma saída duma chave Atores Envolvidos: Bombeiro do setor da central Pré Condições Login Válido Fluxo Principal: 1. O caso de uso começa quando o bombeiro do setor da central na pagina das Chaves seleciona a opção Saída 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro do setor da central preenche todos os campos: número de chave, nome, utilização; 4. O sistema pede para confirmar. 5. O bombeiro do setor da central confirma 6. O sistema guarda Fluxos Alternativos: A qualquer momento o sistema cancela o pedido se o bombeiro do setor da central pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor da central não confirmar Suplementos: Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Pós-Condições Não tem. 25

Inserir ocorrência ocorrência. A tabela seguinte (Tabela 8) descreve com detalhe o caso de uso inserir Tabela 8: Inserir ocorrência Nome: Inserir ocorrência Descrição: O objetivo é o bombeiro do setor da central inserir uma ocorrência Atores Envolvidos: Bombeiro do setor da central Pré Condições Login Válido Fluxo Principal: 1. O caso de uso começa quando o bombeiro do setor da central na pagina das Ocorrências seleciona a opção Outras 2. O sistema disponibiliza o formulário com todos os campos a preencher; 3. O bombeiro do setor da central preenche todos os campos: data de alerta, data saída, tipo, entidade, local e observações; 4. O sistema pede para confirmar. 5. O bombeiro do setor da central confirma 6. O sistema guarda 7. O sistema disponibiliza o formulário para adicionar o veículo. 8. O bombeiro do setor da central preenche todos os campos: veículo e elementos; 9. O sistema pede para confirmar ou adicionar mais veículos. 10. Se o bombeiro do setor da central adicionar mais veículos volta ao ponto 7); se o bombeiro do setor da central confirma 11. O sistema guarda Fluxos Alternativos: A qualquer momento o sistema cancela o pedido se o bombeiro do setor da central pressionar o botão Cancelar ; 3a) o sistema cancela se forem introduzidos campos nulos e inválidos; 5a) o sistema cancela quando o bombeiro do setor da central não confirmar Suplementos: Testar se o sistema deixa introduzir campos nulos e/ou inválidos; Pós-Condições Não tem. 5.3 Diagramas de Sequência Os diagramas de sequência representam as trocas de mensagens entre vários objetos numa sequência temporal. São utilizados para representar casos de uso com o objetivo de modelar o fluxo de mensagens, eventos e ações entre objetos e componentes. Nos diagramas de sequência está representado o ator bem como os objetos e métodos ordenados pelo tempo. [9] Neste caso serão apresentados os diagramas de sequência dos casos de usos descritos anteriormente. 26

Inserir Bombeiro O diagrama de sequência representado na Figura 10 descreve os eventos e ações quando o administrador insere um bombeiro. Figura 10:Diagrama de Sequência Inserir Bombeiro Inserir equipamento de saúde O diagrama de sequência representado na Figura 11 descreve os eventos e ações quando o bombeiro do setor de saúde insere um equipamento de saúde. 27

Figura 11: Diagrama de Sequência Inserir equipamento de saúde Atribuir Equipamento a Bombeiro O diagrama de sequência representado na Figura 12 descreve os eventos e ações quando o bombeiro do setor de fardamento atribuir um equipamento a um bombeiro. Figura 12: Diagrama de Sequência Atribuir equipamento a bombeiro 28

Inserir anomalia em veículo O diagrama de sequência representado na Figura 13 descreve os eventos e ações quando o bombeiro insere uma anomalia num veículo. Figura 13: Diagrama de Sequência Inserir anomalia veículo Inserir talão de combustível O diagrama de sequência representado na Figura 14 descreve os eventos e ações quando o bombeiro do setor central insere um talão de combustível. Figura 14: Diagrama de Sequência Inserir talão de combustível 29

Inserir saída de chave O diagrama de sequência representado na Figura 15 descreve os eventos e ações quando o bombeiro do setor central insere uma saída de chave. Figura 15: Diagrama de Sequência Inserir saída de chave Inserir ocorrência O diagrama de sequência representado na Figura 16 descreve os eventos e ações quando o bombeiro do setor central insere uma ocorrência. Figura 16: Diagrama de Sequência Inserir ocorrência 30

5.6 Diagrama de Classes Neste tópico será apresentado o diagrama de classes da aplicação desenvolvida, representado pela Figura 17. O diagrama de classes define a estrutura a desenvolver, mostra a relação entre as várias classes implementadas. A análise de requisitos previamente efetuada dá resultado a este diagrama. Este diagrama é constituído por três itens: Classes: objetos que fazem sentido para o negócio ou para a estrutura do aplicativo. Atributos da Classes: Elementos que caraterizam a classe a qual pertencem, informação contida no sistema. Métodos da Classe: Fazem com que o programa execute as chamadas do algoritmo (funções), contendo ou não regras que fazem com que os atributos alterem seus valores e que uma classe comunique com as outras classes de objeto gerando assim as suas associações, que juntas geram o funcionamento da aplicação [9]. 31

Figura 17: Diagrama de Classes 32

Semântica de Classes A semântica de classes é composta por todos os atributos, tipos de dados, descrição, valores válidos, formato e restrições de cada classe do diagrama. Atributos campos da classe; Tipo de dados valores que compõem o atributo; Descrição o que representa o atributo na classe; Valores válidos referenciar os valores válidos no contexto que esses valores irão ser usados; Formato representação do atributo, indica o limite máximo de dados que podem ser inseridos, e o modo de como estes devem ser inseridos; Restrições como é tratado o atributo, diretrizes que devem ser cumpridas relativamente à inserção de dados, bem como a sua obrigatoriedade. Classe AnomaliaEquipamento A tabela seguinte (Tabela 9) descreve todos os campos existentes na classe AnomaliaEquipamento. Tabela 9: Semântica de Classe: AnomaliaEquipamento Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdAnomaliaEq uipamento Numeração automática Número sequencial que identifica univocamente cada anomalia de equipamento Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data Date Data da verificação da anomalia do equipamento Números de 0 a 9 MM/DD/ YYYY Obrigatório e Equipamento String Nome do equipamento Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caractere s Obrigatório e 33

Descricao String Descrição da anomalia do equipamento Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 1024 Caractere s Obrigatório e IdBombeiro Integer Número que identifica o Bombeiro que introduz a anomalia Conhecimento Bit Identifica se o responsável teve conhecimento da anomalia Maior que 0 Até 5 dígitos 0 e 1 0 False 1 - True Obrigatório e não Não obrigatório e Operadores: A tabela seguinte (Tabela 10) descreve de forma detalhada as operações relacionadas com a classe AnomaliaEquipamento. Tabela 10: Operadores da Semantica de Classes: AnomaliaEquipamento Nome Consultar() Inserir() Descrição Operação que permite Consultar a anomalia do equipamento selecionada. 1. Selecionar a Anomalia através do IdAnomaliaEquipamento. 2. Mostrar a descrição da anomalia selecionada. Operação que permite inserir uma anomalia de um equipamento. 1. O sistema gera o IdAnomaliaEquipamento (incrementa uma unidade ao último IdAnomaliaEquipamento). 2. Introduzir a data, o equipamento e a descrição. 3. IdBombeiro = IdBombeiro que esta a inserir a anomalia. 4. Valida campos inseridos. 5. Insere na base de dados. Classe AnomaliaVeiculo A tabela seguinte (Tabela 11) descreve todos os campos existentes na classe AnomaliaVeiculo. 34

Tabela 11: Semântica de Classe: AnomaliaVeiculo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdAnomaliaVeicul o Numeraçã o automática Número sequencial que identifica univocament e cada anomalia de veículo Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data Date Data da verificação da anomalia do veículo Números de 0 a 9 MM/DD/YYY Y Obrigatóri o e IdVeiculo Integer Número que identifica o veículo que tem a anomalia Maior que 0 Até 5 dígitos Obrigatóri o e não Descricao String Descrição da anomalia do veículo Caractere s de A a Z, Números de 0 a 9 e caracteres especiais Até 1024 Caracteres Obrigatóri o e IdBombeiro Integer Número que identifica o Bombeiro que introduz a anomalia Maior que 0 Até 5 dígitos Obrigatóri o e não Conhecimento Bit Identifica se o responsável teve conheciment o da anomalia 0 e 1 0 False 1 - True Não obrigatório e 35

Operadores: A tabela seguinte (Tabela 12) descreve de forma detalhada as operações relacionadas com a classe AnomaliaVeiculo. Tabela 12: Operadores da Semantica de Classes: AnomaliaVeiculo Nome Consultar() Inserir() Descrição Operação que permite Consultar a anomalia do veículo selecionada. 3. Selecionar a Anomalia através do IdAnomaliaVeiculo. 4. Mostrar a descrição da anomalia selecionada. Operação que permite inserir uma anomalia de um veículo. 1. O sistema gera o IdAnomaliaVeiculo (incrementa uma unidade ao último IdAnomaliaEquipamento). 2. Introduzir a data e a descrição. 3. IdBombeiro = IdBombeiro que esta a inserir a anomalia 4. Selecionar o IdVeiculo com a anomalia. 5. Valida campos inseridos. 6. Insere na base de dados. Classe ArmazemSaude A tabela seguinte (Tabela 13) descreve todos os campos existentes na classe ArmazemSaude. Tabela 13: Semântica de Classe: ArmazemSaude Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdArmazemSaude Numeração automática Número sequencial que identifica univocamente cada entrada de equipamento no armazém de saúde Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data Date Data da entrada de equipamento no armazém de saúde Números de 0 a 9 MM/DD/YYYY Obrigatório e 36

Designacao String Descrição do equipamento Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Quantidade Integer Quantidade de equipamento. Maior que 0 Até 5 dígitos Obrigatório e IdBombeiro Integer Número que identifica o Bombeiro que insere o equipamento Maior que 0 Até 5 dígitos Obrigatório e Operadores: A tabela seguinte (Tabela 14) descreve de forma detalhada as operações relacionadas com a classe ArmazemSaude. Tabela 14: Operadores da Semantica de Classes: ArmazemSaude Nome Consultar() Inserir() Alterar() Descrição Operação que permite Consultar equipamento de saúde selecionado. 1. Selecionar o equipamento através do IdArmazemSaude. 2. Mostrar a descrição do equipamento selecionado. Operação que permite inserir um equipamento no armazém. 1. O sistema gera o IdArmazemSaude (incrementa uma unidade ao último IdArmazemSaude). 2. Introduzir a quantidade e a designação do equipamento. 3. IdBombeiro = IdBombeiro que esta a inserir o equipamento. 4. Data = Data do sistema. 5. Valida campos inseridos. 6. Insere na base de dados. Operação que permite alterar a quantidade um equipamento no armazém. 1. Selecionar o equipamento através do IdArmazemSaude. 2. Mostrar a descrição do equipamento selecionado. 3. Alterar a quantidade. 4. Valida campos alterados. 5. Altera na base de dados. 37

Classe ArmazemSaudeSaida A tabela seguinte (Tabela 15) descreve todos os campos existentes na classe ArmazemSaudeSaída. Tabela 15: Semântica de Classe: ArmazemSaudeSaida Atributo Tipo de Dados Descrição Valores Validos Formato Restriçõe s IdArmazemSaudeSai da Numeraçã o automátic a Número sequencial que identifica univocament e cada saída de equipamento no armazém de saúde Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data Date Data da saída de equipamento no armazém de saúde Números de 0 a 9 MM/DD/YYY Y Obrigatóri o e Designacao String Descrição do equipamento Caractere s de A a Z, Números de 0 a 9 e caractere s especiais Até 50 Caracteres Obrigatóri o e Quantidade Integer Quantidade de equipamento. Maior que 0 Até 5 dígitos Obrigatóri o e IdBombeiro Integer Número que identifica o Bombeiro que insere a saída de equipamento Maior que 0 Até 5 dígitos Obrigatóri o e 38

Local String Local para o qual o equipamento vai. Caractere s de A a Z, Números de 0 a 9 e caractere s especiais Até 50 Caracteres Obrigatóri o e Operadores: A tabela seguinte (Tabela 16) descreve de forma detalhada as operações relacionadas com a classe ArmazemSaudeSaida. Tabela 16: Operadores da Semantica de Classes: ArmazemSaudeSaida Nome Consultar() Inserir() Descrição Operação que permite Consultar saída de equipamento de saúde selecionado. 1. Selecionar o equipamento através do IdArmazemSaudeSaida. 2. Mostrar a descrição do equipamento selecionado. Operação que permite inserir uma saída de equipamento do armazém. 1. Selecionar o equipamento através do IdArmazemSaude. 2. Mostrar a descrição do equipamento selecionado. 3. Inserir quantidade de saída e local. 4. O sistema gera o IdArmazemSaudeSaida (incrementa uma unidade ao último IdArmazemSaudeSaida). 5. IdBombeiro = IdBombeiro que esta a inserir o equipamento. 6. Data = Data do sistema. 7. Valida campos inseridos. 8. Insere na base de dados. Classe Bombeiro Bombeiro. A tabela seguinte (Tabela 17) descreve todos os campos existentes na classe Tabela 17: Semântica de Classe: Bombeiro Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdBombeiro Numeração automática Número sequencial que identifica Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / 39

univocamente cada bombeiro Não NomeCurto String Primeiro e ultimo nome do bombeiro Caracteres de A a Z Até 50 Caracteres Obrigatório e Numero Integer Número do bombeiro Números de 0 a 9 Até 9 Dígitos Obrigatório e Categoria String Primeiro e ultimo nome do bombeiro Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Seção Integer Número do bombeiro Números de 0 a 9 Até 9 Dígitos Obrigatório e Localidade String Primeiro e ultimo nome do bombeiro Caracteres de A a Z Até 50 Caracteres Obrigatório e TelemovelCasa Integer Número do bombeiro Números de 0 a 9 Até 8 Dígitos Obrigatório e Telemovel Integer Número do bombeiro Números de 0 a 9 Até 8 Dígitos Obrigatório e NomeCompleto String Primeiro e ultimo nome do bombeiro Caracteres de A a Z Até 50 Caracteres Obrigatório e Email String Primeiro e ultimo nome do bombeiro Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Operadores: A tabela seguinte (Tabela 18) descreve de forma detalhada as operações relacionadas com a classe Bombeiro. 40

Tabela 18: Operadores da Semântica de Classes: Bombeiro Nome Consultar() Inserir() Descrição Operação que permite Consultar o bombeiro selecionado. 1. Selecionar o bombeiro através do IdBombeiro. 2. Mostrar o bombeiro correspondente. Operação que permite inserir um bombeiro. 1. O sistema gera o IdBombeiro (incrementa uma unidade ao último IdBombeiro). 2. Introduzir o número, o nome curto, o nome completo, a categoria, a seção, a localidade, o telemóvel da casa, o telemóvel particular, o email, uma pergunta, uma resposta e password. 3. Valida campos inseridos. 4. Insere na base de dados. Classe CedenciaChave A tabela seguinte (Tabela 19) descreve todos os campos existentes na classe CedenciaChave. Tabela 19: Semântica de Classe: CedenciaChave Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdCedenciaChave Numeraçã o automática Número sequencial que identifica univocament e cada bombeiro Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não DataSaida Date Data da saída de chave Números de 0 a 9 MM/DD/YYY Y HH:MM Obrigatóri o e Utilizacao String Primeiro e ultimo nome do bombeiro Caractere s de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Não obrigatório e DataEntrada Date Data da entrada da Números de 0 a 9 MM/DD/YYY Y HH:MM Obrigatóri o e 41

chave IdOperadorSaida Integer Número que identifica o operador que insere a saída da chave Maior que 0 Até 5 dígitos Obrigatóri o e não IdOperadorEntrad a Integer Número que identifica o Bombeiro que insere a entrada da chave Maior que 0 Até 5 dígitos Obrigatóri o e não IdChave Integer Número que identifica a chave Maior que 0 Até 5 dígitos Obrigatóri o e não Nome String Primeiro nome quem levanta a chave Caractere s de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Não obrigatório e Operadores: A tabela seguinte (Tabela 20) descreve de forma detalhada as operações relacionadas com a classe CedenciaChave. Tabela 20: Operadores da Semântica de Classes: CedenciaChave Nome Consultar() Inserir() Descrição Operação que permite Consultar a cedência de chave selecionada. 1. Selecionar a cedência de chave através do IdCedenciaChave. 2. Mostrar a cedência de chave correspondente. Operação que permite inserir uma cedência de chave. 1. O sistema gera o IdCedenciaChave (incrementa uma unidade ao último IdCedenciaChave). 2. Introduzir o nome e a utilização. 3. Idchave = IdChave a dar a saída. 4. IdOperadorSaida = IdOperadorSaida que insere a saída da chave. 5. IdDataSaida = Data do sistema. 6. Valida campos inseridos. 42

Alterar() 7. Insere na base de dados. Operação que permite alterar a cedência de chave. 1. Selecionar a cedência de chave através do IdCedenciaChave. 2. Mostrar a descrição da cedência de chave selecionado. 3. Alterar os dados. 4. Valida campos alterados. 5. Altera na base de dados. Classe Chave Chave. A tabela seguinte (Tabela 21) descreve todos os campos existentes na classe Tabela 21: Semântica de Classe: Chave Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdCedenciaChave Numeração automática Número sequencial que identifica univocamente cada chave Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Numero Float Número da chave Números de 0 a 9 Até 5 dígitos e 2 casas decimais Obrigatório e Local String Local da chave Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Operadores: A tabela seguinte (Tabela 22) descreve de forma detalhada as operações relacionadas com a classe Chave. 43

Tabela 22: Operadores da Semântica de Classes: Chave Nome Consultar() Descrição Operação que permite Consultar a chave selecionada. 1. Selecionar a cedência de chave através do IdChave. 2. Mostrar a chave correspondente. Classe CheckListVeiculo A tabela seguinte (Tabela 23) descreve todos os campos existentes na classe CheckListVeiculo. Tabela 23: Semântica de Classe: CheckListVeiculo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IcCheckListVeicul o Numeraçã o automática Número sequencial que identifica univocament e cada checklist Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Luzes Bit Identifica se as luzes estão boas Rotativos Bit Identifica se os rotativos estão bons Strob Bit Identifica se os stobs estão bons Aquecimento Bit Identifica se o aquecimento está bom Radios Bit Identifica se os radios estão bons 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Observacoes String Observações ocorridas Caractere s de A a Até 50 Caracteres Obrigatóri o e 44

durante o check-list Z, Números de 0 a 9 e caracteres especiais Data Date Data da verificação do veículo Números de 0 a 9 MM/DD/YYY Y HH:MM Obrigatóri o e Carrocaria Bit Identifica se a carroçaria está boa Vidros Bit Identifica se os vidros estão bons Comandos Bit Identifica se os comandos estão bons Interior Bit Identifica se o interior está bom Exterior Bit Identifica se o exterior está bom OleoMotor Bit Identifica se o óleo do motor está bom LiquidoRadiador Bit Identifica se o líquido do radiador está bom OleoDirecao Bit Identifica se o óleo da direçãoestá bom OleoTravoes Bit Identifica se o óleo dos travões está bom 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e Não obrigatório e 45

OleoEmbraiagem Bit Identifica se o óleo da embraiagem está bom Combustivel Bit Identifica se combustível está bom 0 e 1 0 False 1 - True 0 e 1 0 False 1 - True Não obrigatório e Não obrigatório e IdVeiculo Integer Número que identifica a viatura Maior que 0 Até 5 dígitos Obrigatóri o e não Operadores: A tabela seguinte (Tabela 24) descreve de forma detalhada as operações relacionadas com a classe CheckListVeiculo. Tabela 24: Operadores da Semântica de Classes: CheckListVeiculo Nome Consultar() Inserir() Descrição Operação que permite Consultar um check-list do veículo selecionado. 1. Selecionar o check-list através do IdCheckListVeiculo. 2. Mostrar check-list correspondente. Operação que permite inserir um check-list de veículo. 1. O sistema gera o IdCheckListVeiculo (incrementa uma unidade ao último IdCheckListVeiculo). 2. Selecionar os valores que estiverem bons. 3. IdVeiculo = IdVeiculo a inspecionar. 4. IdDataSaida = Data do sistema. 5. Valida campos inseridos. 6. Insere na base de dados. Classe CombustivelRepsol A tabela seguinte (Tabela 25) descreve todos os campos existentes na classe CombustivelRepsol. Tabela 25: Semântica de Classe: CombustivelRepsol Atributo Tipo de Dados Descrição Valores Validos Formato Restrições 46

IdCombustivelRepso l Numeraçã o automática Número sequencial que identifica univocament e cada recibo de combustível Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data Date Data do recibo Número s de 0 a 9 MM/DD/YYY Y HH:MM Obrigatóri o e IdVeiculo Integer Número que identifica a viatura Maior que 0 Até 5 dígitos Obrigatóri o e não Valor Float Valor do recibo de combustível Número s de 0 a 9 Até 5 dígitos e 2 casas decimais Obrigatóri o e Talao Integer Número do talão de combustível Número s de 0 a 9 Até 8 Dígitos Obrigatóri o e IdBombeiro Integer Número que identifica o bombeiro efetuou o abasteciment o Maior que 0 Até 5 dígitos Obrigatóri o e não IdOperador Integer Número que identifica o operador que insere o recibo Maior que 0 Até 5 dígitos Obrigatóri o e não Operadores: A tabela seguinte (Tabela 26) descreve de forma detalhada as operações relacionadas com a classe CombustivelRepsol. Tabela 26: Operadores da Semântica de Classes: CombustivelRepsol Nome Consultar() Descrição Operação que permite Consultar o recibo de combustível selecionado. 47

Inserir() 1. Selecionar o recibo de combustível através do IdCombustivelRepsol. 2. Mostrar o recibo correspondente. Operação que permite inserir um recibo de combustível. 1. O sistema gera o IdCombustivelRepsol (incrementa uma unidade ao último IdCombustivelRepsol). 2. Introduzir os quilómetros, o valor, o número do talão. 3. IdVeiculo = IdVeiculo a inspecionar. 4. IdBombeiro = idbombeiro que efectuou o abastecimento. 5. IdOperador = IdOperador que insere o recibo. 6. IdDataSaida = Data do sistema. 7. Valida campos inseridos. 8. Insere na base de dados. Classe Entidade Entidade. A tabela seguinte (Tabela 27) descreve todos os campos existentes na classe Tabela 27: Semântica de Classe: Entidade Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdEntidade Numeração automática Número sequencial que identifica univocamente cada entidade Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Entidade String Nome da entidade Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Numero Integer Número da entidade Maior que 0 Até 5 dígitos Obrigatório e Operadores: A tabela seguinte (Tabela 28) descreve de forma detalhada as operações relacionadas com a classe Entidade. 48

Tabela 28: Operadores da Semântica de Classes: Entidade Nome Consultar() Descrição Operação que permite Consultar a entidade selecionado. 1. Selecionar a entidade através do IdEntidade. 2. Mostrar a entidade correspondente. Classe Equipamento Equipamento. A tabela seguinte (Tabela 29) descreve todos os campos existentes na classe Tabela 29: Semântica de Classe: Equipamento Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdEquipamento Numeração automática Número sequencial que identifica univocamente cada equipamento Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Codigo String Código do equipamento Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Não obrigatório e Designacao String Designação do equipamento Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e IdTipoEquipamento Integer Número que identifica o tipo de equipamento Números de 0 a 9 Até 8 Dígitos Obrigatório e não IdEstadoEquipamento Integer Número que identifica o estado do Números de 0 a 9 Até 8 Dígitos Obrigatório e não 49

equipamento IdBombeiro Integer Número que identifica o bombeiro Maior que 0 Até 5 dígitos Não obrigatório e não IdTamanho Integer Número que identifica o tamanho Maior que 0 Até 5 dígitos Obrigatório e não Operadores: A tabela seguinte (Tabela 30) descreve de forma detalhada as operações relacionadas com a classe Equipamento. Tabela 30: Operadores da Semântica de Classes: Equipamento Nome Consultar() Inserir() Alterar() Descrição Operação que permite Consultar um equipamento selecionado. 1. Selecionar um equipamento através do IdEquipamento. 2. Mostrar o equipamento correspondente. Operação que permite inserir um equipamento. 1. O sistema gera o IdEquipamento (incrementa uma unidade ao último IdEquipamento). 2. Introduzir a designação e o código. 3. IdTipoEquipamento = IdTipoEquipamento selecionado. 4. IdEstadoEquipamento = IdEstadoEquipamento selecionado. 5. IdTamanho = IdTamanho selecionado. 6. Valida campos inseridos. 7. Insere na base de dados. Operação que permite alterar um equipamento. 1. Selecionar um equipamento através do IdEquipamento. 2. Mostrar a descrição do equipamento selecionado. 3. Alterar os dados. 4. Se quiser atribuir o equipameto a um bombeiro 4.1. IdBombeiro = IdBombeiro Selecionado. 5. Valida campos alterados. 6. Altera na base de dados. Classe Escala A tabela seguinte (Tabela 31) descreve todos os campos existentes na classe Escala. 50

Tabela 31: Semântica de Classe: Escala Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdEscala Numeração automática Número sequencial que identifica univocamente cada escala Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Data String Data da escala Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Piquete String Designação do piquete Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Ficheiro String Nome do ficheiro Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Ano Integer Ano da escala Números de 0 a 9 Até 8 Dígitos Obrigatório e Operadores: A tabela seguinte (Tabela 32) descreve de forma detalhada as operações relacionadas com a classe Escala. Tabela 32: Operadores da Semântica de Classes: Escala Nome Consultar() Descrição Operação que permite Consultar uma escala selecionado. 1. Selecionar uma escala através do IdEscala. 2. Mostrar a escala correspondente. 51

Inserir() Operação que permite inserir uma escala. 1. O sistema gera o IdEscala (incrementa uma unidade ao último IdEscala). 2. Introduzir a data, o piquete, o ano e o nome do ficheiro. 3. Valida campos inseridos. 4. Insere na base de dados. Classe Informacao Informacao. A tabela seguinte (Tabela 33) descreve todos os campos existentes na classe Tabela 33: Semântica de Classe: Informacao Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdInformacao Numeração automática Número sequencial que identifica univocamente cada informação Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Numero String Número da informação Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Titulo Integer Titulo da informação Números de 0 a 9 Até 8 Dígitos Obrigatório e Ano Integer Ano da informação Números de 0 a 9 Até 8 Dígitos Obrigatório e Operadores: A tabela seguinte (Tabela 34) descreve de forma detalhada as operações relacionadas com a classe Informacao. 52

Tabela 34: Operadores da Semântica de Classes: Informacao Nome Consultar() Inserir() Descrição Operação que permite Consultar uma informação selecionado. 3. Selecionar uma informação através do IdInformacao. 4. Mostrar a informação correspondente. Operação que permite inserir uma informação. 5. O sistema gera o IdInformacao (incrementa uma unidade ao último IdInformacao). 6. Introduzir o ano, o número e o título da informação. 7. Valida campos inseridos. 8. Insere na base de dados. Classe OrdensServico A tabela seguinte (Tabela 35) descreve todos os campos existentes na classe OrdensServico. Tabela 35: Semântica de Classe: OrdensServico Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdOrdensServico Numeração automática Número sequencial que identifica univocament e cada ordem de serviço Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Numero Integer Número da ordem de serviço Números de 0 a 9 Até 8 Dígitos Obrigatório e Assunto String Assunto da ordem de serviço Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Ano Integer Ano da ordem de serviço Números de 0 a 9 Até 8 Dígitos Obrigatório e Ficheiro String Nome do ficheiro Caracteres de A a Z, Números de Até 50 Caracteres Obrigatório e 53

0 a 9 e caracteres especiais Operadores: A tabela seguinte (Tabela 36) descreve de forma detalhada as operações relacionadas com a classe OrdenServico. Tabela 36: Operadores da Semântica de Classes: OrdenServico Nome Consultar() Inserir() Descrição Operação que permite Consultar uma ordem de serviço selecionado. 5. Selecionar uma ordem de serviço através do IdOrdensServico. 6. Mostrar a informação correspondente. Operação que permite inserir uma ordem de serviço. 9. O sistema gera o IdOrdensServico (incrementa uma unidade ao último IdOrdensServico). 10. Introduzir o ano, o número, o título da informação e nome do ficheiro. 11. Valida campos inseridos. 12. Insere na base de dados. Classe TipoEquipamento A tabela seguinte (Tabela 37) descreve todos os campos existentes na classe TipoEquipamento. Tabela 37: Semântica de Classe: TipoEquipamento Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdTipoEquipamento Numeração automática Número sequencial que identifica univocamente cada tipo de equipamento Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Tipo String Nome do tipo de euipamento Caracteres de A a Z, Números de 0 a 9 e Até 50 Caracteres Obrigatório e 54

caracteres especiais Operadores: A tabela seguinte (Tabela 38) descreve de forma detalhada as operações relacionadas com a classe TipoEquipamento. Tabela 38: Operadores da Semântica de Classes: TipoEquipamento Nome Consultar() Descrição Operação que permite Consultar um tipo de equipamento selecionado. 7. Selecionar um tipo equipamento através do IdTipoEquipamento. 8. Mostrar o tipo equipamento correspondente. Classe EstadoEquipamento A tabela seguinte (Tabela 39) descreve todos os campos existentes na classe EstadoEquipamento. Tabela 39: Semântica de Classe: EstadoEquipamento Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdEstadoEquipamento Numeração automática Número sequencial que identifica univocamente cada estado de equipamento Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Estado String Nome estado Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e 55

Operadores: A tabela seguinte (Tabela 40) descreve de forma detalhada as operações relacionadas com a classe EstadoEquipamento. Tabela 40: Operadores da Semântica de Classes: EstadoEquipamento Nome Consultar() Descrição Operação que permite Consultar um estado de equipamento selecionado. 1. Selecionar um estado equipamento através do IdEstadoEquipamento. 2. Mostrar o estado equipamento correspondente. Classe TamanhoEquipamento A tabela seguinte (Tabela 41) descreve todos os campos existentes na classe TamanhoEquipamento. Tabela 41: Semântica de Classe: TamanhoEquipamento Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdTamanhoEquipament o Numeraçã o automática Número sequencial que identifica univocament e cada tamanho de equipamento Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Tamanho String Tamanho equipamento Caractere s de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caractere s Obrigatóri o e Operadores: A tabela seguinte (Tabela 42) descreve de forma detalhada as operações relacionadas com a classe TamanhoEquipamento. 56

Tabela 42: Operadores da Semântica de Classes: TamanhoEquipamento Nome Descrição Consultar() Operação que permite Consultar um tamanho de equipamento selecionado. 1. Selecionar um tamanho equipamento através do IdTamanhoEquipamento. 2. Mostrar o tamanho equipamento correspondente. Classe Ocorrencia A tabela seguinte (Tabela 43) descreve todos os campos existentes na classe Ocorrencia. Tabela 43: Semântica de Classe: Ocorrencia Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdOcorrencia Numeração automática Número sequencial que identifica univocamente cada ocorrência Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Local String Local da ocorrência Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Quilometros Integer Quilometros da ocorrência. Números de 0 a 9 Até 8 Dígitos Não obrigatório e DataAlerta Date Data de alerta da ocorrência Números de 0 a 9 MM/DD/YYYY HH:MM Obrigatório e DataSaida Date Data da saída da ocorrência Números de 0 a 9 MM/DD/YYYY HH:MM Obrigatório e DataTo Date Data da chegada ao to Números de 0 a 9 MM/DD/YYYY HH:MM Não obrigatório e DataSaidaTo Date Data da saída do to Números de 0 a 9 MM/DD/YYYY HH:MM Não obrigatório 57

e DataEntrada Date Data de fecho da ocorrência Números de 0 a 9 MM/DD/YYYY HH:MM Não obrigatório e Observacoes String Observações da ocorrência Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Não obrigatório e IdOcorrenciaTipo Integer Número que identifica o tipo de ocorrência Maior que 0 Até 5 dígitos Obrigatório e FichaCodu Integer Número da ficha do codu Maior que 0 Até 5 dígitos Não obrigatório e IdEntidade Integer Número que identifica a entidade Maior que 0 Até 5 dígitos Obrigatório e Elementos Integer Número de elementos Maior que 0 Até 5 dígitos Não obrigatório e Operadores: A tabela seguinte (Tabela 44) descreve de forma detalhada as operações relacionadas com a classe Ocorrencia. Tabela 44: Operadores da Semântica de Classes: Ocorrencia Nome Consultar() Inserir() Descrição Operação que permite Consultar uma ocorrência selecionado. 1. Selecionar uma ocorrência o através do IdOcorrencia. 2. Mostrara ocorrência correspondente. Operação que permite inserir uma ocorrência. 1. O sistema gera o IdOcorrencia (incrementa uma unidade ao último IdOcorrencia). 2. Introduzir a data de alerta, data de saída, local e observações. 3. IdOcorrenciaTipo = IdOcorrenciaTipo selecionado. 58

Alterar() 4. IdEntidade = IdEntidade selecionado. 5. IdTamanho = IdTamanho selecionado. 6. Valida campos inseridos. 7. Insere na base de dados. Operação que permite alterar uma ocorrência. 1. Selecionar um equipamento através do IdOcorrencia. 2. Mostrar a descrição da ocorrência selecionado. 3. Alterar os dados. 4. Valida campos alterados. 5. Altera na base de dados. Classe OcorrenciaVeiculo A tabela seguinte (Tabela 45) descreve todos os campos existentes na classe OcorrenciaVeiculo. Tabela 45: Semântica de Classe: OcorrenciaVeiculo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdOcorrencia Integer Número que identifica a ocorrência IdVeiculo Integer Número que identifica o veículo VerbeteNumero Integer Número de verbete Maior que 0 Até 5 dígitos Maior que 0 Até 5 dígitos Maior que 0 Até 5 dígitos Obrigatório e não Obrigatório e não Não obrigatório e Classe OcorrenciaTipo A tabela seguinte (Tabela 46) descreve todos os campos existentes na classe OcorrenciaTipo. Tabela 46: Semântica de Classe: OcorrenciaTipo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdOcorrenciaTipo Numeração automática Número sequencial que identifica Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não 59

univocamente cada tipo de ocorrência Tipo String Tipo de ocorrência Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Numero Integer Número de tipo ocorrência Maior que 0 Até 5 dígitos Obrigatório e Operadores: A tabela seguinte (Tabela 47) descreve de forma detalhada as operações relacionadas com a classe OcorrenciaTipo. Tabela 47: Operadores da Semântica de Classes: OcorrenciaTipo Nome Consultar() Descrição Operação que permite Consultar um tipo de ocorrência selecionado. 1. Selecionar um tipo de ocorrência através do IdOcorrenciaTipo. 2. Mostrar o tipo de ocorrência correspondente. Classe Veiculo Veiculo. A tabela seguinte (Tabela 48) descreve todos os campos existentes na classe Tabela 48: Semântica de Classe: Veiculo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdVeiculo Numeração automática Número sequencial que identifica univocamente cada veículo Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Matricula String Matrícula do veículo Caracteres de A a Z, Até 50 Caracteres Obrigatório e 60

Números de 0 a 9 e caracteres especiais Quilometros Integer Quilómetros o veículo Números de 0 a 9 Até 8 Dígitos Obrigatório e Nome String Nome do veículo Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Marca String Marca do veículo Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Modelo String Modelo do veículo Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e IdVeiculoEstado Integer Número que identifica o estado veículo IdVeiculoTipo Integer Número que identifica o tipo de veículo Maior que 0 Até 5 dígitos Maior que 0 Até 5 dígitos Obrigatório e não Obrigatório e não Operadores: A tabela seguinte (Tabela 49) descreve de forma detalhada as operações relacionadas com a classe Veiculo. Tabela 49: Operadores da Semântica de Classes: Veiculo Nome Consultar() Descrição Operação que permite Consultar um veículo selecionado. 61

Inserir() Alterar() 1. Selecionar um veículo o através do IdVeiculo. 2. Mostrara veículo correspondente. Operação que permite inserir uma ocorrência. 1. O sistema gera o IdVeiculo (incrementa uma unidade ao último IdVeiculo). 2. Introduzir marca, modelo, nome, matricula e os quilometros 3. IdVeiculoTipo = IdVeiculoTipo selecionado. 4. IdVeiculoEstado = IdVeiculoEstado selecionado. 5. Valida campos inseridos. 6. Insere na base de dados. Operação que permite alterar um veículo. 1. Selecionar um veículo através do IdVeiculo. 2. Mostrar a descrição do veículo selecionado. 3. Alterar os dados. 4. Valida campos alterados. 5. Altera na base de dados. Classe VeiculoEstado A tabela seguinte (Tabela 50) descreve todos os campos existentes na classe VeiculoEstado. Tabela 50: Semântica de Classe: VeiculoEstado Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdVeiculoEstado Numeração automática Número sequencial que identifica univocamente cada estado de veículo Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Estado String Estado do veículo Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Operadores: A tabela seguinte (Tabela 51) descreve de forma detalhada as operações relacionadas com a classe VeiculoEstado. 62

Tabela 51: Operadores da Semântica de Classes: VeiculoEstado Nome Consultar() Descrição Operação que permite Consultar um estado veículo selecionado. 3. Selecionar um estado veículo o através do IdVeiculoEstado. 4. Mostrara estado de veículo correspondente. Classe VeiculoTipo VeiculoTipo. A tabela seguinte (Tabela 52) descreve todos os campos existentes na classe Tabela 52:Semântica de Classe: VeiculoTipo Atributo Tipo de Dados Descrição Valores Validos Formato Restrições IdVeiculoTipo Numeração automática Número sequencial que identifica univocamente cada tipo de veículo Maior que 0 Até 5 Dígitos Gerado Pelo Sistema / Não Tipo String Tipo de veículo Caracteres de A a Z, Números de 0 a 9 e caracteres especiais Até 50 Caracteres Obrigatório e Operadores: A tabela seguinte (Tabela 53) descreve de forma detalhada as operações relacionadas com a classe VeiculoTipo. Tabela 53: Operadores da Semântica de Classes: VeiculoTipo Nome Consultar() Descrição Operação que permite Consultar um tipo de veículo selecionado. 1. Selecionar um tipo de veículo o através do IdVeiculoTipo. 2. Mostrara tipo de veículo correspondente. 63

5.5 Diagrama de Atividades O diagrama de atividades pode ser utilizado para descrever cada um dos casos de uso, realçando o encadeamento de atividades realizadas por cada um dos objetos do sistema. O diagrama mostra o fluxo de atividades num único processo, mostrando como uma atividade depende da outra. Na figura 18 representa o diagrama de atividade, com os fluxos operacionais do sistema descrevendo de uma forma genética e organizada as operações que constituem um nova ocorrência [9]. Figura 18: Diagrama de Atividades: Inserir Ocorrência 64

5.6 Diagrama de Instalação O diagrama de instalação ilustra a arquitetura do sistema, permite demostrar como o hardware está organizado e como os componentes de software estão distribuídos, estabelecendo assim uma ligação física, como mostra a figura 19 [9]. Figura 19: Diagrama de Instalação Como a aplicação é uma aplicação web tudo o que o Bombeiro precisa é de ter um computador ou dispositivo móvel e de uma ligação à internet para aceder à aplicação que está num servidor, juntamente com a base de dados, desta forma torna a aplicação acessível em todo lado. 65

6. Implementação da Solução Neste capítulo apresenta a base de dados da aplicação, partes de código mais relevantes e alguns exemplos, ilustrados com imagens da aplicação, do funcionamento da mesma. 6.1 Introdução Como a análise de requisitos foi um estudo bem elaborado a implementação da aplicação tornou-se mais fácil. No desenvolvimento da aplicação tentou-se sempre procurar formas mais eficazes e simples de realizar o pretendido, de modo a traduzir numa maior eficácia e rapidez da execução das tarefas. E é essa a missão de um programador para tornar o produto final o mais simples e fácil de utilizar, não esquecendo a rapidez de execução da aplicação. Na figura 20 mostra a página de início da aplicação, a seguir à criação da base de dados foi a primeira interface a ser criada e discutida com o responsável dos Bombeiros. Figura 20: Página de Inicio 66

6.2 Base de Dados Neste capítulo será apresentado o Modelo Entidade Relacionamento (ER) relativo à aplicação. O modelo físico representado pela figura 21 é a implementação da Base de Dados da aplicação, que foi elaborado durante a fase inicial do desenvolvimento da aplicação. Contudo ao longo da elaboração da aplicação este modelo foi sofrendo alterações, de modo a torna-lo mais eficiente. Figura 21: Base de Dados 67

6.2 Código Utilizado na Aplicação e Testes Neste ponto do relatório vou ilustrar algumas das interfaces mais importantes da aplicação da parte de criação de Ocorrências., bem como alguns pedaços de código mais relevantes. Será apresentado um exemplo de inserir, editar e pesquisar uma ocorrência. Na figura 22 mostra a página da central de comunicações, que faz a gestão das ocorrências, onde se pode consultar as ocorrências estejam elas em curso ou já fechadas, inserir uma nova ocorrência e editar dados de uma ocorrência. As ocorrências podem ser pesquisadas pelo número ou pelo estado da ocorrência se ainda está aberta ou já se encontra fechada. Figura 22: Página Central de Comunicações 68

Para a criação de uma nova ocorrência basta selecionar na parte dos alertas por exemplo Pré-Hosp, onde irá aparecer na página os dados para a inserção de uma ocorrência pré-hospitalar como mostra a figura 23. Figura 23: Página ocorrências: inserir ocorrência pré-hospitalar Como visualizado na figura anterior, para a inserção de uma ocorrência préhospitalar basta preencher o local da ocorrência, o tipo de ocorrência, o número da ficha CODU e outras observações importantes, todos estes campos são obrigatórios e o campo do número CODU só deixa inserir números. Com estes dados e com a hora do sistema é criada uma ocorrência na base de dados. De seguida é pedido ao bombeiro para selecionar o veículo e inserir o número de elementos, só deixa selecionar um tipo de veículos em conforme o tipo de ocorrência e se o veículo não estiver noutra ocorrência que ainda se encontre aberta. 69

Figura 24: Página ocorrências: inserir ocorrência pré-hospitalar, adicionar veículo Na figura 24 mostra em cima os dados da ocorrência, já com a hora, e em baixo os dados para selecionar o veículo e o número de elementos. Após o bombeiro carregar em inserir o veículo e o número de elementos e adicionado à ocorrência bem como essa informação é enviada para a página do veículo inserido, afim de, os elementos terem a informação da ocorrência e ainda terem num mapa o local da ocorrência como visualizado na figura 25. Figura 25: Página veículo: ocorrência 70

Como mostrado na figura anterior o dispositivo móvel afeto ao veículo tem os dados da ocorrência bem como a possibilidade de localizar o local da mesma através de um mapa, que por defeito põe o local de partida o Quartel de Bombeiros, ainda que se possa alterar o mesmo manualmente. Para isso foi recorrida a API do Google Maps, como mostra a listagem (Listagem 4) em baixo. Listagem 4 Inserir Bombeiro protected void GridViewOcorrencias_SelectedIndexChanged(object sender, EventArgs e) { tb_endpoint.text = GridViewOcorrencias.SelectedRow.Cells[2].Text; tb_frompoint.text = "40.535443, -7.288847"; GDirection direction = new GDirection(); direction.autogenerate = false; GMap1.enableHookMouseWheelToZoom = true; direction.buttonelementid = "bt_go"; direction.fromelementid = tb_frompoint.clientid; direction.toelementid = tb_endpoint.clientid; direction.divelementid = "div_directions direction.clearmap = true; GMap1.Add(direction); } PanelMapa.Visible = true; Para editar e consultar os dados de uma ocorrência basta selecionar a ocorrência pretendida e de seguida é apresentado todos os dados da ocorrência conforme apresentado na figura 26. Neste formulário aparecem os dados da ocorrência. Para efetuar o fecho da ocorrência é necessário preencher todos os campos do formulário. Os campos do formulário têm validações de inserção. 71

Figura 26: Página ocorrências: editar ocorrência De seguida é apresentado uma parte do código do registo de um novo bombeiro, da sua inserção na base de dados, onde se pode visualizar todos os dados necessários para a criação de um novo Bombeiro, a criação da ligação para a base de dados e o comando de inserir toda a informação. Listagem 5 Inserir Bombeiro protected void RegisterUser_CreatedUser(object sender, EventArgs e) { FormsAuthentication.SetAuthCookie(RegisterUser.UserName, createpersistentcookie: false); SqlConnection connection = null; try { connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Connect ionstring); connection.open(); SqlCommand insert = new SqlCommand("INSERT INTO BOMBEIRO(NOMECURTO, NUMERO, CATEGORIA, SECCAO, LOCALIDADE, TELEMOVELCASA, TELEMOVEL, NOMECOMPLETO, EMAIL) VALUES (@NOMECURTO, @NUMERO, @CATEGORIA, @SECCAO, @LOCALIDADE, @TELEMOVELCASA, @TELEMOVEL, @NOMECOMPLETO, @EMAIL)", connection); insert.parameters.addwithvalue("nomecurto", nomecurto); insert.parameters.addwithvalue("categoria", categoria); insert.parameters.addwithvalue("seccao", seccao); insert.parameters.addwithvalue("localidade", localidade); 72

insert.parameters.addwithvalue("telemovelcasa", telemovelcasa); insert.parameters.addwithvalue("telemovel", telemovel); insert.parameters.addwithvalue("nomecompleto", nomecompleto); insert.parameters.addwithvalue("passwordquestion", Membership.GetUser(RegisterUser.UserName).PasswordQuestion); insert.parameters.addwithvalue("email", Membership.GetUser(RegisterUser.UserName).Email); insert.parameters.addwithvalue("numero", RegisterUser.UserName); insert.executenonquery(); } finally { if (connection!= null) connection.close(); } } Na figura apresentada em baixo (Figura 27), mostra a página de inserir um novo bombeiro, todos os campos a serem inseridos estão validados, não podem ser nulos nem num formato incorreto. Figura 27: Página Inserir Bombeiro 73