Especificação Suplementar - KarineValenca/Desenho2.2015Grupo11 GitHub Wiki

Especificação suplementar

###ConTributeBlog

###Histórico de Versão

Data Versão Envolvidos Descrição
03/09 0.1 João Henrique, Karine, Murilo Criada estrutura inicial do documento, adicionado itens 1, 3.1, 3.2
03/09 0.2 Karine Adicionado item 2.1, 2.2, 2.3, 2.4, 4.1, 4.2, 4.3, 4.4
04/09 0.3 Karine, Murilo Adicionado item 3.1, 3.2, 3.3, 5.1, 5.2, 5.3, 6.1, 8.1, 8.2
05/09 0.4 João, Karine Atualizado item 6.1, adicionado item 6.2
07/09 1.0 João Adicionado item 8.1, 8.2, 8.3, 8.4, 9.1, 9.2

##1. Introdução Este documento contém a Especificação Suplementar do projeto ConTributeBlog realizado na disciplina de Desenho de Software. Englobando os requisitos de sistema que não foram capturados nos casos de uso.

##2. Funcionalidade Nessa seção, estão descritos os requisitos de funcionalidade que não foram expressos nos casos de uso. ###2.1 Requisito de Funcionalidade 01 O sistema deve impedir que usuários não autorizados tenham acesso a dados e funcionalidades restritas.

###2.2 Requisito de Funcionalidade 02 As senhas digitadas no sistema devem ser criptografadas.

###2.3 Requisito de Funcionalidade 03 As senhas digitadas no sistema devem ser mascaradas.

###2.4 Requisito de Funcionalidade 04 A sessão de um usuário deve ser suspensa quando o logoff é requisitado ou quando o navegador de internet é fechado.

##3. Usabilidade Estão descritos todos os requisitos que representam os aspectos de interface com o usuário nessa seção[1]. ###3.1 Requisito de Usabilidade 01 O sistema deve ser fácil de aprender, de modo que o utilizador consiga utilizar todo o sistema em 48 horas de uso.

###3.2 Requisito de Usabilidade 02 O sistema deve permitir ao utilizador fazer uma publicação com menos de 5 cliques.

###3.3 Requisito de Usabilidade 03 O sistema deverá ter ícones intuitivos que direcionem o uso do usuário nele.

##4. Confiabilidade Nessa seção, estão todos os requisitos que representam os aspectos de integridade, conformidade e inter-operabilidade do sistema[2]. ###4.1 Requisito de Confiabilidade 01 O sistema deverá estar disponível 24 horas por dia e 7 dias por semana.

###4.2 Requisito de Confiabilidade 02 O tempo médio entre falhas deve ser superior a 48 horas.

###4.3 Requisito de Confiabilidade 03 O tempo médio para reparo deve ser inferior a 24 horas.

###4.4 Requisito de Confiabilidade 04 Os dados numéricos apresentados pelo sistema devem ter até 2 casas decimais de precisão.

###4.5 Requisito de Confiabilidade 05 O sistema deve prever ações inesperadas dos utilizadores.

##5. Desempenho Todos os aspectos de capacidade de carga e disponibilidade do sistema do sistema estão descritos nessa seção[2]. ###5.1 Requisito de Desempenho 01 O tempo de resposta das consultas não deve ultrapassar 5 segundos.

###5.2 Requisito de Desempenho 02 As páginas deverão ser carregadas em até 1 segundo, considerando uma conexão de 100 MB/s.

###5.3 Requisito de Desempenho 03 O sistema deve suportar 100 usuários simultâneos, e deve ser possível aumentar esse número, caso necessário. Esse número foi obtido com base no servidor em nuvem que será utilizado,ele permite a escalabilidade seja alterada, ele conta com as seguintes configurações: 512MB RAM, 1 agente de virtualização.

##6. Suportabilidade Nessa seção, estão descritos todos os aspectos de compatibilidade do sistema e manutenibilidade do sistema. ###6.1 Requisito de suportabilidade 01 O sistema deve ser compatível com os seguintes browsers:

Browsers A partir da versão
Google Chrome 26
Mozilla Firefox 28
Internet Explorer 9
Safari 5.0
Microsoft Edge Primeira versão

###6.2 Requisito de suportabilidade 02 O sistema deverá ser implantado seguindo o style guide de desenvolvimento próprio da google, encontrado em https://google.github.io/styleguide/javaguide.html.

Essa utilização tem como o principal objetivo a utilização padrões para facilitar uma eventual manutenção e evolução do código.

##7. Requisitos de implementação Essa seção descreve a linguagem de implementação a ser utilizada e padrões obrigatórios para a implementação.

###7.1 Requisito de implementação 01 O sistema deverá ser implementado em Java 8.

###7.2 Requisito de implementação 02 O convenção de nomeação deve seguir o padrão da comunidade Java[3], sendo que:

Nome de classe deve começar com letra maiúscula. Caso o nome da classe seja composto por mais de uma palavra, a primeira letra de cada palavra deve ser maiúscula. Não utilizar caracteres especiais ou números. Nome de pacote deve começar com letra maiúscula. Caso o nome do pacote seja composto por mais de uma palavra, a primeira letra de cada palavra deve ser maiúscula. Pode utilizar caracteres especiais, mas não utilizar no início do nome.

Nome de atributos ou variáveis podem começar e qualquer letra e caracteres $ ou _, mas não começar com números. Caso seja composto por mais de uma palavra, a primeira letra de cada palavra deve ser maiúscula. Atributos constantes devem ser escritos com letra maiúscula. Caso seja composto por mais de uma palavra, os nomes devem ser separados por underline (_).

##8. Interfaces Esta seção define as interfaces que devem ser suportadas pelo aplicativo. Ela deve conter especificidades, protocolos, portas e endereços lógicos adequados, entre outros, para que o software possa ser desenvolvido e verificado em relação aos requisitos de interface.

###8.1 Interface de usuário Consulte o documento de casos de uso, ele informa todas as interfaces que devem ser implementadas pelo sistema.

###8.2 Interface de Hardware Não é necessária nenhuma interface de hardware personalizada.

###8.3 Interface de Software O sistema não requer nenhuma interface de software personalizada.

###8.4 Interface de Comunicação O sistema não requer nenhuma interface de comunicação personalizada.

##9. Observações Legais, de Direitos Autorais etc Essa seção descreve todos os avisos legais necessários e observações sobre os direitos autorais[1].

###9.1 Publicação de Conteúdo Os usuários do sistemas estarão sujeitos à lei de direitos autorais sobre o conteúdo que eles disponibilizarão utilizando o sistema.

###9.2 Disponibilização de código
O sistema ConTribute está sobre a licença MIT, segue na íntegra:

The MIT License (MIT) [4]

Copyright (c) [year] [fullname]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Basicamente a única restrição é que os créditos do autor original devem ser mantidos, portanto, ela permite o uso livre do seu código, assim a restrição adotada é para manter o aviso de copyright.

##10. Referências [1]Especificação Suplementar. Disponível em: http://www.wthreex.com/rup/webtmpl/templates/req/rup_sspec.htm. Acesso em 3 de setembro 2015.

[2]FURPS+. Disponível em: https://qualidadebr.wordpress.com/2008/07/10/furps/. Acesso em 3 de setembro 2015.

[3]Regras e convenções de nomenclatura. Disponível em: http://www.tiexpert.net/programacao/java/nomenclatura.php Acesso em 04 setembro 2015.

[4]The MIT License. Disponívem em: https://opensource.org/licenses/MIT. Acesso em 7 de setembro 2015.