UNIVERSIDADE DO SUL DE SANTA CATARINA MATHEUS RIBEIRO MELIM THIAGO THIESEN DE SOUZA DESENVOLVIMENTO DE UM SISTEMA WEB: CONTROLE DE BOMBEIROS COMUNITÁRIOS PALHOÇA 2012 MATHEUS RIBEIRO MELIM THIAGO THIESEN DE SOUZA DESENVOLVIMENTO DE UM SISTEMA WEB: CONTROLE DE BOMBEIROS COMUNITÁRIOS Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Informação, da Universidade do Sul de Santa Catarina, como requisito parcial para obtenção do título de Bacharel. Orientadora: Professora Maria Inés Castiñeira PALHOÇA 2012 MATHEUS RIBEIRO MELIM THIAGO THIESEN DE SOUZA DESENVOLVIMENTO DE UM SISTEMA WEB: CONTROLE DE BOMBEIROS COMUNITÁRIOS Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Informação, da Universidade do Sul de Santa Catarina, como requisito parcial para obtenção do título de Bacharel. Palhoça, 15 de junho de 2012. _____________________________________________________ Prof ͣ. e orientadora Maria Inés Castiñeira, Dra. Universidade do Sul de Santa Catarina _____________________________________________________ Prof. Ricardo Villarroel Dávalos, Dr. Universidade do Sul de Santa Catarina _____________________________________________________ Anderson Medeiros Sarte, Ten. Corpo de Bombeiros Militar de Santa Catarina Dedicamos este trabalho aos nossos pais que sempre nos ajudaram, incentivaram e apoiaram as nossas escolhas. À professora e orientadora Maria Inés Castiñera por auxiliar na orientação neste trabalho. AGRADECIMENTOS Agradecemos à nossa família por acreditar em nosso potencial e pelo auxílio nos momentos difíceis. A todos os professores que dividiram seu conhecimento conosco durante o curso, agradecendo especialmente a professora Maria Inés Castiñera, que nos foi uma pessoa de grande importância para a realização deste trabalho. Ao Tenente Anderson Medeiros Sarte, representando o Corpo de Bombeiros Militar de Santa Catarina, pelo incentivo e dedicação em todos os momentos, ficando disponível para o auxílio da realização deste trabalho. Às namoradas pela paciência nos momentos de ausência para o desenvolvimento deste trabalho. “A vida está cheia de desafios que, se aproveitados de forma criativa, transformam-se em oportunidades.” (Maxwell Maltz). RESUMO No Corpo de Bombeiro Militar de Santa Catarina – CBMSC –, não existe um sistema de controle de agendamento dos Bombeiros Comunitários na Escala de Serviço. Com isso, nasceu a idéia de desenvolver um sistema para informatizar este processo, tornando-o mais prático através da web. Este trabalho tem, como finalidade, planejar e desenvolver um sistema para informatizar este processo. Como etapas metodológidas, deste trabalho, foram estipuladas as seguintes: revisão da literatura, através do estudo e pesquisas bibliográficas, sobre processos de desenvolvimento de software, assim como sobre o Regulamento Geral do Serviço Voluntário no Corpo de Bombeiros Militar de Santa Catarina e sobre esta entidade; modelagem do software utilizando o modelo ICONIX, desenvolvimento do sistema, validação e testes. Optou-se pela arquitetura web, para centralizar o processo, tornando as informações mais acessíveis à Coordenadoria dos Projetos Comunitários do CBMSC. Após a conclusão destes tópicos, o desenvolvimento deste trabalho disponibiliza ao Corpo de Bombeiros de Santa Catarina uma solução de Tecnologia da Informação que agilizará o processo de agendamento na escala de serviço dos Bombeiros Comunitários de maneira eficiente, previsível e que atinge as necessidades do negócio, documentado através de diagramas da UML, que foram desenvolvidos seguindo a metodologia ICONIX. Foi escolhida como linguagem principal no desenvolvimento do sistema a linguagem Microsoft .NET, juntamente com o Banco de Dados Microsoft SQL Server 2008. Palavras-chave: Corpo de Bombeiros Militar de Santa Catarina. Bombeiro Comunitário. ICONIX. Software de Agendamento. Escala de Serviço. ABSTRACT In Military Fire Department of Santa Catarina – CBMSC – there is no scheduling system to control the schedule of the fire department. Thus was born the idea of developing a system to computerize this process, making it more practical through the web. This work aimed to design and develop a system to computerize this process. As methodological steps of this work, were set as follows: a literature review, through study research literature on software development processes, as well as on the General Regulation of volunteer Service at the Fire Station in Santa Catarina and upon this organization, modeling software using the ICONIX model, system development, validation and testing. We opted for the web architecture to centralize the process, making information more accessible by the coordinating body of the community projects in the CBMSC. After the conclusion of topics, the development of this work include to the Fire Department of Santa Catarina, an information technology solution which speeds up the scheduling process in an efficient, predictable and achieves the business needs, documented by UML diagrams, which were developed following the methodology ICONIX. Was chosen as the main language in the development of the system the language Microsoft .NET, along with the Database Microsoft SQL Server 2008. Keywords: Fire Department in Santa Catarina. Firefighter Community. ICONIX. Scheduling Software. LISTA DE ILUSTRAÇÕES FIGURA 1 – LOGO DO CBMSC. .................................................................................... 20 FIGURA 2 – MODELO CASCATA. ................................................................................ 26 FIGURA 3 – MODELO INCREMENTAL. ...................................................................... 26 FIGURA 4 – PROTOTIPAGEM....................................................................................... 27 FIGURA 5 – MODELO ESPIRAL. .................................................................................. 28 FIGURA 6 – VALORIZAÇÃO SEGUNDO AGILE MANIFESTO (2001). ..................... 29 FIGURA 7 – PRINCÍPIOS DOS MÉTODOS ÁGEIS. ...................................................... 30 FIGURA 8 – CICLO RELEASE XP. ................................................................................ 31 FIGURA 9 – DIAGRAMA DE ROBUSTEZ. ................................................................... 34 FIGURA 10 – OBJETOS. ................................................................................................... 35 FIGURA 11 – DIAGRAMA DE CLASSE. ......................................................................... 37 FIGURA 12 – ORGANIZAÇÃO GERAL DOS DIAGRAMAS DE UML 2. ...................... 39 FIGURA 13 – DIAGRAMAS ESTRUTURAIS. ................................................................. 40 FIGURA 14 – DIAGRAMAS COMPORTAMENTAIS...................................................... 40 FIGURA 15 – FLUXOGRAMA COM AS ETAPAS METODOLÓGICAS. ....................... 44 FIGURA 16 – PROPOSTA DO TRABALHO. ................................................................... 45 FIGURA 17 – ATORES DO SISTEMA. ............................................................................ 46 FIGURA 18 – DIAGRAMA DO MODELO DE PROCESSO DO NEGÓCIO ATUAL. ..... 49 FIGURA 19 – DIAGRAMA DO MODELO DE PROCESSO DO NOVO SISTEMA. ........ 52 FIGURA 20 – REQUISITOS FUNCIONAIS DO SISTEMA. ............................................. 53 FIGURA 21 – CASOS DE USO DO SISTEMA. ................................................................ 59 FIGURA 22 – MODELO DE DOMÍNIO PARA CADASTRO DE LOCAL. ...................... 64 FIGURA 23 – MODELO DE DOMÍNIO PARA CADASTRO DE USUÁRIO................... 65 FIGURA 24 – MODELO DE DOMÍNIO PARA CADASTRO DE ESCALA. .................... 65 FIGURA 25 – MODELO DE DOMÍNIO PARA CONFIRMAÇÃO DE SERVIÇO............ 66 FIGURA 26 – DIAGRAMA DE CLASSES PARA CADASTRO DE LOCAL. .................. 67 FIGURA 27 – DIAGRAMA DE CLASSES PARA CADASTRO DE USUÁRIO............... 68 FIGURA 28 – DIAGRAMA DE CLASSES PARA CADASTRO DE ESCALA. ................ 69 FIGURA 29 – DIAGRAMA DE CLASSES PARA GERAÇÃO DE RELATÓRIOS. ......... 69 FIGURA 30 – DIAGRAMA DE ROBUSTEZ PARA CADASTRO DE LOCAL. .............. 70 FIGURA 31 – DIAGRAMA DE ROBUSTEZ PARA CADASTRO DE USUÁRIO. .......... 71 FIGURA 32 – DIAGRAMA DE ROBUSTEZ PARA CADASTRO DE ESCALAS. .......... 72 FIGURA 33 – DIAGRAMA DE ROBUSTEZ PARA GERAÇÃO DE RELATÓRIOS. ..... 73 FIGURA 34 – DIAGRAMA DE ROBUSTEZ PARA CONFIRMAÇÃO DE SERVIÇO. ... 73 FIGURA 35 – DIAGRAMA DE SEQUÊNCIA PARA CADASTRO DE LOCAL. ............ 75 FIGURA 36 – DIAGRAMA DE SEQUÊNCIA PARA CADASTRO DE USUÁRIO. ........ 76 FIGURA 37 – DIAGRAMA DE SEQUÊNCIA PARA CADASTRO DE ESCALA. .......... 77 FIGURA 38 – DIAGRAMA DE SEQUÊNCIA PARA GERAÇÃO DE RELATÓRIOS. ... 78 FIGURA 39 – MODELAGEM DO BANCO DE DADOS. ................................................. 79 FIGURA 40 – TECNOLOGIAS UTILIZADAS. ................................................................ 80 FIGURA 41 – TELA DE LOGIN. ....................................................................................... 86 FIGURA 42 – TELA INICIAL DO SISTEMA. .................................................................. 87 FIGURA 43 – TELA INICIAL DO SISTEMA PARA BOMBEIRO COMUNITÁRIO. ..... 87 FIGURA 44 – TELA DE CONSULTA DE LOCAIS. ......................................................... 88 FIGURA 45 – TELA DE INCLUSÃO/ALTERAÇÃO DE LOCAL. ................................... 88 FIGURA 46 – TELA DE CONSULTA DE USUÁRIOS..................................................... 89 FIGURA 47 – TELA DE INCLUSÃO/ALTERAÇÃO DE USUÁRIO. .............................. 89 FIGURA 48 – TELA DE ALTERAÇÃO DO CADASTRO DO USUÁRIO LOGADO. ..... 90 FIGURA 49 – TELA DE ESCALA DE SERVIÇO PARA AGENDAMENTO. .................. 91 FIGURA 50 – TELA DE ESCALA DE SERVIÇO PARA CONFIRMAÇÃO DE SERVIÇO............................................................................................................................91 FIGURA 51 – TELA DE CONFIRMAÇÃO DE SERVIÇO. .............................................. 92 FIGURA 52 – TELA DE ESCALA DE SERVIÇO APÓS CONFIRMAÇÃO DE SERVIÇO.............................................................................................................................92 FIGURA 53 – TELA DE RELATÓRIOS DO SISTEMA.................................................... 93 FIGURA 54 – TELA DE RELATÓRIO DE BOMBEIROS COMUNITÁRIOS CADASTRADOS. ............................................................................................................... 94 FIGURA 55 – TELA DE RELATÓRIO DE HORAS TRABALHADAS POR BC. ............ 95 LISTA DE QUADROS QUADRO 1 – REGRAS DE NEGÓCIO DO SISTEMA. .................................................... 57 QUADRO 2 – CASO DE USO 1 - CADASTRO DE LOCAL............................................. 60 QUADRO 3 – CASO DE USO 2 - CADASTRO DE USUÁRIO. ....................................... 60 QUADRO 4 – CASO DE USO 3 - CADASTRO DE ESCALA. ......................................... 61 QUADRO 5 – CASO DE USO 4 - CONFIRMAÇÃO DE SERVIÇO. ................................ 62 QUADRO 6 – CASO DE USO 5 - GERAÇÃO DE RELATÓRIO DE BOMBEIROS COMUNITÁRIOS CADASTRADOS. ................................................................................ 62 QUADRO 7 – CASO DE USO 6 - GERAÇÃO DE RELATÓRIO DE HORAS TRABALHADAS POR BOMBEIRO COMUNITÁRIO. ..................................................... 63 LISTA DE SIGLAS BBM – Batalhão de Bombeiro Militar BC – Bombeiro Comunitário CBMSC – Corpo de Bombeiros Militar de Santa Catarina OBM – Organização de Bombeiro Militar OMG - Object Management Group OTM – Object Modeling Technique PDF – Portable Document Format TCC – Trabalho de Conclusão de Curso UML – Unified Modeling Language UNISUL – Universidade do Sul de Santa Catarina XP – Extreme Programming SUMÁRIO 1 INTRODUÇÃO ............................................................................................................. 16 1.1 PROBLEMÁTICA ...................................................................................................... 17 1.2 OBJETIVOS ............................................................................................................... 17 1.2.1 Objetivo Geral ......................................................................................................... 18 1.2.2 Objetivos Específicos .............................................................................................. 18 1.3 JUSTIFICATIVA ........................................................................................................ 18 1.4 ESTRUTURA DA MONOGRAFIA ............................................................................ 19 2 CORPO DE BOMBEIROS DE SANTA CATARINA .................................................... 20 2.1 O CORPO DE BOMBEIROS MILITAR DE SANTA CATARINA ............................ 20 2.2 O SERVIÇO VOLUNTÁRIO NO CORPO DE BOMBEIROS MILITAR DE SANTA CATARINA ........................................................................................................................ 21 2.2.1 Regulamento Geral ................................................................................................. 22 2.3 SISTEMAS PARA CONTROLE DE BOMBEIRO COMUNITÁRIO ......................... 23 2.4 CONSIDERAÇÕES FINAIS ....................................................................................... 24 3 DESENVOLVIMENTO DE SOFTWARE ..................................................................... 25 3.1 MODELOS DE DESENVOLVIMENTO DE SOFTWARE......................................... 25 3.2 METODOLOGIAS ÁGEIS ......................................................................................... 28 3.2.1 Modelo Extreme Programming (XP) ..................................................................... 30 3.2.2 Iconix ....................................................................................................................... 32 3.2.2.1 Etapas .................................................................................................................... 33 3.2.2.1.1 Etapa 1: identificar os objetos de domínio do mundo real .................................... 33 3.2.2.1.2 Etapa 2: definir os requisitos comportamentais ................................................... 33 3.2.2.1.3 Etapa 3: análise de robustez ................................................................................ 34 3.2.2.1.4 Etapa 4: alocar comportamento para os objetos .................................................. 35 3.2.2.1.5 Etapa 5: finalizar o modelo estático..................................................................... 36 3.2.2.1.6 Etapa 6: escrever / gerar código .......................................................................... 37 3.2.2.1.7 Etapa 7: executar o sistema e teste de aceitação do usuário ................................ 38 3.2.2.2 Características do ICONIX ..................................................................................... 38 3.3 UNIFIED MODELING LANGUAGE - UML ............................................................. 38 3.4 CONSIDERAÇÕES FINAIS ....................................................................................... 40 4 MÉTODO ...................................................................................................................... 42 4.1 CARACTERIZAÇÃO DA PESQUISA ....................................................................... 42 4.2 CLASSIFICAÇÃO ...................................................................................................... 42 4.3 PLANEJAMENTO ...................................................................................................... 43 4.4 ETAPAS METODOLÓGICAS ................................................................................... 44 4.5 PROPOSTA ................................................................................................................ 44 4.6 DELIMITAÇÕES........................................................................................................ 45 5 MODELAGEM .............................................................................................................. 46 5.1 ATORES ..................................................................................................................... 46 5.2 PROCESSOS DE NEGÓCIO ...................................................................................... 47 5.2.1 Modelagem do processo de negócio ........................................................................ 47 5.2.2 Diagrama do modelo de processo do negócio ......................................................... 49 5.2.3 Modelagem do processo de negócio com o sistema informatizado ........................ 50 5.2.4 Diagrama do modelo de processo com o sistema informatizado ........................... 52 5.3 REQUISITOS FUNCIONAIS ..................................................................................... 53 5.4 REQUISITOS NÃO FUNCIONAIS ............................................................................ 54 5.4.1 Requisitos de Produto ............................................................................................. 54 5.4.2 Requisitos Organizacionais..................................................................................... 55 5.4.3 Requisitos Externos................................................................................................. 55 5.5 REGRAS DE NEGÓCIO ............................................................................................ 55 5.6 CASOS DE USO ......................................................................................................... 58 5.6.1 Diagrama geral dos casos de uso ............................................................................ 58 5.6.2 – Descrição dos casos de uso ................................................................................... 59 5.6.2.1 Caso de Uso 1 - Cadastro de Local ......................................................................... 59 5.6.2.2 Caso de Uso 2 - Cadastro de Usuário ...................................................................... 60 5.6.2.3 Caso de Uso 3 - Cadastro de Escala ........................................................................ 61 5.6.2.4 Caso de Uso 4 - Confirmação de Serviço ................................................................ 61 5.6.2.5 Caso de Uso 5 - Geração de Relatório de Bombeiros Comunitarios Cadastrados. ... 62 5.6.2.6 Caso de Uso 6 - Geração de Relatório de Horas Trabalhadas por Bombeiro Comunitário ......................................................................................................................... 63 5.7 MODELOS DE DOMÍNIO ......................................................................................... 63 5.7.1 Modelo de domínio para Cadastro de Local .......................................................... 64 5.7.2 Modelo de domínio para Cadastro de Usuário ...................................................... 64 5.7.3 Modelo de domínio para Cadastro de Escala......................................................... 65 5.7.4 Modelo de domínio para Confirmação de Serviço................................................. 66 5.8 DIAGRAMA DE CLASSES ....................................................................................... 66 5.8.1 Diagrama de Classes para Cadastros de Local ...................................................... 67 5.8.2 Diagrama de Classes para Cadastro de Usuário.................................................... 68 5.8.3 Diagrama de Classes para Cadastro de Escala ...................................................... 68 5.8.4 Diagrama de Classes para Geração de Relatórios ................................................. 69 5.9 DIAGRAMA DE ROBUSTEZ .................................................................................... 70 5.9.1 Diagrama de Robustez para Cadastro de Local .................................................... 70 5.9.2 Diagrama de Robustez para Cadastro de Usuários ............................................... 71 5.9.3 Diagrama de Robustez para Cadastro de Escalas ................................................. 71 5.9.4 Diagrama de Robustez para Geração de Relatórios .............................................. 72 5.9.5 Diagrama de Robustez para Confirmação de Serviço ........................................... 73 5.10 DIAGRAMA DE SEQUÊNCIA .................................................................................. 74 5.10.1 Diagrama de Sequência para Cadastro de Local ................................................... 74 5.10.2 Diagrama de Sequência para Cadastro de Usuário ............................................... 75 5.10.3 Diagrama de Sequência para Cadastro de Escala ................................................. 76 5.10.4 Diagrama de Sequência para Geração de Relatórios ............................................ 77 5.11 MODELAGEM DO BANCO DE DADOS DO SISTEMA .......................................... 78 5.12 CONSIDERAÇÕES FINAIS ....................................................................................... 79 6 DESENVOLVIMENTO................................................................................................. 80 6.1 FERRAMENTAS E TECNOLOGIAS......................................................................... 80 6.1.1 C# ............................................................................................................................. 81 6.1.2 Microsoft .NET........................................................................................................ 81 6.1.3 JavaScript................................................................................................................ 81 6.1.4 CSS .......................................................................................................................... 82 6.1.5 Microsoft SQL Server ............................................................................................. 82 6.1.6 Microsoft Visual Studio .......................................................................................... 83 6.1.7 Crystal Report ......................................................................................................... 83 6.1.8 Enterprise Architect................................................................................................ 84 6.2 HISTÓRICO DO DESENVOLVIMENTO .................................................................. 84 6.3 PROBLEMA E SOLUÇÕES ....................................................................................... 85 6.4 APRESENTAÇÃO DO SISTEMA .............................................................................. 86 6.5 VALIDAÇÃO E TESTES ........................................................................................... 95 6.6 CONSIDERAÇÕES FINAIS ....................................................................................... 96 7 CONCLUSÃO E TRABALHOS FUTUROS ................................................................. 97 7.1 ALCANÇANDO OS OBJETIVOS .............................................................................. 97 7.2 RESULTADOS ........................................................................................................... 98 7.3 TRABALHOS FUTUROS .......................................................................................... 98 REFERÊNCIAS ................................................................................................................ 100 16 1 INTRODUÇÃO Percebe-se que, ao longo do tempo, vem aumentando o interesse das pessoas por participar em algum tipo de serviço voluntário. No Brasil, o serviço voluntário foi regulamentado através da Lei 9.608 de fevereiro de 1998, conhecida como “lei do voluntariado”, (BRASIL, 1998). Nas conformidades do Artigo 1º desta Lei, considera-se serviço voluntário a atividade não remunerada, prestada por pessoa física a Entidade Pública de qualquer natureza ou Instituição Privada de fins não lucrativos, que tenha objetivos cívicos, culturais, educacionais, científicos, recreativos ou de assistência social. Entre as diversas instituições que oferecem um serviço voluntário, encontra-se o Corpo de Bombeiros Militar de Santa Catarina – CMBSC. Dessa forma, é possível ser um voluntário dessa entidade, tornando-se um Bombeiro Comunitário. O controle desses voluntários é feito pelos Bombeiros Militares. Cada Organização de Bombeiro Militar – OBM– possui sua coordenação, mas estas não possuem um sistema informatizado de controle dos voluntariados. A proposta do presente projeto é desenvolver um sistema web que auxilie os Bombeiros Militares do Estado de Santa Catarina no controle de agendamento de escala de serviços dos Bombeiros Comunitários, visando a melhorar esse gerenciamento que atualmente é feito manualmente. O sistema consiste basicamente de ferramentas de cadastro e gerenciamento de usuários, horas trabalhadas e emissão de relatórios. Para o desenvolvimento de sistemas informatizados é recomendável seguir um modelo de processo de software (PRESSMAN, 2006). Com o intuito de desenvolver um aplicativo segundo as diretrizes aprendidas no curso de graduação, decidiu-se escolher o modelo ICONIX. Ele propõe uma modelagem guiada pelos casos de uso, com a utilização de alguns dos diagramas da UML. Além disso, é um modelo iterativo e incremental que propicia a rastreabilidade (ROSENBERG, 2005). As características citadas, anteriormente, influenciaram a escolha dessa metodologia. 17 1.1 PROBLEMÁTICA O Corpo de Bombeiros Militar do Estado de Santa Catarina possui um projeto que adere o serviço voluntário à corporação. Esse projeto é chamado de Bombeiro Comunitário. Desde o seu início, não possui um sistema de informações acessível a todos os interessados. O controle de escalas de serviços desses voluntários é realizado de forma manual em um livro de escala. Com isso, percebeu-se a necessidade de agrupamento dessas informações em um único sistema, que permita acesso de forma descentralizada. A situação atual não satisfaz as necessidades dos Bombeiros Militares, fazendo com que o gerenciamento dos dados seja feito manualmente em planilhas que não são publicadas para todos os envolvidos, nem com versão consistente para os que as possuem. Atualmente, não existe o compartilhamento das informações referentes aos Bombeiros Comunitários entre cada OBM. A solução dos autores é elaborar um aplicativo no qual todas as informações estarão disponíveis em um único local, que ficará acessível a todos os interessados via web. Esse sistema possibilitará o controle sobre todos os Bombeiros Comunitários cadastrados no Estado, permitindo a visualização das horas prestadas por cada voluntário e emissão de relatórios. O aplicativo também poderá servir como um facilitador para tomada de decisões estratégicas, como promoções de Bombeiros Comunitários. Diante desse desafio, o presente estudo tem como objetivo responder a problemática acima desenvolvendo um sistema web. 1.2 OBJETIVOS A seguir, serão apresentados os objetivos do estudo que estão subdivididos em geral e específicos. 18 1.2.1 Objetivo Geral Desenvolver um sistema web que permita o gerenciamento centralizado da escala de serviços e o controle das horas trabalhadas, bem como a administração dos Bombeiros Comunitários de Santa Catarina. 1.2.2 Objetivos Específicos a) Documentar os requisitos e regras de negócio dos processos envolvidos utilizando a metodologia ICONIX; b) desenvolver um aplicativo desde o levantamento de requisitos até a implementação, congregando de forma prática o conhecimento adquirido nas diversas disciplinas do curso de graduação. 1.3 JUSTIFICATIVA O sistema web para cadastro de Bombeiros Comunitários foi escolhido visando a utilizar o conhecimento adquirido ao longo do Curso de Sistemas de Informação – UNISUL. Neste projeto, serão aplicadas diversas teorias e tecnologias aprendidas durante o curso de graduação em suas diversas disciplinas. Assuntos referentes às metodologias ágeis serão utilizados das aulas de engenharia de software, assim como a modelagem do sistema com UML, segundo as boas práticas do ICONIX. Das aulas de banco de dados, será usado o conhecimento para a criação de esquemas necessários para viabilizar o sistema. Integrando com as aulas de modelagem de processos, será obtida uma boa estratégia para desenvolver um sistema que atenda às necessidades administrativas dos Bombeiros Comunitários de Santa Catarina. 19 Segundo o Regulamento Geral da entidade (SANTA CATARINA, 2011), o serviço voluntário no CBMSC tem por fim fazer com que membros da comunidade tenham condições de apoiar diretamente esse serviço público, oportunizando a formação de cultura preventiva e reativa, aumentando a interação do CBMSC com a comunidade. A criação de um sistema web para o controle das atividades administrativas visa a uma melhora no desempenho das atividades administrativas e atividades descritas anteriormente dos Bombeiros Comunitários, organizando e automatizando a manipulação dos dados com muito mais segurança. Dessa forma, o sistema dará apoio a um serviço de grande importância para a comunidade, do qual um dos autores é participante como Bombeiro Comunitário. 1.4 ESTRUTURA DA MONOGRAFIA Este trabalho está organizado como descrito a seguir. Inicialmente, foi descrito o tema, objetivo geral e objetivos específicos seguidos da justificativa. Nos capítulos 2 e 3, é apresentada a revisão da literatura, abordando a conceituação dos assuntos relacionados ao domínio do problema, baseados em uma revisão bibliográfica sobre o Corpo de Bombeiros de Santa Catarina e sobre desenvolvimento de software, com foco nas metodologias ágeis. No capítulo 4, método, é apresentada a classificação do tipo de pesquisa realizada, as atividades que compõem a proposta da solução e as delimitações do projeto. No capítulo 5, é apresentado o processo administrativo e controle dos Bombeiros Comunitários do Estado de Santa Catarina, seguido da modelagem do sistema. No capítulo 6, é apresentado o desenvolvimento do sistema, as validações e tecnologias utilizadas. Para finalizar, o capítulo 7 descreve as conclusões e futuros desdobramentos deste Trabalho de Conclusão de Curso. 20 2 CORPO DE BOMBEIROS DE SANTA CATARINA Neste capítulo, é apresentada a história do Corpo de Bombeiros Militar do Estado de Santa Catarina - CBMSC, sendo descrito também a origem e o funcionamento do serviço voluntário dessa entidade. 2.1 O CORPO DE BOMBEIROS MILITAR DE SANTA CATARINA Figura 1 – Logo do CBMSC. Fonte: Santa Catarina, 2005. De acordo com o artigo 108 da Constituição do Estado de Santa Catarina (SANTA CATARINA, 1989), o Corpo de Bombeiros Militar é uma força auxiliar e reserva do exército, estando subordinado ao governo do Estado e fazendo parte do Sistema Nacional de Segurança Pública. Consequentemente, o Corpo de Bombeiros Militar deve seguir o Regulamento Interno do Ministério do Exército (BRASIL, 1984). Conforme o site do CBMSC (SANTA CATARINA, 2005), o Corpo de Bombeiros de Santa Catarina surgiu no dia 26 de setembro de 1926 com a inauguração da Seção de Bombeiros da Força Pública, denominado hoje como Corpo de Bombeiros Militar de Santa Catarina. Até a data da Ementa Constitucional nº 33, em 13 de junho de 2003, ele foi subordinado ao comando da Polícia Militar do Estado de Santa Catarina, tornando-se, após essa data, uma organização independente. O CBMSC tem como visão prover e manter 21 serviços profissionais e humanitários que garantam a proteção da vida, do patrimônio e do meio ambiente, visando a proporcionar qualidade de vida à sociedade. Segundo Schmitt (2011), o Corpo de Bombeiros foi criado inicialmente para atuar apenas na área de combate a incêndios, porém, com o passar do tempo, outras atividades como resgate de pessoas e animais, auxílio em tragédias, trabalhos de prevenção, atividades aquáticas, entre outras, foram agregadas. 2.2 O SERVIÇO VOLUNTÁRIO NO CORPO DE BOMBEIROS MILITAR DE SANTA CATARINA Conforme Masnik (2008), o serviço voluntário no Corpo de Bombeiros Militar foi viabilizado através do Projeto Bombeiro Comunitário, sendo pioneiro no Estado de Santa Catarina. No dia 18 de dezembro de 1996, a primeira Organização de Bombeiro Comunitário foi implantada no Estado de Santa Catarina, mais precisamente na cidade de Ituporanga, sendo composta por sete Bombeiros Militares e dezessete Bombeiros Comunitários. Por ter atingido bons resultados nesse projeto inicial, a implantação dos Bombeiros Comunitários foi estimulada em todas as regiões do Estado. O projeto foi tão bem aceito, que, até março de 2008, mais de 70% dos municípios atendidos pelo serviço dos Bombeiros Militares do Estado de Santa Catarina já possuíam o projeto implantado. Por conta do sucesso, no Brasil, o projeto já é realidade em vários estados. Atualmente, o CBMSC possui 12 Batalhões ativos, que abrangem os 293 municípios do Estado de Santa Catarina, no qual 96 possuem bases operacionais do CBMSC. Desses, 93 municípios já possuem o projeto Bombeiro Comunitário implantado. Até o momento, foram realizados 333 cursos, formando 9018 Bombeiros Comunitários no estado de Santa Catarina.1 1 Tenente Anderson Medeiros Sarte, Coordenador dos Projetos Sociais do Corpo de Bombeiros Militar do Estado de Santa Catarina. Comunicação oral em 15 de Junho de 2012. 22 2.2.1 Regulamento Geral De acordo com o Regulamento Geral (SANTA CATARINA, 2011), artigo sétimo, o prestador de serviço voluntário no CBMSC possui uma relação formal de voluntário para com a corporação, nas conformidades da Lei Federal de número 9.608, sendo uma atividade não remunerada, sem vínculo empregatício e isenta de qualquer obrigação trabalhista, previdenciária ou afim (BRASIL, 1998). O artigo terceiro do Regulamento Geral (SANTA CATARINA, 2011) define que o serviço voluntário na corporação tem por fim propiciar a membros da comunidade a condição de apoiarem diretamente o serviço exercido pela corporação, fazendo com que membros da comunidade tenham conhecimentos básicos nas áreas de prevenção e reação em casos de emergência, incêndios e acidentes diversos em que existam vítimas em situação de perigo. O serviço voluntário no CBMSC visa, através de cursos e treinamentos de capacitação, a multiplicar os conhecimentos e cuidados básicos para membros da comunidade, tornando menores os efeitos desastrosos de primeiros atendimentos realizados por pessoas leigas. Ao ingressar, como voluntário no CBMSC, todo Bombeiro Comunitário deve afirmar que prestará o compromisso de honra, manifestando a sua disposição de cumprir seus deveres e funções. O Bombeiro Comunitário irá atuar sempre em apoio aos Bombeiros Militares, auxiliando às equipes de socorro à comunidade, realizando atendimentos emergenciais e auxiliando em prevenções. (SANTA CATARINA, 2011). Conforme descrito no Regulamento Geral (SANTA CATARINA, 2011), cada OBM possui uma equipe de coordenação do Serviço Voluntário, sendo que o coordenador será sempre um Bombeiro Militar da OBM. A coordenação deverá manter os Bombeiros Comunitários sempre motivados, dando apoio logístico para a manutenção do serviço voluntário, como na manutenção dos uniformes, equipamentos e os demais materiais necessários, sendo também responsável por realizar o controle dos serviços prestados pelos Bombeiros Comunitários, bem como o controle de requisitos regulamentares para levantar os voluntários que estão aptos para promoção. O Bombeiro Comunitário que deixar de cumprir os direitos e os deveres listados no Regulamento Geral (SANTA CATARINA, 2011) responderá um processo administrativo, 23 tendo direito à defesa e ao contraditório, como previsto no Inciso LV do Artigo 5º da Constituição Federal. Ao ser finalizado, o processo administrativo poderá resultar na aplicação de sansões de advertência, suspensão temporária ou definitiva conforme Artigo 41 do Regulamento Geral (2011). Por outro lado, os Bombeiros Comunitários que realizarem atos, ações ou atividades de destaque terão sua conduta avaliada pela coordenação, podendo resultar em referências elogiosas publicadas em boletim interno, condecoração, podendo até se tornar uma promoção, desde que sejam satisfeitas as normas de promoção previstas no Regulamento Geral. (SANTA CATARINA, 2011). Cada Bombeiro Comunitário deve prestar, no mínimo, 24 horas por mês de serviço voluntário, sendo que é possível requerer ao Coordenador do Serviço Voluntário, de forma documental e justificada a redução das horas a serem cumpridas em até 50%. Ao estar em dia com suas obrigações, o Bombeiro Comunitário terá direito de afastamento para descanso com duração de 30 dias por ano, sendo dispensado da realização das funções de Bombeiro Comunitário sem prejuízo da sua situação de ativo. A qualquer momento, o Bombeiro Comunitário pode solicitar formalmente de forma escrita o seu afastamento, como pode também ser excluído da corporação. Em ambos os casos, o indivíduo deixará de ser um prestador de serviço voluntário no CBMSC, tornando-se um Bombeiro Comunitário Certificado. Após a solicitação de afastamento, o Bombeiro Comunitário poderá ser reintegrado, desde que não tenha passado um ano após a data da solicitação de afastamento, sendo submetido a um estágio operacional. A exclusão se dará sempre que um Bombeiro Comunitário deixar de cumprir suas obrigações por três meses consecutivos ou por seis meses alternados, quando se candidatar a cargo eletivo e não se afastar a pedido no período de 180 dias antes do pleito eleitoral ou quando vier a ser condenado por crime de qualquer natureza (SANTA CATARINA, 2011). 2.3 SISTEMAS PARA CONTROLE DE BOMBEIRO COMUNITÁRIO Até o desenvolvimento deste projeto, não existiu um sistema de informação que faça o mesmo ao sistema proposto. 24 2.4 CONSIDERAÇÕES FINAIS Neste capítulo, foi exposto o que é o Corpo de Bombeiros, bem como seu surgimento e a história do Corpo de Bombeiros Militar do Estado de Santa Catarina. Foi apresentado o regulamento geral deste projeto que viabiliza o serviço voluntário no Corpo de Bombeiros, sendo descrito como foram os primeiros passos do serviço voluntário no CBMSC. 25 3 DESENVOLVIMENTO DE SOFTWARE Este capítulo apresenta uma revisão bibliográfica sobre o processo de desenvolvimento de software e os seus modelos, com destaque para os modelos ágeis, a metodologia ICONIX e a linguagem UML (Unifield Modeling Language). Os modelos tradicionais podem ser também denominados de modelos prescritivos ou de modelos dirigidos a planos. (SOMMERVILLE, 2011). 3.1 MODELOS DE DESENVOLVIMENTO DE SOFTWARE Atualmente, os modelos de processo de desenvolvimento de software podem ser classificados em modelos tradicionais e modelos ágeis. (PRESSMANN, 2006). Este trabalho irá abordar algumas das mais conhecidas metodologias tradicionais e ágeis, como o modelo cascata, incremental, evolucionário, espiral, XP e com maior ênfase no modelo ICONIX. Existem as metodologias consideradas mais tradicionais. Entre elas, podem ser mencionadas o modelo cascata, o incremental e o evolucionário. (SOMMERVILLE, 2011). Segundo Pressman (2006), o modelo cascata tem um ciclo de vida único, definido por cinco etapas, sendo que uma etapa só começa quando a anterior terminou. A primeira etapa do modelo cascata é denominada de comunicação. É nessa etapa que se dá inicio do projeto e é feito o levantamento de requisitos. A segunda etapa é o planejamento, quando são feitas as estimativas de tempo, custo, cronogramas e se dá inicio ao monitoramento do projeto. A terceira etapa é a modelagem, na qual é feita a análise do projeto. Logo depois vem a construção, que é a parte de desenvolvimento de linhas de código e testes. Por fim, a etapa de implantação, em que é feita a entrega e manutenção. (PRESSMAN, 2006). Conforme Pressman (2006), os documentos são gerados a cada etapa finalizada. O modelo não é flexível para aceitar mudanças de requisitos quando o projeto já está em andamento, sendo mais aconselhado para projetos em que todos os requisitos estão bem definidos. A figura, a seguir, representa as cinco etapas desse modelo. 26 Figura 2 – Modelo cascata. Fonte: Adaptado de PRESSMAN, 2006. O modelo incremental é dividido em partes chamadas incrementos, que correspondem a um conjunto de funcionalidades a ser implementadas, começando pela que tem mais prioridade no projeto. Cada iteração gera um software funcional fazendo com que o cliente possa usufruir do sistema, mesmo não estando completo. A figura, a seguir, mostra o funcionamento do modelo incremental: Figura 3 – Modelo incremental. Fonte: adaptada de SOMMERVILLE, 2011. 27 O modelo evolucionário parte de uma versão inicial para mostrar ao usuário. São feitas atualizações e melhorias nas próximas versões, partindo de novos requisitos levantados com o cliente para gerar a versão final. De acordo com Sommerville (2011), algumas práticas utilizadas no modelo evolucionário são: Prototipagem: o protótipo é feito para ajudar no processo de identificação dos requisitos. O protótipo pode ser utilizado de duas formas: • como desenvolvimento exploratório, que é o caso em que o cliente participa do desenvolvimento e o protótipo é implementado e incorporado no sistema final; • pode ser apenas um protótipo descartável, a fim de revelar alguns requisitos que não foram identificados anteriormente. Figura 4 – Prototipagem. Fonte: adaptada de SOMMERVILLE, 2011. Dentro do modelo evolucionário, ainda, existe o modelo espiral. É uma combinação de prototipagem (iteração) com o modelo cascata. O projeto é desenvolvido através de uma série de versões evolucionárias, utilizando protótipos com a finalidade de identificar e reduzir os riscos, conforme afirma Pressman (2006). 28 Figura 5 – Modelo espiral. Fonte: adaptada de SOMMERVILLE, 2011. Esse modelo é iterativo e guiado pela monitoração dos riscos. 3.2 METODOLOGIAS ÁGEIS Segundo Sommerville (2011), hoje em dia, a quantidade de informações e a velocidade em que elas viajam pelo mundo fazem com que as empresas de software necessitem de um ambiente muito mais flexível, que suporte o desenvolvimento de softwares mais rapidamente a fim de obter proveito das novas oportunidades e responder às pressões corporativas. Utilizar as metodologias tradicionais para desenvolvimento de softwares que sofrem constantes mudanças de requisitos ao longo do projeto torna-se muito demorado e o projeto geralmente acaba perdendo seus prazos definidos no início. (SOMMERVILLE, 2011). Foi justamente a partir da insatisfação dos métodos tradicionais que surgiu uma proposta, na década de 1990, que abordava os conceitos dos métodos ágeis. Esse paradigma 29 se baseia em uma abordagem incremental para a especificação, o desenvolvimento e a entrega do software. (SOMMERVILLE, 2011). A filosofia dos métodos ágeis (AGILE MANIFESTO, 2001) é refletida no manifesto ágil, que foi acordado por muitos dos principais desenvolvedores desses métodos. Conforme o Agile Manifesto (2001), “estamos descobrindo melhores maneiras de desenvolver softwares, fazendo-o e ajudando outros a fazê-lo”. Através desse trabalho, é valorizado mais: Figura 6 – Valorização segundo Agile Manifesto (2001). Fonte: Autores, 2011. Ou seja, os indivíduos e iterações são mais valorizados do que processos e ferramentas. Software em funcionamento é mais valorizado do que documentação abrangente. Colaboração do cliente é mais valorizada do que negociação de contrato, e respostas a mudanças são mais valorizadas do que seguir um plano. Sommerville (2011) diz que todos os métodos ágeis têm em comum a noção de desenvolvimento e entrega incremental, porém as diferentes metodologias propõem diferentes processos para alcançar tal objetivo. No entanto, todos compartilham um conjunto de princípios que podem ser vistos na figura abaixo. 30 Figura 7 – Princípios dos métodos ágeis. Fonte: adaptada de SOMMERVILLE, 2011. 3.2.1 Modelo Extreme Programming (XP) O modelo Extreme Programming foi desenvolvido por Kent Beck e apresentado na conferência internacional de orientação a objetos em 2000, foi uma metodologia bastante controversa. O nome XP vem de eXtreme Programming. Muitos dos profissionais gostaram e muitos foram contra. Como qualquer metodologia, o XP não foi feito para atender todos os casos possíveis. Existem projetos nos que o XP se encaixa melhor, assim como outros nos quais o uso do XP pode não ser o mais apropriado. Por exemplo, para equipes muito grandes ou para projetos nos quais o cliente não se dispõe a participar de forma mais ativa no desenvolvimento do projeto. (SOARES S, 2004). 31 Figura 8 – Ciclo Release XP. Fonte: adaptada de SOMMERVILLE, 2011. A Programação Extrema é embasada em doze práticas (KENT BECK 2006): 1 - PLANEJAMENTO – O cliente escreve histórias (user stories) sobre as funcionalidades que o sistema deve ter. Os programadores interagem com o cliente e discutem e experimentam diferentes tecnologias e arquiteturas para o sistema, estabelecendo então as estimativas de prazo e prioridades de cada tarefa. 2 - FASES PEQUENAS – Cada fase é chamada de iteração e serve para produzir um sistema simples e 100% funcional. Assim, mais versões funcionais são liberadas em um curto período de tempo. 3 - METÁFORA – A equipe de programadores deve evitar termos técnicos ao conversar com o cliente e estudar os termos específicos da área em que o sistema será desenvolvido. 4 - DESIGN SIMPLES - O sistema deve ser projetado o mais simples possível. Qualquer esforço extra, fora do escopo, deve ser eliminado. 5 - TESTES - os programadores escrevem continuamente os testes de unidade, que devem funcionar como um guia para o desenvolvimento. 6 - REFATORAÇÃO – Melhorar o código fonte sem alterar as funcionalidades do sistema. 7 - PROGRAMAÇÃO EM PARES – Dois programadores sentam juntos em uma mesma máquina. Um digita e o outro presta atenção em erros e procura maneiras de melhorar o código. 8 - PROPRIEDADE COLETIVA – O código pertence ao grupo de programadores, que podem alterar o código a qualquer momento, rodando testes para que não danifique nenhuma outra parte do sistema. 32 9 - INTEGRAÇÃO CONTÍNUA – Toda funcionalidade nova deve ser testada antes de ser implementada, sem esquecer-se de avisar a alteração para todos os atores envolvidos. 10 - SEMANA DE 40 HORAS – Programação é uma tarefa exaustiva. O tempo máximo que um programador deve trabalhar são quarenta horas semanais, para que os efeitos do cansaço não gerem erros no código. 11 - CLIENTE PRESENTE – O cliente deve estar presente e sempre disponível para responder as perguntas dos desenvolvedores. 12 - PADRONIZAÇÃO DO CÓDIGO – os programadores escrevem todo o código de acordo com as regras adotadas pelo grupo inteiro. 3.2.2 Iconix Segundo Rosenberg, Stephens e Collins – Cope (2006) –, o ICONIX surgiu alguns anos antes da Unified Modeling Language – UML – como uma síntese e destilação das melhores técnicas das metodologias originais que formaram a UML: Object Modeling Technique (OMT) de Jim Rumbaugh, Objectory Method de Ivar Jacobson e Booch Method de Grandy Booch. A mescla das diferentes técnicas foi feita, porque seus pontos fortes e fracos pareciam se complementar. A OMT foi útil para modelagem do domínio do problema (problem domain, no nível de análise), mas não era forte para a modelagem da solução (Solution Space, ou design detalhado). Enquanto que o método de Booch era forte para o design detalhado, mas não-intuitivo para o nível de análise. Melhor que pegar o conjunto completo de três diferentes livros de quatrocentas páginas de metodologias, abrangendo tudo sobre tudo, o ICONIX prefere focar-se no subconjunto do núcleo das técnicas para remover as redundâncias e sobrepor-se às notações. (ROSENBERG, STEPHENS E COLLINS-COPE, 2006, tradução nossa). A seguir, apresentam-se as etapas do ICONIX conforme Doug Rosenberg, Matt Stephens e Mike Collins - Cope (2006, tradução nossa). 33 3.2.2.1 Etapas As sete fases principais que constituem a metodologia são descritas, a seguir, conforme Rosenberg (2006). 3.2.2.1.1 Etapa 1: identificar os objetos de domínio do mundo real A principal tarefa dessa etapa é identificar os objetos de domínio, como eles se relacionam e começar a desenhar o diagrama de classe de alto nível. Nessa etapa, pode-se também fazer um rápido protótipo do sistema para ajudar a organizar as finalidades do sistema. Provavelmente, a parte mais importante do projeto é a primeira etapa. É nela que será estabelecida uma fundação sólida sobre a qual é construído todo o resto (requerimentos, design, código, etc.) do projeto. Ao finalizar essa etapa, dever-se-á ter um modelo de domínio o qual se apresenta para todos os envolvidos no desenvolvimento uma documentação sobre os objetos do domínio. O primeiro modelo criado nunca é perfeito. Continuará a crescer durante o desenvolvimento do projeto, sendo melhorado conforme os problemas vão sendo entendidos e as ambiguidades forem identificadas. Existem algumas técnicas para identificar os objetos que devem fazer parte do modelo de domínio. Uma delas é reunir todo material coletado e grifar os substantivos e verbos, que, muito provavelmente, tornar-se-ão classes e atributos. 3.2.2.1.2 Etapa 2: definir os requisitos comportamentais No ICONIX, os requisitos comportamentais são definidos pelos casos de uso, partindo dos requerimentos de alto nível. Esses requisitos irão definir como o sistema irá se 34 comportar nos casos de interação com o usuário. Esse procedimento pode ser subdividido nos seguintes passos: Passo 1: identificar os casos de uso usando diagramas de caso; Passo 2: organizar os casos de uso em grupos; Passo 3: alocar requerimentos funcionais para os casos de uso e objetos de domínio. Esse passo é opcional, para usá-lo, deve-se analisar a complexidade do projeto; Passo 4: escrever descrição para os casos de uso. O projetista sabe que terminou de modelar os casos de uso quando seus casos de uso abrangem todas as funcionalidades do sistema desejado, e todos os casos de uso têm descrições claras e coesas e cursos alternativos. 3.2.2.1.3 Etapa 3: análise de robustez Essa etapa serve para identificar a ambiguidade dos casos de uso e identificar falhas no modelo de domínio. É a última etapa de análise do projeto e consiste em realizar a análise de robustez. A figura, a seguir, apresenta um exemplo desse tipo de diagrama. Figura 9 – Diagrama de robustez. Fonte: adaptada de ROSENBERG, 2006. A análise de robustez envolve trabalhar com os textos dos casos de uso para descobrir os objetos que não foram incluídos, e se há a necessidade de adicionar objetos. 35 A análise de robustez pode ser subdividida nos seguintes passos: Passo 1: desenhar diagramas de robustez para cada caso de uso, que são: a) identificar os objetos realizados no primeiro cenário utilizando estereótipos de objetos da UML; b) atualizar o diagrama de classe do modelo de domínio com os novos objetos e atributos conforme forem descobertos; c) atualizar e eliminar as ambiguidades dos textos dos casos de uso para que entrem em conformidade com o diagrama de robustez. Passo 2: finalizar a atualização do diagrama de classe para que reflita a fase de análise do projeto. Segundo Doug Rosenberg (2006), Ivar Jacobson introduziu o conceito de análise de robustez para o mundo da orientação de objetos em 1991. Esse conceito envolve analisar a descrição de cada caso de uso, identificar o primeiro conjunto de objetos e classificar os objetos em três tipos: a) objetos de limite (Boundary objects) que os atores usam para se comunicar com o sistema; b) objetos entidade (Entity objects) que geralmente são objetos do modelo de domínio; c) objetos de controle (Control objects), que servem de “cola” entre os objetos de limite e objetos de entidade. A figura, a seguir, exemplifica esses tipos de objetos. Figura 10 – Objetos. Fonte: adaptada de ROSENBERG, 2006. 3.2.2.1.4 Etapa 4: alocar comportamento para os objetos 36 Essa etapa é aquela na qual começa o design do projeto. É aqui que se começa a fazer o diagrama de sequência, podendo ser utilizados também diagramas adicionais como diagrama de estado, diagrama de atividade, conforme for a necessidade do projeto. Esse passo é subdividido para cada caso de uso, como: a) identificar a mensagem que precisa ser passada entre os objetos e os métodos associados para serem invocados; b) desenhar o diagrama de sequência com o texto do caso de uso no lado esquerdo de baixo e a informação de design na direita; c) continuar a atualizar os diagramas de classes com atributos e operações conforme vão surgindo. Todo diagrama de classe deverá ter operações alocadas, e cada caso de uso deverá ter um diagrama de sequência. Na visão dos autores do modelo ICONIX (ROSENBERG, 2006), com a utilização da política de apenas dois parágrafos para o texto dos casos de uso, é possível colocar tudo em um diagrama de sequência. 3.2.2.1.5 Etapa 5: finalizar o modelo estático O modelo estático é feito de um ou mais diagramas de classe. O procedimento é subdividido em dois passos: Passo 1: adicionar informação detalhada de design (ex. valores de visibilidade e padrões); Passo 2: verificar com o time se o design satisfaz todos os requerimentos identificados anteriormente. A figura, na continuação, apresenta um exemplo de um diagrama de classe. 37 Figura 11 – Diagrama de classe. Fonte: adaptada de ROSENBERG, 2006. O modelo estático é uma versão mais detalhada do modelo de domínio e contém mais detalhes de implementação. 3.2.2.1.6 Etapa 6: escrever / gerar código Essa é a etapa em que os programadores, a partir do design, começam a escrever o código. O ideal é que os programadores estejam presentes nas etapas de design para que tenham uma melhor idéia da realidade em que o sistema será implementado. Essa etapa pode ser subdividida em dois passos: Passo 1: escrever / gerar o código; Passo 2: executar o sistema e fazer testes de integração. 38 3.2.2.1.7 Etapa 7: executar o sistema e teste de aceitação do usuário Nessa etapa, um grupo de pessoas que não sejam os programadores do aplicativo executa o sistema e fazem o teste de aceitação do usuário, utilizando casos de uso como caixapreta. 3.2.2.2 Características do ICONIX Borillo (2000) destaca três características fundamentais no ICONIX: - iterativo e incremental: várias iterações ocorrem entre o desenvolvimento do modelo de domínio e a identificação dos casos de uso; - rastreabilidade: cada passo referencia para os requisitos de alguma forma. Dessa forma, pode-se determinar qual impacto das alterações há em todo o projeto; - aerodinâmica da UML: a metodologia oferece o uso “aerodinâmico” da UML (OMG, 2001) como: os diagramas de casos de uso, diagramas de sequência e colaboração, diagramas de robustez. 3.3 UNIFIED MODELING LANGUAGE - UML A modelagem de software consiste em construir modelos gráficos que abrangem suas exigências e requerimentos. Uma forma comum de modelagem é através da linguagem unificada UML. (VARGAS, 2011). A primeira versão da UML foi feita em 2004 e publicada pelo Object Management Group – OMG – em 1997 com o nome de UML v1.1. Conforme o website do OMG (2001), a Linguagem de Modelagem Unificada ajuda a especificar, visualizar e documentar modelos de sistemas de software, incluindo sua estrutura e design de uma maneira que atenda a todos os requerimentos. Usando a UML, 39 pode-se modelar praticamente qualquer tipo de aplicação, rodando em qualquer tipo de hardware em qualquer sistema operacional. Conforme GUEDES (2004), os diagramas da UML 2.0 são treze, que são divididos em três categorias. Seis deles representam a estrutura estática da aplicação, três representam tipos gerais de comportamentos e quatro representam diferentes aspectos de interações, que são: a) diagramas de estrutura incluem Diagrama de Classe, Diagrama de Objeto, Diagrama de Componente, Diagrama de Estrutura Composta, Diagrama de Pacotes e Diagrama de Implantação; b) diagramas de comportamento incluem Diagrama de Caso de Uso, Diagrama de Atividade e Diagrama de Estado da Máquina; c) diagramas de interação incluem Diagrama de Comportamento, Diagrama de Sequência, Diagrama de comunicação, Diagrama de Tempo e Diagrama de Visão Geral de Interação. A figura abaixo mostra a estrutura das categorias, utilizando a notação de diagrama de classes. Figura 12 – Organização Geral dos Diagramas de UML 2. Fonte: Vargas, 2011. Os diagramas estruturais tratam o aspecto estrutural tanto do ponto de vista do sistema quanto das classes, conforme a especificação OMG (VARGAS, 2011). 40 Existem itens para representar abstrações como classes, interfaces, colaborações e componentes os quais compõem as estruturas “relativamente estáveis” do sistema. Figura 13 – Diagramas Estruturais. Fonte: Vargas, 2011. Os diagramas de comportamento, ilustrados na figura a seguir, descrevem a modelagem dinâmica do sistema, ou seja, as partes que sofrem modificações mais constantes, conforme a especificação OMG (VARGAS, 2011). Figura 14 – Diagramas comportamentais. Fonte: Vargas, 2011. 3.4 CONSIDERAÇÕES FINAIS A engenharia de software é um processo muito importante na hora de se fazer um projeto que resultará em um software. Mesmo não seguindo apenas uma das técnicas 41 existentes, o conhecimento delas proporciona um melhor entendimento dos processos que envolvem o desenvolvimento, desde a parte de escolha de tecnologia até a preparação de layout de telas. A metodologia escolhida para este projeto foi o ICONIX, por isso ela foi descrita com maior ênfase. 42 4 MÉTODO Este capítulo apresenta aspectos acerca da metodologia utilizada no projeto. 4.1 CARACTERIZAÇÃO DA PESQUISA Conforme Demo (1996), pesquisa é, de forma resumida, procurar respostas para indagações propostas. Ele insere a pesquisa como atividade cotidiana considerando-a como uma atitude, um “questionamento sistemático crítico e criativo, mais a intervenção competente na realidade, ou o diálogo crítico permanente com a realidade em sentido teórico e prático”. Para Silva e Menezes (2001), pesquisa é um conjunto de ações, propostas para encontrar a solução para um problema, que tem por base procedimentos racionais e sistemáticos. A pesquisa é realizada quando se tem um problema e não se tem informações para solucioná-lo. 4.2 CLASSIFICAÇÃO A pesquisa pode ser dividida, segundo a classificação apresentada a seguir: Conforme a sua natureza: Pode ser básica ou aplicada. A básica envolve interesses universais, sem aplicação prática prevista. A aplicada envolve interesses locais, dirigida a problemas específicos. (SILVA e MENEZES, 2001). Esta pesquisa é classificada como aplicada, visto que está voltada ao desenvolvimento de um sistema para sanar um problema específico do corpo de bombeiros. Conforme a sua forma de abordagem, a classificação pode ser quantitativa ou qualitativa. A classificação quantitativa considera tudo o que pode ser mensurado em números. Envolve recursos estatísticos (percentagem, média, moda, mediana etc.). A 43 classificação qualitativa considera que há uma relação entre o mundo real e o sujeito, que não pode ser traduzida em números, é descritiva. (SILVA e MENEZES, 2001). Esta pesquisa está classificada como qualitativa, visto que o sistema desenvolvido visa a melhorar a relação entre o mundo real e o sujeito, sendo que os dados utilizados pelos bombeiros comunitários são a fonte de informação para resolver o problema específico de administração. Conforme seus objetivos, para Gil (2002), as pesquisas podem ser classificadas em três grandes grupos: a) pesquisa exploratória: visa a proporcionar maior familiaridade com o problema. Assume, em geral, as formas de pesquisas bibliográficas e estudos de casos; b) pesquisa descritiva: assume, em geral, forma de levantamento. Utiliza técnicas de coleta de dados, questionário e observação sistemática; c) pesquisa explicativa: visa a identificar os fatores que determinam ou contribuem para a ocorrência dos fenômenos. Aprofunda o conhecimento da realidade, pois explica a razão, o “porquê” das coisas. Esta pesquisa é classificada como pesquisa exploratória, pois faz referência a artigos, a estudos e a livros referentes ao assunto abordado. E também será realizado um estudo de caso sobre a gestão dos Bombeiros Comunitários. 4.3 PLANEJAMENTO Para Silva e Menezes (2011), o planejamento de uma pesquisa se dá em três etapas: a) fase decisória: referente à escolha do tema, à definição e à delimitação do problema de pesquisa; b) fase construtiva: referente à construção de um plano de pesquisa e à execução da pesquisa propriamente dita; c) fase redacional: referente à analise de dados e a informações obtidas na fase construtiva. É a organização das idéias visando à elaboração de um relatório final. 44 4.4 ETAPAS METODOLÓGICAS As etapas deste trabalho são as seguintes: a) revisão bibliográfica e estudo do ICONIX; b) explanação sobre as leis, deveres e obrigações dos bombeiros comunitários de Santa Catarina; c) levantamento de requisitos, modelagem e implementação utilizando o ICONIX; d) validação e testes; Estas etapas são apresentadas na forma de um fluxograma na figura a seguir: Figura 15 – Fluxograma com as etapas metodológicas. Fonte: Autores, 2011. 4.5 PROPOSTA Este trabalho apresenta a proposta de desenvolver um sistema web para o corpo de bombeiros Militar de Santa Catarina, visando a aplicar a tecnologia apropriada para melhorar a administração dos bombeiros comunitários. 45 Figura 16 – Proposta do trabalho. Fonte: Autores, 2011. 4.6 DELIMITAÇÕES O produto deste trabalho tem a finalidade de auxiliar na administração interna do Corpo de Bombeiros Militar de Santa Catarina, oferecendo transparência e facilidade de acesso às informações dos Bombeiros Comunitários. Como delimitações deste trabalho, podem ser destacadas as seguintes: • o sistema será apenas um módulo administrativo, não possuindo acesso à usuários externos; • o foco deste trabalho não é o desenvolvimento e a criação de novas tecnologias; • não está contemplado o treinamento para os usuários do sistema. 46 5 MODELAGEM Este capítulo descreve a modelagem do sistema. 5.1 ATORES O ator representa os diferentes papéis que o usuário pode desempenhar no sistema. Seguindo a hierarquia do corpo de bombeiros, os atores podem ser: Administrador do sistema, Administrador de local, sendo que os diferentes locais são: Batalhão, Companhia, Pelotão ou Grupamento de Bombeiro Militar, Coordenador dos Bombeiros Comunitários, Chefe de socorro e Bombeiro Comunitário. A figura, a seguir, mostra os atores do sistema: uc Actors Administrador do Sistema Administrador de Local Coordenador Bombeiro Comunitario Chefe de Socorro Figura 17 – Atores do sistema. Fonte: Autores, 2012. O Administrador do Sistema é responsável por manter o sistema funcionando corretamente. Deve ter um conhecimento médio em informárica, ser um Bombeiro Militar do Estado de Santa Catarina e deve possuir acesso a todas as funcionalidades do sistema. A frequência de uso do sistema é mensal. O Administrador de Local é responsável pelo local em que se encontra cadastrado, este pode apenas fazer a manutenção de usuários que estão cadastrados no seu mesmo local e nos que estão hierarquicamente abaixo do seu. Este usuário serve para a situação em que o Coordenador dos Bombeiros Comunitários do local seja alterado, também para caso exista a necessidade de cadastrar/inativar um Chefe de socorro por qualquer motivo. Deve ser um 47 Bombeiro Militar e ter um conhecimento médio em informárica. A frequência de uso do sistema é semanal. O Coordenador é responsável por administrar os Bombeiros Comunitários cadastrados para o seu local. Cabe a ele a verificação do cumprimento das regras que estão no Regulamento Geral do Serviço Voluntário no Corpo de Bombeiros Militar de Santa Catarina. Deve ter um conhecimento médio em informárica e ser um Bombeiro Militar do Estado de Santa Catarina. A frequência de uso do sistema é semanal. O Bombeiro Comunitário é o principal ator do sistema. Este é o usuário que utilizará o sistema para efetuar seu agendamento na escala de serviço do local em que se encontra cadastrado. Isto é, ele escolhe e agenda, através do sistema, os dias e horários nos quais irá realizar o seu serviço. Deve ter um conhecimento médio em informárica. Este usuário tem como seu grau de escolaridade, ensino médio ou superior. A frequência de uso do sistema é semanal. O Chefe de Socorro é responsável por concretizar o agendamento feito pelo Bombeiro Comunitário. Deve ser um Bombeiro Militar, responsável pela Guarnição de Serviço do dia, no local em que se encontra cadastrado. Ele pode apenas efetuar a confirmação do horário agendado, quando já prestado o serviço pelo Bombeiro Comunitário. Deve ter um conhecimento médio em informárica. A frequência de uso do sistema é diária. 5.2 PROCESSOS DE NEGÓCIO A seguir, são descritos os processos de negócio atual e os processos de negócio do novo sistema. 5.2.1 Modelagem do processo de negócio Ao formar uma nova turma de Bombeiros Comunitários, a OBM encaminha ao seu Batalhão todas as informações sobre cada novo BC. Com isso, no Batalhão – local onde 48 se concentram as informações de todos os BC de sua circunscrição – é solicitado à Coordenadoria dos Projetos Sociais do CBMSC a numeração para a emissão do certificado do BC. Cria-se então na Seção de Instrução, Ensino e Operações (B3) do respectivo Batalhão, uma pasta contendo todas as informações do BC, bem como todas as documentações que foram sendo geradas ao longo da sua permanência na OBM. Após a conclusão da escola que formou o BC, o Comandante da OBM efetua a liberação do mesmo para que ele possa ser escalado no serviço operacional da OBM. Para efetuar serviço no CBMSC, o BC deve ir até a OBM em que está vinculado ou ligar, para que a sargenteação – setor administrativo localizado em um quartel ou organização militar – efetue o agendamento ou cancelamento do serviço. O agendamento ou cancelamento do horário deve ser efetuado em até dois dias antes o dia do serviço. Esse agendamento é feito provisoriamente em uma planilha pela sargenteação, sendo que esse horário constará juntamente na escala da Guarnição de Serviço dos Bombeiros Militares que estarão trabalhando no dia do serviço agendado. O Bombeiro Comunitário somente poderá efetuar serviço, caso seu nome conste na escala de serviço do dia. Após o Bombeiro Comunitário concluir o serviço agendado, o Chefe de Socorro – Bombeiro Militar responsável pela Guarnição de Serviço do dia – confirma a presença do Bombeiro Comunitário, e registra no livro de anotações do Chefe de Socorro, as possíveis alterações. Para requisitar informações sobre suas horas trabalhadas, o BC deve efetuar uma solicitação na sua OBM. O BC não tem acesso fácil a essas informações, visto que as mesmas são registradas nos livros de parte, preenchidos a cada serviço realizado, o que dificulta a elaboração de relatórios contendo um espelho da quantidade de horas que cada BC realizou. Para fazer um balanço dos Bombeiros Comunitários que estão ativos, e/ou quantas horas estão sendo trabalhadas mensalmente por todos os BC, o comando geral do CBMSC deve solicitar para cada OBM essas informações. O processo aqui descrito pode ser visualizado na figura a seguir. 49 5.2.2 Diagrama do modelo de processo do negócio act Modelo de Processo - Modelo Atual Início Escola de Formação Formar nov a Turma Bombeiro Comunitário Aprovado? [não] [sim] Liberação para Agendar Serv iço «datastore» Pasta de Dados do Bombeiro Comunitário «datastore» Dados do Bombeiro Comunitário Dados Env iados ao Batalhão Agendar / Cancelar Serv iço Data Maior que 2 Dias? Operação Não Permitida [não] [sim] «datastore» Planilha de Agendamento InserirDdados na Planilha de Agendamento Nome Consta na Planilha? Efetuar Serv iço [não] [sim] Bombeiro Comunitário Liberado para Serv iço Chefe de Socorro Confirma Presença Registro da Presença «datastore» Observ ações Fim Figura 18 – Diagrama do modelo de processo do negócio atual. Fonte: Autores, 2012. 50 5.2.3 Modelagem do processo de negócio com o sistema informatizado Ao formar uma nova turma de Bombeiros Comunitários, o Coordenador dos Bombeiros Comunitários da OBM efetua o cadastro de cada novo BC da sua OBM. O cadastro é feito como inativo, pois o BC somente poderá acessar o sistema quando ativo. A partir desse momento, cada BC possui um login e senha de acesso ao sistema. Após a conclusão da escola que formou o BC, o Comandante da OBM efetua a liberação dos BCs para que ele possa efetuar serviço, com isso, o Coordenador dos BCs altera a situação dos mesmos para ativo, onde, então, poderão acessar ao sistema para efetuar agendamento de horário e gerar relatórios. Para efetuar serviço no CBMSC, o BC deve acessar o sistema e efetuar o agendamento em até dois dias antes do dia do serviço. Após o agendamento do horário, o mesmo já é constado na escala de serviço, podendo, então, ser cancelado pelo BC em até dois dias antes do horário do serviço. O sistema não permite o agendamento ou cancelamento do horário depois de dois dias antes do horário do serviço. Com a escala dos BCs pronta, a Sargenteação da OBM (São os usuários Administrades do local) efetua a leitura dessa escala, e inclui os horários escalados na escala da Guarnição de Serviço dos Bombeiros Militares que estarão trabalhando no dia do serviço agendado. O Bombeiro Comunitário somente poderá efetuar serviço, caso seu nome conste na escala de serviço do dia. Após o Bombeiro Comunitário efetuar o serviço agendado, o Chefe de Socorro deve acessar ao sistema e efetuar a confirmação do horário do Bombeiro Comunitário. Ao confirmar o horário, o Chefe de Socorro irá colocar a nova situação do horário. A nova situação do horário poderá ficar como “Compareceu”, “Compareceu com horário alterado” ou “Não compareceu”. Quando a situação for “Compareceu”, o Chefe de Socorro pode informar possíveis observações sobre o BC. Quando a situação for “Compareceu com horário alterado”, deve ser informado o novo horário realizado, sendo preenchida a nova data e hora de entrada e a nova data e hora de saída, sendo obrigatório o preenchimento de observações. A situação do horário poderá ficar também como “Não compareceu”, nesse caso, o Chefe de Socorro poderá incluir alguma observação, como, por exemplo: não compareceu por motivo de doença. 51 Para acessar as informações sobre suas horas trabalhadas, o BC deve acessar o sistema para emitir o relatório de suas horas trabalhadas. Para saber os Bombeiros Comunitários que estão ativos, e/ou quantas horas estão sendo trabalhadas mensalmente por cada BC, o Coordenador dos Bombeiros Comunitários, o Administrador da OBM ou o Administrador do Sistema devem acessar ao sistema para emitir o relatório de Horas Trabalhadas por BC. A figura apresentada na continuação, descreve o processo apresentado com o sistema proposto. 52 5.2.4 Diagrama do modelo de processo com o sistema informatizado act Modelo de Processo - Modelo Nov o Sistema Início Escola de Formação Formar Nov a Turma «datastore» Cadastro de Bombeiro Comunitário Inativ o Bombeiro Comunitário Aprovado? Alteração Estado do Bombeiro Comunitário [sim] [não] «datastore» Cadastro de Bombeiro Comunitário Ativ o Agendar / Cancelar Serv iço Cadastro de Bombeiro Comunitário Ativo? Data Maior que 2 Dias? Operação Não Permitida [não] [sim] [não] [sim] «datastore» Escala de Serv iço Bombeiro Comunitário Consta na Escala de Serviço? Incluir Horários Escalados na Escala da Guarnição de Serv iço dos Bombeiros Comunitários Efetuar Serv iço Bombeiro Comunitário Liberado para Serv iço [sim] Chefe de Socorro Confirma Presença Registro do Comparecimento «datastore» Registro de não Comparecimento e Observ ações «datastore» Registro do Comparecimento «datastore» Registro do Comparecimento com Horário Alterado. Nov a Data e Hora de Entrada e Saída Fim Figura 19 – Diagrama do modelo de processo do novo sistema. Fonte: Autores, 2012. 53 5.3 REQUISITOS FUNCIONAIS Para Bezerra (2002), requisitos funcionais dizem sobre a funcionalidade do sistema. A seguir, são apresentados os requisitos funcionais do sistema na figura 20: req Requisitos Funcionais RF 1 Cadastro de local RF 2 Cadastro de Usuário RF 3 Cadastro de Escala RF 4 Aprovação de Serviço RF 5 Relatórios RF 6 O usuário logado poderá alterar informações do seu cadastro de usuário. Figura 20 – Requisitos funcionais do sistema. Fonte: Autores, 2012. A seguir, a descrição desses requisitos: a) RF 1 - Cadastro de local: o administrador do sistema ou o administrador de local poderão cadastrar/alterar locais, isto é, os diferentes Batalhões, Companhias, Pelotões ou Grupamentos; b) RF 2 - Cadastro de usuário: o administrador do sistema ou o coordenador do grupamento poderão cadastrar bombeiros comunitários; c) RF 3 - Cadastro de escala: o administrador do sistema, o coordenador do grupamento ou o bombeiro comunitário poderão cadastrar as escalas, ou seja, realizar o agendamento do serviço de um Bombeiro Comunitário para algum horário; d) RF 4 - Aprovação de serviço: o usuário Chefe de Socorro poderá realizar a confirmacão de servico com o status de “compareceu”, “compareceu com o horário alterado” e “não compareceu”; e) RF 5 – Relatórios: o administrador do sistema, o administrador do local, o coordenador dos Bombeiros Comunitários e o Bombeiro Comunitário poderão gerar relatório de horas trabalhadas por BC e de Bombeiros Comunitários Cadastrados. 54 f) RF 6 – Meu cadastro: o usuário logado poderá alterar informações do seu cadastro de usuário. 5.4 REQUISITOS NÃO FUNCIONAIS “Os requisitos não funcionais, como o nome sugere, são aqueles que não dizem respeito diretamente às funções específicas fornecidas pelo sistema”. (SOMMERVILLE, 2003). Eles podem ser classificados em três grandes grupos: requisitos de produto, requisitos organizacionais e requisitos externos. Bezerra (2002) adiciona, também, que os requisitos não funcionais declaram as características de qualidade que o sistema deve possuir e que estão relacionadas às suas funcionalidades. As subseções seguintes apresentam os requisitos não funcionais do sistema. 5.4.1 Requisitos de Produto Descrição dos requisitos não funcionais de produto: a) RNF 01: portabilidade: o sistema deve funcionar nos browsers mais utilizados; b) RNF 02: confiabilidade: o sistema não permitirá a entrada de dados não consistentes; c) RNF 03: usabilidade: padronização das interfaces para facilitar na usabilidade do sistema. 55 5.4.2 Requisitos Organizacionais a) RNF 04: Será utilizada a linguagem .NET. (versão Framework 4.0); b) RNF 05: O sistema gerenciador de Banco de Dados será o SQL Server 2008 (versão 10.50.1617.0); c) RNF 06: O pacote de programa de desenvolvimento de software será o Microsoft Visual Studio 2010 Professional (versão 10.0). 5.4.3 Requisitos Externos a) RN7: segurança: o usuário deverá estar logado no sistema para que possa utilizar o sistema. 5.5 REGRAS DE NEGÓCIO Uma regra de negócio é uma declaração que define ou restringe algum aspecto do negócio. Destina-se a afirmar estrutura do negócio ou controlar ou influenciar o comportamento do negócio. As regras de negócio que abrange o escopo do projeto são atômicas - isto é, elas não podem ser subdivididos. (BRG, 2012). Bezerra (2002) diz que as regras de negócio são documentadas no chamado modelo de regra de negócio. Nesse modelo, as regras são categorizadas. Cada regra normalmente recebe um identificador que permite que a regra seja facilmente referenciada nos demais artefatos do processo de desenvolvimento. No quadro a seguir, são apresentadas as regras de negócio. 56 RN01 RN02 RN03 RN04 RN05 RN06 RN07 RN08 RN09 RN10 RN11 RN12 RN13 RN14 RN15 RN16 RN17 RN18 RN19 RN20 RN21 RN22 RN23 RN24 RN25 RN26 RN27 RN28 Regras de negócio do Sistema Sem estar logado, ao acessar qualquer tela interna pela URL, não permitir o acesso e redirecionar para a tela de login. O usuário deve estar logado no sistema para ter acesso às funcionalidades. Ao acessar a tela de login, colocar o foco no campo login. Na tela de login, ao apertar a tecla <enter>, simular um clique no botão acessar. O sistema permite logar apenas usuários ativos. O usuário Administrador do sistema deve ter todas as permissões durante a utilização do sistema. O sistema deve exibir apenas funções compatíveis com o tipo do usuário que está logado. Campos de preenchimento obrigatório devem ter a sua descrição em vermelho. Campos de preenchimento de CPF devem conter máscara ao colocar o foco. Campos de preenchimento de data devem conter máscara ao colocar o foco. Campos de preenchimento de telefone devem conter máscara ao colocar o foco. Campos de e-mail devem validar se o valor informado é um e-mail válido. Campos de CPF devem validar se o valor informado é um CPF válido. Campos de data devem validar se o valor informado é uma data válida. Regras de negócio do Cadastro de Usuários No menu “Meu cadastro”, somente permitir alterar os dados do endereço, nome, email, CPF, data de nascimento, telefone e senha. Ao incluir um novo usuário, o sistema deve validar se o campo “Login” já existe com aquele que foi preenchido. O campo “Login” não deve permitir espaços. Após a inclusão de um usuário, a informação do campo “Login” não pode mais ser alterada. O campo “Senha” deverá ser obrigatório apenas no cadastro de um novo usuário. O campo “Senha” deve ser informado pelo usuário 2 vezes, e validado pelo sistema quando o cadastro for salvo. O campo “Data de cadastro” deve ser exibido somente na alteração de usuário. Na inclusão do usuário o campo fica oculto e deve salvar na base de dados a data do momento da inclusão do usuário. O campo “Tipo”, seguindo a hierarquia dos atores, deve listar apenas tipos de usuários que estão abaixo do tipo do usuário que está efetuando o cadastro, isto é, logado. O campo “Graduação” deve ser exibido somente quando o “Tipo” selecionado for “Bombeiro Comunitário”. Só é possível excluir usuários que não possuem nenhum agendamento em escala. Regras de negócio do Cadastro de Locais Quando um local for do tipo “Batalhão”, não se informa o “Local pai”. Quando um local for do tipo diferente de “Batalhão”, deve ser informado o “Local pai”. No campo “Local pai” devem ser disponibilizados apenas os locais que são do tipo acima hierarquicamente do “Tipo” selecionado. Um local pode permitir o agendamento de BC´s ou não. Caso o local permita o agendamento, deve ser informado quantos BC´s podem estar de serviço simultaneamente. 57 RN29 RN30 RN31 RN32 RN33 RN34 RN35 RN36 RN37 RN38 RN39 RN40 RN41 RN42 RN43 RN44 RN45 RN46 RN47 RN48 RN49 Um local pode estar ativo ou inativo. O campo “Data de cadastro” deve ser exibido somente na alteração de um local. Na inclusão, o campo fica oculto e deve salvar na base de dados a data do momento da inclusão do local. Não é possível excluir um local quando o mesmo estiver sendo utilizado para algum agendamento de escala, ou quando tiver algum usuário cadastrado para o local. Regras de negócio da Escala Um agendamento somente é feito quando a data do serviço a ser prestado for maior que dois dias da data atual. No agendamento, o sistema só permite a data de saída, maior que a data de entrada. O sistema só permite agendamento de serviço na escala quando o usuário for um BC ativo, Administrador do Local, Administrador do sistema ou Coordenador. O sistema somente permite agendar escalas para usuários do tipo Bombeiro Comunitário que estão na situação ativo. Somente administrador e coordenador podem agendar horário para outro usuário, desde que o agendamento seja para mesmo local do usuário logado. Um BC pode ser agendado somente no local em que está cadastrado. O sistema deve permitir agendamento de serviço somente em locais que permitem escala. Ao carregar a escala de serviço, deve aparecer a escala do dia atual, para o local do usuário logado. O sistema permitirá fazer pesquisa de escala por ano, mês e dia. Somente o administrador do sistema, administrador de local e coordenador poderão filtrar a escala por diferentes usuários. Regras de negócio de Confirmação do Serviço Apenas usuário “Chefe de socorro” pode efetuar a confirmação de serviço, informando o comparecimento ou não do Bombeiro Comunitário agendado na escala. Ao efetuar a confirmação do serviço, o usuário deve incluir uma observação sobre o serviço prestado. Ao efetuar a confirmação do serviço, o usuário deve informar a nova situação do horário agendado para “compareceu”, “compareceu com o horário alterado” e “não compareceu” do Bombeiro Comunitário. Quando a nova situação for “compareceu com horário alterado”, deve ser informada data e hora de entrada e saída do período realizado. Um horário já confirmado não pode mais ser alterado. Na pesquisa de escala, caso o horário já tenha sido confirmado com a situação “compareceu com horário alterado”, o sistema deve mostrar a data de entrada e saida e também a observação dada em um tooltip na imagem na coluna situação. Regras dos Relatórios O relatório de Bombeiro Comunitário disponibilizará filtro de local, cidade e situação do bombeiro comunitário. O relatório de horas por bombeiro comunitário disponibilizará filtro de local, ano, mês e bombeiro comunitário. Quadro 1 – Regras de negócio do sistema. Fonte: Autores, 2012. 58 5.6 CASOS DE USO De acordo com Object Management Group (2011), os casos de uso são um meio para especificar os usos necessários de um sistema. Normalmente, são usados para capturar os requisitos de um sistema, isto é, o que um sistema é suposto fazer. A seguir, são apresentados os casos de uso referentes ao sistema, iniciando com o diagrama geral. 5.6.1 Diagrama geral dos casos de uso A figura, a seguir, apresenta o diagrama geral de casos de uso. 59 uc Use Case Model CSU 1 - Cadastro de Local Administrador do Sistema Relatorios CSU 5 - Geração de Relatório de Bombeiros Comunitários Cadastrados Administrador de Local CSU 2 - Cadastro de Usuário CSU 6 - Geração de Relatório de Horas Trabalhadas por Bombeiro Comunitário Coordenador CSU 3 - Cadastro de escala Bombeiro Comunitario CSU 4 - Confirmação de Serv iço Chefe de Socorro Figura 21 – Casos de uso do sistema. Fonte: Autores, 2012. 5.6.2 – Descrição dos casos de uso A seguir, pode-se destacar a descrição de cada caso de uso. 5.6.2.1 Caso de Uso 1 - Cadastro de Local Inicialmente, na continuação, pode ser verificada a descrição do caso de uso referente ao cadastro de local. 60 Caso de uso 1: Cadastro de Local Descrição: Este caso de uso descreve a realização do cadastro de um local no sistema. Ator: Gestor do sistema. Pré-condições: 1. O gestor do sistema deve estar logado no sistema. 2. O gestor do sistema deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O gestor do sistema informa ao sistema os dados necessários para a realização do cadastro do local. 2. O gestor do sistema envia solicitação de cadastro. 3. O sistema realiza as validações necessárias. 4. O sistema retorna uma mensagem “Cadastro efetuado com sucesso.”. Fluxo alternativo: Caso o gestor do sistema não tenha preenchido os campos obrigatórios, o sistema retorna uma mensagem “Favor preencher todos os campos.”. Quadro 2 – Caso de uso 1 - Cadastro de Local. Fonte: Autores, 2012. 5.6.2.2 Caso de Uso 2 - Cadastro de Usuário Na continuação, pode-se observar a descrição do caso de uso referente ao cadastro de usuário. Caso de uso 2: Cadastro de Usuário Descrição: Este caso de uso descreve a realização do cadastro de um usuário no sistema. Ator: Gestor do sistema, administrador do local, coordenador. Pré-condições: 1. O gestor do sistema, administrador do local ou coordenador deve estar logado no sistema; 2. O gestor do sistema, administrador do local ou coordenador deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O gestor do sistema, administrador do local ou coordenador informa ao sistema os dados necessários para o cadastro do usuário. 2. O gestor do sistema, administrador do local ou coordenador envia solicitação de cadastro. 3. O sistema realiza as validações necessárias. 4. O sistema retorna uma mensagem “Cadastro efetuado com sucesso.”. Fluxo alternativo: Caso o gestor do sistema, administrador do local ou coordenador não tenha preenchido os campos obrigatórios, o sistema retorna uma mensagem “Favor preencher todos os campos.”. Quadro 3 – Caso de uso 2 - Cadastro de Usuário. Fonte: Autores, 2012. 61 5.6.2.3 Caso de Uso 3 - Cadastro de Escala No quadro a seguir, pode-se observar a descrição do caso de uso referente ao cadastro de escala. Caso de uso 3: Cadastro de Escala Descrição: Este caso de uso descreve a realização do cadastro dos horários de trabalho para um oficial dos bombeiros comunitários no sistema. Ator: Gestor do sistema, administrador do local. Pré-condições: 1. O gestor do sistema ou o administrador do local deve estar logado no sistema. 2. O gestor do sistema ou o administrador do local deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O gestor do sistema ou o administrador do local informa ao sistema os dados necessários doados pelo comandante do pelotão dos bombeiros comunitários. 2. O gestor do sistema ou o administrador do local envia solicitação de cadastro. 3. O sistema realiza as validações necessárias. 4. O sistema retorna uma mensagem “Cadastro efetuado com sucesso.”. Fluxo alternativo: Caso o gestor do sistema ou o administrador do local não tenha preenchido os campos obrigatórios, o sistema retorna uma mensagem “Favor preencher todos os campos.”. Quadro 4 – Caso de uso 3 - Cadastro de Escala. Fonte: Autores, 2012. 5.6.2.4 Caso de Uso 4 - Confirmação de Serviço A seguir, pode ser verificada a descrição do caso de uso referente à confirmação de serviço, realizada pelo usuário chefe de socorro. Caso de uso 4: Confirmação de Serviço Descrição: Este caso de uso descreve o procedimento de confirmação de serviço que o chefe de socorro realiza na escala do dia. Ator: Chefe de Socorro. Pré-condições: 1. O usuário deve estar logado no sistema. 2. O usuário deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O usuário seleciona as escalas a serem confirmadas. 2. O usuário envia a solicitação das escalas. 3. O sistema exibe as escalas selecionadas. 4. O usuário altera o status das escalas selecionadas. 62 5. O usuário salva as informações. 6. O sistema exibe mensagem “Deseja realmente salvar? As informações não poderão mais ser alteradas.”. 6. Se o usuário confirmar a mensagem anterior, o sistema retorna uma memsagem “Operação realizada com sucesso.”. Fluxo alternativo: Caso o usuário não altere alguma escala selecionada, o sistema retorna uma mensagem “Favor alterar os dados das escalas escolhidas.”. Quadro 5 – Caso de uso 4 - Confirmação de Serviço. Fonte: Autores, 2012. 5.6.2.5 Caso de Uso 5 - Geração de Relatório de Bombeiros Comunitarios Cadastrados. Na continuação, pode ser verificada a descrição do caso de uso referente à geração de relatório. Caso de uso 5: Geração de Relatório de Bombeiros Comunitarios Cadastrados Descrição: Este caso de uso descreve a geração de relatórios dos bombeiros comunitários cadastrados no sistema, exibindo seu local de trabalho, cidade e situação. Ator: Gestor do sistema, comandante do batalhão dos bombeiros comunitários, comandante da companhia dos bombeiros comunitários, comandante do pelotão dos bombeiros comunitários, comandante do grupamento dos bombeiros comunitários e bombeiro comunitário. Pré-condições: 1. O usuário deve estar logado no sistema. 2. O usuário deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O usuário filtra os dados necessários para solicitar a geração do relatório. 2. O usuário envia a solicitação do relatório. 3. O sistema realiza os filtros necessários. 4. O sistema disponibiliza um link onde é possível salvar o relatório no formato Portable Document Format - PDF. Fluxo alternativo: Caso não existma dados cadastrados para o filtro solicitado, o sistema retorna uma mensagem “Nenhum registro encontrado.”. Quadro 6 – Caso de uso 5 - Geração de Relatório de Bombeiros Comunitários Cadastrados. Fonte: Autores, 2012. 63 5.6.2.6 Caso de Uso 6 - Geração de Relatório de Horas Trabalhadas por Bombeiro Comunitário A seguir, pode-se observar a descrição do caso de uso referente à geração de relatório. Caso de uso 6: Geração de Relatório de Horas Trabalhadas por Bombeiro Comunitário Descrição: Este caso de uso descreve a geração de relatórios das escalas cumpridas pelos Bombeiros Comunitários, exibindo local, ano, mês e bombeiro Comunitário. Ator: Gestor do sistema, comandante do batalhão dos bombeiros comunitários, comandante da companhia dos bombeiros comunitários, comandante do pelotão dos bombeiros comunitários, comandante do grupamento dos bombeiros comunitários e bombeiro comunitário. Pré-condições: 1. O usuário deve estar logado no sistema. 2. O usuário deverá ter permissão para esta funcionalidade do sistema. Fluxo de eventos: 1. O usuário filtra os dados necessários para solicitar a geração do relatório. 2. O usuário envia a solicitação do relatório. 3. O sistema realiza os filtros necessários. 4. O sistema disponibiliza um link onde é possível salvar o relatório no formato PDF. Fluxo alternativo: Caso não existam dados cadastrados para o filtro solicitado, o sistema retorna uma mensagem “Nenhum registro encontrado.”. Quadro 7 – Caso de uso 6 - Geração de Relatório de Horas Trabalhadas por Bombeiro Comunitário. Fonte: Autores, 2012. 5.7 MODELOS DE DOMÍNIO Para OMG (2011b), o modelo de domínio explica a relação entre ocorrências e comportamentos. A seguir, são apresentados os modelos de domínio referentes ao sistema. 64 5.7.1 Modelo de domínio para Cadastro de Local Na figura 22 a seguir, pode-se observar a figura do modelo de domínio para Cadastro de Local. class Modeo de Dominio - Cadastro de Local Corpo_de_Bombeiros Administrador_do_Sistema Local Usuario Administrador_de_Local Cadastro_de_Local Figura 22 – Modelo de domínio para Cadastro de Local. Fonte: Autores, 2012. 5.7.2 Modelo de domínio para Cadastro de Usuário Na continuação, pode-se verificar a figura do modelo de domínio para Cadastro de Usuário. 65 class Modeo de Dominio - Cadastro de Usuário Corpo_de_Bombeiros Administrador_do_Sistema Local Usuario Administrador_de_Local Coordenador Cadastro_de_Usuario Figura 23 – Modelo de domínio para Cadastro de Usuário. Fonte: Autores, 2012. 5.7.3 Modelo de domínio para Cadastro de Escala Na figura 24, pode-se observar o modelo de domínio para Cadastro de Escala. class Modeo de Dominio - Cadastro de Escala Corpo_de_Bombeiros Administrador_do_Sistema Local Usuario Cadastro_de_Escala Figura 24 – Modelo de domínio para Cadastro de Escala. Fonte: Autores, 2012. Coordenador Administrador_de_Local Bombeiro_Comunitario 66 5.7.4 Modelo de domínio para Confirmação de Serviço A seguir, encontra-se a figura do modelo de domínio para Confirmação de Serviço. class Modeo de Dominio - Confirmação de Serv iço Corpo_de_Bombeiro Chefe_de_Socorro Local Usuario Confirmacao_de_Serv ico Figura 25 – Modelo de domínio para Confirmação de Serviço. Fonte: Autores, 2012. 5.8 DIAGRAMA DE CLASSES O diagrama de classe é um modelo lógico do sistema. As classes geralmente têm relação direta com o código-fonte ou artefatos de outros softwares que podem ser agrupados em componentes executáveis (OMG, 2001). A seguir, são apresentados os diagramas de classes do sistema. 67 5.8.1 Diagrama de Classes para Cadastros de Local A figura a seguir faz a representação das classes presentes no cadastro de local. class Diagrama de Classes - Cadastro de Local GestorDoSistema AdministradorDeLocal - sNmGuerra: char nNrMatricula: int - sNmGuerra: char sNrMatricula: int + + GestorDoSistema() : void Finalize() : void + + AdministradorDeLocal() : void Finalize() : void Batalhao + + Batalhao() : void Finalize() : void + + Companhia() : void Finalize() : void Usuario usa - nCdCidade: int nCdGraduacao: int nCdLocal: int nCdSituacao: int nCdUsuarioTipo: int nNrLogradouro: int sCdUsuario: char sDsEmail: char sDsSenha: char sNmBairro: char sNmGuerra: char sNmLogradouro: char sNmUsuario: char sNrCPF: int sNrMatricula: int sNrTelefone: int sNrTelefoneSecundario: int tDtCadastro: date tDtFormatura: date tDtNascimento: date + + Usuario() : void Finalize() : void Companhia Local - nCdLocal: int + + Local() : void Finalize() : void CorpoDeBombeiros + + Pelotao + + Pelotao() : void Finalize() : void CadastroLocal «interface» CadastroLocal + IncluirDados() : void Validar - Mensagem: char + + Validar() : void Finalize() : void executa - bFlPermiteEscala: boolean nCdCidade: int nCdLocal: int nCdLocalPai: int nCdLocalTipo: int nCdSituacao: int nNrLogradouro: int nQtComunitariosSimultaneos: int sNmBairro: char sNmLocal: char sNmLogradouro: char sNrTelefone: char sSgLocal: char tDtCadstro: date + + CadastroLocal() : void Finalize() : void Figura 26 – Diagrama de Classes para Cadastro de Local. Fonte: Autores, 2012. Grupamento + + Grupamento() : void Finalize() : void CorpoDeBombeiros() : void Finalize() : void 68 5.8.2 Diagrama de Classes para Cadastro de Usuário A figura, na continuação, faz a representação das classes presentes no cadastro de usuários. class Diagrama de Classes - Cadastro de Usuário GestorDoSistema AdministradorDeLocal Batalhao Coordenador - sNmGuerra: char nNrMatricula: int - sNmGuerra: char sNrMatricula: int - sNmGuerra: char sNrMatricula: int + + GestorDoSistema() : void Finalize() : void + + AdministradorDeLocal() : void Finalize() : void + + Coordenador() : void Finalize() : void + + Batalhao() : void Finalize() : void + + Companhia() : void Finalize() : void Companhia Usuario usa - sNmGuerra: char sNrMatricula: int + + Usuario() : void Finalize() : void Local - nCdLocal: int + + Local() : void Finalize() : void CorpoDeBombeiros + + CorpoDeBombeiros() : void Finalize() : void Pelotao executa «interface» CadastroUsuario + IncluirDados() : void Validar - Mensagem: char + + Validar() : void Finalize() : void + + CadastroUsuario - nCdCidade: int nCdGraduacao: int nCdLocal: int nCdSituacao: int nCdUsuarioTipo: int nNrLogradouro: int sCdUsuario: char sDsEmail: char sDsSenha: char sNmBairro: char sNmGuerra: char sNmLogradouro: char sNmUsuario: char sNrCPF: char sNrMatricula: char sNrTelefone: char sNrTelefoneSecundario: char tDtCadastro: date tDtFormatura: date tDtNascimento: date + + CadastroUsuario() : void Finalize() : void Pelotao() : void Finalize() : void Grupamento + + Grupamento() : void Finalize() : void Figura 27 – Diagrama de Classes para Cadastro de Usuário. Fonte: Autores, 2012. 5.8.3 Diagrama de Classes para Cadastro de Escala A figura, a seguir, descreve as classes presentes no cadastro de escala. 69 class Diagrama de Classes - Cadastro de Escala GestorDoSistema AdministradorDeLocal Coordenador Batalhao BombeiroComunitario - sNmGuerra: char nNrMatricula: int - sNmGuerra: char sNrMatricula: int - sNmGuerra: char sNrMatricula: int - sNmGuerra: char sNrMatricula: int + + GestorDoSistema() : void Finalize() : void + + AdministradorDeLocal() : void Finalize() : void + + Coordenador() : void Finalize() : void + + BombeiroComunitario() : void Finalize() : void + + Batalhao() : void Finalize() : void + + Companhia() : void Finalize() : void Companhia Usuario - usa Local sNm Guerra: char sNrMatricula: int + + Usuario() : void Finalize() : void - nCdLocal: int + + Local() : void Finalize() : void CorpoDeBombeiros + + CorpoDeBombeiros() : void Finalize() : void Pelotao CadastroEscala executa «interface» CadastroEscala + IncluirDados() : void - nCdEscala: int nCdEscalaSituacao: int nCdLocal: int sCdUsuario: char sCdUsuarioAgendado: char sCdUsuarioalteracao: int sDsObservacao: char tDtAgendamento: date tDtAlteracao: boolean tDtEntrada: date tDtEntradaRealizada: date tDtSaida: date tDtSaidaRealizada: int + + CadastroEscala() : void Finalize() : void + + Pelotao() : void Finalize() : void Grupamento + + Grupamento() : void Finalize() : void Validar - M ensagem: char + + Validar() : void Finalize() : void Figura 28 – Diagrama de Classes para Cadastro de Escala. Fonte: Autores, 2012. 5.8.4 Diagrama de Classes para Geração de Relatórios A figura, na continuação, representa as classes presentes na geração de relatórios. class Diagrama de Classes - Cadastro de Escala GestorDoSistema AdministradorDeLocal Coordenador Batalhao BombeiroComunitario - sNmGuerra: char nNrMatricula: int - sNmGuerra: char sNrMatricula: int - sNmGuerra: char sNrMatricula: int - sNmGuerra: char sNrMatricula: int + + GestorDoSistema() : void Finalize() : void + + AdministradorDeLocal() : void Finalize() : void + + Coordenador() : void Finalize() : void + + BombeiroComunitario() : void Finalize() : void + + Batalhao() : void Finalize() : void + + Companhia() : void Finalize() : void Companhia Usuario - usa + + Local sNm Guerra: char sNrMatricula: int Usuario() : void Finalize() : void - nCdLocal: int + + Local() : void Finalize() : void CorpoDeBombeiros + + Pelotao «interface» GeracaoDeRelatorio + IncluirDados() : void executa GeracaoDeRelatorio + + + + GeracaoDeRelatorio() : void Finalize() : void Pelotao() : void Finalize() : void Grupamento Validar - Mensagem: char + + Validar() : void Finalize() : void Figura 29 – Diagrama de Classes para Geração de Relatórios. Fonte: Autores, 2012. + + Grupamento() : void Finalize() : void CorpoDeBombeiros() : void Finalize() : void 70 5.9 DIAGRAMA DE ROBUSTEZ Um diagrama de robustez é uma imagem objeto de um caso de uso. O diagrama de robustez e o texto do caso de uso tem que corresponder com precisão, de modo que o diagrama de robustez obriga a amarrar o texto do caso de uso aos objetos (ROSENBERG, STEPHENS, 2007). A seguir, são representados os diagramas de robustez do sistema. 5.9.1 Diagrama de Robustez para Cadastro de Local Na figura a seguir, representa-se o diagrama de robustez referente ao cadastro de local. obj ect Diagrama de Robustez - Cadastro de Local Solicitar Cadastro de Local interface de Cadastro de Local Administrdor de Local Local Cadastrado Validar Dados Cadastrar Local <<erro>> Mensagem de Erro Mensagem de Erro Figura 30 – Diagrama de robustez para Cadastro de Local. Fonte: Autores, 2012. Validar Dados 71 5.9.2 Diagrama de Robustez para Cadastro de Usuários Na figura, a seguir, descreve-se o diagrama de robustez referente ao cadastro de usuários. obj ect Diagrama de Robustez - Cadastro de Usuário Solicitar Cadastro de Usuário Interface de Cadastro de Usuário Administrador do Sistema Usuário Cadastrado Validar Dados Cadastrar Usuário <<erro>> Mensagem de Erro Mensagem de Erro Validar Dados Figura 31 – Diagrama de robustez para Cadastro de Usuário. Fonte: Autores, 2012. 5.9.3 Diagrama de Robustez para Cadastro de Escalas Na figura, a seguir, o diagrama de robustez referente ao cadastro de escalas. 72 obj ect Diagrama de Robustez - Cadastro de Escalas Solicitar Cadastro de Escala Interface de Cadastro de Escalas Administrador do Sistema Escala Cadastrada Validar Dados Cadastrar Escala <<erro>> Mensagem de Erro Mensagem de Erro Validar Dados Figura 32 – Diagrama de robustez para Cadastro de Escalas. Fonte: Autores, 2012. 5.9.4 Diagrama de Robustez para Geração de Relatórios Na figura, a seguir, apresenta-se o diagrama de robustez referente à geração de relatórios. 73 obj ect Diagrama de Robustez - Geração de Relatórios Solicitar Geração de Relatório Interface de Solicitação de Relatório Administrador do Sistema Relatório Gerado Validar Dados Gerar Relatório <<erro>> Mensagem de Erro Mensagem de Erro Validar Dados Figura 33 – Diagrama de robustez para Geração de Relatórios. Fonte: Autores, 2012. 5.9.5 Diagrama de Robustez para Confirmação de Serviço Na figura, a seguir, representa-se o diagrama de robustez referente à confirmação de serviço. obj ect Diagrama de Robustez - Cnfirmação de Serv iço Solicitar Confirmação de Serviço Interface de Confirmação de Serviço Chefe de Socorro Serviço Confirmado Validar Dados Confirmar Serviço <<erro>> Mensagem de Erro Mensagem de Erro Figura 34 – Diagrama de robustez para Confirmação de Serviço. Fonte: Autores, 2012. Validar Dados 74 5.10 DIAGRAMA DE SEQUÊNCIA O diagrama de sequência tem a ênfase na ordem temporal das mensagens trocadas entre os objetos (BEZERRA, 2002). A seguir, são apresentados os diagramas de sequência do sistema. 5.10.1 Diagrama de Sequência para Cadastro de Local O diagrama de sequência referente ao cadastro de local é apresentado na figura a seguir. 75 sd Diagrama de Sequencia - Cadastro de Local Usuário com Permissão 1. Usuário com Permissão abre Interface de Cadastro de Local() Interface de Cadastro de Local Mensagem Validar Local Cadastrado 2. Cadastra Dados do Local() 3. Mostra dados na Interface() 4. Usuário com Permissão envia os Dados Cadastrados() 5. Dados salvos com sucesso no Banco de Dados() 6. Cadastrar Local no Sistema() 7. Dados Cadastrados() 8. Mensagem de Cadastro Realizado com Sucesso() 9. Retorna a Tela de Locais() Figura 35 – Diagrama de Sequência para Cadastro de Local. Fonte: Autores, 2012. 5.10.2 Diagrama de Sequência para Cadastro de Usuário O diagrama de sequência relacionado ao cadastro de usuário é apresentado na figura a seguir. 76 sd Diagrama de Sequencia - Cadastro de Usuário Usuário com Permissão Interface de Cadastro de Usuário Mensagem 1. Usuário com Permissão abre Interface de Cadastro de Usuário() 3. Mostra Dados na Interface() Validar Usuário Cadastrado 2. Cadastra Dados do Usuário() 4. Usuário com Permissão envia Dados Cadastrados() 5. Dados Salvos com sucesso no Banco de Dados() 6. Cadastrar Usuário no Sistema() 7. Dados Cadastrados() 8. Mensagem de Cadastro Realizado com Sucesso() 9. Retorna a Tela de Cadastro() Figura 36 – Diagrama de Sequência para Cadastro de Usuário. Fonte: Autores, 2012. 5.10.3 Diagrama de Sequência para Cadastro de Escala O diagrama de sequência do cadastro de escala encontra-se na figura a seguir. 77 sd Diagrama de Sequencia - Cadastro de Escala Usuário com Permissão Interface de Cadastro de Escala Mensagem 1. Usuário com Permissão Abre Interface de Cadastro de Escala() Validar Escala Cadastrada 2. Cadastra Dados de Escala() 3. Mostra dados na Interface() 4. Usuário com Permissão Envia Dados Cadastrados() 5. dados salvos com sucesso no Banco de Dados() 6. Cadastrar Escala no Sistema() 7. Dados Cadastrados() 8. Mensagem Dados Cadastrados com Sucesso() 9. Retorna a Tela de Escalas() Figura 37 – Diagrama de Sequência para Cadastro de Escala. Fonte: Autores, 2012. 5.10.4 Diagrama de Sequência para Geração de Relatórios O diagrama de sequência referente à geração de relatórios é apresentado na figura a seguir. 78 sd Diagrama de Sequencia - Geração de Relatórios Usuário com Permissão Interface de Geração de Relatório Mensagem Validar Relatório Gerado 1. Usuário com Permissão abre Interface de Geração de Relatório() 2. Informa Dados Filtrados() 3. Gera Relatório() 4. Exibe Relatório na Interface de Relatório() Figura 38 – Diagrama de Sequência para Geração de Relatórios. Fonte: Autores, 2012. 5.11 MODELAGEM DO BANCO DE DADOS DO SISTEMA A seguir, é apresentada a figura 39 que representa a estrutura do banco de dados do sistema. 79 dm Modelagem do banco de dados USUARIO_SITUACAO «column» *PK nCdSituacao: numeric * sNmSituacao: varchar sDsImagem: varchar «PK» + PK_USUARIO_SITUACAO(numeric) USUARIO_TIPO «column» *PK nCdUsuarioTipo: numeric sDsUsuarioTipo: varchar sSgUsuarioTipo: varchar «PK» + PK_USUARIO_TIPO(numeric) USUARIO_GRADUACAO «column» *PK nCdGraduacao: numeric * sNmGraduacao: varchar sDsImagem: varchar nCdUsuarioTipo: numeric «PK» + PK_USUARIO_GRADUACAO(numeric) USUARIO «column» *PK sCdUsuario: varchar sNrMatricula: varchar sNmUsuario: varchar sNmGuerra: varchar sNrCPF: varchar tDtNascimento: datetime tDtFormatura: datetime tDtCadastro: datetime *FK nCdSituacao: numeric *FK nCdUsuarioTipo: numeric FK nCdGraduacao: numeric *FK nCdLocal: numeric * sDsSenha: varchar sNmLogradouro: varchar nNrLogradouro: numeric sNmBairro: varchar FK nCdCidade: numeric sNrTelefone: varchar sNrTelefoneSecundario: varchar sDsEmail: varchar «PK» + PK_USUARIO(varchar) PERMISSAO PERFIL_PERMISSAO «column» *FK nCdPerfil: numeric *FK nCdPermissao: numeric «column» *PK nCdPermissao: numeric * sNmPermissao: varchar «FK» + FK_PERFIL_PERMISSAO_PERFIL(numeric) + FK_PERFIL_PERMISSAO_PERMISSAO(numeric) «PK» + PK_PERMISSAO(numeric) PERMISSAO_FUNCIONALIDADE «column» *FK nCdPermissao: numeric *FK nCdFuncionalidade: numeric PERFIL «column» *PK nCdPerfil: numeric * sNmPerfil: varchar «FK» + FK_PERMISSAO_FUNCIONALIDADE_FUNCIONALIDADE(numeric) + FK_PERMISSAO_FUNCIONALIDADE_PERMISSAO(numeric) «PK» + PK_PERFIL(numeric) «FK» + FK_USUARIO_CIDADE(numeric) + FK_USUARIO_LOCAL(numeric) + FK_USUARIO_USUARIO_GRADUACAO(numeric) + FK_USUARIO_USUARIO_SITUACAO(numeric) + FK_USUARIO_USUARIO_TIPO(numeric) FUNCIONALIDADE CIDADE USUARIO_PERFIL «column» *PK nCdCidade: numeric * sNmCidade: varchar * sCdEstado: varchar «column» *FK sCdUsuario: varchar *FK nCdPerfil: numeric (nCdLocalPai = nCdLocal) «PK» + PK_CIDADE(numeric) «FK» + FK_USUARIO_PERFIL_PERFIL(numeric) + FK_USUARIO_PERFIL_USUARIO(varchar) «column» *PK nCdFuncionalidade: numeric * sDsFuncionalidade: varchar * nCdModulo: numeric «PK» + PK_FUNCIONALIDADE(numeric) (nCdMenuPai = nCdMenu) LOCAL LOCAL_TIPO «column» *PK nCdLocalTipo: numeric * sDsLocalTipo: varchar nCdLocalTipoPai: numeric «PK» + PK_LOCAL_TIPO(numeric) LOCAL_SITUACAO «column» *PK nCdSituacao: numeric * sDsSituacao: varchar «column» *PK nCdLocal: numeric FK nCdLocalPai: numeric *FK nCdLocalTipo: numeric * sNmLocal: varchar * sSgLocal: varchar * sNmLogradouro: varchar * nNrLogradouro: numeric * sNmBairro: varchar *FK nCdCidade: numeric sNrTelefone: numeric * bFlPermiteEscala: numeric nQtComunitariosSimultaneos: numeric * tDtCadastro: datetime *FK nCdSituacao: numeric «PK» + PK_LOCAL(numeric) «FK» + FK_LOCAL_CIDADE(numeric) + FK_LOCAL_LOCALPAI(numeric) + FK_LOCAL_LOCAL_SITUACAO(numeric) + FK_LOCAL_LOCAL_TIPO(numeric) «PK» + PK_LOCAL_SITUACAO(numeric) ESCALA «column» *PK nCdEscala: numeric *FK nCdEscalaSituacao: numeric *FK sCdUsuario: varchar *FK sCdUsuarioAgendamento: varchar *FK nCdLocal: numeric * tDtAgendamento: datetime tDtEntrada: datetime tDtSaida: datetime FK sCdUsuarioAlteracao: varchar tDtAlteracao: datetime tDtEntradaRealizada: datetime tDtSaidaRealizada: datetime sDsObservacao: varchar «PK» + PK_ESCALA(numeric) «FK» + FK_ESCALA_ESCALA_SITUACAO(numeric) + FK_ESCALA_LOCAL(numeric) + FK_ESCALA_USUARIO(varchar) + FK_ESCALA_USUARIO1(varchar) + FK_ESCALA_USUARIO2(varchar) MENU «column» *PK nCdMenu: numeric FK nCdMenuPai: numeric FK nCdFuncionalidade: numeric * sDsMenu: varchar sDsArquivoPagina: varchar * bFlVisivel: numeric «PK» + PK_MENU(numeric) «FK» + FK_MENU_FUNCIONALIDADE(numeric) + FK_MENU_MENU(numeric) ESCALA_SITUACAO «column» *PK nCdEscalaSituacao: numeric * sDsEscalaSituacao: varchar «PK» + PK_ESCALA_SITUACAO(numeric) Figura 39 – Modelagem do banco de dados. Fonte: Autores, 2012. 5.12 CONSIDERAÇÕES FINAIS Este capítulo apresentou a modelagem do sistema para agendamento de escalas dos Bombeiros Comunitários de Santa Catarina. Os diagramas apresentados, de caso de uso, sequência, robustez, de classe e banco de dados, assim como a descrição dos requisitos funcionais, não funcionais e regras de negócios, foram de vital importância para o bom entendimento das necessidades que deveriam ser atendidas pelo sistema a ser implementado. 80 6 DESENVOLVIMENTO Este capítulo apresenta as ferramentas, tecnologias utilizadas e o sistema desenvolvido. 6.1 FERRAMENTAS E TECNOLOGIAS A seguir, são destacadas as ferramentas e tecnologias utilizadas no desenvolvimento do sistema. Figura 40 – Tecnologias utilizadas. Fonte: Autores, 2012. 81 6.1.1 C# Segundo Microsoft (2012b), o C# é uma linguagem orientada a objetos que permite aos desenvolvedores criarem uma variedade de aplicativos seguros e robustos que são executados no .NET Framework. Considerada uma linguagem elegante, fortemente tipada e de compatibilidade com o Microsoft Visual Studio, foi a escolhida para o desenvolvimento desse projeto. 6.1.2 Microsoft .NET Conforme Microsoft (2012b), o Microsoft .NET, conhecido como .NET Framework, é um componente do Sistema Operacional Windows que inclui um sistema de execução virtual juntamente com um conjunto unificado de biblioteca de classes. Permite a construção e desenvolvimento de aplicações web de forma integrada e unificada, capaz de executar mais de 33 diferentes linguagens de programação. A versão atual deste Framework é a 4, versão escolhida para o desenvolvimento deste projeto. 6.1.3 JavaScript Para JavaScript Passo a Passo Lite (2001), JavaScript é uma linguagem de script que se aloja dentro de um programa HTML. É necessário um browser para executar um JavaScript, que é uma linguagem interpretada, com base em objetos, o que significa que o programador pode usar objetos predefinidos ou criar novos objetos de acordo com sua necessidade. O autor também afirma que o código-fonte da linguagem JavaScript é um tipo de hóspede dentro de um programa HTML. No mesmo arquivo em que estão os comandos 82 básicos de HMTL, o código JavaScript é inserido de maneira a ser interpretado quando a página é carregada ou quando o usuário realiza alguma operação. O JavaScript foi escolhido para fazer parte do projeto por se apresentar uma ótima ferramenta, com bastante referência para pesquisa e muito popular em projetos web. 6.1.4 CSS Denominadas folhas de estilo em cascata, a ideia por trás do CSS é fornecer o grau de controle de projeto oferecida por numerosas extenxões da HTML, aumentar um pouco mais o controle do projeto e separá-lo da HTML em si, conforme Lemay. (1998). Para Lemay (1998), o conceito de estilo é muito simples. Primeiramente, as regras de estilo definem o layout, a tipografia e os recursos de projeto de um documento, separados da definição da estrutura do documento. Assim, a estrutura de um documento é definida através da utilização da HTML padrão. O CSS permite que o estilo das várias páginas seja alterado sem que precise ser feita a alteração manual em cada uma delas. As folhas de estilo em cascata foram adotadas no trabalho por antecipar a mudança de layout que ocorre durante o projeto a fim de atender os padrões de boas práticas e o gosto do usuário final do sistema. 6.1.5 Microsoft SQL Server Segundo a Microsoft (2012c), o Microsoft SQL Server é o serviço principal para armazenamento, processamento e segurança de dados. O Mecanismo de Banco de Dados fornece acesso controlado e processamento rápido de transações para atender aos requisitos dos aplicativos de consumo de dados mais exigentes. 83 Os altos níveis de disponibilidade, segurança, rapidez e a garantia de uma visão geral dos dados do sistema, juntamente com a compatibilidade com a linguagem .NET, foram essenciais na escolha do Miscosoft SQL Server 2008 para fazer parte deste projeto. 6.1.6 Microsoft Visual Studio Conforme Microsoft (2012a), o Microsoft Visual Studio é um pacote de programas para desenvolvimento de software dedicado ao .NET Framework e às linguagens Visual Basic – VB, C, C++, C# e J#. Voltado para aplicações Windows Forms e Web, foi o escolhido para o desenvolvimento deste projeto, juntamente com a linguagem de desenvolvimento C#. O escolhido para o desenvolvimento deste projeto foi o Microsoft Visual Studio 2010. 6.1.7 Crystal Report O software Crystal Repost é uma ferramenta que permite a criação de relatórios, pertencente à SAP BusinessObjects. Os desenvolvedores podem criar e integrar relatórios a suas aplicações .NET sem sair do ambiente de desenvolvimento do Visual Studio. A facilidade de se conectar a praticamente qualquer fonte de dados e a poderosa combinação de dados que o software proporciona, foi à chave na escolha deste produto para fazer parte deste projeto. Com ele foi possível criar relatórios com aparência profissional, integrando-o com o aplicativo de desenvolvimento .NET. 84 6.1.8 Enterprise Architect O Enterprise Architect (EA) é uma ferramenta de modelagem desenvolvida pela Sparx System. O software permite a criação de diagramas, modelos e classes de forma visual que facilitam no entendimento do sistema modelado utilizando a motodologia ICONIX. O Enterprise Architect foi escolhido para este projeto por fazer parte do aprendizado das aulas A versão utilizada para este projeto foi a 7.5.845 versão para uso de teste de 30 dias. O download pode ser feito em http://sparxsystem.com. 6.2 HISTÓRICO DO DESENVOLVIMENTO A seguir, apresenta-se uma descrição do histórico do desenvolvimento do sistema. Primeiramente, identificou-se um problema que poderia ser resolvido por meio do conhecimento que vinha sendo adquirido no curso de graduação da faculdade. O aluno Thiago Thiesen de Souza é Bombeiro Comunitário e sentiu a necessidade de melhorar a forma em que os processos de controle dos Bombeiros Comunitários, e a maneira em que o agendamento de serviço era efetuado, dessa forma, pensou-se em alguma estratégia que permitisse melhorar essas condições de controle. Foi decidido, então, que o sistema seria feito para agilizar esse processo, e juntamente com o aluno Matheus Ribeiro Melim, deu-se início a uma jornada que resultaria em um Sistema de Cadastro e Controle das Horas Trabalhadas dos Bombeiros Comunitários do Estado de Santa Catarina. Depois de apresentados os objetivos e as justificativas no capítulo 1, foi feito um levantamento das leis e regulamentos que regem o comportamento dos Bombeiros Comunitários em Santa Catarina apresentados no capítulo 2. Essa revisão da literatura teve como base a constituição brasileira, o regulamento interno e dos serviços gerais do exército brasileiro, e artigos encontrados na internet. Ela serviu para fazer um apanhado das informações que poderiam ser valiosas para ajudar no desenvolvimento do sistema proposto. Inicialmente, foram apresentadas algumas metodologias de desenvolvimento de software ágeis existentes juntamente com suas características, qualidades e a justificativa para 85 a escolha do ICONIX para este projeto. Encontrou-se bastante material sobre as metodologias, e isso guiou a escolha, de forma clara, para que se pudesse aplicar de forma correta o ICONIX no processo de desenvolvimento. A metodologia foi adaptada para melhor atender a execução deste projeto. Adotaram-se as melhores práticas e aderiram-se algumas práticas de outras metodologias que deram resultados melhores para os objetivos, como exemplo, foi utilizado uma caracteristica do XP, citada no capítulo 3, a qual se refere à realização de pequenas fases, denominadas iterações para produzir um sistema simples e 100% funcional conforme novas versões funcionais são adicionadas. Essa é uma característica, também, encontrada no modelo incremental. Esse uso integrado das metodologias permitiu trilhar um caminho diferenciado, mais voltado ao usuário final. No capítulo 5, apresenta-se a modelagem do sistema, consistente no Modelo de Caso de Uso, Modelo de Domínio, Diagrama de Classe, Análise de Robustez, Diagrama de Sequência e Modelo do Banco de Dados, seguindo a metodologia escolhida. Também foram documentados os Atores, Requisitos Funcionais, Requisitos não Funcionais e Regras de Negócio do sistema. Verificou-se que o modelo ICONIX possui fases de desenvolvimento que possibilitam extrair requisitos detalhados e utilizá-los na documentação utilizando diagramas da UML. O desenvolvimento e a apresentação do sistema, juntamente com uma breve descrição das ferramentas utilizadas, fazem-se presentes no capítulo 6. 6.3 PROBLEMA E SOLUÇÕES Durante o desenvolvimento, houve a troca do banco de dados MySQL para o SQL Server 2008. De acordo com o conhecimento dos membros do projeto, foi constatado que o gerenciamento do MySQL, não seria o mais simples para o desenvolvimento. Portanto, a equipe, resolveu utilizar um gerenciador de banco de dados mais familiarizado, o SQL Server 2008. Essa alteração no banco de dados, fez com que levasse-mos mais tempo para o desenvolvimento, pois tivemos que reconstruir a estrutura do banco de dados, dentro do SQL 86 Server 2008, bem como adaptar a parte do sistema, que estava compatível apenas com o banco de dados MySQL. 6.4 APRESENTAÇÃO DO SISTEMA A figura, a seguir, demonstra a tela de login do sistema. Para acessar ao sistema, o usuário deve informar usuário e senha para que o sistema confirme a autenticidade do usuário e permita o seu acesso. Figura 41 – Tela de Login. Fonte: Autores, 2012. Caso o sistema não valide a autenticidade do login informado, o usuário recebe uma mensagem de erro. Após a confirmação de autenticidade do usuário, o mesmo é redirecionado para a tela inicial do sistema. A figura 42 representa a tela inicial do sistema, exibindo o nome do usuário logado para usuário e os menus aos quais este tem a permissão de acesso, contendo também a opção de se desconetar do sistema. 87 Figura 42 – Tela inicial do sistema. Fonte: Autores, 2012. O sistema habilita os menus de acordo com a permissão de acesso de cada usuário. Por exemplo, na imagem anterior estão disponíveis os menus para usuário administrador, enquando que na próxima figura aparecem os menus disponíveis para o usuário Bombeiro Comunitário. Figura 43 – Tela inicial do sistema para Bombeiro Comunitário. Fonte: Autores, 2012. A figura, na continuação, representa a tela de consulta de locais, sendo que a partir dela é possível incluir, alterar ou excluir um local. Para a consulta, é possível filtrar pela sigla 88 ou cidade do local. É exibido em baixo do nome do usuário logado, o local do sistema em que o usuário está. Figura 44 – Tela de consulta de Locais. Fonte: Autores, 2012. A seguir, a figura representa a tela de cadastro de local. Nela, os dados obrigatórios estão com a descrição em vermelho. Figura 45 – Tela de inclusão/alteração de Local. Fonte: Autores, 2012. A seguir, a figura 46 ilustra a tela de consulta de usuários, sendo que a partir dela é possível incluir, alterar ou excluir um usuário. Nela, é possível filtrar a consulta por nome de guerra e/ou matrícula do usuário. 89 Figura 46 – Tela de consulta de Usuários. Fonte: Autores, 2012. A imagem, a seguir, exibe a tela de inclusão/alteração de usuário, e em vermelho os campos que são obrigatórios para efetuar a ação com sucesso. Figura 47 – Tela de inclusão/alteração de Usuário. Fonte: Autores, 2012. 90 A seguir, na figura 48, verifica-se a tela na qual o usuário efetua a alteração no seu cadastro. Nela, é possível alterar somente algumas informações. Figura 48 – Tela de alteração do cadastro do usuário logado. Fonte: Autores, 2012. Na continuação, segue a tela de escala de serviço. Nela, o usuário Bombeiro Comunitário tem permissão de agendar horário na escala e consultar, por período, os horários já cadastrados para o local no qual o usuário logado está cadastrado. Nesta tela, o Bombeiro Comunitário também pode cancelar seu horário agendado. 91 Figura 49 – Tela de Escala de serviço para agendamento. Fonte: Autores, 2012. A figura, na continuação, demonstra a tela escala de serviço para usuário Chefe de Socorro. Nela, é possível alterar a situação do horário agendado. Figura 50 – Tela de Escala de serviço para confirmação de serviço. Fonte: Autores, 2012. Após o usuário Chefe de Socorro clicar em cima da descrição da situação “Agendado”, é exibida a tela de confirmação de serviço, apresentada a seguir. Nela, são exibidas as informações do agendamento, sendo disponibilizados campos para a informação da nova situação da escala, com a data e hora do serviço realizado, juntamente com as 92 observações do acontecido durante o período em que o Bombeiro Comunitário estava presente junto à guarnição de serviço. Figura 51 – Tela de Confirmação de serviço. Fonte: Autores, 2012. A seguir, está a tela de escala de serviço para o usuário Chefe de Socorro. Pode se observar que o horário da escala já sofreu a confirmação de serviço. Nota-se que, quando a situação do horário foi alterada, esse campo deixa de ser um link e, nele, é exibida uma imagem ( ), a qual, ao ter o mouse colocado acima, exibe a justificativa informada na confirmação de serviço. Figura 52 – Tela de Escala de serviço após confirmação de serviço. Fonte: Autores, 2012. 93 Na sequência, a tela de relatórios do sistema. Figura 53 – Tela de Relatórios do sistema. Fonte: Autores, 2012. Na tela, a seguir, está o Relatório de Bombeiros Comunitários Cadastrados, nele, são listados todos os Bombeiros Comunitários cadastrados no sistema, sendo possível filtrar os dados por cidade, local e/ou situação do Bombeiro Comunitário, sendo que os resultados são agrupados por local. Essa funcionalidade permite, também, salvar o relatório no formato PDF, como demonstrado a seguir. 94 Figura 54 – Tela de Relatório de Bombeiros Comunitários Cadastrados. Fonte: Autores, 2012. Na tela, a seguir, está o Relatório de Horas Trabalhadas por Bombeiro Comunitário. Observa-se que os dados, total de horas trabalhadas para cada Bombeiro Comunitário, são agrupados por local e período, sendo possível filtrar os dados por Local, Bombeiro Comunitário, Ano e/ou Mês. Devido à essa funcionalidade, é possível salvar o relatório no formato PDF, como demonstrado na sequeência. 95 Figura 55 – Tela de Relatório de Horas Trabalhadas por BC. Fonte: Autores, 2012. 6.5 VALIDAÇÃO E TESTES Após a conclusão da primeira versão da implementação do sistema, foi realizada uma validação do software com o objetivo de identificar possíveis falhas. Essas falhas foram corrigidas e o sistema foi novamente validado pelos autores. Após a validação inicial dos autores, o sistema foi, então, apresentado para o 10º Batalhão de Bombeiro Militar – BBM de Santa Catarina, sendo que o mesmo foi validado pelo Bombeiro Militar responsável pelos Projetos Comunitários. Ao utilizar o sistema, o usuário navegou pelo sistema sem a necessidade de maiores explicações. Foi destacada a simplicidade e a objetividade de como as informações estão dispostas e a facilidade de cadastro, exclusão e alteração de dados. Como sugestões, foi considerada a possibilidade de criação de um módulo, pelo qual seja controlada a quantidade de vagas masculinas e femininas disponíveis no alojamento de cada local, para que, ao Bombeiro Comunitário efetuar o agendamento, o sistema verifique 96 a disponibilidade no alojamento. Destacou-se, também, a possibilidade de adaptação do sistema para que o mesmo seja utilizado, também, para o controle de Guarda-Vidas Civis do Estado de Santa Catarina. Ao término da validação, o usuário concluiu que o sistema é de extrema importância para o controle dos Bombeiros Comunitários do Estado de Santa Catarina, pois atualmente o controle é feito em cada quartel, não tendo uma unificação das informações. Ressaltou, também, que a modalidade de agendamento de serviço pelo próprio Bombeiro Comunitário é uma inovação de grande utilizadade e agilidade. 6.6 CONSIDERAÇÕES FINAIS O resultado do desenvolvimento é um aprendizado das boas práticas de programação de software, aperfeiçoamento da aplicação das técnicas de levantamento de requisitos adquiridas a partir do contato com o usuário final do sistema, e a experiência de utilizar as técnicas e as ferramentas que tivemos conhecimento ao longo do curso, para transformar o projeto em um produto de uso contínuo pelo Corpo de Bombeiros Militar do Estado de Santa Catarina. A mais importante vantagem do sistema é sua aplicação via web, ou seja, o usuário final pode acessar ao sistema a partir de qualquer local onde tenha um ponto de acesso à internet. 97 7 CONCLUSÃO E TRABALHOS FUTUROS Este capítulo apresenta os resultados obtidos no desenvolvimento do sistema web, utilizando a metodologia ICONIX, para controle dos Bombeiros Comunitários do CBMSC. Esse aplicativo visa a melhorar a administração do cadastro dos Bombeiros Comunitários, juntamente com o controle de agendamento de horários da escala de serviço. 7.1 ALCANÇANDO OS OBJETIVOS Através deste trabalho, pode-se acompanhar a evolução do objetivo principal que era planejar e desenvolver um sistema web para o CBMSC. Os passos para atingir este objetivo foram descritos nos objetivos específicos. Primeiramente havia o objetivo de desenvolver o sistema para controle de cadastro de Bombeiros Comunitários centralizado. A arquitetura web foi escolhida, pois com ela é possível atingir esse objetivo. A familiarização dos integrantes do projeto com a linguagem .NET pemitiu maior agilidade no desenvolvimento. Além disso, a robustez dessa linguagem também foi uma característica que auxiliou no processo de desenvolvimento. Isso está presente no capitúlo 6, o qual faz referência às ferramentas e tecnologias escolhidas para este projeto. Para conquistar o objetivo de definir e documentar os requisitos e regras de negócios dos processos envolvidos utilizando a metodologia ICONIX, foi realizado um estudo do conhecimento sobre a administração dos Bombeiros Comunitários, visando identificar os objetos de domínio do mundo real, através de uma pesquisa bibliográfica presente no capitulo 2, no qual analisou-se o Regulamento Geral do Serviço Voluntário no Corpo de Bombeiros Militar de Santa Catarina, para que fosse aplicado no sistema, as regras impostas pelo mesmo. Com o conhecimento do negócio, estudou-se o processo de desenvolvimento de software e seus modelos, conforme apresentados no capítulo 3, para que a documentação ficasse de acordo, permitindo então o início da modelagem do software. O capitulo 5 deste trabalho apresenta toda a modelagem através de diagramas da UML e os requisitos em forma de tabela. 98 A partir da evolução e do cumprimento dos objetivos específicos, foi possível desenvolver o sistema web que permite o gerenciamento da escala de serviços e controle de horas trabalhadas, bem como a administração dos Bombeiros Comunitários de Santa Catarina citado como objetivo geral. 7.2 RESULTADOS O resultado do trabalho, é um estudo geral sobre o processo de agendamento na escala de serviços dos Bombeiros Comunitários, atuantes no CBMSC. Com base no estudo, pode-se desenvolver um software para utilização dos Bombeiros Comunitários, para que efetuem o agendamento na escala de serviço, bem como, os Bombeiros Militares possam efetuar a administração da escala, e dos Bombeiros cadastrados no sistema. Para o desenvolvimento do software, contamos com o apoio de diversos coordenadores dos Bombeiros Comunitários, das várias Organizações de Bombeiros Militar do estado de Santa Catarina, permitindo, que o sistema aderisse às diferentes maneiras de trabalho de cada OBM, até então existentes, gerando um produto completo para todos. As idéias dos diferentes locais, permitiram que efetuássemos melhorias na usabilidade do sistema, não deixando de cumprir com as regras estabelecidas no Regulamento Geral do Serviço Voluntário do Corpo de Bombeiros. A mais importante vantagem, na utilização do sistema, é a sua aplicação web, ou seja, o usuário final poderá acessar o sistema, a partir de qualquer computador com acesso a internet. 7.3 TRABALHOS FUTUROS Como o software resultado deste trabalho de conclusão de curso é um novo sistema, existem alguns módulos que ainda podem ser desenvolvidos para a evolução do mesmo. Os usuários terão participação direta no desenvolvimento dos novos módulos, pois 99 serão evoluções que irão colaborar com o gerenciamento dos Bombeiros Comunitários do CBMSC. Como sugestão dos avaliadores, para cada local cadastrado, o sistema poderia permitir o cadastro de alojamentos, de forma tal que fosse delimitada a quantidade de vagas disponíveis por sexo, para cada local. Com isso, essa condição também poderia ser validada no ato do agendamento. Muito utilizado pela Coordenação dos Bombeiros Comunitários de cada Local, o Mural de Recados poderia ser incorporado ao sistema, da forma que, quando o Bombeiro Comunitário efetuasse o login no sistema, ele visualizasse como tela inicial o Mural de Recados do seu Local. Outra funcionalidade de grande importância e agilidade seria permitir que o Bombeiro Comunitário solicitasse algumas ações como “afastamento temporário” e “pedido de transferência” via sistema, criando, com isso, um controle de solicitações, que seriam aceitas ou rejeitadas por cada Coordenador do local em que o BC está associado. Prevê-se o desenvolvimento de um novo módulo pelo qual sejam controladas as escolas de formação de Bombeiros Comunitários do Estado de Santa Catarina. Dessa forma os Coordenadores de cada local poderão utilizar o sistema para facilitar também esse processo administrativo inicial. A partir do momento em que o edital for lançado, os candidatos deveriam efetuar sua matrícula on-line diretamente no sistema, o qual faria a gestão dessa turma de formação de Bombeiros Comunitários. Como ponto positivo, pode-se destacar que o sistema contará com informações de cada Bombeiro Comunitário, desde o momento da matrícula, até após a sua formação, pois, a partir desse momento, ele irá utilizar o sistema para efetuar seu agendamento de serviço. 100 REFERÊNCIAS AGILE MANIFESTO, 2001. Disponível em: http://www.agilemanifesto.org. Acessado em 07 de outubro 2011. BECK, Kent. Extreme Programming Massachusetts: Ed. Addison-Wesley, 2000. Explained: Embrace change. Reading, BEZERRA, Eduardo. Princípios de análise e projeto de sistemas com UML. Rio de Janeiro: Campus, 2002. BORILLO, Dante. The ICONIX approach, setembro, 2000. Disponível em: http://pst.web.cern.ch/PST/HandBookWorkBook/Handbook/SoftwareEngineering/UCDOM_ summary.html. Acessado em: 07 de outubro 2011. BRASIL. Exército Brasileiro. Regulamento Interno e Dos Serviços Gerais (RISG) R-1. 1ª Edição, 1984. BRASIL. Lei nº 9.608, de 18 de fevereiro de 1998. BRG Business Rules Group. Disponível em: <http://www.businessrulesgroup.org/first_paper/br01c1.htm> Acessado em: 26 de Maio de 2011. DEMO, Pedro. Pesquisa e construção de conhecimento. Rio de Janeiro: Tempo Brasileiro, 1996. GIL Antonio Carlos. Como elaborar projetos de pesquisa. 4ª Ed. São Paulo: Atlas, 2002. GUEDES, Gilleanes T. A. UML – Uma Abordagem Prática. São Paulo: Novatec, 2004. JAVASCRIPT PASSO A PASSO LITE. São Paulo: Makron Books, 2001. LEMAY, Laura. Aprenda em 1 semana HTML 4. Rio de Janeiro: Campus, 1998. MASNIK, Cel. BM José Luiz. O Serviço Voluntário nos Corpos de Bombeiros Militares. Artigo retirado do site da Associação de Oficiais Militares de Santa Catarina, publicado 101 2008?. Disponível em: <http://www.acors.org.br/index.php?mod=pagina&id=693> Acessado em 20 de setembro 2011. MICROSOFT. Edições do Visual Studio 2010. Disponível em: <http://www.microsoft.com/visualstudio/pt-br/products/2010-editions>. Acessado em 09 de maio 2012a. MICROSOFT. Introdução à linguagem C# e o .NET Framework. Disponível em: <http://msdn.microsoft.com/pt-br/library/z1zx9t92.aspx>. Acessado em 09 de maio 2012b. MICROSOFT. Manuais online. SQL Server 2008. Disponível em: <http://msdn.microsoft.com/pt-br/library/ms130214(v=sql.100).aspx>. Acessado em 30 de maio de 2012c. OMG. Object Management Group - Unified Modeling Language: Specification (2.0), 2001. Disponível em: <http://www.omg.org>. Acessado em: 07 de outubro 2011. OMG. Unified Modeling Language: Superstructure. 2011b. Disponível <http://www.omg.org/spec/UML/2.4/Superstructure>. Acessado em: 17 de maio 2012. em: PRESSMAN, R. Engenharia de Software. 6ª ed. - São Paulo: McGraw-Hill 2006. ROSENBERG, Doug. STEPHENS, Matt. Use Case Driven Object Modeling with UML. Theory and Practice. Ed. APRESS 2007. ROSEMBERG, Doug. STEPHENS, Matt. COLLINS-COPE, M. Agile Development With ICONIX Process: People, Processes and Pragmatism. Ed.APRESS 2006. SANTA CATARINA. ASSEMBLÉIA LEGISLATIVA DO ESTADO DE SANTA CATARINA. Constituição Estadual. Disponível em: <http://www.alesc.sc.gov.br/portal/legislacao/constituicaoestadual.php>. Acessado em 11 de setembro 2011. SANTA CATARINA. Constituição do Estado de Santa Catarina. Florianópolis: Imprensa Oficial, 1989. SANTA CATARINA. Corpo de Bombeiros Militar de Santa Catarina. CBMSC. Histórico do Corpo de Bombeiros Militar do Estado de Santa Catarina: Florianópolis, 2005. 102 Disponível em: <http://www.cbm.sc.gov.br/ccb/arq_html/historico.php> Acessado em 11 de setembro 2011. SANTA CATARINA. Corpo de Bombeiros Militar de Santa Catarina. Regulamento Geral do Serviço Voluntário no Corpo de Bombeiros Militar de Santa Catarina. Portaria nº 395/GEREH/DIAP/SSP/2003. Atualizado em 06 de setembro de 2011. SCHMITT, Moisés Nazareno. Fatores que influenciam o estado psicológico dos Bombeiros no desempenho de sua atividade. Trabalho de Conclusão de Curso de Pós Graduação em Administração de Pessoas, UNIASSELVI, Palhoça, 2011. SILVA, E. L. da MENEZES, E.M. Metodologia da Pesquisa e Elaboração de Dissertação. Florianópolis 2001. Disponível em: <http://projetos.inf.ufsc.br/arquivos/Metodologia%20da%20Pesquisa%203a%20edicao.pdf>. Acesso em 20 de outubro. 2011. SOARES, Michel dos Santos. Metodologias Ágeis Extreme Programming e Scrum para o Desenvolvimento de Software. In: Revista Eletrônica de Sistemas de Informação, 2004 v.3 n.1. Disponível em <http://revistas.facecla.com.br/index.php/reinfo/article/view/146/38> Acessado em 25 de agosto 2011 SOMMERVILLE, Ian. Engenharia de Software. 9ª ed. - São Paulo: Pearson, 2011. SOMMERVILLE, Ian. Engenharia de Software. 6ª ed. - São Paulo: Addison Wesley, 2003. VARGAS Souza de Clair Thânia. A história de UML e seus diagramas. Disponível em: <http://projetos.inf.ufsc.br/arquivos_projetos/projeto_721/artigo.tcc.pdf>. Acessado em 18 de outubro 2011.