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.

Entradas relacionadas: