LEIC-A, LEIC-T, LETI, MEIC-T, MEIC-A
Engenharia de Software e Sistemas Distribu´ıdos
2
oSemestre – 2014/2015
Enunciado Geral do Projecto
O que se segue ´e uma descric¸˜ao geral do dom´ınio do projecto a desenvolver no contexto das disciplinas de Engenharia de Software (ES) e de Sistemas Distribu´ıdos (SD). O projecto a con-cretizar efectivamente ser´a descrito nos enunciados respectivos a cada entrega de ES e de SD.
1. Introdu¸c˜ao
A aplicac¸˜ao BUBBLE DOCSpermitir´a a criac¸˜ao, gest˜ao e edic¸˜ao de v´arios tipos de documentos: folhas de c´alculo, texto e apresentac¸˜ao. Os utilizadores da aplicac¸˜ao a desenvolver podem interagir uns com os outros atrav´es da alterac¸˜ao de documentos partilhados entre eles.
O projeto a desenvolver consistir´a no desenho e concretizac¸˜ao parcial da BUBBLE DOCS e
servic¸os associados, de forma a disponibilizar um subconjunto das funcionalidades esperadas num sistema deste g´enero. Na aplicac¸˜ao a desenvolver apenas se vai considerar um ´unico tipo de documento, a folha de c´alculo.
A BUBBLE DOCS estar´a integrada com dois servic¸os externos: um servic¸o de identidade e autenticac¸˜ao, o SD-ID, e um servic¸o de armazenamento fi´avel, o SD-STORE.
2. Dom´ınio da Aplica¸c˜ao
Todas as entidades do dom´ınio geridas pela aplicac¸˜ao tˆem um identificador ´unico. Os identi-ficadores ´unicos que s˜ao administrados pelo sistema s˜ao gerados sequencialmente e comec¸am em zero. Sempre que for necess´ario visualizar uma lista de entidades do dom´ınio, por omiss˜ao, a ordem ´e determinada pelos identificadores das entidades presentes na lista.
2.1. Utilizador
Cada utilizador tem um username, nome e palavra chave. O username ´e o identificador ´unico do utilizador. Cada utilizador tem associado um determinado conjunto de documentos e apenas pode aceder a documentos desse conjunto. Al´em disso, cada utilizador tem associado um
modo de acesso para cada documento. Existem dois modos de acesso:
• leitura. O utilizador pode ver o conte ´udo do documento mas n˜ao pode alter´a-lo.
• escrita. O utilizador pode ver e alterar o conte ´udo do documento.
Existe um utilizador especial designado como o utilizador root. Este utilizador tem o user-name root, o qual est´a reservado para este utilizador, e o seu nome ´e Super User. O utilizador root pode realizar um conjunto adicional de operac¸ ˜oes que n˜ao est˜ao dispon´ıveis para os utili-zadores normais:
• adic¸˜ao de um novo utilizador.
• remoc¸˜ao de um utilizador existente. Ao remover um utilizador, a aplicac¸˜ao deve tamb´em remover automaticamente da aplicac¸˜ao todas as folhas criadas pelo utilizador. N˜ao ´e poss´ıvel remover o utilizador root.
• aceder aos utilizadores registados na aplicac¸˜ao.
2.2. Documento
Cada documento gerido pela aplicac¸˜ao tem um identificador ´unico, sequencial, que ´e gerado automaticamente pelo sistema. Cada documento tem ainda um nome, o qual n˜ao ´e necessa-riamente ´unico. Cada documento conhece o utilizador que o criou assim como a data da sua criac¸˜ao.
Qualquer utilizador que possa escrever num documento pode alterar o conjunto de utiliza-dores que pode aceder (em modo de leitura ou escrita) ao documento. O utilizador que criou o documento pode sempre alterar este conjunto, independentemente de ainda pertencer ou n˜ao ao conjunto de utilizadores que pode escrever no documento.
2.3. Folha de C´alculo
A folha de c´alculo ´e um dos tipos poss´ıveis de documentos geridos pela aplicac¸˜ao. Uma fo-lha de c´alculo ´e uma matriz de c´elulas. A dimens˜ao da fofo-lha de c´alculo (n ´umero de linhas e colunas) ´e especificado no momento da criac¸˜ao da folha de c´alculo e n˜ao pode ser alterado posteriormente.
2.3.1 Endere¸camento: C´elulas e Intervalos
Cada c´elula de uma folha de c´alculo tem um dado conte ´udo (por omiss˜ao est´a vazia) e tem uma dada posic¸˜ao, designada por enderec¸o da c´elula, na folha de c´alculo. O enderec¸o de uma c´elula ´e representado por dois n ´umeros inteiros, respectivamente a linha e coluna da c´elula na folha de c´alculo, separados pelo s´ımbolo ”;”. Por exemplo, o enderec¸o da c´elula presente na linha 1 e coluna 2 ´e representado por 1;2. As linhas e colunas de uma folha de c´alculo tˆem in´ıcio em 1 (um).
Um intervalo (fechado) ´e uma submatriz da folha de c´alculo e ´e definido utilizando dois enderec¸os que representam a primeira e ´ultima c´elula da submatriz. Um intervalo ´e represen-tado pelo enderec¸o de duas c´elulas separadas pelo s´ımbolo ”:”. Por exemplo, o intervalo que representa as c´elulas da linha 1 entre as colunas 2 e 20 ´e representado por 1;2:1;20.
2.3.2 Cont´eudo de uma c´elula
Quando um utilizador cria uma folha de c´alculo, todas as c´elulas da folha criada est˜ao vazias, i.e. est˜ao sem qualquer conte ´udo. Uma c´elula pode ter um conte ´udo de trˆes tipos poss´ıveis: literais, referˆencias e func¸ ˜oes. Por quest ˜oes de simplificac¸˜ao, os literais s ´o podem ser n ´umeros inteiros e as func¸ ˜oes devolvem sempre um n ´umero inteiro. Uma referˆencia indica a c´elula da folha de c´alculo com um dado enderec¸o e ´e representada utilizando o simbolo “=“ seguido do enderec¸o da c´elula pretendida.
As func¸ ˜oes s˜ao especificadas pelo utilizador utilizando tamb´em o s´ımbolo “=“ seguido do nome da func¸˜ao e a lista de argumentos separados por v´ırgulas. Existem dois tipos de func¸ ˜oes:
• Func¸ ˜oes bin´arias, que s˜ao func¸ ˜oes que aceitam dois argumentos. Os argumentos podem ser referˆencias (representadas por um enderec¸o) ou literais. Existem as seguintes func¸ ˜oes bin´arias: adic¸˜ao, subtrac¸˜ao, multiplicac¸˜ao e divis˜ao, representadas respectivamente pe-las seguintes cadeias de caracteres ADD, SUB, MUL e DIV. Por exemplo, a func¸˜ao que adiciona o n ´umero 2 ao conte ´udo da c´elula da linha 3 e coluna 1 seria especificada pelo utilizador como =ADD(2,3;1).
• Func¸ ˜oes intervalo, que apenas recebem um argumento. Este argumento ´e um intervalo de c´elulas. As func¸ ˜oes a considerar neste caso s˜ao a m´edia1e piat ´orio, representadas res-pectivamente por AVG e PRD. Por exemplo, a func¸˜ao que calcula da m´edia das c´elulas pertencentes `a linha 2 entre as colunas 3 e 20 ser´a especificada pelo utilizador como =AVG(2;3:2;20).
Por raz ˜oes de simplificac¸˜ao do projecto a desenvolver, pode considerar que os utilizadores nunca criar˜ao uma dependˆencia circular (directa ou indirecta) entre duas ou mais c´elulas da folha de c´alculo. Por isso, a sua soluc¸˜ao n˜ao precisar´a de verificar a existˆencia de uma de-pendˆencia circular. Por exemplo, o caso em que os conte ´udos da c´elulas com o enderec¸os 2;3 e 4,5 s˜ao =4;5 e =2;3 , respectivamente, nunca ir´a acontecer porque representa uma dependˆencia circular entre as duas c´elulas.
Do ponto de vista de c´alculo do valor de uma referˆencia, a referˆencia ´e designada como inv´alida se representar um enderec¸o inv´alido da folha de c´alculo ou a c´elula referenciada esti-ver vazia. Relativamente `as func¸ ˜oes n˜ao ´e realizada qualquer validac¸˜ao dos seus argumentos. Essa validac¸˜ao s ´o ´e feita quando ´e necess´ario calcular o valor da func¸˜ao. Uma func¸˜ao tem ar-gumentos inv´alidos caso tenha arar-gumentos com uma ou mais referˆencias inv´alidas. O valor a apresentar para c´elulas cuja express˜ao cont´em pelo menos uma referˆencia inv´alida deve ser #VALUE.
Uma c´elula pode estar protegida ou n˜ao. N˜ao ´e poss´ıvel alterar o conte ´udo de uma c´elula protegida. S ´o os utilizadores que podem alterar uma folha de c´alculo ´e que podem proteger ou desproteger as c´elulas dessa folha de c´alculo.
3. Servi¸cos Distribu´ıdos
A aplicac¸˜ao BUBBLE DOCS integra-se com dois servic¸os distribu´ıdos, SD-ID e SD-STORE,
atrav´es da tecnologia de Web Services.
1O c´alculo da m´edia deve utilizar a divis˜ao inteira por forma a garantir que a m´edia dos valores das c´elulas
A Figura 1 apresenta uma vis˜ao global da soluc¸˜ao pretendida. Os utilizadores usam a aplicac¸˜ao BUBBLE DOCS com autenticac¸˜ao no servic¸o SD-ID e com salvaguarda no servic¸o
SD-STORE. SD ES Utilizador SD-ID SD-STORE Bubble Docs
Figura 1: Vis˜ao global da aplicac¸˜ao e dos servic¸os externos, com separac¸˜ao de componentes entre as Unidades Curriculares.
O SD-ID ´e um servic¸o de autenticac¸˜ao distribu´ıda usado pelos utilizadores do BUBBLE
DOCS. Cada utilizador do BUBBLE DOCS mant´em uma conta no SD-ID. ´E essa conta que permite a esse utilizador autenticar-se perante o BUBBLE DOCSpara editar os seus
documen-tos. ´E tamb´em essa conta que permite ao BUBBLE DOCS recorrer a outros servic¸os externos
(tais como o SD-STORE) em nome do utilizador. A principal vantagem do SD-ID ´e evitar que os utilizadores tenham de manter diversas contas (e respetivas senhas secretas), uma para cada aplicac¸˜ao ou servic¸o que o utilizador venha a usar. Ao mesmo tempo, ao oferecer um servic¸o de gest˜ao e autenticac¸˜ao de utilizadores, o servic¸o SD-ID facilita o desenvolvimento de novas aplicac¸ ˜oes e servic¸os.
O SD-STORE´e um servic¸o de armazenamento fi´avel de documentos. A principal preocupac¸˜ao da SD-STORE ´e oferecer a utilizadores e aplicac¸ ˜oes uma alternativa de elevada capacidade de
armazenamento e uma elevada disponibilidade para estes salvaguardarem os seus tos. Cada utilizador registado no SD-ID pode salvaguardar c ´opias fi´aveis dos seus documen-tos. Em caso de necessidade (por exemplo, em caso de perda ou corrupc¸˜ao de um documento), um utilizador pode recuperar a c ´opia mais recente dos seus documentos.
4. Realiza¸c˜ao do Projeto
As tarefas de desenvolvimento v˜ao ser partilhadas pelas duas unidades curriculares: BUBBLE
DOCSser´a desenvolvida em ES; SD-ID e SD-STOREser˜ao desenvolvidos e integrados em SD. A Figura 1 resume a partilha de tarefas.
4.1. Grupos
O projeto ´e realizado em grupos de 6 alunos, que se dividem em 2 grupos de 3 alunos para SD. Os grupos tˆem que ser formados por alunos na mesma situac¸˜ao de inscric¸˜ao:
• Inscritos em ES e SD; • Inscritos apenas em ES; • Inscritos apenas em SD.
Em resumo, os alunos tˆem que trabalhar com colegas na mesma situac¸˜ao de inscric¸˜ao e frequentando as mesmas aulas de laborat ´orio.
4.2. Trabalhadores-Estudantes
Os alunos que sejam Trabalhadores-Estudantes tˆem que fazer o projecto integrados em grupo, mas apenas tˆem que comparecer na discuss˜ao final.
4.3. Fases de desenvolvimento
O projeto ser´a realizado de forma faseada, existindo 4 datas de avaliac¸˜ao de ES, e 2 datas de SD. A Tabela 1 apresenta o calend´ario de projeto e os pesos de cada entrega na nota final de projecto dos grupos.
Datas ES SD
18 a 20 de Fevereiro Inscric¸ ˜oes dos grupos 11 a 17 de Marc¸o de 2015 Entrega 1 – 15% — 25 a 31 de Marc¸o de 2015 Entrega 2 – 25% — 17 de Abril de 2015 Entrega 3 – 25% Entrega 1 – 40% 13 de Maio de 2015 Entrega 4 – 35% Entrega 2 – 60% 14 a 29 de Maio Discuss ˜oes
Tabela 1: Calend´ario de projeto.
4.4. Avalia¸c˜ao
A avaliac¸˜ao nas duas unidades curriculares ´e independente. O trabalho desenvolvido em cada entrega ser´a visualizado e avaliado nas aulas de laborat ´orio seguintes da respetiva unidade curricular. A entrega final ´e avaliada com visualizac¸˜ao e discuss˜ao. Ap ´os as discuss ˜oes, cada aluno ter´a uma nota individual em cada uma das unidades curriculares que reflectir´a a sua participac¸˜ao no projecto ao longo do semestre.
A nota m´ınima para ES ´e de 8 valores e para SD ´e de 9 valores.
5. Conclus˜ao
Este enunciado geral descreveu o dom´ınio da aplicac¸˜ao BUBBLEDOCSe dos servic¸os SD-ID e SD-STOREe apresentou a forma como o projeto dever´a ser realizado no ˆambito de cada umas
das unidades curriculares. Ser˜ao publicados enunciados a detalhar o que ser´a pedido para cada uma das entregas.