Engenharia de Software
Ramo da engenharia cujo foco é o desenvolvimento de sistemas de software dentro de custos adequados de alta qualidade. Não existe limitação física para o potencial do software Pode se tornar extremamente complexo
Brainstorming
- Tempestade cerebral ou tempestade de ideias
- Minas: Toró de parpite.
- É uma atividade que serve para testar e explorar a capacidade criativa de indivíduos ou de um determinado grupo. É formada pelos termos ingleses "brain" (cérebro) e "storm" (tempestade).
- A técnica de brainstorming propõe que um grupo de pessoas se reúnam e utilizem seus pensamentos e ideias para que possam chegar a um denominador comum, a fim de gerar ideias inovadoras que levem um determinado projeto adiante. Nenhuma ideia deve ser descartada ou julgada como errada ou absurda, todas devem estar na compilação ou anotação de todas as ideias ocorridas no processo, para depois evoluir até a solução final.
Idéia
- Uma ideia é uma concepção mental de uma coisa, tendo em conta a sua relação com a realidade.
- É transformar o mundo por meio de conhecimento, criatividade e iniciativa.
Problema
- Um problema pode ser:
- um requisito funcional não disponível
- um requisito não-funcional não atendido, envolvendo algumas situações como, por exemplo, usabilidade, segurança, desempenho, robustez, confiabilidade ou hardware.
Demanda
- Uma demanda, pedido, solicitação pode ser encaminhada por:
- um projeto que define a necessidade de implementação de um sistema
- um superior que requer um determinado software
- uma lei que determina a obrigatoriedade de se construir uma aplicação
- um cliente que reclama de uma nova solução.
Método
- Estruturado, OO ou Serviço?
- Optaremos pela Orientação a Objetos devido ao conteúdo atual da disciplina mas poderia ser usado qualquer um dos métodos.
- 10 Áreas da Engenharia de Software
Escopo
- Desenvolver um sistema que monte uma biblioteca virtual que permite cadastrar os livros de cada usuário e disponibilizá-los na Internet para empréstimos usando procedimentos de qualificação semelhantes ao Mercado Livre.
- Dessa forma, cada usuário pode cadastrar seu acervo próprio e deixá-lo visível para todos e quem desejar um livro emprestado poderá solicitá-lo do proprietário que liberará o empréstimo baseado num critério de qualificação.
- O sistema poderá facilitar o processo de entrega ao solicitante (Retirada pessoal, Correios, Sedex, MotoTáxi, etc) e terá um procedimento para organizar a devolução.
- Uma visão de estante poderá ser apresentada na tela mostrando a disposição dos livros tal qual uma estante real (similar ao que aparece no Ipad)
- Ainda poderá ser incluído, um forum de discussão sobre cada livro e uma forma de indicação de livros.
Requisitos
Funcionais
- 01 - Autenticar no Face
- Cada usuário no sistema deverá informar seu usuário no Facebook. Automaticamente, este usuario deverá ser autenticado no Facebook.
- 02 - CRUD Usuário
- Ao validar o usuário no Face, deverá haver um menu que permite executar as 4 funções básicas: Criar usuário, alterar dados, excluir registro e pesquisar.
- 03 - Validar Usuários
- Todo usuário poderá ser validado por meio de um procedimento que permite que a cada empréstimo, que o usuario solicitante possa ganhar pontos positivos de forma similar ao Mercado Livre. Sendo assim, cada vez que o solicitante devolver o livro no prazo e em boas condições, o emprestador terá uma tela com a opção de pontuá-lo positivamente e ainda fazer comentários. De outra forma, se a devolução não for feita da forma acordada, o emprestador poderá pontuar negativamente.
- 04 - CRUD Livros
- Um menu com as 4 funções básicas para movimentar um livro deverão ser criadas: Cadastrar livro, alterar dados do livro, excluir livro e pesquisar livros. O código dos livros serão baseados no padrão ISBN.
- 05 - Qualificar livros
- A opção acima se refere ao momento em que o leitor de um livro dá sua opinião sobre um determinado livro. Um menu com opções do tipo (Excelente, Ótimo, Médio, Ruim ,Fraco, Difícil leitura, Contagiante) e outros adjetivos podem ser escolhidos. Além disso, um campo Observação deve ser aberto para que o leitor possa discorrer sobre isso.
- 06 - Indicar Livros
- Será possível que cada usuário indique o livro lido para outros usuários. Bastará que apareça os livros e que ao clicar sobre ele, apareça um campo que permita escrever o endereço no Face de outro(s) usuário(s).
- 07 - CRUD Locais
- Um menu com as 4 funções básicas para tratar de Locais deverão ser criadas: Cadastrar local, alterar local, excluir local e consultar locais. Estes locais se referem ao local onde o fica a Biblioteca individual de cada usuário. Pode ser um nome escolhido pelo usuário que internamente tenha um Cep que permita referenciar a Cidade, Bairro, Rua, etc.
- 08 - Solicitar Empréstimos
- A função acima apresenta uma tela que mostra todos os livros disponiveis e permite que um usuário peça determinado livro emprestado. Além de escolher o livro este deverá definir uma opção de entrega (Correios, Entrega ao portador, MotoTáxi, etc). Após estes passos, o sistema deverá avaliar o perfil do usuário solicitante e aprovar ou não o empréstimo.
- 09 - Limitar Empréstimo
- Nesta opção, o usuário proprietário dos livros poderá definir alguns critérios para empréstimo, do tipo (quais livros poderão ser emprestados, para quais cidades destino, quantos livros poderão sair da sua biblioteca, quantas estrelas o solicitante terá que ter para liberar empréstimo, etc)
- 10 - Listar Histórico de cada usuário
- Esta opção deverá mostrar o histórico de cada usuário solicitante (Data de solicitação do empréstimo, livro solicitado, data devolução, estado devolução, etc)
- 11 - Definir entrega
- Neste ponto, o solicitante poderá definir o tipo de entrega do passo 08
- Winter (Descrever cada caso abaixo. Prazo: 22/08)
- 12 - Gerar relatórios de livros existentes
- 13 - Gerar Código de Barras
- 14 - Mostrar Estante
- 15 - Gerar relação de bibliotecas individuais disponíveis
- 16 - Gerar relação de usuários no sistema
- 17 - Gerar relação de usuários em débito
- 18 - Mostrar relatório de locais
- 19 - Mostrar movimento de empréstimos por Usuário
- 20 - Mostrar movimento de empréstimos por Data
- 21 - Mostrar movimento de empréstimos por Livro
- 22 - Iniciar forum de discussão
- 23 - Ler manual online
- CRUD: Substitui 4 funcionalidades - Create, Read, Update e Delete
- Também pode ser referenciado como:
- ABCD: Add, Browse, Change e Delete
- BREAD: Browse, Read, Edit, Add e Delete
- VEIA: Visualizar, Excluir, Inserir, Alterar
Não-funcionais
- O sistema quando finalizado deverá:
- ser disponibilizado na Web
- estar hospedado na nuvem
- ser acessado em dispositivos móveis
- ter um tempo de resposta de no máximo 15 seg em 90 % dos casos
- rodar nos sistemas Windows, Linux, IoS e Android
- seguir o padrão ISBN para codificação dos livros
- ter versões em Português e Inglês
- gerar manuais online para leitura pelos usuários
- atender à disponibilidade de 3 noves
- ser desenvolvido na linguagem Java
- manter o banco de dados com solução Open Source
- resguardar totalmente os dados cadastrais de usuários.
- Alexandre Masson (Criar novos requisitos - Prazo: 22/08):
- Se comunicar segundo protocolos TCP/IP e Profibus PA
- Possuir uma base de dados protegida, com acesso exclusivo a usuários autorizados
- Permitir gravação de dados serial via RS232 e/ou RS485
- Os timers, para interrupções, quando não definidos, serão setados com valores default
- Deverá ser compatível com PIC C e Mikro C para programação
Objetos
- Grupo 2:
- Livros
- Código de Barras
- Estante
- Grupo 2:
- Usuários
- Cep
- Grupo 5:
- Empréstimos
- Qualificações
- Indicações
- Entregas
- Grupo 6:
- Devoluções
- Locais
- Forum
- Manual
Classes
Primeiro Esboço
- Pedro Avelar
- Desenhar as 3 classes discutidas em sala de aula
- Incluir tipificação e critérios
- Publicar print das classes (PDF) na Wiki
Exercício
Normalização
- Grupos 2, 3, 5 e 6:
- Normalizar classes baseadas nos objetos acima.
- Repassar o desenho das classes para Grupo 1
- Prazo: 27/08
Diagrama Final
- Grupo 1:
- Receber diagramas dos grupos 2, 3, 5 e 6
- Criar associações
- Implementar Herança
- Usar Software sugerido pelo Pedro Avelar
- Desenhar Diagrama de Classes final
- Publicar PDF na Wiki
- Prazo: 03/09
Casos de Uso
Diagrama
- Grupo 4:
- Desenhar Diagramas de Casos de Uso
- Incluir Estereótipos
- Adicionar Métodos nas Classes
- Implementar Polimorfismo
- Publicar PDF na Wiki
- Prazo: 03/09
Detalhamento
- Grupo 7:
- Detalhar cada um dos Diagramas de Casos de Uso
- Incluir Pré e pós-condição
- Especificar Requisitos não-funcionais
- Apontar Sequências alternativas
- Publicar PDF na Wiki
- Prazo: 03/09
Diagrama de Estado
Diagrama de Sequência
Diagrama de Atividades
Diagrama de Objetos
Diagramas de Colaboração
Diagrama de Componentes
Diagrama de Pacotes