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