Você está na página 1de 45

Processo de

Desenvolvimento
de Sistemas II

SEJAM BEM VINDOS – 2023.2


Introdução
As economias de todas as nações desenvolvidas são
dependentes de softwares.
Mais e mais sistemas são controlados por software.
A engenharia de software se preocupa com teorias,
métodos e ferramentas para desenvolvimento de
softwares profissionais.
As despesas de software representam uma
fração significativa do PIB em todos os países
desenvolvidos.
A Importância do Desenvolvimento de Software

• Cada vez mais, os indivíduos e a sociedade


dependem de sistemas de software avançados.
• Precisamos ser capazes de produzir sistemas
confiáveis com economia e rapidamente.
Geralmente, é mais barato, no longo prazo, usar
métodos de engenharia de software e técnicas
para os sistemas de software em vez de apenas
escrever os programas como se fosse um projeto
de programação pessoal.
• Para a maioria dos tipos de sistemas, a maior
parte dos custos são os custos de alterar o 3
software em uso.
Desafios do Desenvolvimento de Software

4
Desafios do Desenvolvimento de Software

• Lidar com o aumento da diversidade do


software. Maior demanda e pressão por um
menor tempo de desenvolvimento e entrega
do software.
• Desenvolvimento de software confiável.
• Software para web e sistemas distribuídos.
• Software para dispositivos móveis.
• Aumento da preocupação com a questão
“segurança”.

5
Desafios do Desenvolvimento de Software

• Software tornou-se pervasivo (incorporado) no


comércio, na cultura e em nossas atividades
cotidianas.
• O processo de desenvolvimento de um
software deve ser adaptável e ágil, atendendo
às necessidades daqueles que usarão o
produto.
• Embora a indústria caminhe para a construção
com base em componentes, a maioria dos
softwares continua a ser construída de forma
personalizada (sob encomenda).
6
Atributos Essenciais de um Software

• Manutenibilidade
• Capacidade de evolução para atender novas demandas
• Confiabilidade
• Proteção e Segurança § Eficiência: tempo de resposta,
tempo de processamento, uso de recursos (memória, rede,
armazenamento, etc.)
• Compreensibilidade e Usabilidade

7
Questões gerais que afetam o desenvolvimento dos
softwares
• Heterogeneidade . Cada vez mais, os sistemas são
necessários para operar como sistemas distribuídos
através de redes que incluem diferentes tipos de
computadores

• Mudança de negócio e social . Na medida em que as


economias emergentes se desenvolvem e as novas
tecnologias se tornam disponíveis, elas precisam ser
capazes de alterar os softwares existentes e desenvolver
novos softwares.

• Segurança e confiança. Como o software está entrelaçado


com todos os aspectos de nossas vidas, é essencial que
possamos confiar nele.
8
Custos de Software

• Os custos de software geralmente dominam os


custos do sistema de computador.
• Em geral, os custos de software são maiores que
os custos do hardware.
• Custa mais para se manter um software do que
para desenvolvê-lo.
• Para sistemas com uma vida longa, os custos de
manutenção podem ser várias vezes os custos do
desenvolvimento.
9
Definições Básicas

• Engenharia: aplicar conhecimentos científicos e empíricos


para criação de estruturas, dispositivos e processos.
• Engenheiros de Software: Criam e dão suporte ao
software de computador.
• Engenheiros/Analistas de Sistemas: Analisam e modelam
requisitos do sistema de software.
• O software é desenvolvido ou passa por um processo de
engenharia; ele não é “fabricado” no sentido clássico.
• Software não “se desgasta”.

10
Perguntas Iniciais
O que é software? São programas de
computador e sua documentação associada. O
que é Engenharia de Software? Disciplina de
engenharia que se preocupa com todos
aspectos da produção de software.
Quais suas atividades principais? Análise,
Especificação, Desenvolvimento, Validação e
Evolução do software.
Em qual etapa se faz a Modelagem do
Software?

11
Desenvolvimento de Software

12
Processo e Processo de Software

PROCESSO: Conjunto de passos parcialmente


ordenados para atingir uma meta.
PROCESSO DE SOFTWARE: Conjunto de
atividades, métodos, práticas e transformações que
pessoas utilizam para desenvolver ou dar manutenção
em software ou em seus produtos associados.
13
Processo de Software
Definição: um conjunto estruturado de atividades necessárias
para desenvolver um sistema de software. Existem vários
processos de desenvolvimento de software diferentes mas todos
envolvem:
 Análise e Especificação – definição do quê o sistema deve
fazer;
 Projeto e Implementação – definição da organização do
sistema e implementação do sistema;
 Validação – checagem de que o sistema faz o que o cliente
deseja;
 Evolução – evolução em resposta a mudanças nas
necessidades do cliente. 14
Na especificação de software, os
clientes e engenheiros definem o
software que deve ser produzido e as
restrições sobre o seu funcionamento.
No desenvolvimento de software, o
software é projetado e programado.
Na validação de software, o software é
verificado para garantir que atenda ao
que o cliente necessita.
Na evolução de software, o software é
Atividades do processo de software modificado para refletir as mudanças
de requisitos do cliente e do mercado

15
• Processos de software reais são
sequências intercaladas de
atividades técnicas, colaborativas e
gerenciais com o objetivo geral de
especificar, projetar, implementar e
testar um sistema de software.
• As quatro atividades de processo
básicas, especificação,
desenvolvimento, validação e
evolução são organizadas de forma
diferente em processos de
desenvolvimento distintos.
• No modelo cascata, por exemplo,
Atividades do processo de software elas são organizadas em
sequências, enquanto no
desenvolvimento incremental são
intercaladas.
16
1) Análise e Especificação do
Software

Nestas fases são estabelecidas as funções, restrições e


objetivos do sistema. Fases em que o analista
compreende o domínio do problema proposto (as regras
do negócio): Os requisitos devem ser documentados e
revistos com o cliente. Nestas fases também são
estabelecidos alguns requisitos mais amplos, como
hardware, pessoas e software necessários.
17
1) Análise e Especificação do
Software

O processo de estabelecer quais serviços são necessários e


as restrições na operação e desenvolvimento do sistema. •
Processo de engenharia de requisitos: Estudo de
viabilidade. É técnica e financeiramente viável construir o
sistema? Elicitação e análise de requisitos: O que os
stackholders precisam ou esperam do sistema?
Especificação de requisitos: definição dos requisitos em
detalhes. Validação de requisitos: verificação da
completude dos requisitos
18
O processo de engenharia de requisitos
O Projeto e Implementação do Software

• O processo de converter a especificação de sistema


em um sistema executável.
• Projeto de software: Design de uma estrutura de
software que materialize a especificação;
• Implementação: Transformar essa estrutura em um
programa executável;
• As atividades de projeto e implementação são
intimamente ligadas e podem ser intercaladas
Design e Projeto
Envolve a identificação e descrição das abstrações
fundamentais, como:
Estruturas de dados;
Arquitetura do software;
Detalhes procedimentais;
Caracterização de interfaces.
O projeto desenvolvido corresponde às exigências do
cliente em uma representação do software que pode
ser avaliada quanto à qualidade, antes mesmo da
codificação. Trata-se do modelo de desenho do
software.
Projeto e Implementação
Tradução das regras de negócio em uma notação
compreensível por máquinas.
Se o projeto do software foi especificado correta e
detalhadamente, e todos os procedimentos e regras
foram bem definidos e explicados, a codificação pode
ser executada “mecanicamente”.
Existem empresas de software que empregam bons
profissionais nas etapas de requisitos e análise (etapas
estas onde o projeto é altamente detalhado) e
terceirizam o desenvolvimento
Modelo geral do processo de design
Atividades de projeto

• Projeto de arquitetura, em que você identifica a estrutura geral do


sistema, os componentes principais, seus relacionamentos e como são
distribuídos.
• Projeto de interface, em que você define as interfaces entre os
componentes do sistema.
• Projeto de componente, em que você projeta como cada componente do
sistema irá operar separadamente.
• Projeto de banco de dados, em que você projeta as estruturas de dados
do sistema e como essas serão representadas no banco de dados. 24
Validação do Software

• São testados todos os aspectos internos do sistema: Isso


garante que todas as instruções lógicas dele tenham sido
executadas, ou seja, verifica se não há nenhum erro de
código. São testados os aspectos externos do sistema:
De maneira a confirmar se os dados inseridos como
entrada geram os dados esperados como resposta,
conforme esperado pelo cliente.
25
Validação do Software

• Verificação e validação (V & V) serve para mostrar que


o sistema está em conformidade com sua especificação e
está de acordo com os requisitos do cliente. • Envolve
processos de inspeção e revisão, e testes do sistema. •
Testes do sistema envolvem executar o sistema com
casos de teste. São provenientes de especificações dos
dados reais que deverão ser processados pelo sistema. •
O teste é a atividade de V & V mais usada.
26
Fases de teste em um processo de software dirigido a planos

27
Manutenção e Evolução
FATO: Mesmo depois que o software é entregue ao
cliente, mudanças serão solicitadas!
Possíveis motivos:
• Erros encontrados;
• Adaptações para atender ao ambiente do cliente;
• Exigência de acréscimos funcionais;
• Desempenho insatisfatório.
• Para cada operação de manutenção, todo o ciclo
de vida é re-executado. 28
Manutenção e Evolução

Os softwares são inerentemente flexíveis e podem mudar.


• Conforme os requisitos mudam, conforme mudam as
circustâncias do negócio, o software que dá suporte ao
negócio também deve evoluir e mudar.
• Apesar de ter acontecido uma demarcação entre
desenvolvimento e evolução (manutenção) essa precisa se
tornar cada vez mais irrelevante já que tem diminuído a
quantidade de sistemas completamente novos.
29
Manutenção e Evolução

30
Descrições de processo de software
Quando descrevemos e discutimos processos, geralmente
falamos sobre as atividades desses processos, tais como
especificação de modelo de dados, desenvolvimento de
interface de usuário, etc. e organização dessas atividades.
• Descrições de processos também podem incluir: Produtos,
que são os resultados de uma atividade do processo; Papéis,
que refletem as responsabilidades das pessoas envolvidas no
processo; Pré e pós-condições, que são declarações que são
verdadeiras antes e depois de uma atividade do processo ser
executada, ou um produto produzido

31
Processo de Software - Papéis

32
Analista de Sistemas

Habilidades necessárias a um Analista:


1. Comunicação: capacidade de ouvir, redigir e expor
idéias com facilidade, clareza e precisão.
2. Capacidade de Análise: aptidão para realizar operações
mentais com abstrações sobre a realidade em estudo e
de estabelecer uma visão sistêmica e crítica do contexto
em análise.
3. Conhecimento da área usuária: habilidade de absorver
conhecimento por meio da vivência com as operações
da empresa (que pode ser obtido através de entrevistas),
ou por meio de leitura de informações técnicas,
documentos da empresa, etc. 33
Analista de Sistemas

Habilidades necessárias a um Analista:


4. Capacidade de negociação: habilidade de obter o
resultado desejado, administrando situações de conflitos de
interesses pessoais, fazendo convergir interesses opostos.
5. Administração de Projetos: habilidade de saber alocar
tempo e recursos humanos, financeiros e materiais
necessários a projetos.
6. Conhecimento técnico: capacidade de especificar
sistemas, principalmente em suas fases de nível de
abstração mais alto, usando alguma linguagem ou
ferramenta de modelagem.
34
Analista de Sistemas
Ao contrário do que se imagina o conhecimento técnico
não é a habilidade mais importante.
Ela é fundamental sim, mas as habilidades anteriores vêm
primeiro!
Orientações para se fazer uma boa especificação:
• Entender que a atividade de desenvolvimento de
sistemas é um processo de solução de problemas
• Entender que quando um analista inicia o
desenvolvimento de um sistema, ele sabe pouco ou nada
sobre a área de aplicação do sistema
• Entender que o primeiro passo no desenvolvimento do
sistema é o aprendizado 35
Analista de Sistemas
Analistas e usuários não tem como saber a princípio todos
os requisitos do sistema, eles são mutáveis ao longo do
tempo.
Exemplo: mudanças no modelo de negócio da organização
que contratou o sistema.
Podemos concluir que o fator determinante para a boa
qualidade da análise do sistema é a boa interação
(comunicação) entre os usuários e os analistas de sistemas.
Será possível?

36
Analista de Sistemas
Como é possível saber em quanto tempo e com quanta
eficiência a equipe que realiza a análise do sistema
aprenderá os assuntos da área de aplicação?
É fácil comunicar com o cliente / usuário?
Como superar problemas de comunicação?
• Usar linguagens de especificação de sistemas, que
podem ser entendidas tanto por analistas quanto por
usuários.
• As linguagens (entre elas UML) permitirão discutir
modelos do sistema com os usuários.

37
O que são modelos?
Exemplos de Modelos
Modelos para Sistemas de Informação
Evolução da Modelagem de Sistemas
Modelos Lógicos de BD
Modelo E-R
Modelo Semântico em UML
Modelo de Negócio em BPM-N

Você também pode gostar