Escolar Documentos
Profissional Documentos
Cultura Documentos
3
Software e a Sociedade Atual
4
Mercado de Software
Mercado Mundial
→ Em 2008: US$ 300 Bi
→ Em 2013: US$ 450 Bi
Mercado Brasileiro
→ 2010: US$ 5,5 Bi (cerca de 1% do PIB)
→ Mais de 8 mil empresas
• Custos de sw em PCs são maiores que os de hw
• Custos de sw e eletrônicos em carros chegam a 80%
Não há engenheiros suficientes para a demanda
5
Para que serve Software?
6
Como criar Software?
Alternativas para criar software
→ Construir a partir do “zero”
• A forma mais comum
→ Reutilizar, configurar e adaptar componentes genéricos
• Sw ainda não pode ser criado somente pela integração de
componentes predefinidos, validados e facilmente disponíveis
Para criar um novo produto de software é preciso
→ Processo – orientando minimamente o trabalho da equipe
→ Pessoas competentes – o maior custo da indústria de sw
• Mão-de-Obra qualificada é escassa no mercado
→ Projeto – gerenciar a complexidade do trabalho e do produto
Os “4 Ps” da Engenharia de Software
7
Planejamento X Improviso
Para atingir um objetivo há duas abordagens
extremas
→ Processo totalmente Planejado
• Planejamento sistemático, análise de riscos, estimativas,
avaliação de alternativas, monitoramento e controle
→ Processo totalmente Improvisado
• Decisões instintivas e imediatas, baseadas em sentimentos,
usando a primeira alternativa que surge, sem pensar nos
próximos passos, sem analisar riscos ou viabilidade
→ Há uma ampla gama de processos entre esses extremos
8
Crise de Software
9
Evolução da Crise de Software
11
Caso real: Sistema de Bagagens
Aeroporto de Denver
Objetivo: despacho correto e rápido
→ Pouso simultâneo de três aviões , 20 cias aéreas
• 29 km de esteiras, 56 leitores de código de barra , 100
computadores, 5.000 sensores, 400 receptores de rádio
Inauguração prevista: Out/1993
→ Contrato: US$ 234 Mi; Custo do atraso: US$ 1 Mi/dia
Realização da inauguração: Fev/1995
→ Com um sistema provisório!
• Custo do sistema provisório: US$ 63 Mi
12
Mais exemplos reais de falha em sw
Vôo 965 American Airlines
→ 1995: Colisão matou 159 pessoas Foguete Ariane-5
• Mudança na IHC causou erro de rota → 1996: usou código legado do
McDonalds Ariane-4
→ 1999: Projeto de sw com • Erro de conversão (float p/ int)
orçamento de US$ 1 bilhão causou desvio de rota e
autodestruição com 37s de voo;
• Cancelado em 2002; Custo: US$ 170 Mi Custo: US$ 300 Mi
FBI Ford Motors
→ 2001: base de conhecimento → 2000: Projeto para substituir
sobre suspeitos de terrorismo sw legado
• Cancelado em 2005; Custo US$ 170 Mi: • Cancelado em 2004; Custo US$ 200
“not even close to having a working Mi acima do orçamento: “new
system” system slower than the legacy”
13
Por quê Projetos de Software falham?
Por uso de processos inadequados
→ Estimativa de prazos não realistas
→ Esforço honestamente subestimado
→ Mudanças descontroladas de requisitos
→ Riscos não contingenciados
→ Dificuldades técnicas não previstas
→ Falhas na comunicação da equipe
→ Falta de gerência no projeto
→ Problemas complexos com propriedades emergentes
14
Terminologia e Conceitos
ISO/IEC/IEEE 24765:2017
Systems and Software Engineering –
Vocabulary
15
Software
1. programas de computador, procedimentos e
possivelmente documentação e dados associados
pertinentes à operação de um sistema de computador
2. todos ou parte dos programas, procedimentos, regras e
documentação associada de um sistema de processamento
de informações
3. programa ou conjunto de programas usados para fazer
funcionar um computador
Observações
→ Inclui software executável e não executável
→ São exemplos de software: fontes de caracteres, gráficos,
gravações de áudio e vídeo, modelos, dicionários, documentos e
estruturas de dados, tais como registros de banco de dados
16
Programa de Computador
17
Sistema
1. combinação de elementos interativos organizados
para atingir objetivos declarados
2. produto de um processo de aquisição que é
entregue ao usuário
3. algo de interesse como um todo ou como composto
por partes
4. combinação interativa de elementos para atingir um
objetivo definido
5. conjunto de elementos inter-relacionados ou
interativos
18
Observações sobre Sistema
Um sistema pode ser produto ou serviços
→ O significado pode ser esclarecido por um substantivo
associativo, por exemplo, sistema de aeronave
A palavra "sistema" pode ser substituída por um
sinônimo dentro do contexto, por exemplo, aeronave
→ Embora isso obscureça a perspectiva de sistema
Um sistema inclui equipamentos, instalações,
materiais, programas, firmware, documentação,
serviços e pessoal
→ Necessários para uso autossuficiente no ambiente alvo
19
Processo
1. conjunto de atividades inter-relacionadas ou interativas que
transformam entradas em saídas
2. curso predeterminado de eventos definidos por seu propósito ou
por seu efeito, obtido sob determinadas condições
3. realização de operações em dados
4. coleção de passos ocorrendo de uma maneira prescrita
5. em processamento de dados, o curso predeterminado de eventos
que ocorrem durante a execução de (parte de) um programa
6. unidade executável gerenciada por um escalonador de SO
7. sistema de atividades que usa recursos para transformar entradas
em saídas
8. uma série sistemática de atividades direcionadas para causar um
resultado final de tal forma que uma ou mais entradas serão
utilizadas para criar uma ou mais saídas
9. conjunto de atividades inter-relacionadas ou interativas que usam
entradas para entregar um resultado pretendido
20
Observações sobre Processo
Um processo pode ter vários pontos de início e de término
A maneira prescrita pode ser uma sequência parcialmente ordenada
Uma especificação de processo pode ser uma especificação de fluxo
de trabalho (workflow)
Uma especificação corporativa pode definir tipos de processos e
modelos de processos
Um processo pode ser visto como uma instanciação específica de
processos de ciclo de vida, adaptada dentro de um modelo de ciclo
de vida, para criar o serviço ou produto para os requisitos e contexto
específicos de um projeto
Quando uma definição de processo é especificada como um
resultado, o entregável resultante tipicamente especifica entradas e
saídas, e fornece uma descrição geral de atividades esperadas
21
Atividade
1. conjunto coeso de tarefas de um processo
2. parte distinta e programada do trabalho em um projeto
23
Modelo
→ 1. representação de um processo, dispositivo ou conceito do mundo real
→ 2. representação de algo que suprime certos aspectos do sujeito
modelado
→ 3. interpretação de uma teoria para a qual todos os axiomas da teoria
são verdadeiros
→ 4. coleção de instâncias relacionadas de metaobjetos, representando
(descrevendo ou prescrevendo) um sistema de informação ou um
produto de software
5. abstração semanticamente fechada de um sistema ou uma descrição
completa de um sistema de uma perspectiva particular
→ 6. sistema de postulados, declarações de valor e regras de inferência
apresentadas como uma descrição de um estado de coisas (universo de
discurso)
→ 7. representação de um sistema de interesse, da perspectiva de um
conjunto de conceitos relacionados
24
Método e Procedimento
Método (Method)
→ 1. implementação de uma operação
Procedimento (Procedure)
25
Metodologia
1. um sistema de práticas, técnicas, procedimentos e regras
usadas por aqueles que trabalham em uma disciplina
2. especificação do processo a ser seguido e dos produtos de
trabalho a serem utilizados e gerados, mais a consideração de
pessoas e ferramentas envolvidas, durante um esforço de
desenvolvimento
Elementos de metodologia
→ Uma rede de conceitos abstratos e inter-relacionados que inclui a
especificação de tarefas, atividades, técnicas, modelos,
documentos, linguagens, notações e produtos de trabalho que
podem ou devem ser usados ou gerados ao aplicar a metodologia
• Elementos típicos: Escrita de Código (tarefas), Modelagem Conceitual
(atividades), Pseudo-Código (notações), Diagrama de Classes (produtos)
26
Definições Complementares
27
Processo de Software:
Definição adotada neste curso
Processo (Executado) de software é o conjunto de ações
executadas para fazer um trabalho que envolve software
→ É aquilo que é efetivamente realizado em relação ao sw
• Desenvolvimento, aquisição, operação, depuração, manutenção ...
Descrição de processo de sw (Processo Definido de sw) é
uma especificação do trabalho que envolve sw
→ É aquilo que orienta execução do trabalho que envolve sw
• Define, minimamente, nome do processo, propósito e pelo menos
um resultado e uma atividade - ISO/IEC/IEEE 12207 Process
Reference Model (PRM)
Processo definido é uma abstração de processo executado
28
Variações de
Processo de Software Definido
35
Software
e
Sistema
Engenharia de Sistemas
e Engenharia de Software
Software é um
Sistema de Sistemas
Sw é um sistema de elementos inter-relacionados
que cooperam para especificar uma forma de atingir
um objetivo (resolver um problema computacional)
→ É mais do que a junção de suas especificações isoladas
Cada elemento do sw pode ser um subsistema
→ Operação independente, mas coordenada
→ Influencia e é influenciado pelos demais elementos
Sw é uma hierarquia de sistemas
→ Todo sw é um sistema complexo que faz parte de outro
sistema complexo
37
Sistemas de Software
Sw é um sistema de elementos (especificações)
• que cooperam para realizar os requisitos do software
Sw é um elemento de um sistema maior
• Ambiente Operacional: plataforma de Hw e Sw, redes, BDs, ...
• Pessoas: usuários diretos, partes interessadas, técnicos, ...
• Regras: procedimentos, leis, políticas, normas, ...
O elemento sw interage com outros elementos do seu SI
• Por meio de entrada e saída de dados
Um sistema de sw envolve dois domínios conceituais
→ Domínio do Problema
• Conceitos Operacionais e Requisitos do Problema
→ Domínio da Solução
• Arquitetura, Design, Construção e Restrições da Solução
38
SI – Sistema de Informação
IEEE 24765
1. sistema de processamento de dados associado a recursos
organizacionais (RH, técnicos, financeiros) que fornece e distribui
informações
2. todas as funções (entrada, saída, transporte, processamento e
armazenamento) de uma aplicação, BDs, instalações técnicas e
procedimentos manuais que apoiam processos de negócios
3. um ou mais sistemas de computador e de comunicação, juntamente
com recursos organizacionais que fornece e distribui informações
SI pode conter Sistema de Sw Baseado em Computador (CBSS)
40
Engenharia de Sistemas
Ciência que especifica, projeta, implementa, valida
e implanta sistemas complexos
→ Define a arquitetura e distribui responsabilidades
entre os elementos de um sistema
• Visão Top-Down: especifica como cada elemento deve
interagir com todos os demais elementos do sistema
Guide to the Systems Engineering Body of Knowledge (SEBoK)
v1.9. BKCASE, 2017
41
Lidando com a Complexidade de SI
Um SI é uma hierarquia de elementos
→ Sw é um deles
• SI é um sistema de sistemas de sistemas ...
Engenharia de Sistemas deve começar com uma clara
compreensão do contexto
→ Definir um universo de interesse
• Visão do mundo ou do domínio do problema
→ Progressivamente o foco se estreita
• Até que os detalhes técnicos sejam compreendidos
Erro clássico: focar no domínio da solução (sw) antes de
obter uma compreensão adequada do domínio do problema
→ Solução mais rápida e eficiente para o problema errado!
42
Sistema de Informação e Software
Domínio do Visão do negócio
Problema Mundo Real Supermercado: compras,
vendas, estoque, ...
Elementos Visão do subsistema de negócio
de sistema
vendas
43
Ciclo de Vida de um SI
A Engenharia de Sistemas
Definição de define os elementos do SI: Descontinuação
Requisitos hardware, software, pessoas, do Sistema
do Sistema
recursos, processos e dados
Validação,
Construção Instalação e Uso
de Subsistemas do Sistema
A Engenharia de Software
cuida do subsistema software Integração
O Ciclo de Vida do Sw
do SI e de suas interfaces com do Sistema especializa o Ciclo de
os demais componentes do SI Vida do SI
44
Processos da Engenharia
de Sistemas
Definição de Requisitos do Sistema
→ Quem são os stakeholders?
• Quais são suas necessidades e expectativas?
→ O quê o sistema deve fazer, e com que qualidade?
• Quais são as restrições para o sistema?
Design do Sistema
→ Particionamento de requisitos, identificação de
subsistemas, atribuição de requisitos a subsistemas
• Especificação de cada subsistema e da sua interface
45
Construção, Integração e Validação do Sistema
46
Instalação, Uso, Evolução e
Retirada do Sistema
Implantação ocorre após integração
→ Conversão de dados, Instalação, Migração
Sustentação ocorre após implantação
→ Operação, Suporte e Manutenção Corretiva
Evolução do Sistema
→ Sistemas bem sucedidos mudam ao longo do tempo
• Manutenibilidade é essencial
Descontinuação do Sistema
→ Planejamento e realização da aposentadoria
47