Upload
brunomacedoassad
View
5
Download
0
Embed Size (px)
DESCRIPTION
Introdução a Engenharia de Software.
Citation preview
Engenharia de Sistemas/Software
Importância do Software:
• A economia de todos países dependem do uso de software (Bovespa, NASDAQ...)
• O emprego de software está se expandindo de forma crescente (celulares, carros, eletrodomésticos, casa inteligente...)
• Cada vez mais, o controle dos processos tem sido feito por software
• Atualmente, os custos de software superam os custos de hardware
• A manutenção de software é onde se tem os maiores gastos, principalmente em sistemas de vida longa.
Engenharia de Sistemas/Software
Tipos de Software:
• Softwares de tempo real (Ex: controle de tráfego, injeção eletrônica, ...)
• Softwares embarcados (Ex: roteador, carro, ...)
Engenharia de Sistemas/Software
Tipos de Software:
• Softwares científicos (Ex: CAD, CAE, CAM...)
• Softwares para a Web
Engenharia de Sistemas/Software
Tipos de Software:
• Softwares legados: os que já existem na empresa e ficarão ativos (ou não) na implantação de novos softwares
Engenharia de Sistemas/Software
Uma classificação:
• Software Proprietário
• Software Livre
Engenharia de Sistemas/Software
Software Livre
Liberdade para usar, modificar e distribuir
• Copyleft: autor abre mão dos direitos
• Não necessariamente é gratuito
• Negócio: indireto (venda de treinamento, suporte, alavancagemde vendas para outros produtos, etc.)
Todo e qualquer programa de computador cuja licença de direito de autor conceda ao utilizados as seguintes 4 liberdades
Engenharia de Sistemas/Software Software Livre
Todo e qualquer programa de computador cuja licença de direito de autor conceda ao utilizados as seguintes 4 liberdades:
Liberdade 0: A Liberdade para executar o software, seja qual for a suafinalidade;
Liberdade 1: A liberdade de estudar como o programa funciona, eadaptá-lo para as suas necessidades. Acesso ao código-fonte é um pré-requisito para esta liberdade;
Liberdade 2: A liberdade de redistribuir cópias disponibilizando paraquem desejar;
Liberdade 3: A liberdade de aperfeiçoar o programa, e liberar os seusaperfeiçoamentos, de modo que toda a comunidade se beneficie.Acesso ao código-fonte é um pré-requisito para esta liberdade;
Engenharia de Sistemas/Software Software Livre
Vantagens:
• Não se fica refém de tecnologia proprietária;
• Independência de fornecedor único;
• Desembolso inicial próximo de zero;
Desvantagens
• Interface de usuário não é uniforme nos aplicativos;
• Instalação e configuração pode ser difícil; e
• Mão de obra escassa e/ou custosa para desenvolvimento e/ousuporte.
Engenharia de Sistemas/Software
Outra classificação:
• Software Básico
• Software Utilitário
• Software Aplicativo
• Software para Programação
Engenharia de Sistemas/Software
Carreiras na área de TI
• Administrador de Banco de Dados• Administrador de Redes• Analista de Sistemas• Analista de Suporte• Analista de Segurança• Analista de Negócios• Programador
Engenharia de Sistemas/Software
Carreiras na área de TI
Administrador de Banco de DadosAtividades:• Gerencia o ambiente do Banco de Dados: Performance, Backup
(recuperabilidade de dados) e integridade dos dados;
• Controle de acesso aos dados – perfis de usuários: quem pode acessar, o que pode acessar e quando possa acessar;
• Garantir o acesso ao banco de dados no maior tempo possível;
• Auxiliar a equipe de desenvolvimento e a equipe de testes a maximizar o uso e desempenho do banco de dados.
Engenharia de Sistemas/Software Carreiras na área de TI
Administrador de RedesAtividades:• Instalação e ampliação da rede local e configuração de gateways
• Controlar e acompanhar a performance da rede local e sub-redes;
• Manter atualizado os dados relativos aos servidores de rede (aplicações, dados, DNS) de outros equipamentos da rede local (switches e firewalls);
• Garantir a integridade e acesso adequado das informações sob seu gerenciamento,;
• Verificar ocorrências de infrações de segurança;
Engenharia de Sistemas/Software
Carreiras na área de TI
Analista de SistemasAtividades:• Administração do fluxo de informações geradas e distribuídas por
redes de computadores dentro de uma organização;• Planejamento e organização do processamento,
armazenamento, recuperação e disponibilidade das informações;• Suporte aos usuários de seus sistemas;• Gestão de projetos;• Levantamento de requisitos, análise, especificação, projeto do
sistema, programação, testes, homologação, implantação e acompanhamento dos sistemas solicitados por seus usuários;
Engenharia de Sistemas/Software
Carreiras na área de TI
Analista de SuporteAtividades:
• Instalar e manter os diversos equipamentos de TI junto aos usuários;
• Instalar e manter atualizados nas estações de trabalho: sistemas operacionais; utilitários (antivírus,...) e softwares homologados da área de TI;
• Instalar e manter a comunicação digital (correio eletrônico, WEB, FTP, VPN, etc.);
• Suporte aos usuários da empresa ou organização;
Engenharia de Sistemas/Software
Carreiras na área de TI
Analista de SegurançaAtividades:• Projeto e manutenção do esquema de segurança da rede,
equipamentos (acesso físico) e dos dados (acesso não-autorizado) das estações de trabalho e servidores;
• Propõe, implementa e monitora a política de segurança dos recursos de TI;
• Configuração, monitoramento e manutenção da segurança de rede e tráfego de dados;
• Conhecimento de protocolos típicos de redes (TCP/IP), inter-redes (Frame Relay, X25, ATM, etc.) e configuração de firewalls;
Engenharia de Sistemas/Software
Carreiras na área de TI
• Analista de NegóciosAtividades:• Colabora na orientação, objetivos e macroprocessos de negócio;
• Analisa aspectos técnicos dos requisitos e especificações para satisfazer às necessidades de negócio;
• Define, modela e detalha processos, procedimentos, etapas e passos
• Define e analisa a implementação do modelo de negócio por meio de políticas e diretrizes da organização;
Engenharia de Sistemas/Software
Carreiras na área de TI
ProgramadorAtividades:• Entender as especificações (projeto lógico e físico) do sistema,
interagindo com o analista de sistemas;
• Codificar as especificações em linguagem específica;
• Auxiliar nos testes do sistema junto com o analista responsável e auxiliar nas possíveis adequações do sistema;
• Promover, junto com o analista, a eficiência do sistema;
Engenharia de Sistemas/Software
Modelos de Desenvolvimento ou Ciclo de Vida de um Software:
• Modelo Clássico (ou em Cascata)
• Prototipagem (ou Prototipação)
• Modelo Espiral
• Modelo Incremental
• Modelo RAD
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
• Este é o modelo mais antigo mas ainda o mais usado;
• Segue uma sequência linear;
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Engenharia de Sistemas:
• Quem realiza: Diretoria TI e Diretorias Usuárias• Visão macro do projeto:
• Sistema novo ou substituição de sistema?• Necessidades de Hardware:
• Rede: novos pontos, servidor, storage, switches, pontos de wi-fi...
• Estações de trabalho: micros, impressoras, multifuncionais, coletores de dados, ...
• Necessidades de Software:• Banco de Dados • Softwares para servidor e estações de trabalho
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Análise:
• Quem realiza: Gerente de Projeto e Analistas Negócios/Sistemas
• Levantamento de requisitos
• Domínio da informação:
• Quais as áreas usuárias? (internas e externas)• Com quais sistemas atuais o novo sistema deverá
interagir?
• Desempenho (SLA) e interfaces exigidos
• Informações documentadas e revistas com o cliente
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Projeto:
• Quem realiza: Analista de Sistemas, DBA, Gerente de Projetos
• Modelo Lógico :
• Fluxos: Diagrama de Contexto, DFD, DER, UML ...
• Modelagem completa de procedimentos e dados
• Verificação se todos os requisitos previstos, na fase anterior, foram atendidos
• Informações documentadas e revistas com o cliente
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Codificação:
• Quem realiza: Analistas de Sistemas e Programadores
• Quando o Analista não for o Programador, ambos tem de interagir constantemente
• Pode envolver uma fábrica de software
• Quanto melhor for a especificação nas fases anteriores (Análise e Projeto), mais eficaz e rápida será esta fase
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Testes:
• Quem realiza: Analistas e Programadores envolvendo os usuários
• Em muitos casos existe o momento de homologação, quando se registra formalmente o aceite por parte dos usuários junto aos desenvolvedores
• Atualmente existem metodologias específicas para testes de sistemas
Engenharia de Sistemas/Software Modelo Cascata (Waterfall)
Manutenção:
• Quem realiza: área de TI (Analistas e Programadores )
• Normalmente todo software sofre manutenção, depois que for entregue ao cliente (usuário interno ou externo)
• Razões de manutenção:
• Erros encontrados
• Mudanças internas: novo sistema operacional, novos periféricos (coletores) ou mudanças funcionais na empresa que exijam novas funcionalidades
Engenharia de Sistemas/Software Modelo Cascata
Vantagens:• Oferece uma maneira de tornar o processo mais visível;
• Facilita o planejamento e gerenciamento;
Desvantagens:• Projetos reais raramente seguem o fluxo
sequencial;• Difícil para o cliente especificar todos os requisitos
num projeto novo• Os requisitos se alteram durante o projeto;
Engenharia de Sistemas/Software
Prototipação
• O objetivo é entender os requisitos do usuário;• Possibilita que o desenvolvedor crie um modelo
(protótipo)do software que deve ser construído, podendo ser no papel ou executável;
• O usuário pode ter uma ideia próxima do que vai ser o sistema quando estiver pronto;
Engenharia de Sistemas/Software
Prototipação
Vantagens:
• Protótipos contribuem para melhorar especificação dos requisitos;
• Partes do protótipo podem vir a ser usadas no desenvolvimento do sistema final;
Engenharia de Sistemas/Software
Prototipação
Desvantagens:
• Custo elevado;
• Pode causar atraso no desenvolvimento, pois a cada novo protótipo o usuário pode querer mais aprimoramentos;
Engenharia de Sistemas/Software
Modelo Espiral
• Foi criado visando abranger as melhores características do modelo clássico e da prototipagem;
• Dividido em quatro fases: planejamento, análise dos riscos, engenharia e avaliação do cliente;
• Essas fases são repetidas varias vezes;
Engenharia de Sistemas/Software
Modelo Espiral
Engenharia de Sistemas/Software
Modelo Espiral
Vantagens:
• Possibilidade de melhorar o sistema a cada iteração;
• Diminui manutenção;
Engenharia de Sistemas/Software
Modelo Espiral
Desvantagens:
• Modelo relativamente novo;
• Modelo mais complexo;
Engenharia de Sistemas/Software
Modelo Incremental
• Combinação entre os modelos linear e prototipação;
• O desenvolvimento é dividido em etapas, denominadas “incrementos”;
• Em cada incremento é realizado todo o ciclo do desenvolvimento de software (análise, projeto, codificação e teste);
• Cada etapa produz um sistema totalmente funcional;
Engenharia de Sistemas/Software
Modelo Incremental
Engenharia de Sistemas/Software
Modelo Incremental
Vantagens:
• Existe um risco menor de fracasso do software.;
• Reduz a chance de mudança de requisito;
• Redução dos riscos envolvendo custos a um único incremento
Engenharia de Sistemas/Software
Modelo Incremental
Desvantagens:
• Dificuldade de gerenciamento porque as fases do ciclo podem estar ocorrendo de forma simultânea;
• O software pode ser entregue ao usuário tarde demais
Engenharia de Sistemas/Software
Modelo RAD
• RAD ( Rapid Application Development) é um modelo enfatiza um ciclo de desenvolvimento curto;
• Construção baseada em componentes;• O modelo RAD é usado principalmente para aplicações de
sistema de informação;
Engenharia de Sistemas/Software
Engenharia de Sistemas/Software
Modelo RAD
Vantagens
• Baseado em componentes (quanto menos se programa, menos se erra);
• Pode ser desenvolvido em várias equipes;
• Redução do tempo de desenvolvimento;
Engenharia de Sistemas/Software
Modelo RAD
Desvantagens
• É necessário desenvolvedor e cliente comprometidos;
• Não é apropriado para qualquer aplicação;
• A reutilização de componentes não garante a eficiência do código;
Engenharia de Sistemas/Software
Para a escolha de um modelo de processo de desenvolvimento de software:
• Considerar que cada projeto tem características diferentes
• A natureza do projeto e da aplicação
• Métodos e ferramentas a serem utilizados
• Controles e produtos a serem entregues