Você está na página 1de 41

Introdução à Modelagem de

Software
Modelagem de Software
• 1Analisar um problema de software.
• 2. Criar especificação de requisitos funcionais e não-
funcionais de software para resolução do problema analisado.
• 3. Criar modelos da UML propondo soluções para os
requisitos especificados de software para o problema
analisado.
• 4. Criar modelo lógico e físico de banco de dados para o
problema analisado e que atenda os requisitos de software
especificados. 5. Validar a especificação de requisitos por
meio de protótipo.
• Os itens acima podem ser desenvolvido com estudos de caso
ou projetos.
Avaliação

• A nota final do semestre será composta


por:
• A1 – Avaliação, valendo 30 pontos.
• A2 – Avaliação com questões de múltipla
escolha, valendo 30 pontos.
• A3 – Avaliação de desempenho, valendo
40 pontos.
• Nota final = (A1+A2+A3).
Sistema é um conjunto de partes interligadas (subsistemas)
visando realizar um conjunto bem definido de objetivos.

Sistemas Naturais:
 Sistemas estelares (galáxias, sistemas solares, etc)
 Sistemas Geológicos (rios, cadeias de montanhas, florestas, etc)
 Sistema Cardíaco, Sistema Locomotor
Sistemas Feitos pelo Homem:
Sistemas de transporte
(redes rodoviárias, ferroviárias, linhas aéreas)
Sistemas de comunicação
(telefones, tvs, internet, semáforos)
Sistemas de Manufatura
(fábricas, linhas de montagem)
Sistemas financeiros
(contabilidade, inventários, bolsa de valores)
O Que É um Sistema de Informação (SI)?

• Um conjunto de componentes inter-relacionados que


coleta (ou recupera), processa, armazena e distribui
informações destinadas a apoiar a tomada de
decisões e o controle em uma organização.

• Podem ser sistemas manuais ou baseados em


computador

• Sistema de informação baseado em computador


(SIBC). Um sistema de informação que usa a
tecnologia de informação para realizar algumas ou
todas as tarefas pretendidas
Componentes básicos dos sistemas
de informação

• Hardware é um dispositivo, como processador, monitor,


teclado e impressora. Juntos, esses dispositivos
recebem dados e informações, os processam e os
exibem.
• Software é um programa ou conjunto de programas que
permite que o hardware processe os dados.
• Banco de dados é uma coleção de arquivos ou tabelas
relacionados contendo dados.
• Uma rede é um sistema de conexão (com ou sem fio)
que permite que diferentes computadores compartilhem
recursos.
Componentes básicos dos sistemas
de informação (continuação)

• Procedimentos ou regras são um conjunto de


instruções sobre como combinar todos os componentes
para processar informações e gerar a saída desejada.
• Pessoas são os indivíduos que usam o hardware e o
software, interagem com eles ou usam sua saída.
• Programa de Aplicação é um programa de computador
projetado para realizar uma tarefa ou processo
comercial específico
Análise
• Estudo de um problema ou de processos
organizacionais.
• A análise modela o problema: executa
atividades para entender o domínio do
problema (o que está acontecendo e o que
deve ser feito?)
• É uma atividade investigativa
Análise de Sistemas
• Estudo de um subsistema de informação,
descrição de suas características e
funcionalidades
• O trabalho da análise deve ser feito com a
participação do usuário e aprovado por ele.
Por que?
Importância da Análise de Sistemas
• Aumenta a qualidade do software
• Evita a passagem direta para a codificação
• Ganho em tempo e custo:
– Aprendizagem da equipe
– Antecipação de necessidades e problemas
– Detecta falhas prematuramente
– Permite participacao de mais pessoas simultaneamente –
trabalho em equipe
– Reduz custo de desenvolvimento
– Aumenta o ciclo de vida do sistema
Atividades de um SI

PROCES- SAÍDA
ENTRADA
SAMENTO

FEEDBACK

Porque a análise de sistema precisa conhecer estas atividades?


Todo sistema está inserido num ambiente
externo

a) O ambiente define os limites e abrangência do


sistema.

b) Um Sistema de informação pode ser implementado


de diferentes formas dependendo das necessidades do
usuário, das regras de negócios da empresa, do
hardware e do software onde vai ser implementado.

Um sistema para uma biblioteca, por exemplo, embora


tenha sempre um mesmo objetivo, é implementado de
diferentes formas em diferentes escolas
Qual a importância dos Sistemas de
Informação nas Empresas?

Melhora o planejamento (estratégico) e reduz custos;


Melhora o trabalho cooperativo geograficamente
distribuído;
 Aumenta a flexibilidade, segurança,rapidez e precisão;
Padroniza os procedimentos organizacionais
(documentos e fluxo de trabalho)
Aumenta a produtividade e qualidade;
Melhora a relação com clientes e fornecedores.
Análise de Sistema e Questões Éticas
Um cliente de um banco estava insatisfeito com os serviços
prestados pelo banco do qual era cliente e resolveu colocar
como sua senha no sistema de acesso a informações
bancárias pela internet uma palavra que traduzida livremente
seria algo como: “LloydsÉumaPorcaria”.
Dias depois ao usar o sistema, percebeu que a senha havia
sido mudada, e ao ligar para o banco, descobriu que a nova
senha, modificada por um funcionário do banco, era
“NãoÉNão”
O cliente tentou então mudar a senha para outras palavras
provocativas, como “BarclaysÉmelhor”, mas não teve
sucesso.
• O caso ganhou a mídia, correu o mundo e
vários comentários foram publicados em
blogs e jornais.
Logo depois do caso tornar-se público o
banco emitiu um comunicado, informando
que o funcionário havia sido demitido.
Algumas questões a considerar
•O que se pode dizer de uma empresa que permite que
permite que seus funcionários tenham acesso às senhas
de seus clientes e até possam
modificá-la?
• Por que os profissionais de computação que fizeram o
sistema não armazenaram as senhas de forma
criptografada e sem a possibilidade de ser modificada, a
não ser pelo cliente?
•Deveriam estes profissionais ao menos ter alertado
seus superiores de que havia uma falha de segurança
do sistema?
O Resultado de Tudo

• A imagem do banco saiu arranhada no episódio,


por ter sido revelada uma falha grave de seu
comportamento ético como organização
• Um funcionário foi demitido
• A competência dos profissionais de TI
envolvidos foi posta em xeque e, talvez, suas
carreiras tenham sido irremediavelmente
prejudicadas.

[P. C. Masiero, R. S. Bigonha. Ética e Computação. Apresentando a coluna


“Em Sociedade” da SBC Horizontes -Volume 1 - Número 1 - ]
O processo de desenvolvimento de
sistemas

A Análise de Sistemas tem influência em todas estas etapas,


principalmente nas duas primeiras
Especificação de software
• O processo para definir quais serviços são
necessários e identificar as restrições de
operação e de desenvolvimento do
sistema.
Projeto de sistema
• Projetar uma estrutura de software que atenda à
especificação
• Elaboraçao da arquitetura do sistema com base
nos requistos funcionais e nao funcionais definidos
• Particionamento de requisitos para componentes
de hardware e software
• Definiçao da plataforma de hardware
• Definição dos requisitos da interface, de segurança,
de redes e do desempenho do sistema.
Desenvolvimento de Sistemas

• Codificação do sistema de forma que ele


possa atender os requisitos funcionais
estipulados
• A codificaçao é guiada pelo modelo de
arquitetura definida
• Elaboração de testes unitários
• As atividades de projeto e implementação
são fortemente relacionadas e podem ser
intecaladas.
Validação de software

• Verificação e validação tem a intenção de


mostrar que um sistema está em
conformidade com a sua especificação e
que atende aos requisitos do cliente do.
• Envolve processos de verificação e
revisão, além de testes de sistema.
• Esses testes envolvem a execução do
sistema com casos de teste que são
derivados da especificação de dados reais
a serem processados por ele.
Estágios de teste
• Teste de componente ou unidade
– Os componentes individuais são testados independentemente;
– Esses componentes podem ser funções ou classes de objetos,
ou grupos coerentes dessas entidades.
• Teste de sistema
– Teste de sistema como um todo. O teste das propriedades
emergentes é particularmente importante.
• Teste de aceitação
– Teste com dados do cliente para verificar se o sistema atende
às suas necessidades.
Testes Integrados
• O processo de colocar hardware, software
e pessoas juntas para constituir um
sistema.
• Problemas de interface entre subsistemas
são, em geral, encontrados nesta fase.
Debugging

• São os testes que os programadores


realizam para descobrir defeitos no
software e remove-los.
Instalação de sistemas
• Após a realização, o sistema tem de ser instalado no
ambiente do cliente
– Suposições de ambiente podem estar incorretas;
– Pode haver resistência das pessoas para a introdução de
um novo sistema;
– O sistema tem de coexistir com outros sistemas por algum
tempo;
– Pode haver problemas de instalação física (por exemplo,
problemas de cabeamento);
– O treinamento do operador tem de ser identificado.
Evolução de software
• O software é inerentemente flexível e pode
mudar.
• Como os requisitos mudam durante as
mudanças de circunstâncias de negócio, o
software que apóia o negócio deve também
evoluir e mudar.
• Embora tenha havido uma separação entre
desenvolvimento e evolução (manutenção), isso
é cada vez mais irrelevante à medida que cada
vez menos sistemas são completamente novos.
Evolução de sistema
Participantes do ciclo de vida de um sistema

Analistas
Programadores
Arquitetos
Testers
Analista de Testes
Web Designers
Auditores
Gestor do Projeto
Documentadores
Usuários
Participantes do ciclo de vida de um sistema
Usuários
Operadores
Supervisores (Visão departamental/setorial do sistema.)
Executivos
 Tem iniciativa sobre o projeto.
 Descrevem como as atividades e departamentos se
encaixam na organização: visão global.
 São tipicamente mais interessados nos aspectos
estratégicos de longo prazo e menos preocupados com
problemas operacionais.
Analista de
Sistemas

• Realizar os trabalhos de levantamento de


requisitos junto ao cliente;
• Gerar a documentação pertinente (documento
de visão, casos de uso, especificações técnicas,
diagramas UML);
• Realizar testes integrados do sistema;
• Homologar as entregas junto ao cliente;
• Projeto / Arquitetura de Bancos de Dados .
Requisitos para um analista
• Compreender conceitos abstratos, reorganizá-los
em divisões lógicas e sintetizar soluções de cada
divisão.
• Absorver fatos pertinentes de fontes conflitantes ou
confusas.
• Entender os ambientes do usuário/cliente
• Aplicar elementos de hardware e software aos
requisitos do usuário/cliente
• Comunicar-se bem nas formas oral e escrita
• “Capacidade de ver a floresta por entre as árvores”
C ria tiv id a d e C o n c e n tra ç ã o

In ic ia tiv a
P e rsu a sã o
Analisa e propõe modelos
C o m u n ic a tiv o Reconhece o problema (coleta de dados)
Analista de Sistemas A u to c o n fia n ç a
S im p lic id a d e
A ç ã o C o n c ilia d o r a
C la r e z a d e R a c io c ín io
C la r e z a d e R a c io c ín io
A d m in is tra ç ã o d e E s p írito d e G ru p o
P ro je to s

P e rc e p ç ã o S e n s ib ilid a d e

P e rs is tê n c ia
F le x ib ilid a d e
D e te rm in a ç ã o
Projetista de Sistema (Arquiteto de Software)
•Define os componentes de hardware e software que serão
utilizados para implementar o sistema: aspectos físicos.
•Define os requisitos da interface, de segurança, de redes e do
desempenho do sistema.
•Estruturação de frameworks;
•Analisar e Verificar viabilidade da arquitetura
•Identificação dos mecanismos e elementos de design;
•Definição de soluções, serviços e componentes a serem utilizados
nos projetos;
•Montagem de ambientes para desenvolvimento
•Orientação aos desenvolvedores na utilização dos padrões e
componentes definidos.
Desenvolvedor

• Desenvolver programação de Objetos;


• Codificar a partir de especificações de
programas;
• Preparar a documentação do programa;
• Executar testes unitários;
• Realizar revisões entre pares quando
necessário.
Analista de Testes

• Desenvolver casos e cenários para teste


de programa/componente a partir de
documentação existente;
• Preparar ambiente de Testes;
• Automatização de Testes a partir de
especificações de programas;
• Avaliar os resultados dos testes
realizados.
Tester ou Testador

• Executar e registrar o resultado dos casos


de testes;
• Evidenciar o resultado dos testes;
• Avaliar os resultados dos testes realizados
e encaminhá-los aos desenvolvedores
para correções sempre que necessário.
Gerente de Projeto
• Coordenar a equipe técnica envolvida e ponto focal
com o cliente/usuário
• Gerenciar/orientar as atividades da equipe;
• Medir os indicadores nos processos de trabalho;
• Garantir a boa relação entre a equipe técnica e o
cliente/usuário;
• Gerenciar os trabalhos de forma que o projeto de
sistemas seja concluído no prazo, dentro do orçamento
e atenda aos requisitos definidos pelo cliente/usuário.
• Prover relatórios periódicos de andamento do projeto;
• Administrar conflitos entre as frentes do projeto;
Web Designer

• Interage com os analistas e programadores para criação


das telas do sistema, conforme critérios de usabilidade e
requisitos técnicos
• Define padrões de ergonomia e estética para o sistema
Pontos-chave 1
• O processo de desenvolvimento de sistemas
inclui especificação, projeto, desenvolvimento,
integração e teste. A integração de sistema é
particularmente crítica.
• Fazer software é mais do que desenvolver
programas
Especificação

Desenvolvimento/Testes

Validar/Implantação

Evolução

Você também pode gostar