42
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 Software

Embed Size (px)

DESCRIPTION

Introdução a Engenharia de Software.

Citation preview

Page 1: Engenharia de Software

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.

Page 2: Engenharia de Software

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, ...)

Page 3: Engenharia de Software

Engenharia de Sistemas/Software

Tipos de Software:

• Softwares científicos (Ex: CAD, CAE, CAM...)

• Softwares para a Web

Page 4: Engenharia de Software

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

Page 5: Engenharia de Software

Engenharia de Sistemas/Software

Uma classificação:

• Software Proprietário

• Software Livre

Page 6: Engenharia de Software

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

Page 7: Engenharia de Software

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;

Page 8: Engenharia de Software

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.

Page 9: Engenharia de Software

Engenharia de Sistemas/Software

Outra classificação:

• Software Básico

• Software Utilitário

• Software Aplicativo

• Software para Programação

Page 10: Engenharia de Software

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

Page 11: Engenharia de Software

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.

Page 12: Engenharia de Software

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;

Page 13: Engenharia de Software

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;

Page 14: Engenharia de Software

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;

Page 15: Engenharia de Software

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;

Page 16: Engenharia de Software

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;

Page 17: Engenharia de Software

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;

Page 18: Engenharia de Software

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

Page 19: Engenharia de Software

Engenharia de Sistemas/Software Modelo Cascata (Waterfall)

• Este é o modelo mais antigo mas ainda o mais usado;

• Segue uma sequência linear;

Page 20: Engenharia de Software

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

Page 21: Engenharia de Software

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

Page 22: Engenharia de Software

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

Page 23: Engenharia de Software

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

Page 24: Engenharia de Software

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

Page 25: Engenharia de Software

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

Page 26: Engenharia de Software

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;

Page 27: Engenharia de Software

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;

Page 28: Engenharia de Software

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;

Page 29: Engenharia de Software

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;

Page 30: Engenharia de Software

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;

Page 31: Engenharia de Software

Engenharia de Sistemas/Software

Modelo Espiral

Page 32: Engenharia de Software

Engenharia de Sistemas/Software

Modelo Espiral

Vantagens:

• Possibilidade de melhorar o sistema a cada iteração;

• Diminui manutenção;

Page 33: Engenharia de Software

Engenharia de Sistemas/Software

Modelo Espiral

Desvantagens:

• Modelo relativamente novo;

• Modelo mais complexo;

Page 34: Engenharia de Software

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;

Page 35: Engenharia de Software

Engenharia de Sistemas/Software

Modelo Incremental

Page 36: Engenharia de Software

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

Page 37: Engenharia de Software

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

Page 38: Engenharia de Software

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;

Page 39: Engenharia de Software

Engenharia de Sistemas/Software

Page 40: Engenharia de 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;

Page 41: Engenharia de Software

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;

Page 42: Engenharia de Software

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