Documento de Especificação do Sistema
Transcrição
Documento de Especificação do Sistema
Documento de Especificação do Sistema Gestão de um projecto de engenharia de software Turma: EII-1 Trabalho entregue em: 15-01-2007 Versões do documento Revisão Data 15/01/2007 Autor Grupo Requisitos Descrição Definição da Política de Backups e Gestão de Versões. Realização dos Casos de Utilização. 15/01/2007 Grupo Coordenação Infra-Estrutura Tecnológica para o Desenvolvimento. Arquitectura Física a utilizar. Realização dos Casos de Utilização. 15/01/2007 Grupo Integração Normas de Codificação. Detalhe da Infra-Estrutura Tecnológica. Realização dos Casos de Utilização. 15/01/2007 Grupo Testes Diagrama de Componentes. Diagrama de Classes. Realização dos Casos de Utilização. 12/02/2007 Grupo Desenho Modelo de Dados. Junção final do documento de especificação do sistema. 22/01/2007 Grupo Desenho Actualização da Realização dos Casos de Utilização. Actualização dos Componentes Página 2 / 29 Índice 1 2 INTRODUÇÃO .................................................................................................................................. 4 1.1 OBJECTIVOS DO DOCUMENTO ........................................................................................................ 4 1.2 CONTEXTO DA APLICAÇÃO ............................................................................................................ 4 DESENHO DO SISTEMA................................................................................................................. 5 2.1 MODELO DE ANÁLISE .................................................................................................................... 5 2.1.1 Normas de codificação ......................................................................................................... 5 2.1.1.1 Constantes ....................................................................................................................................... 5 2.1.1.2 Variáveis Privadas ........................................................................................................................... 5 2.1.1.3 Variáveis Públicas ........................................................................................................................... 5 2.1.1.4 Classes/Módulos.............................................................................................................................. 5 2.1.1.4.1 Funções privadas das classes ..................................................................................................... 5 2.1.1.4.2 Funções públicas das classes ..................................................................................................... 5 2.1.1.5 2.1.2 Diagrama de Classes ............................................................................................................ 7 2.1.3 Estrutura da Aplicação e Classes ......................................................................................... 7 2.1.4 Pacotes e Respectivas Classes .............................................................................................. 8 2.1.4.1 Pacote de Interface .......................................................................................................................... 8 2.1.4.2 Pacote de Lógica ............................................................................................................................. 9 2.1.4.3 Pacote de Base de Dados ................................................................................................................. 9 2.1.4.4 Métodos principais .......................................................................................................................... 9 2.2 ARQUITECTURA GERAL DO SISTEMA............................................................................................ 10 2.2.1 Componentes ou Módulos................................................................................................... 10 2.2.1.1 Pacotes .......................................................................................................................................... 10 2.2.1.2 Interfaces ....................................................................................................................................... 11 2.2.1.3 Lógica............................................................................................................................................ 11 2.2.1.4 Base de Dados ............................................................................................................................... 11 2.3 DESENHO DETALHADO ................................................................................................................ 11 2.3.1 Arquitectura de dados ........................................................................................................ 11 2.3.1.1 Dicionário de dados ....................................................................................................................... 11 2.3.1.2 Diagrama E-R................................................................................................................................ 15 2.3.2 2.4 3 Aspectos a ter em conta ................................................................................................................... 6 Realização dos Casos de Utilização ................................................................................... 16 ARQUITECTURA TECNOLÓGICA DO SISTEMA................................................................................ 26 2.4.1 Detalhe da infra-estrutura tecnológica .............................................................................. 26 2.4.2 Diagrama de Implementação ............................................................................................. 26 2.4.3 Diagrama de Componentes ................................................................................................ 26 2.4.4 Definição da Política de Backups e Gestão de Versões ..................................................... 28 DOCUMENTOS DE REFERÊNCIA E GLOSSÁRIOS ............................................................... 29 3.1 DOCUMENTOS DE REFERÊNCIA ................................................................................................... 29 3.2 GLOSSÁRIO.................................................................................................................................. 29 Página 3 / 29 1 INTRODUÇÃO 1.1 Objectivos do documento Este documento combina as especificações, conceitos, análise, diagramas e esquemas de forma a dar a conhecer os requerimentos de um sistema tecnológico. O documento deverá ser utilizado pelos grupos de Requisitos, Coordenação, Integração, Desenho e Testes e fornece as especificações necessárias sobre o desenho do software na perspectiva do utilizador. 1.2 Contexto da aplicação • Esta aplicação insere-se no contexto de haver uma necessidade de haver uma gestão de projectos eficiente dentro da disciplina de Engenharia de Software. Existem falhas na comunicação entre os grupos de trabalho e o próprio trabalho é difícil de gerir devido à complexidade dos projectos e o facto de existirem numerosos grupos de trabalho. Existe também o problema da arquivação de dados e informação diversa relacionada com projectos, gestores, programadores e clientes, pois não é prático nem funcional ter a informação em suporte de papel, ficheiros Word e Excel. o Com a introdução do novo software pretende-se maior interligação entre os grupos e os coordenadores, colaboradores e clientes, dá-se uma nova ênfase à comunicação com a criação de espaços virtuais de fácil acesso para discussão de assuntos relacionados com o projecto. É também mais fácil partilhar trabalho entre os grupos e tê-lo disponível para os coordenadores/gestores. Com esta aplicação pretende-se dar também uma boa visão do projecto e do seu desenvolvimento ao cliente, permitindo o acesso do mesmo a zonas que mostram o estado de desenvolvimento do projecto e que o deixam tanto comentar como fazer perguntas ou dar sugestões. No espaço virtual da aplicação também se pretende armazenar informação de forma organizada e rápido acesso e com restrições a utilizadores se necessário. o Esta aplicação vai ser utilizada num contexto escolar, mais especificamente numa disciplina (Engenharia de Software), tendo em vista a gestão de projectos semestrais. • O projecto pretende inovar por completo as bases de dados e acima de tudo a gestão de projectos e pessoas. Vai ser mais fácil e, acima de tudo, mais rápido trabalhar com a nova aplicação. Apesar da disciplina não ter fins lucrativos, não deixamos de traduzir tempo em dinheiro. o As pessoas ficam com mais tempo para trabalhar, pois não perdem tempo com “burocracia” e podem também trabalhar a partir de casa elevando as responsabilidades das mesmas aumentando a sua qualidade do trabalho. Com as novas tecnologias temos então uma grande e constante interacção com o projecto e com os seus recursos, clientes, gestores, etc. Página 4 / 29 2 DESENHO DO SISTEMA 2.1 Modelo de Análise 2.1.1 2.1.1.1 Normas de codificação Constantes As constantes devem ser definidas utilizando letras maiúsculas. Se o seu nome contiver mais do que uma palavra, esta deve ser separada com o caracter “underscore” ( _ ). Exemplo: define(“TAXA_MAXIMA”, 0.1); 2.1.1.2 Variáveis Privadas As variáveis privadas de função deve ser definidas começando com uma letra minúscula no início, se o seu nome tiver mais de uma palavra, as palavras subsequentes deverão começar com uma maiúscula. Exemplo: taxaMax = 0.2; 2.1.1.3 Variáveis Públicas Variáveis públicas são todas as variáveis que são definidas fora de uma classe e de uma função, estas devem começar com uma letra maiúsculas, se o seu nome tiver mais de uma palavra, estas devem também começar com uma maiúscula. Exemplo: TaxaMax = 0.6; 2.1.1.4 2.1.1.4.1 Classes/Módulos Funções privadas das classes As funções privadas das classes devem começar com letra minúscula, se forem compostas por mais que uma palavra, as palavras seguintes devem começar com uma letra maiúscula. Exemplo: getTaxaMax() 2.1.1.4.2 Funções públicas das classes Estas funções devem começar com uma letra maiúscula, se o seu nome tiver mais de uma palavra, estas devem também começar com uma maiúscula. Exemplo: GetTaxaMax() Página 5 / 29 2.1.1.5 Aspectos a ter em conta • As variáveis de uma classe, deverão ser usadas como nos outros casos, com o acréscimo do “$this->” • Não se deve utilizar, prints e echos nos módulos. Será sim implementada, quando necessária, uma função que faça override a um método __toString. Esta norma convém ser seguida, para evitar um “desnorteio” de quem vai trabalhar no módulo, pois esta irá ver informação cuja origem lhe é desconhecida. Isto não implica que cada utilizador não faça a versão de impressão do seu módulo, pelo contrário, será bom existir, porque quem faz o módulo saberá melhor que ninguém como é que a informação deverá ser apresentada. Assim pode-se ter em conta o exemplo do módulo de calendário, onde foi criada uma função __toString e quando se quer imprimir o calendário basta fazer print nome_instancia; e fica a questão resolvida. Alem desta forma ainda é possível que quem use o módulo consiga fazer a apresentação à sua maneira, visto que tem toda a informação necessária disponível. (Nota: Deverão ser seguidas as normas visuais do protótipo). • É importantíssimo que se use interfaces e uma descrição sucinta dos mesmos! Desta maneira, consegue-se garantir que quem irá trabalhar com o módulo, terá uma maior facilidade em interpretar o mesmo. • Por questões de “elegância” e de leitura de código será usado o nome da classe para o construtor, evitem usar a __constructor(), esta só será necessária para fins de acesso a classes “pai”: parent::__construct($string, 0); • No que diz respeito aos comentários, terão de ser feitos mini comentários em cada função e nas linhas que acharem necessário, para que os colegas que venham atrás tenham uma boa base de documentação. • Não usar espaços no nome dos módulos, de forma a garantir que não haja possíveis problemas de importação dos dados. Página 6 / 29 2.1.2 Diagrama de Classes 2.1.3 Estrutura da Aplicação e Classes > index.php (Master Page) - projectos.php * ListaProjectos - projecto.php - Gestor & Colaborador * Calendario Página 7 / 29 * UltimasNoticias * GraficoProgressao * DescricaoFase * ListaPlaneamento - Cliente * Calendario * GraficoProgressao * DescricaoFase * ListaPlaneamento * ListaAnexos - grupos.php * ListaGrupo * DetalhesProjecto * ListaColaboradores - prefil.php * IUtilizadores - forum.php * Forum - gestao_aplicacao.php * IUtilizadores 2.1.4 2.1.4.1 Pacotes e Respectivas Classes Pacote de Interface -> ListaProjectos -> Calendario include IProjectos include ITarefas, IFases -> UltimasNoticias include ITarefas, IFases -> GraficoProgressao include IFases -> DescricaoFase include IFases -> ListaPlanemento include ITarefas, IFases -> ListaAnexos include IComentarios -> ListaGrupo -> DetalhesProjecto include IProjecto include Iprojecto -> ListaColaboradores include IUtilizadores -> Forum include IComentarios, IProjecto, IFase Página 8 / 29 2.1.4.2 Pacote de Lógica -> Projectos include IBaseDados -> Utilizadores include IBaseDados -> Comentarios include IBaseDados -> Fase include IBaseDados -> Tarefa include IBaseDados -> Modelos include IBaseDados (Nota: Estão aqui as querys todas) 2.1.4.3 Pacote de Base de Dados -> IBaseDados ( Interface ) -> MySqlBD implements IBaseDados -> IProjectos ( Interface ) -> IUtilizadores ( Interface ) -> IComentarios ( Interface ) -> IFase ( Interface ) -> ITarefa ( Interface ) -> IModelos ( Interface ) 2.1.4.4 Métodos principais IBaseDados ( Interface ) * Abrir() * Fechar() * Executar() * Seguinte() IProjectos ( Interface ) * Adicionar() * Remover() * Listar() IUtilizadores ( Interface ) * Adicionar() * Remover() * Listar() Página 9 / 29 IComentarios ( Interface ) * Adicionar() * Remover() * Listar() IFase ( Interface ) * Adicionar() * Remover() * Listar() ITarefa ( Interface ) * Adicionar() * Remover() * Listar() IModelos ( Interface ) * Adicionar() * Remover() * Listar() 2.2 Arquitectura geral do sistema 2.2.1 Componentes ou Módulos 2.2.1.1 Pacotes Interface Logica Base de Dados Página 10 / 29 2.2.1.2 Interfaces 2.2.1.3 Lógica 2.2.1.4 Base de Dados 2.3 Desenho detalhado 2.3.1 Arquitectura de dados 2.3.1.1 Dicionário de dados o o tab_modelo (tabela com os dados do modelo do desenvolvimento do projecto) o id_modelo (chave primária, auto incremental) o nome (nome do modelo, tipo varchar) o descricao (breve descrição sobre o modelo, tipo varchar) o id_modelo (chave indentificadora unica do modelo) tab_fase (tabela com os dados das fases por defeito dum modelo) o id_fase (chave primária, auto incremental) Página 11 / 29 o o o o o o o nome (nome da fase, tipo varchar) o descricao (breve descrição sobre a fase, tipo vachar) o id_fase (chave indentificador unica da fase) o id_modelo_fk (chave estrangeira do modelo) tab_projecto (tabela com os dados do projecto) o id_projecto (chave primária, auto incremental) o nome (nome do projecto, tipo varchar) o descricao (breve discrição sobre o projecto, tipo varchar) o data_inicio (data do inicio do projecto, tipo timestamp) o data_fim (data prevista para o fim do projecto, tipo timestamp) o data_conclusao (data em que o projecto foi terminado, tipo timestamp) o activo (define se o projecto está ou não activo, tipo enum) tab_sub_projecto (tabela de ligação a sub-projectos) o id_projecto_pai_fk (chave estrangeira do projecto principal) o id_projecto_filho_fk (chave estrangeira do projecto secundario) tab_tipo_utilizador (tabela com os dados de cada tipo de utilizador) o id_tipo (chave primária, auto incremental) o tipo (descrição do tipo de utilizador, tipo varchar) o nivel_acesso (nivel de acesso do utilizador, tipo integer) tab_projecto_utilizador (tabela de ligação dos utilizadores com os projectos) o id_utilizador_fk (chave estrangeira do utiliador) o id_projecto_fk (chave estrangeira do projecto) tab_requesito (tabela com os dados de cada requesito) o id_requesito (chave primária, auto incremental) o nome (nome do requesito, tipo varchar) o descricao (descrição sobre o requesito, tipo varchar) o implementado (serve para verificar se já foi implementada, tipo enum) o testado (serve para verificar se já foi implementada, tipo enum) o id_requesito (chave identificadora unica do requesito) o id_projecto_fk (chave estrangeira do projecto) tab_fase_projecto (tabela com os dados da fase do projecto) o id_fase_projecto (chave primária, auto incremental) o nome (nome da fase, tipo varchar) Página 12 / 29 o o o o descricao (descrição da fase, , tipo varchar) o voltar (verifica se pode voltar a outras fases, tipo enum) o data_inicio (data de inicio da fase, tipo integer) o data_fim (data prevista para o fim da fase, tipo integer) o data_conclusao (data da conclusão da fase, tipo integer) o id_fase_projecto (chave identificadora unica da fase do projecto) o id_fase_fk (chave estrageira da fase) o id_projecto_fk (chave estrangeira do projecto) tab_ferramenta o id_ferramenta (chave primária, auto incremental) o descricao (descrição do tipo de ferramenta a utilizar, tipo enum) o id_ferradamenta (chave identificadora unica da ferramenta) o id_fase_fk (chave estrangeira da fase) tab_utilizador (tabela com os dados do utilizador) o id_utilizador (chave primária, auto incremental) o nome (nome do utilizador, tipo varchar) o nif (numero de identificação do utilizador, tipo integer) o email (email do utilizador, tipo varchar) o telefone (numero de telefone do utilizador, tipo varchar) o username (nome de acesso do utilizador, tipo varchar) o password (password de acesso do utilizador, tipo varchar, SHA Hash) o id_utilizador (chave identificadora unica do utilizador) o id_tipo_fk (chave estrangeira do tipo de utilizador) tab_comentario (tabela com os dados de cada comentario) o id_comentario (chave primária, auto incremental) o assunto (titulo do comentario, tipo varchar) o mensagem (descrição do comentario , tipo varchar) o data (data em que o comentario foi criado, tipo integer) o ficheiro_anexo (link relativo ao ficheiro anexo, tipo varchar) o acesso_cliente (dá acesso ao cliente, tipo enum) o id_fase_projecto_fk (chave estrangeira da fase do projecto) o id_projecto_fk (chave estrangeira do projecto) o id_tarefa_fk (chave estrangeira da tarefa) o id_utilizador_fk (chave estrangeira do utilizador) Página 13 / 29 o o o o id_requesito_fk (chave estrangeira do requesito) o id_comentario_a_fk (identifica o comentário pai, caso exista) tab_tarefa (tabela com os dados de cada tarefa) o id_tarefa (chave primária, auto incremental) o nome (nome da tarefa, tipo varchar) o descrucao (descrição da tarefa, tipo varchar) o data_inicio (data do inicio da tarefa, tipo integer) o data_fim (data prevista para o fim da tarefa, tipo integer) o data_conclusao (data em que a tarefa foi concluida) o id_tarefa (chave identificadora unica da tarefa) o id_fase_fk (chave estrangeira da fase) o id_grupo_fk (chave estrangeira do grupo) tab_grupo (tabela com os dados de cada grupo) o id_grupo (chave primária, auto incremental) o nome (descrição de cada grupo, tipo varchar) o id_grupo (chave identificadora unica do grupo) o id_projecto_fk (chave estrangeira do projecto) tab_grupo_utilizador (chave de ligação do grupo ao utilizador) o id_utilizador_fk (chave estrangeira do utilizador) o id_grupo_fk (chave estrangeira do grupo) Página 14 / 29 2.3.1.2 Diagrama E-R Página 15 / 29 2.3.2 Realização dos Casos de Utilização • Inserir requisito • Alterar requisito Página 16 / 29 • Apagar requisito • Inserir tarefa Página 17 / 29 • Modificar tarefa • Remover tarefa • Página 18 / 29 • Concluir fase • Adicionar ferramentas • Página 19 / 29 • Modificar ferramentas • Remover ferramentas Página 20 / 29 • Gerir Permissões • Gerir Recursos Humanos Página 21 / 29 • Visualizar dados de utilizadores • Editar Utilizador • Métricas Página 22 / 29 • Adicionar comentário • Apagar comentário Página 23 / 29 • Criar Projecto Ecrã: Gestão Projectos Gestor Projecto Criar Novo Projecto() Gera ID Projecto() <<Create>> :Projecto Insere Dados Projecto() Insere Dados Projecto() MySQLBD.PHP Confirmar() • Confirmar(IDProj) Gravar Projecto(IDProj) bd:BaseDados ID:<<IDProj>> Editar comentário Top Package::Utilizador :Comentário Forum.php Selecionar Comentário() Selecionar Comentário(IDProj) Editar Comentário() Editar Comentário(DProj) Confirmar() Confirmar(IDProj) MYSQLBD.php bd:BaseDados Consulta Comentário(IDProj) ID:<<IDProj>> Gravar Comentário(IDProj) ID:<<IDProj>> Página 24 / 29 • Relatório Fases Concluídas • Relatórios fases não concluídas • Visualizar Fases Página 25 / 29 2.4 Arquitectura tecnológica do sistema 2.4.1 Detalhe da infra-estrutura tecnológica Hardware: O servidor deverá ter um disco com pelo menos 15gb livres; deverá ter também 512mb DDR2 PC4300 de memória; um processador x86 de pelo menos 800mHz e uma placa de rede 10/100/1000 Gigabit Ethernet. A infra-estrutura de rede deverá suportar uma taxa de transferência de pelo menos 512kbps. Software: O servidor deverá ser baseado em Windows XP Server com suporte para PHP 5, MySQL 5 e Apache 2.2. 2.4.2 Diagrama de Implementação 2.4.3 Diagrama de Componentes • Base de Dados IBaseDados.php MySqlDB.php Página 26 / 29 • Lógica • Interface PROJECTOS.php INDEX.php GESTOR_APLICACAO.php PERFIL.php PROJECTO.php GRUPOS.php FORUM.php Calendario.php ListaProjectos.php GraficoProgresso.php ListaGrupo.php ListaColaboradores.php ListaAnexos.php UltimasNoticias.php DescricaoFase.php DetalhesProjecto.php ListaPlaneamento.php Forum.php Página 27 / 29 2.4.4 Definição da Política de Backups e Gestão de Versões Para efectuar backup do trabalho feito durante as aulas, usar-se-á um sistema simples de armazenamento de dados. Visto a Internet ser acessível a todos os elementos do projecto (tendo pelo menos acesso a partir da escola), será utilizado um sistema de backups (ASVCS – Version Control System) já implementado para efectuar as cópias de segurança dos documentos. 1. Quem acede: a. Todos os alunos inscritos na cadeira de Engenharia de Software no ano lectivo corrente na Escola Superior de Tecnologia de Setúbal; 2. Modo de acesso: a. Aceder à conta em http://engsoft.micro-arte.com/asvcs/ ; b. Credenciais de acesso: i. Username e Password criadas por utilizadores já existentes. (Consultar os Coordenadores de Projecto) 3. 4. Datas de backup: a. Todas as segundas-feiras entre as 12h30 e as 23h00; b. Sextas-feiras das 8h30 às 14h30 (facultativo). O que a guardar: a. Pode-se efectuar backup de todos os documentos única e exclusivamente referentes ao projecto; 5. b. Documentos com menos de 10Mbytes; c. Só versões actualizadas. Como guardar: a. Adicionar um novo ficheiro em Add File b. Escrever o nome do ficheiro no formato: <equipa>,<nome do documento>,<fase a que corresponde>; 6. Observações: a. Devido à inexistência de um supervisor do fluxo de backups, é da responsabilidade de cada utilizador respeitar estes pontos e em caso de dúvida, sugestão ou queixa, a mesma deve ser discutida na aula de laboratório de Engenharia de Software em reunião com a turma; b. Devido a falhas de segurança do sistema, apelamos ao bom senso do aluno para não alterar as credenciais de acesso de cada utilizador. Página 28 / 29 3 DOCUMENTOS DE REFERÊNCIA E GLOSSÁRIOS 3.1 3.2 Documentos de Referência • Documentação disponibilizada pelo orientador na página http://www.si.est.ips.pt. • http://www.wikipedia.org • “Fundamental de UML”, Mauro Nunes & Henrique O’Neill, FCA. • Software Development Templates Glossário • Modelo Cascata: Modelo de desenvolvimento de software caracterizado pela sua estrutura sequencial de implementação aberta a alterações de requisitos. Este modelo é caracterizado por ter uma fase de testes em cada etapa. • Requisito: É uma necessidade que o software deve cumprir. • Protótipo: modelo desenvolvimento de software que permite que os utilizadores possam “ver e usar as soluções propostas. Página 29 / 29