FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC Engenharia de Software 5 de Fevereiro de 2001 PARTE TEÓRICA – SEM CONSULTA – DURAÇÃO MÁXIMA: 60 minutos 1. (1.5) 2. (1.5) 3. (2.5) Num processo de desenvolvimento de software a fase de Análise de Requisitos é uma das mais relevantes. Indique as regras/técnicas que considera fundamentais serem aplicadas nesta fase por forma a que a mesma seja concretizada de forma adequada. Diga o que entende por “usabilidade” de uma dada aplicação informática. Como pode avaliá-la? Admita que acaba de ser nomeado(a) pela administração da sua empresa para dirigir um dado projecto de software, de alguma complexidade e responsabilidade. Como tarefas iniciais terá que constituir a sua equipa de trabalho e organizar todo o projecto. a) Indique quais os passos que seguiria para constituir a sua equipa de trabalho. A que capacidades/competências daria maior relevância no processo de selecção de RH? b) Em que consiste a organização do projecto? 4. (2.5) 6. (1.0) a) Diga o que entende por maturidade de uma equipa de desenvolvimento de software. Que capacidades/competências da equipa permitem definir diferentes níveis de maturidade? b) Segundo alguns especialistas de Engenharia de Software, a utilização de ferramentas CASE em processos de desenvolvimento de software não é recomendada em empresas com um nível de maturidade inferior ao nível 3 do CMM. Comente esta recomendação. Indique, justificando, que diagrama UML seria mais adequado para descrever cada uma das seguintes realidades: a) b) c) d) 7. (1.0) Tipos de utilizadores e funções a que têm acesso numa aplicação de gestão de pessoal; Funcionamento de um sistema de alarme para automóveis; Modo de utilização de uma função de consulta de saldos de contas num banco online; Relações entre os conceitos subjacentes a uma aplicação de gestão de apólices de seguros (cliente, apólice, etc.). No contexto dos diagramas de classes em UML, o que são classes abstractas e operações abstractas? Qual a sua utilidade? Apresenta um pequeno exemplo envolvendo as classes FiguraGeométrica, Rectângulo e Elipse. Total: 10 em 20 FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC Engenharia de Software 5 de Fevereiro de 2001 PARTE PRÁTICA – COM CONSULTA – DURAÇÃO MÁXIMA: 75 minutos Suponha que se pretende projectar um sistema de controlo de versões de código fonte (SCV), de acordo com os seguintes requisitos: i. O SCV ajuda a gerir projectos de software, guardando numa base de dados interna as várias versões dos ficheiros do projecto, sobretudo ficheiros de texto com código fonte, mas também ficheiros doutros tipos (de texto ou binários). Quando se salva uma nova versão de um ficheiro no SCV, este guarda a nova versão do ficheiro e as alterações em relação à versão anterior, permitindo recuperar uma versão antiga do ficheiro a qualquer momento. ii. Aquando da instalação do SCV, é criada automaticamente uma base de dados por omissão, mas o administrador do SCV pode a qualquer momento criar novas base de dados, tendo apenas que indicar um nome e uma localização em disco para cada base de dados criada. iii. Compete ao administrador do SCV registar os utilizadores com acesso a cada base de dados, atribuindo um login, password e privilégio de acesso (leitura e escrita ou só leitura) a cada utilizador. iv. Para controlar ficheiros com o SCV, um utilizador tem primeiro de criar um projecto no SCV, dentro de uma base de dados a que tenha acesso com privilégio de escrita. O SCV suporta uma estrutura hierárquica de projectos dentro de cada base de dados (raiz da hierarquia), podendo um projecto conter sub-projectos. Assim, para criar um projecto, o utilizador deve dar um nome ao projecto, indicar uma localização na hierarquia de projectos (directamente debaixo da raiz ou debaixo doutro projecto) e indicar uma pasta de trabalho (directório) em disco para efeito de edição dos ficheiros do projecto. v. Tendo criado um projecto no SCV, o utilizador pode então adicionar ao projecto ficheiros previamente criados na pasta de trabalho correspondente ao projecto. Quando se adiciona um ficheiro a um projecto no SCV, este copia o ficheiro da pasta de trabalho para a base de dados interna, atribui um número interno de 1ª versão ao ficheiro, regista o login e a datahora da 1ª versão e determina automaticamente o tipo do ficheiro (texto ou binário). vi. Para produzir uma nova versão de um ficheiro controlado com o SCV, o utilizador deve primeiro fazer check out do ficheiro. Nesse momento, o SCV copia a última versão do ficheiro da base de dados interna para a pasta de trabalho do projecto, muda o estado do ficheiro para checked out e regista o login do utilizador. Enquanto um ficheiro está checked out, mais ninguém pode fazer check out do mesmo ficheiro. Terminadas as alterações, o utilizador deve fazer check in do ficheiro. Nesse momento, o SCV copia a nova versão do ficheiro da pasta de trabalho para a base de dados (após determinar e guardar as diferenças entre as duas versões), incrementa o número interno de versão e regista o login e a datahora da nova versão. Quando se faz check in, o ficheiro pode permanecer ou não checked out. FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC vii. A qualquer momento (normalmente quando se atinge um marco significativo no desenvolvimento), um utilizador com privilégio de escrita pode atribuir um label à versão actual de todos os ficheiros de um projecto (normalmente será um número de versão com significado para o utilizador). viii. A qualquer momento, o utilizador pode obter uma cópia para leitura da última versão de um ficheiro guardado no SCV. ix. O SCV permite ao utilizador visualizar a história de versões de qualquer ficheiro, com o número interno de versão, login, data-hora e label de cada versão, e obter uma cópia para leitura de qualquer versão antiga. x. O SCV permite ao utilizador visualizar as diferenças (linhas inseridas, eliminadas ou modificadas) entre duas versões de um ficheiro de texto, sejam elas duas versões guardadas na base de dados interna ou a última versão guardada na base de dados interna e a versão que se encontra actualmente na pasta de trabalho. xi. O SCV permite a um utilizador com privilégio de escrita repor uma versão antiga de qualquer ficheiro, isto é, substituir a última versão por uma versão antiga. (3) a) Elabore um diagrama de casos de uso em UML relativo a este sistema. (3) b) Elabore um diagrama de diagrama de classes em UML relativo aos objectos manipulados por este sistema, com atributos, relações entre classes e operações. (1) c) Descreva, através de um diagrama de estados em UML, os estados em que se pode encontrar um ficheiro controlado pelo SCV, as transições de estado possíveis e os eventos que causam essas transições. (3) d) Descreva, na forma de um diagrama de sequência em UML, uma sequência de utilização do SCV que demonstre o seu modo de funcionamento e potencialidades, cobrindo a criação de uma base de dados, o registo de um utilizador, a criação de um projecto, a adição de um ficheiro de texto ao projecto, a criação de uma nova versão do ficheiro, a visualização da história de versões do ficheiro e a visualização das diferenças entre a primeira versão e a nova versão. Total: 10 em 20 FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC Resolução da parte prática a) Criar base de dados Administrador Registar utilizador Criar projecto ou sub-projecto Adicionar ficheiro a projecto Check out de ficheiro Check in de ficheiro Utilizador com acesso para leitura e escrita Atribuir label a projecto Repor versão antiga de ficheiro Obter cópia para leitura de última versão de ficheiro Utilizador com acesso Utilizador com só para leitura acesso para leitura Obter cópia para leitura de versão antiga de ficheiro Visualizar diferenças entre duas versões de ficheiro Visualizar história de versões de ficheiro FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC b) Notas: 1) Uma operação de criação de um objecto a partir doutro pode ser colocada na classe do 1º objecto (como "static") ou do 2ª (como não "static"). 2) Incluíram-se apenas as operações de acesso a objectos (não interactivas) de suporte às operações interactivas referidas no enunciado. FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO Rua Dr. Roberto Frias – 4200-465 PORTO - PORTUGAL Telefone: + 351 22 5081400; Fax: + 351 22 5081441; Endereço electrónico: [email protected] LEIC / LEEC c) check_in[ permanece_checked_out ] check_out adicionar_ficheiro Normal Ckecked Out check_in[ não permanece_checked_out ] d) : SCV : Utilizador com acesso para leitura e escrita : Administrador cria base de dados regista utilizador faz login cria projecto adiciona ficheiro de texto a projecto faz check out de ficheiro fornece cópia de ficheiro faz check in de ficheiro pede história de versões de ficheiro devolve história de versões de ficheiro pede diferenças entre versões devolve diferenças entre versões