Escolar Documentos
Profissional Documentos
Cultura Documentos
programando
Guia de programação para o ensino médio
Arquitetura de sistemas
Conteúdos 2. Arquitetura de Sistemas
2.1.Introdução e conceitos de análise de
sistemas e projetos
2.2.Modelos de ciclo de vida de sistema
2.3.Estudo de viabilidade
2.4.Especificação de requisitos
2.5.Estudos de cenários e a utilização
casos de uso relativos ao negócio do
cliente
2.6.Introdução aos processos de software
Arquitetura de Sistemas
O primeiro nível é chamado de arquitetura de alto nível. Nessa visão, não entramos
em detalhes técnicos, mas temos uma visão geral do sistema, que serve para
comunicar a ideia para todas as pessoas envolvidas no projeto. É como um mapa que
mostra as principais partes do sistema, sem se aprofundar em detalhes. Para isso,
podemos usar diagramas de blocos e diagramas de contexto.
Exemplos
1. Um sistema de reservas de passagens aéreas: este sistema deve ser capaz
de lidar com um grande volume de transações simultâneas, gerenciar o fluxo
de informações entre as companhias aéreas e os clientes, além de garantir a
segurança e a privacidade dos dados dos usuários. A arquitetura desse
sistema pode ser dividida em diferentes camadas, Abaixo, uma ilustração
simples de como as camadas podem ser distribuídas:
Para aquecer
Ponto de atenção
A dinâmica de quebra-cabeça de arquitetura de sistemas é uma atividade criativa e
flexível, não há uma resposta única sobre como as peças de quebra-cabeça devem
ser organizadas. Cada grupo pode ter sua própria abordagem para montar o sistema
de software, e isso pode depender do conjunto de peças de quebra-cabeça fornecido
e dos objetivos específicos da atividade.
Por exemplo, um grupo pode decidir que o servidor de banco de dados é o
componente principal do sistema e, portanto, colocar essa peça no centro do quebra-
cabeça. Em seguida, eles podem adicionar os outros componentes ao redor do
servidor de banco de dados, organizando-os de acordo com as conexões e interações
necessárias.
Outro grupo pode decidir que a interface do usuário é o componente mais
importante e, portanto, começar a construir o sistema a partir dessa peça. Eles
podem, então, adicionar os outros componentes ao redor da interface do usuário, de
modo a apoiar as funções e recursos exigidos por ela.
O importante é permitir que os alunos tenham a liberdade de explorar diferentes
abordagens e soluções para o desafio de construir um sistema de software com as
peças de quebra-cabeça fornecidas. No final, a discussão e a troca de ideias entre os
grupos podem ser tão valiosas quanto o resultado final do quebra-cabeça.
Introdução e conceitos de análise de
sistemas e projetos
Conceito
A análise de sistemas e projetos é uma disciplina chave em engenharia de
software e é fundamental para o desenvolvimento de sistemas e softwares.
Vamos explorar cada um desses conceitos com mais detalhes e fornecer
exemplos práticos de como eles são aplicados.
Análise de Sistemas:
A análise de sistemas é o processo de compreender o problema que um sistema
deve resolver e de identificar quais as funções que esse sistema precisa ter para
atender às necessidades dos usuários. Nesta etapa, é fundamental entender
como os usuários interagem com o sistema e quais são os seus requisitos. Por
exemplo, imagine que uma empresa deseja desenvolver um novo sistema de
vendas online. A análise de sistemas pode começar com a realização de
entrevistas com vendedores e clientes para entender suas necessidades e
expectativas. A partir dessas informações, é possível identificar quais as
funcionalidades que o novo sistema precisa ter, tais como registro de pedidos,
processamento de pagamentos e histórico de compras.
Outros exemplos:
1. Sistema de gerenciamento de estoque: imagine que uma empresa deseja
desenvolver um novo sistema de gerenciamento de estoque. A análise de
sistemas pode começar com a realização de entrevistas com funcionários do
setor de estoque para entender suas necessidades e desafios. Com base
nessas informações, é possível identificar as funcionalidades que o novo
sistema deve ter, como o controle de entrada e saída de produtos, o cálculo
do estoque disponível e a possibilidade de gerar relatórios de estoque.
2. Sistema de reserva de hotel: ao desenvolver um sistema de reserva de
hotel, a análise de sistemas pode envolver a realização de entrevistas com
clientes e funcionários de hotéis para entender suas necessidades e
preferências. A partir dessas informações, é possível identificar as
funcionalidades que o novo sistema deve ter, como a possibilidade de
pesquisa por datas e localização, visualização de fotos dos quartos
disponíveis, seleção de opções de pagamento e a geração de um comprovante
de reserva.
3. Sistema de controle de acesso: ao desenvolver um sistema de controle de
acesso, a análise de sistemas pode envolver a realização de entrevistas com
os usuários do sistema para entender como o controle de acesso é realizado
atualmente e quais as dificuldades enfrentadas. A partir dessas informações,
é possível identificar as funcionalidades que o novo sistema deve ter, como o
registro de entradas e saídas de pessoas, verificação de credenciais de acesso
e a possibilidade de geração de relatórios de atividades.
4. Sistema de atendimento ao cliente: ao desenvolver um sistema de
atendimento ao cliente, a análise de sistemas pode envolver a realização de
entrevistas com os clientes para entender suas necessidades e expectativas
em relação ao atendimento. A partir dessas informações, é possível
identificar as funcionalidades que o novo sistema deve ter, como a
possibilidade de abrir um chamado de suporte, o acompanhamento do status
do chamado e a geração de feedback após a conclusão do atendimento.
Possíveis problemas
Existem vários possíveis problemas que podem surgir durante a análise de sistemas.
Alguns desses problemas incluem:
1. Falta de compreensão dos requisitos do usuário: se a equipe de análise
não entender completamente o que o usuário precisa, o sistema pode não
atender às suas expectativas e necessidades. Isso pode resultar em um
sistema ineficiente, ou até mesmo em um sistema que não é utilizado.
2. Mudanças frequentes nos requisitos do usuário: se os requisitos do
usuário mudarem com frequência, isso pode atrasar o processo de análise e
desenvolvimento, além de aumentar os custos. É importante estabelecer uma
comunicação clara com o usuário para entender suas necessidades e
minimizar as mudanças de requisitos.
3. Falta de alinhamento com os objetivos de negócios: se o sistema não
estiver alinhado com os objetivos de negócios da organização, ele pode não
ser eficaz ou não agregar valor aos processos existentes. É importante
considerar os objetivos de negócios ao analisar e desenvolver o sistema.
4. Falta de coordenação entre a equipe de análise e desenvolvimento: se a
equipe de análise e a equipe de desenvolvimento não trabalharem em
conjunto de forma eficiente, pode haver atrasos, erros e falta de qualidade no
sistema desenvolvido.
5. Falta de consideração de fatores externos: é importante considerar
fatores externos, como regulamentações e normas de segurança, ao analisar
e desenvolver o sistema. Caso contrário, o sistema pode não estar em
conformidade com essas normas e regulamentações, o que pode levar a
problemas legais e de segurança.
6. Falta de documentação adequada: é importante documentar todo o
processo de análise de sistemas de forma clara e detalhada. A falta de
documentação pode levar a problemas de comunicação e dificultar a
manutenção e a evolução do sistema no futuro.
Esses são apenas alguns dos possíveis problemas que podem surgir durante a
análise de sistemas. É importante estar ciente desses problemas e tomar medidas
para mitigá-los durante o processo de análise e desenvolvimento do sistema.
Projeto de Sistemas:
Segunda etapa, depois da análise. O resultado principal da fase de projeto de
sistemas é um projeto técnico que detalha as saídas, as entradas, as interfaces.
Especificando o hardware, o software, o banco de dados,
as telecomunicações, a equipe e os procedimentos de um sistema.
Existem dois aspectos fundamentais a serem considerados: projeto lógico e
projeto físico.
O projeto lógico do sistema está relacionado ao que o sistema fará.
O projeto físico, mostra como as tarefas serão executadas, como os
componentes funcionarão de forma conjunta ou em separado.
No projeto são tomadas decisões de alto nível sobre como resolver o problema.
Exemplo de decisões:
• Divisão do sistema em subsistemas.
• Projeto de Interface com usuário
• Especificações de cronograma
• Detalhamento de custos do projeto
• Divisão de tarefas
Exemplos:
Um projeto de sistemas pode ser de diferentes tipos e ter diferentes objetivos,
dependendo das necessidades e objetivos da organização. Abaixo, seguem alguns
exemplos de projetos de sistemas:
1. Implementação de um sistema de gestão de vendas: esse projeto pode ter
como objetivo melhorar a eficiência e a eficácia dos processos de vendas da
empresa. O sistema pode incluir funcionalidades como gestão de leads,
gestão de oportunidades de vendas, gestão de clientes, gestão de pedidos e
gestão de relatórios de vendas.
2. Desenvolvimento de um sistema de gestão de estoque: esse projeto pode
ter como objetivo melhorar a gestão do estoque da empresa, controlando as
entradas e saídas de produtos, gerenciando o estoque disponível e enviando
alertas quando o estoque atingir um nível crítico. O sistema pode incluir
funcionalidades como gestão de categorias de produtos, gestão de
fornecedores, controle de estoque e geração de relatórios de estoque.
3. Criação de um sistema de gestão de recursos humanos: esse projeto pode
ter como objetivo melhorar a gestão dos recursos humanos da empresa,
gerenciando informações dos funcionários como dados pessoais, cargos,
salários, benefícios e histórico profissional. O sistema pode incluir
funcionalidades como gestão de currículos, gestão de processos seletivos,
gestão de avaliação de desempenho e geração de relatórios de recursos
humanos.
4. Desenvolvimento de um sistema de gestão financeira: esse projeto pode
ter como objetivo melhorar a gestão financeira da empresa, controlando as
receitas e despesas, gerenciando contas bancárias e realizando a conciliação
bancária. O sistema pode incluir funcionalidades como gestão de contas a
pagar e a receber, gestão de fluxo de caixa e geração de relatórios financeiros.
Exercícios de fixação
Respostas:
1. Análise de sistemas é o processo de analisar as necessidades e objetivos de
uma organização e desenvolver soluções de sistemas para atender a essas
necessidades e objetivos. A análise de sistemas envolve a identificação de
requisitos, a análise de processos e a modelagem de sistemas.
2. Os objetivos da análise de sistemas são:
• Identificar e definir as necessidades e objetivos da organização.
• Identificar as áreas que precisam de melhorias nos processos.
• Definir as especificações e requisitos do sistema.
• Desenvolver soluções de sistemas que atendam aos requisitos da
organização.
• Garantir que o sistema desenvolvido seja eficiente, eficaz e atenda às
necessidades do usuário.
3. Possíveis problemas que podem surgir durante a análise de sistemas
incluem:
• Falta de compreensão dos requisitos do usuário.
• Mudanças frequentes nos requisitos do usuário.
• Falta de alinhamento com os objetivos de negócios.
• Falta de coordenação entre a equipe de análise e desenvolvimento.
• Falta de consideração de fatores externos.
• Falta de documentação adequada.
4. Exemplos de projetos de sistemas incluem:
• Implementação de um sistema de gestão de vendas.
• Desenvolvimento de um sistema de gestão de estoque.
• Criação de um sistema de gestão de recursos humanos.
• Desenvolvimento de um sistema de gestão financeira.
• Desenvolvimento de um sistema de monitoramento de produção.
• Criação de um sistema de atendimento ao cliente.
Modelos de ciclo de vida de um sistema
Exercício 2:
A empresa ABC está planejando instalar um sistema de ar-condicionado em
seu escritório. A equipe de engenharia realizou um estudo de viabilidade e
obteve os seguintes resultados:
• Viabilidade técnica: o sistema de ar-condicionado é viável do ponto de vista
técnico.
• Viabilidade operacional: a equipe de manutenção tem as habilidades e
recursos necessários para manter o sistema.
• Viabilidade econômica: o custo total de instalação e manutenção do sistema
de ar-condicionado é superior ao orçamento da empresa.
• Viabilidade legal: o sistema de ar-condicionado atende às leis e
regulamentações aplicáveis.
• Viabilidade ambiental: o sistema de ar-condicionado tem um impacto
ambiental significativo.
Com base nesses resultados, a empresa ABC deve prosseguir com a instalação
do sistema de ar-condicionado?
Resposta
Os processos de software são uma série de atividades que visam produzir software
de alta qualidade. Eles envolvem atividades como planejamento, análise, design,
implementação, teste e manutenção.
Resposta:
Para aplicar o modelo incremental ao desenvolvimento do sistema de
gerenciamento de tarefas, a equipe pode definir os incrementos de acordo com
as funcionalidades prioritárias identificadas. A seguir, segue um exemplo de
como a equipe pode dividir o processo de desenvolvimento em incrementos:
1. Incremento 1 - Cadastro de usuários e criação de tarefas: Neste primeiro
incremento, a equipe se concentraria na criação de funcionalidades para
permitir que os usuários se cadastrem no sistema e criem tarefas. Isso incluiria
a criação de formulários de cadastro e a validação de dados inseridos pelos
usuários.
2. Incremento 2 - Gerenciamento de tarefas: Neste incremento, a equipe se
concentraria no desenvolvimento de funcionalidades para permitir que os
usuários gerenciem suas tarefas. Isso incluiria a implementação de recursos
para a visualização, edição, exclusão e conclusão de tarefas.
3. Incremento 3 - Notificações e relatórios: Neste incremento, a equipe se
concentraria em adicionar funcionalidades de notificações e relatórios para o
sistema de gerenciamento de tarefas. Isso incluiria a criação de notificações
para lembrar os usuários de suas tarefas e a geração de relatórios para os
gerentes acompanharem o progresso das tarefas.
4. Incremento 4 - Integração com outras ferramentas: Neste último incremento,
a equipe se concentraria em adicionar recursos para integrar o sistema de
gerenciamento de tarefas com outras ferramentas utilizadas pela empresa,
como o calendário e o e-mail.
Ao seguir o modelo incremental, a equipe poderia entregar o sistema de
gerenciamento de tarefas em etapas, permitindo que os usuários testem e
forneçam feedbacks sobre cada incremento. Isso ajudaria a garantir que o
sistema atenda às necessidades dos usuários e reduziria os riscos associados ao
desenvolvimento de software.
Modelo em espiral:
O modelo espiral é um modelo de processo de software iterativo e incremental, que
combina elementos do modelo cascata e de prototipação. Ele foi proposto por Barry
Boehm em 1986 e é amplamente utilizado para projetos de grande escala e de alta
complexidade.
O modelo espiral é baseado em ciclos de atividades de planejamento, análise de
riscos, engenharia e avaliação. A cada ciclo, o software é desenvolvido em
pequenos incrementos, com base no feedback e nos requisitos atualizados do
usuário. As fases do modelo espiral são:
• Definição de objetivos: nesta fase, são definidos os objetivos do projeto,
incluindo os requisitos do usuário e as restrições do projeto.
• Análise de riscos: nesta fase, são identificados os riscos do projeto e a
equipe de desenvolvimento estima a probabilidade de cada risco ocorrer. Os
riscos são priorizados e a equipe toma medidas para mitigar ou evitar esses
riscos.
• Desenvolvimento e validação: nesta fase, o software é desenvolvido em
pequenos incrementos, com base no feedback e nos requisitos atualizados do
usuário. Cada incremento é validado antes de passar para a próxima fase.
• Planejamento: nesta fase, é feito um planejamento para a próxima iteração
do processo, com base no feedback e nos requisitos atualizados do usuário.
O modelo espiral tem várias vantagens sobre o modelo cascata. Em primeiro lugar,
ele é mais flexível e adaptável, permitindo que a equipe de desenvolvimento lide
com mudanças de requisitos ou riscos do projeto à medida que surgem. Além disso,
o modelo espiral fornece um feedback frequente do usuário, permitindo que a
equipe de desenvolvimento ajuste o software de acordo com as necessidades e
expectativas do usuário.
No entanto, o modelo espiral também apresenta algumas desvantagens. O processo
pode se tornar complexo e caro devido às várias iterações e à análise de riscos. Além
disso, a equipe de desenvolvimento deve ser capaz de gerenciar efetivamente os
riscos identificados, a fim de garantir que o projeto seja entregue no prazo e dentro
do orçamento.
Em resumo, o modelo espiral é um modelo iterativo e incremental de processo de
software que combina elementos do modelo cascata e de prototipação. Ele é mais
flexível e adaptável do
que o modelo cascata,
permitindo que a equipe
de desenvolvimento lide
com mudanças de
requisitos ou riscos do
projeto à medida que
surgem. No entanto, o
modelo espiral pode se
tornar complexo e caro
devido às várias
iterações e à análise de
riscos.
Modelo ágil
O modelo ágil de processo de software é uma abordagem iterativa e incremental
de desenvolvimento de software que enfatiza a entrega contínua de valor ao
cliente e a colaboração entre a equipe de desenvolvimento e o cliente.
Diferentemente do modelo cascata e do modelo espiral, que enfatizam a
documentação e os processos formais, o modelo ágil prioriza a comunicação
direta e a adaptação contínua aos requisitos e mudanças do projeto.
O modelo ágil foi criado em 2001, com a publicação do Manifesto Ágil de
Desenvolvimento de Software, que estabeleceu os seguintes valores:
O Scrum é uma das metodologias ágeis mais populares, que consiste em uma série
de práticas e processos para gerenciar projetos de software. Nesta apostila,
abordaremos o Scrum, o backlog do produto, o sprint e outros conceitos
importantes para entender melhor essa metodologia.
O Scrum é um processo iterativo e incremental para gerenciamento de projetos de
software, que enfatiza a entrega contínua de valor ao cliente. O Scrum é baseado em
três pilares principais: transparência, inspeção e adaptação.
O Scrum é composto por três papéis principais: Product Owner, Scrum Master e
Equipe de Desenvolvimento. O Product Owner é responsável por gerenciar o
backlog do produto e definir as prioridades do que deve ser entregue ao cliente. O
Scrum Master é responsável por garantir que o Scrum esteja sendo implementado
corretamente e ajudar a equipe a remover quaisquer obstáculos que possam estar
impedindo o progresso. A Equipe de Desenvolvimento é responsável por entregar
as funcionalidades definidas no backlog do produto durante o sprint.
Backlog do Produto
O backlog do produto é uma lista priorizada de itens de trabalho que precisam ser
realizados para atender aos objetivos do projeto. Esses itens de trabalho são
geralmente expressos como requisitos de negócios ou funcionalidades do software.
O Product Owner é responsável por gerenciar o backlog do produto e garantir que
os itens mais importantes sejam concluídos primeiro.
Sprint
O sprint é um ciclo curto de desenvolvimento, geralmente de duas a quatro semanas,
em que a equipe de desenvolvimento trabalha em uma lista de itens de trabalho
selecionados do backlog do produto. Durante o sprint, a equipe de desenvolvimento
realiza uma série de atividades, incluindo planejamento, codificação, testes e
revisão.
O sprint começa com uma reunião de planejamento do sprint, onde a equipe de
desenvolvimento seleciona os itens de trabalho que serão abordados durante o
sprint. Durante o sprint, a equipe de desenvolvimento se reúne diariamente para
uma breve reunião chamada de Daily Scrum, onde cada membro da equipe
compartilha o que foi realizado no dia anterior e o que planeja fazer no dia seguinte.
No final do sprint, a equipe de desenvolvimento apresenta o trabalho concluído em
uma revisão do sprint. A equipe também realiza uma retrospectiva do sprint, onde
discute o que funcionou bem e o que precisa ser melhorado para o próximo sprint.
O Scrum é uma metodologia ágil popular para gerenciamento de projetos de
software que enfatiza a entrega contínua de valor ao cliente. O backlog do produto é
uma lista priorizada de itens de trabalho que precisam ser realizados para atender
aos objetivos do projeto. O sprint é um ciclo curto de desenvolvimento, geralmente
de duas a quatro semanas, em que a equipe de desenvolvimento trabalha em uma
lista de itens de trabalho selecionados do backlog do produto. Esperamos que esta
apostila tenha sido útil para entender melhor a metodologia ágil e como ela pode
ajudar no desenvolvimento de software.