Você está na página 1de 47

Processos de Software

Instituto de Informática – UFG


Prof. Juliano Lopes de Oliveira
2018 – 2º Semestre
Agenda – Aula 1

 Plano da disciplina  Motivação


→ PPC de Engenharia de Sw → Importância de processos de
→ Ementa, objetivos, relações software
com outras disciplinas  Terminologia e conceitos
→ Programa, cronograma, → Sistema, software e processo
datas de provas, bibliografia → Processo, atividade e tarefa
→ Critérios para avaliação e → Métodos e modelos de
verificação de presença Engenharia de Software
→ Comunicação, postura ética → Modelos de processo e
 Disponível no SIGAA modelos de qualidade de
processo de software
2
Importância de Software

Por que processos de software


precisam ser compreendidos

3
Software e a Sociedade Atual

 A economia mundial depende de software


→ Todo sistema importante é controlado por sw
• Sistemas financeiros, agropecuários, industriais, de
transportes, de segurança, ...
→ 98% dos processadores não estão em computadores
→ Um celular típico contém milhões de linhas de código
• só o Android tem mais de 1 milhão
→ Carros e aviões contêm dezenas de milhões de LOC

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?

→ Obter capacidades anteriormente impossíveis


• Rapidez, precisão, percepção
→ Substituir processos manuais e repetitivos
• Reduzir custos e erros
• Aumentar produtividade
• Melhorar a tomada de decisões
→ Interagir e comunicar remotamente
• Diversão e entretenimento
• Aprendizagem e capacitação

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

 1º uso “oficial” do termo engenharia de software


→ Conferências patrocinadas pela OTAN: 1968/1969
• Propósito: solução para a “crise de software”
 “The computer industry has a great deal of trouble in
producing large and complex software systems”
→ Problemas típicos
• estouro de cronograma e orçamento dos projetos
• sistemas não confiáveis e com funções insatisfatórias
• grande dificuldade de manutenção

9
Evolução da Crise de Software

Resultados de projetos de software


Fonte: Extreme CHAOS (2001) – Standish Group
10
A Crise de Software foi Resolvida?

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

 1. combinação de instruções de computador e


definições de dados que permitem que o
hardware de computador execute funções
computacionais
 2. uma unidade sintática que esteja em
conformidade com as regras de uma linguagem
de programação específica e que seja composta
de declarações e instruções ou instruções
necessárias para uma determinada função

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

 3. ordem para o sistema em teste executar um algoritmo e produzir


saídas específicas a partir de entradas específicas e dados
armazenados
 4. trabalho a ser executado, incluindo dados de entrada e de saída

 5. conjunto coeso de tarefas de um processo, que transforma entradas


em saídas
 6. elemento de trabalho realizado na implementação de um processo

 7. conjunto de ações que consome tempo e recursos e cuja execução é


necessária para realizar resultados
 8. grafo direcionado de ações em que a ocorrência de uma ação é
possível pela ocorrência das precedentes
 Observações

→ Atividades têm duração, custo, requisitos de recursos e são divididas em


tarefas
22
Tarefa
 1. ação necessária, recomendada ou permissível, destinada a
contribuir para a obtenção de um ou mais resultados de um processo
 2. em projeto de software, um componente de software que pode
operar em paralelo com outros componentes de software
 3. atividades necessárias para alcançar uma meta

 4. objeto concorrente com seu próprio thread de controle

 5. sequência de instruções tratadas como uma unidade básica de


trabalho pelo programa supervisor de um sistema operacional
 6. menor unidade de trabalho sujeita a prestação de contas pela
gerência; uma atribuição de trabalho bem definida para um ou mais
membros de um projeto
 7. conjunto ou sequência de atividades necessárias para atingir uma
dada meta
 Observações

→ Tarefas relacionadas são geralmente agrupadas para formar atividades

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

→ 2. define como combinar valores de propriedades para gerar um resultado

→ 3. código que é executado para executar um serviço

 Procedimento (Procedure)

→ 1. série ordenada de passos para executar um processo, atividade ou tarefa

→ 2. parte nomeada de um programa que executa uma ação específica

→ 3. rotina que não retorna um valor

→ 4. maneira de realizar uma atividade ou processo

→ 5. sequência de passos para atingir um resultado ou desempenho consistente


ao executar um processo
 Observações

→ Um procedimento define um modo efetivo e aprovado de conduzir processos

• Detalha as ações permissíveis ou recomendadas para alcançar resultados


• Define o que precisa ser feito, por quem e em que ordem
• É uma especificação mais detalhada de que a de um processo

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

Juntando e aprofundando os conceitos de


Sistema, Software e Processo

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

 Processos variam em espectros contínuos


 Quanto ao formalismo da definição
• Processo Informal: sem registros ou descrições observáveis
• Processo Formal: usa linguagem com semântica exata e precisa
→ Quanto ao nível de detalhamento da especificação
• Processo Abstrato/Resumido: define o que deve ser produzido
• Processo Detalhado: especifica como o trabalho deve ser feito
 É uma Metodologia descrevendo práticas, técnicas, procedimentos,
regras, pessoas e ferramentas para executar o trabalho, produtos a
serem utilizados e resultados gerados para cumprir um dado propósito
29
Software de interesse para a
Engenharia de Software

 Um programa (objeto) é um software minimal Frederick


Brooks Jr
• Pode ser executado em alguma máquina alvo
 Um programa-produto é um programa documentado
• Compreendido, modificado e testado sem auxílio do autor
 Um sistema de programas-produto é um conjunto de
programas-produto
• Projetados para cooperar e serem mutuamente consistentes
 Processos de Engenharia de Software focam na
construção e sustentação de sistemas de programas-
produto
30
Definição adotada neste curso:
Software
 Software é um sistema de especificações que define, para
um dado problema computacional, uma solução
executável em pelo menos uma máquina alvo
 Cada especificação é um elemento do software
→ Há três tipos de elementos notáveis
• Programas: código fonte (algoritmos) e objeto (executáveis)
• Documentos: construção, manutenção, operação, suporte
• Dados: inicialização, configuração e customização
→ Código objeto é o único elemento obrigatório
• Distingue sw de outros tipos de especificação, determinando o
processador alvo
31
Características dos
Elementos de Software
 Elemento de sw é um termo com muitos sinônimos
• Componente, item (de configuração), artefato, produto de trabalho, ...
 Um sw contém uma variedade de elementos
• Programas, testes, visões arquiteturais, modelos de design, módulos,
pacotes, esquemas, arquivos de configuração, requisitos, ...
 Cada elemento deve ter um propósito bem definido
• Ajuda a executar a solução ou
• a compreender a solução ou o problema
 Um elemento é trabalhado por meio de processos de sw
• Construção, implantação, operação, manutenção e descarte
 Um elemento de sw pode ser um sistema
• Com seu próprio ciclo de vida, independente do sw que o contém
Há inúmeros
Tipos de Software
 Sw básico (de sistema)
→ Serve de plataforma para  Sw embarcado (embutido)
outros softwares → Contido em produtos e sistemas,
implementa e controla
 Sw aplicativo características e funções para o
→ Satisfaz uma necessidade de usuário final ou para o próprio
sistema
negócio específica
 Sw de IA
 Sw científico (de → Resolve problemas não
engenharia) determinísticos e que não são
tratados diretamente por análise e
→ Apoia atividades técnicas de computação
design, simulação, cálculos  Sw Web, ERP, Apps, games ...
33
Qual a natureza do Sw?
 Software tem uma essência tríplice
→ Sw é um produto de engenharia
• Porém, é imaterial, intangível e invisível
 É possível observar alguns aspectos, mas não todo o sw
→ Sw é um serviço de processamento de dados
• A utilidade de sw está na sua utilização
 Não agrega valor ao ser replicado ou estocado
→ Sw é um processo definido e detalhado
• Define como tratar eventos, restrições, dependências e mudanças
 Desenvolver sw é especificar um processo sobre como fazer algo
 Sw é especificado, não manufaturado
→ Construção e design têm a mesma natureza!
• Isso torna sw diferente de qualquer outro produto de engenharia
34
Características de Software
 Sw é uma entidade lógica (conceitual)
→ Não está sujeito a leis da Física
• É imaterial e não se desgasta com o tempo
→ É inerentemente complexo
• Especificado com precisão binária
 Para tratar enormes volumes de eventos, dados, condições e ações
→ É um conceito abstrato
• Não possui representações gráficas que permitam analogia com
alguma realidade concreta
→ É flexível a mudanças
• E por isso é sujeito a modificações para se compatibilizar com os
demais elementos do sistema

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)

→ Arranjo de elementos (sw, hw, dados, regras, pessoas) de diferentes


naturezas organizados para atingir, via processamento de dados, uma
meta predefinida
 1. CBSS is “a software system running on a computer. It includes
hardware and all system and application software which is necessary
for realizing data processing functions required by its users”
39
Tipos de Sistema de Informação
 Sistema Técnico
→ CBSS = hw + sw
• carro, TV, celular, avião, ATM, semáforos ...
 Sistema Sociotécnico
→ SI = CBSS + pessoas + procedimentos + contexto
• Sistema complexo e não-determinístico
 Tem propriedades emergentes
 Envolve conhecimento sobre como usar o sistema

 Influenciado pelo contexto social e individual

• Satisfazer objetivos não depende apenas do 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

Visão do elemento software


controle de caixa
Engenharia
de Software
Visão detalhada do elemento
(interface com leitora ótica)
Domínio da
Solução

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

Design do A Engenharia de Sistemas


Sistema e Evolução
aloca requisitos ao Software e
Particionamento do Sistema
de Requisitos aos demais elementos

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

 Construção paralela de Subsistemas


• Uso de COTS (Commercial Off-The-Shelf)
• Gestão de configuração: impacto de
mudanças
 Integração de subsistemas
• Garante funcionamento consistente de
todos os subsistemas
• Abordagens Big-bang e Incremental
 Validação do sistema integrado

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

Você também pode gostar