Projeto de Software: Conceitos e Características Essenciais
Classificado em Computação
Escrito em em português com um tamanho de 9,28 KB
1 - Qual a proposta da Fase de Projeto em um desenvolvimento de Software? Quais são os artefatos de entrada e de saída de um Projeto de Software? O Projeto corresponde à primeira dentre as três atividades técnicas - Projeto, Implementação e Testes. A fase de Projeto envolve a modelagem de como o sistema será implementado com a adição dos Requisitos tecnológicos ou não funcionais.
Uma especificação de Projeto deve:
- Contemplar todos os Requisitos explícitos contidos no Modelo de Análise e todos os Requisitos implícitos desejados pelo cliente;
- Ser um guia legível e compreensível para aqueles que irão codificar, testar e manter o Software;
- Prover um quadro completo do Software, tratando Aspectos funcionais, comportamentais e de dados, segundo uma perspectiva de Implementação.
Os subprodutos gerados são:
- "Projeto da Arquitetura do Software: define os grandes componentes estruturais do Software e seus relacionamentos."
- Projeto de Dados: projeta a estrutura dos dados necessária para implementar o Software.
- "Projeto Procedimental: refina e detalha a descrição procedimental dos componentes estruturais da Arquitetura do Software."
- Projeto de Interfaces: descreve como o Software deverá se comunicar dentro dele mesmo (interfaces internas), com outros sistemas (interfaces externas) e com as pessoas que o utilizam (interface com o Usuário).
2 - Qual a diferença entre Domínio do Problema e Domínio da Solução? O Domínio do Problema, especificado na fase de Análise, busca um entendimento do problema a ser atacado, focando em seu escopo, restrições e premissas. O Domínio da Solução busca uma solução técnica específica para o problema identificado. É definido na Fase de Projeto. O Domínio da Solução poderá contemplar mais de uma solução técnica para o problema. Cabe ao Arquiteto de Software buscar aquela mais aderente ao negócio e com melhor relação Custo / benefício.
3 - Comente a seguinte frase: "O Projeto de Software é um processo iterativo". Isto se deve ao fato de que Requisitos podem ter sido entendidos de forma parcial ou inconveniente. Assim, se faz necessário novo entendimento da Solução proposta e melhoria dos itens técnicos propostos. Ademais, novas imposições de negócio podem direcionar para uma solução específica. Em um ambiente ideal, os Requisitos iriam se manter estáveis, possibilitando a definição de um escopo mais aderente e, consequentemente, a sua Solução. Como isso, em geral, não acontece, se faz importante uma reformulação da Solução inicial, com ajustes a serem incorporados.
4 - Explique as seguintes características desejáveis de um bom Projeto de Software:
- Começar representando a totalidade da coisa a ser construída; Estratégia dividir-e-conquistar.
- Refinar para prover orientação para a construção de cada detalhe; idem questão 3
- Prover diferentes visões da coisa;
- Visão de Domínio do problema
- Visão de Gestão de tarefas
- Visão Interface com Usuário
- Visão de Gestão de dados
- Considerar abordagens alternativas com base nos Requisitos do problema, recursos disponíveis e conceitos de Projeto; importante considerar restrições e premissas de Projeto (Aspectos legais, técnicos ou humanos)
- Ser rastreável ao Modelo de análise; permitir ajustes em virtude de Requisitos instáveis;
- Não "reinventar a roda", isto é, reutilizar componentes; buscar maior produtividade; uso de componentes / Soluções já testadas e validadas (padrões de projetos)
5 - Quais são os atributos de qualidade de um Projeto de Software? Explique-os.
- Completude: diz respeito ao atendimento dos Requisitos do cliente.
- Desempenho: refere-se ao uso otimizado dos Recursos computacionais disponíveis (Hardware, Software e Peopleware).
- Facilidade de uso: diz respeito ao Projeto de Interface com o Usuário;
- Segurança contra acessos indevidos:
- Confiabilidade: refere-se à preservação da disponibilidade do sistema e da integridade das informações armazenadas.
- Manutenibilidade: diz respeito à facilidade de alteração.
- Economia: O Custo deve ser adequado ao escopo do Software.
6 - O que é um Projeto Arquitetural?
O Projeto arquitetural consiste na alocação do Modelo de Requisitos em uma tecnologia específica, determinando que Processos rodarão em quais processadores, onde os dados serão armazenados e quanta comunicação entre processadores será necessária. É uma extensão do Modelo de análise visando sua Implementação num computador.
7 - Qual a diferença entre Classes de Negócio e Classes Técnicas? As Classes e Objetos da análise são (geralmente) mantidos e são embutidos numa infra-estrutura técnica. Representam os elementos pertinentes durante a realização dos casos de uso da Aplicação. As Classes técnicas, atuando como suporte às Classes de negócio, ajudam os Business Objects a:
- Serem persistentes
- Se comunicarem
- Se apresentarem na Interface do Usuário
- Terem Desempenho aceitável (usando Caches por exemplo)
8 - Quais as atividades a serem desempenhadas em um Projeto detalhado?
- Atribuição de responsabilidades entre os Objetos
- Construção de diagramas de Classes
- Pode incluir documentação javadoc (ideal)
- Construção de diagramas de Interação (opcional)
- Levantamento de Necessidades de Concorrência
- Considerações de Tratamento de falhas
- Detalhamento do formato de Saída (Interface com o Usuário, relatórios, transações enviadas para outros sistemas, ...)
9 - Comente as seguintes afirmações:
- Pode haver entidade do Modelo de Análise que não será representada no Projeto;
- Pode haver entidade adicional no Projeto;
Pode haver entidade do Modelo de Análise que não será representada no Projeto (é raro). Pode haver entidade adicional no Projeto (é frequente).
10 - O que é uma Arquitetura Cliente-Servidor? Quais as características de Arquitetura cliente servidor com 2, 3 e N camadas? A computação cliente-servidor é um processamento cooperativo de informações de negócio por um conjunto de processadores, no qual múltiplos clientes iniciam requisições que são realizadas por um ou mais Servidores Centrais; A separação de Hardware é a norma em Aplicações cliente servidor, embora algumas pessoas utilizem o termo para descrever diferentes componentes de Software se comunicando uns com os outros, ainda que rodando em uma mesma máquina.
- 2 camadas: 1 Camada de Interface e 1 Camada contendo as Regras de negócio + dados. Pouco ou quase nenhum Tratamento de Regra no Usuário; A Camada Física de Interface está no cliente e a outra no servidor;
- 3 camadas: Camada de Regra de negócio responsável pela validação de Regras e tarefas. Separação clara entre Camada de Interface (nenhuma Regra praticamente) e Camada de dados (preocupação na persistência de dados); A Camada Física de interface está no cliente e as demais no servidor;
- N camadas: não há uma identificação clara das camadas lógicas e nem físicas;
11 - Em uma Arquitetura Cliente-Servidor, qual o papel das camadas de Apresentação, Lógica de Negócio e Gerência de Dados?
- I. Camada de Apresentação: é a camada mais externa do Software. Sua função é capturar estímulos de Eventos externos e realizar alguma Edição dos dados de entrada. É encarregada também de apresentar Respostas aos Eventos para o mundo externo. Geralmente, é localizada em máquina cliente, tal como um PC, entretanto, esta não é uma Regra rigorosa.
- II. Camada de Lógica de Negócio: contém o código executável que impõe a política do negócio. Regras, regulamentos e cálculos são encontrados nesta Camada. É a camada mais móvel, podendo ser localizada em clientes remotos, no servidor central ou em qualquer outro local intermediário.
- III. Camada de Gerência de Dados: provê acesso a dados corporativos. Gerencia requisições concorrentes de acesso às bases de dados, assim como a sincronização de elementos de dados distribuídos. Muito desta Camada estará no mesmo local físico que os dados.
12 - O que é uma Matriz CRUD? Qual sua importância em um Projeto de Software? É uma ferramenta para identificar como Eventos / casos de uso e Entidades estão relacionados e distribuídos geograficamente e qual o esforço, restrição e premissas são necessárias. É importante para podermos definir um Modelo de Arquitetura que possa contemplar essa visão inicial.