0% acharam este documento útil (0 voto)
31 visualizações10 páginas

Modelos e Padrões em Engenharia de Software

O documento aborda diferentes modelos de desenvolvimento de software, como Cascata, Incremental e Espiral, além de metodologias ágeis. Também discute a importância do estudo de viabilidade, tipos de dimensionamento, estilos arquiteturais e padrões de projeto. Por fim, apresenta diagramas como de sequência, atividades e máquina de estados, essenciais para a visualização de processos e interações em sistemas de software.

Enviado por

batatacaua81
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
31 visualizações10 páginas

Modelos e Padrões em Engenharia de Software

O documento aborda diferentes modelos de desenvolvimento de software, como Cascata, Incremental e Espiral, além de metodologias ágeis. Também discute a importância do estudo de viabilidade, tipos de dimensionamento, estilos arquiteturais e padrões de projeto. Por fim, apresenta diagramas como de sequência, atividades e máquina de estados, essenciais para a visualização de processos e interações em sistemas de software.

Enviado por

batatacaua81
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 10

Resumo Engenharia de Software III

Tipos de Modelos de Desenvolvimento de Software

Modelo em Cascata:

● Explicação: Um modelo sequencial onde as fases do desenvolvimento são


realizadas em uma ordem linear, cada fase dependendo da conclusão da anterior.
● Melhor Ocasião: Projetos onde os requisitos são bem compreendidos e estáveis
desde o início.

Modelo Incremental:

● Explicação: Desenvolvimento é dividido em incrementos, com cada incremento


adicionando funcionalidade ao sistema.
● Melhor Ocasião: Projetos onde é importante obter feedback rapidamente e onde os
requisitos podem mudar ou evoluir ao longo do tempo.

Modelo Espiral:

● Explicação: Este modelo combina abordagens sequenciais e iterativas, organizando


o desenvolvimento em ciclos repetitivos focados em identificar e mitigar riscos,
enquanto adiciona funcionalidades ao sistema em cada iteração.
● Melhor Ocasião: Projetos de alto risco, complexos e de longa duração, onde é
crucial identificar e resolver riscos no início.

Metodologias Ágeis (como Scrum e Kanban):

● Explicação: Abordagens iterativas e colaborativas que valorizam a entrega contínua


de software funcional e a adaptação a mudanças.
● Melhor Ocasião: Projetos onde os requisitos são voláteis, a colaboração é
essencial e a priorização da entrega rápida de valor é fundamental.

No Silver Bullet

"No Silver Bullet" é um ensaio escrito por Fred Brooks em 1986. Brooks argumenta que não
há uma solução única ou técnica revolucionária que possa proporcionar uma melhoria
dramática na produtividade, confiabilidade ou simplicidade do desenvolvimento de software.
Ele defende que as dificuldades essenciais do software (complexidade, conformidade,
mutabilidade e invisibilidade) são intrínsecas e não podem ser eliminadas por nenhuma
tecnologia ou metodologia única.
Tipos de Dimensionamento

Os tipos de dimensionamento referem-se a diferentes abordagens para medir e estimar o


tamanho e a complexidade de um sistema ou projeto de software.

a) Baseadas em Problemas: Avalia a complexidade e quantidade dos problemas que o


software deve resolver.

b) Processos: Analisa os processos de negócio que o software deve suportar ou


automatizar.

c) Linhas de Código (LOC): Mede o tamanho do software contando o número de linhas de


código fonte.

d) Casos de Uso: Estima o tamanho do sistema baseado na quantidade e complexidade


dos casos de uso descritos.

e) Pontos por Função (FP): Calcula o tamanho funcional do software avaliando e


ponderando suas funcionalidades entregues ao usuário.

Estilos Arquiteturais

Estilos arquiteturais são padrões ou abordagens gerais para organizar sistemas de


software.

a) Camadas Lógicas (Layered): Divide o sistema em camadas que se comunicam de forma


hierárquica, cada uma responsável por um aspecto diferente da funcionalidade.

b) Cliente Servidor: Separa o sistema em clientes que solicitam serviços e servidores que
fornecem esses serviços.

c) Broker: Usa intermediários (brokers) para coordenar a comunicação entre componentes


distribuídos.

d) MVC (Model-View-Controller): Separa a lógica de negócio (Model), a interface do usuário


(View) e a entrada do usuário (Controller) para facilitar a gestão e evolução do software.

e) Pipes e Filtros:Organiza o processamento de dados em uma cadeia de componentes


(filtros) conectados por canais de comunicação (pipes).

f) Ponto a Ponto (Peer to Peer): Todos os nós do sistema são iguais e compartilham
recursos diretamente uns com os outros sem um servidor central.

g) SOA (Service-Oriented Architecture): Estrutura o sistema em serviços independentes que


se comunicam através de interfaces bem definidas.
h) Microserviços: Divide a aplicação em pequenos serviços independentes que podem ser
desenvolvidos, implantados e escalados separadamente.

i) Repositório: Componentes de software interagem através de um repositório central que


armazena dados compartilhados.

j) Camadas Físicas (Tiers): Divide a aplicação em camadas físicas distintas, como


apresentação, lógica de negócio e armazenamento de dados, geralmente em servidores
diferentes.

k) Message Bus: Usa um barramento de mensagens para permitir que diferentes partes do
sistema se comuniquem de maneira assíncrona e desacoplada.

Estudo de Viabilidade (Conceito)

O estudo de viabilidade avalia a viabilidade técnica, econômica, operacional e temporal de


um projeto. Ele ajuda a determinar se os recursos disponíveis e o tempo são suficientes
para atingir os objetivos do projeto e se ele é economicamente viável.

Projeto de Banco de Dados (Modelo Conceitual, Lógico e Físico)

Modelo Conceitual: O modelo conceitual é um diagrama que representa os dados de forma


abstrata, mostrando entidades (como clientes, pedidos), atributos (como nome, data) e os
relacionamentos entre essas entidades (como clientes fazem pedidos). Não envolve
detalhes técnicos de como os dados serão armazenados.

Modelo Lógico: O modelo lógico é uma versão detalhada do modelo conceitual que
organiza os dados em tabelas e define colunas, chaves primárias e chaves estrangeiras,
preparando o banco de dados para implementação em um Sistema de Gerenciamento de
Banco de Dados (SGBD).

Modelo Físico: O modelo físico descreve como o banco de dados será realmente
armazenado no SGBD, incluindo detalhes como índices, partições, tipos de armazenamento
e especificações de hardware para garantir desempenho e segurança

Diagrama de Sequência

Um diagrama de sequência mostra como objetos interagem em uma sequência de eventos


ao longo do tempo.

Exemplo: Imagine um sistema de reserva de ingressos online. Um diagrama de sequência


poderia mostrar como um cliente seleciona um filme, escolhe o horário da sessão e finaliza
a reserva, interagindo com o sistema de forma sequencial.
Exemplo com alguns diagramas usados no projeto:

Diagrama de Atividades

Um diagrama de atividades representa o fluxo de trabalho ou atividades em um sistema.

Exemplo: Considere um processo de compra em um site de comércio eletrônico. Um


diagrama de atividades pode ilustrar os passos que um cliente realiza, como adicionar itens
ao carrinho, inserir detalhes de entrega, revisar o pedido e fazer o pagamento.

Exemplo com alguns diagramas usados no projeto:


Diagrama de Máquina de Estados

Um diagrama de máquina de estados descreve os diferentes estados de um objeto e como


ele muda entre esses estados em resposta a eventos.

Exemplo: Pense em um sistema de controle de acesso onde um usuário pode estar nos
estados "autenticado" ou "não autenticado". O diagrama de máquina de estados mostraria
como o sistema transita entre esses estados quando o usuário faz login ou sai do sistema.
Exemplos:
Diagrama de Implantação

Um diagrama de implantação mostra a configuração física de um sistema, detalhando como


os componentes de software são distribuídos em hardware físico ou virtual.

Exemplo: Imagine um sistema de gerenciamento de biblioteca. O diagrama de implantação


pode representar que o servidor de banco de dados está hospedado em um servidor
dedicado na sede da biblioteca, enquanto o servidor de aplicação está em uma máquina
virtual na nuvem. Ele também pode mostrar que os clientes acessam o sistema através de
uma aplicação web implantada em um servidor web localizado em outro servidor físico na
sede da biblioteca. Essa representação física da arquitetura do sistema ajuda a entender
como os diferentes componentes estão distribuídos e como eles se comunicam entre si.

Exemplos:
Padrões de Projeto

a) Padrões Criacionais

Padrões que definem maneiras de criar objetos flexíveis e reutilizáveis durante a


instanciação de classes.

Padrão de Fábrica Abstrata: Define uma interface para criar famílias de objetos
relacionados sem especificar suas classes concretas.

Padrão Construtor: Separa a construção de um objeto complexo de sua representação,


permitindo a mesma construção processar diferentes representações.

Padrão de Métodos de Fábrica: Define uma interface para criar um objeto, mas permite
que as subclasses escolham a classe concreta a ser instanciada.

Padrão de Protótipo: Cria novos objetos clonando um protótipo existente.

Padrão Único: Garante que uma classe tenha apenas uma instância e fornece um ponto de
acesso global a ela.

b) Padrões Estruturais

Padrões que lidam com a composição de classes e objetos para formar estruturas mais
complexas.

Padrão Adaptador: Permite que objetos com interfaces incompatíveis trabalhem juntos.

Padrão de Agregação: Permite que objetos formem relacionamentos do tipo "todo-parte",


onde um objeto é composto de um ou mais objetos.

Padrão Ponte: Separa uma abstração de sua implementação, permitindo que ambas
variem independentemente.

Padrão de Composição: Permite que objetos sejam agrupados em estruturas de árvore


para representar hierarquias parte-todo.

Padrão Container: Define uma maneira de acessar e manipular elementos de uma coleção
de objetos.

Padrão Proxy:Fornece um substituto ou placeholder para outro objeto para controlar o


acesso a ele.
c) Padrões Comportamentais

Padrões que definem como objetos interagem e como as responsabilidades são distribuídas
entre eles.

Padrão TopLevelNavigation: Define a navegação de alto nível em um aplicativo ou site.

Padrão CardStack: Gerencia o empilhamento de cartões ou visualizações em um aplicativo


móvel.

Padrão Fill-in-the-Blanks: Guia o usuário para preencher lacunas em um formulário ou


questionário.

Padrão SortableTable: Permite que o usuário classifique as linhas de uma tabela de


acordo com diferentes critérios.

Padrão BreadCrumbs: Fornece uma navegação sequencial para indicar a localização atual
do usuário em um site.

Padrão EditInPlace: Permite que o usuário edite diretamente o conteúdo em sua


visualização original, sem abrir um formulário separado.

Padrão SimpleSearch: Oferece uma interface simples para os usuários realizarem


pesquisas básicas em um conjunto de dados.

Padrão Wizard: Orienta o usuário por meio de uma série de etapas sequenciais para
realizar uma tarefa complexa, como preencher um formulário longo.

Padrão ShoppingCart: Gerencia a seleção e o processamento de itens em um carrinho de


compras online.

d) Padrões de Projeto de Componentes

Padrões específicos para o design e interação de componentes de software, promovendo a


reutilização e modularidade.

AdvancedSearch: Oferece funcionalidades avançadas para busca em um sistema.

HelpWizard: Guia o usuário por meio de um conjunto de informações de ajuda ou tutoriais.

SearchArea: Define a área ou componente onde o usuário pode realizar pesquisas.

SearchTips: Fornece dicas ou sugestões úteis para melhorar a experiência de pesquisa do


usuário.

SearchResults: Apresenta os resultados da pesquisa ao usuário de forma clara e


organizada.
SearchBox: Fornece uma caixa de entrada para que o usuário insira os termos de
pesquisa.

Você também pode gostar