Engenharia de Software I - Aula 24

Preview:

Citation preview

Alessandro Almeida | www.alessandroalmeida.com

Aula 2

Disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até sua manutenção, quando o sistema já está sendo usado.

...todos os aspectos da produção de software...

Não apenas processos “técnicos”, mas também as atividades de gerenciamento de projeto, por exemplo.

Aula 2

5%

45%

47%

3%

9%

43%

45%

3%

0%

5%

10%

15%

20%

25%

30%

35%

40%

45%

50%

Sempre Na maioria das vezes Poucas vezes Nunca

2011

2012

4%

34%

55%

7% 5%

33%

55%

7%

0%

10%

20%

30%

40%

50%

60%

Sempre Na maioria das vezes Poucas vezes Nunca

2011

2012

1%

23%

64%

12%

3%

23%

61%

13%

0%

10%

20%

30%

40%

50%

60%

70%

Sempre Na maioria das vezes Poucas vezes Nunca

2011

2012

0%

15%

74%

11%

2%

16%

69%

13%

0%

10%

20%

30%

40%

50%

60%

70%

80%

Sempre Na maioria das vezes Poucas vezes Nunca

2011

2012

Não cumprimento dos prazos Comunicação Escopo não definido adequadamente Mudanças de escopo constantes Estimativas incorretas Entre outros...

Gerente de Projeto (na vida real)

Agora, a principal motivação para pensarmos em Engenharia de Software:

E na minha empresa, como funcionam os projetos de desenvolvimento ou manutenção

de software?

Enfrentamos problemas com prazo, custo, qualidade, escopo, satisfação do cliente, etc.?

Aulas 3, 4 e 5

O que posso considerar ao definir um processo que atenda minhas demandas de Engenharia

de Software?

Etc... mps.Br

PMBoK

BABoK

SWEBoK

Extreme Programming

SCRUM

RUP

EUP OpenUP

CMMI

Qual é o significado do acrônimo?

Capability Maturity Model Integration®

Fontes: Houaiss e Merriam-Webster

Capability Maturity Model Integration®

1 : the quality or state of being capable 2 : poder de produção, de execução; rendimento máximo 3 : qualidade ou condição de capaz

Fontes: Houaiss e Merriam-Webster

Capability Maturity Model Integration®

1 : the quality or state of being mature 2 : estado, condição (de estrutura, forma, função ou organismo) num estágio adulto; condição de plenitude em arte, saber ou habilidade adquirida 3 : estado ou condição de pleno desenvolvimento

Fontes: Houaiss e Merriam-Webster

Primeiro você torna-se capaz de realizar algo, depois você adquire a maturidade

Sou capaz!

Aprendi, treinei e sei executar...

Possuo maturidade!

Sou capaz e tenho experiência...

Capability Maturity Model Integration®

1 : simplificação da realidade 2 : representação em escala reduzida de objeto, a ser reproduzida em dimensões normais; maquete

Fontes: Houaiss e Merriam-Webster

Compilação de “boas práticas” no processo de diversas empresas de software

Mostra O QUÊ fazer, e não COMO fazer Práticas distribuídas em “áreas de processo”

Área de Processo = PA (Process Area)

Agrupamento de práticas comuns de uma determinada “disciplina”.

Onde fica o “O que fazer?”.

Por exemplo: Project Planning (PP)

Modelos de maturidade mantidos pelo SEI (Software Engineering Institute)

http://www.sei.cmu.edu/cmmi

Abrangem todo ciclo de vida para o desenvolvimento (CMMI-DEV) e operação de software (CMMI-SVC)

Também aborda projetos de aquisição (CMMI-ACQ)

Sponsor:

DoD (U.S. Department of Defense)

Versão 1.3 publicada em novembro de 2010

Para quem não quer gastar...

Para quem quer investir...

CMMI Model

Foundation

CMMI-DEV CMMI-ACQ

CMMI-SVC

Fonte: -http://www.sei.cmu.edu/cmmi/models/CMMI-Services-status.html

Representações

Contínua (Capability Levels)

Por estágio (Maturity Levels)

Exemplo:

Exemplo:

Processos ad hoc Initial

Configuration Management (CM) Measurement and Analysis (MA) Project Monitoring and Control (PMC) Project Planning (PP) Process and Product Quality Assurance (PPQA) Requirements Management (REQM) Supplier Agreement Management (SAM)

Managed

Decision Analysis and Resolution (DAR) Integrated Project Management (IPM) Organizational Process Definition (OPD) Organizational Process Focus (OPF) Organizational Training (OT) Product Integration (PI) Requirements Development (RD) Risk Management (RSKM) Technical Solution (TS) Validation (VAL) Verification (VER)

Defined

Organizational Process Performance (OPP) Quantitative Project Management (QPM) Quantitatively Managed

Causal Analysis and Resolution (CAR) Organizational Innovation and Deployment (OID) Optimizing

Processos ad hoc Initial

Configuration Management (CM) Measurement and Analysis (MA) Work Monitoring and Control (WMC) Work Planning (WP) Process and Product Quality Assurance (PPQA) Requirements Management (REQM) Service Delivery (SD) Supplier Agreement Management (SAM)

Managed

Capacity and Availability Management (CAM) Decision Analysis and Resolution (DAR) Incident Resolution and Prevention (IRP) Integrated Work Management (IWM) Organizational Process Definition (OPD) Organizational Process Focus (OPF) Organizational Training (OT) Risk Management (RSKM) Service Continuity (SCON) Service System Development (SSD) Service System Transition (SST) Strategic Service Management (STSM)

Defined

Organizational Process Performance (OPP) Quantitative Work Management (QWM) Quantitatively Managed

Causal Analysis and Resolution (CAR) Organizational Innovation and Deployment (OID) Optimizing

Processos ad hoc Initial

Acquisition Requirements Development (ARD) Agreement Management (AM) Configuration Management (CM) Measurement and Analysis (MA) Project Monitoring and Control (PMC) Project Planning (PP) Process and Product Quality Assurance (PPQA) Requirements Management (REQM) Solicitation and Supplier Agreement Development (SSAD)

Managed

Acquisition Technical Management (ATM) Acquisition Validation (AVAL) Acquisition Verification (AVER) Decision Analysis and Resolution (DAR) Integrated Project Management (IPM) Organizational Process Definition (OPD) Organizational Process Focus (OPF) Organizational Training (OT) Risk Management (RSKM)

Defined

Organizational Process Performance (OPP) Quantitative Project Management (QPM) Quantitatively Managed

Causal Analysis and Resolution (CAR) Organizational Innovation and Deployment (OID) Optimizing

“Certificação” e exigências de clientes propiciam o processo só para constar

Perde-se o propósito do CMMI

O CMMI é totalmente “orientado a evidências”

Embora contemple todo o ciclo de vida, há pouca preocupação com gestão de pessoas

Para tentar resolver: People CMM

Alto custo de implementação

Melhoria de processo do software brasileiro

www.softex.br/mpsbr

Criado no final de 2003 Foco em micro, pequenas e médias empresas

Custo de implementação e avaliação menor

Aproximadamente, 380 empresas já foram avaliadas no modelo (mais de 70% são PME)

Base Técnica para a definição do mps.Br

ISO/IEC 12207: Ciclo de Vida de processos de software

ISO/IEC 15504: Avaliações de processos de software

CMMI-DEV, 1.2

Níveis:

G (Parcialmente Gerenciado) até A (Em otimização)

Reconhecido internacionalmente Consolidado (quase 20 anos) Dois tipos de abordagens para

implementação

Contínua

Estágio

Empresas no mundo inteiro utilizam Modelo abrangente

DEV, SVC e ACQ

Modelo brasileiro

A questão do idioma influencia muito

7 níveis de maturidade

Os resultados podem ser visualizados no “curto prazo”

Custo baixo

Comparado com o CMMI

Foca a realidade brasileira

Micros, pequenas e médias empresas

Não se esqueçam que ....

são compilação de “boas práticas”

mostram O QUÊ fazer, e não COMO fazer

“Depende...” Tudo depende da MOTIVAÇÃO.

Qual é o nosso objetivo?

Quem é o nosso cliente?

Qual é a cultura da empresa?

Etc...

Aulas 9, 10, 11, 12, 13 e 14

O que é?

Entendendo DFD sem precisar consultar o livro...

DIAGRAMA

“representação gráfica, por meio de figuras geométricas (pontos, linhas, áreas etc.), de fatos, fenômenos, grandezas, ou das relações entre eles; gráfico, esquema” (Fonte: Houaiss)

DIAGRAMA

“representação gráfica, por meio de figuras geométricas (pontos, linhas, áreas etc.), de fatos, fenômenos, grandezas, ou das relações entre eles; gráfico, esquema” (Fonte: Houaiss)

FLUXO

“escoamento ou movimento contínuo de algo que segue um curso” (Fonte: Houaiss)

FLUXO

“escoamento ou movimento contínuo de algo que segue um curso” (Fonte: Houaiss)

A B C D E

DADO

“informação relativa a um indivíduo, capaz de identificá-lo” (Fonte: Houaiss)

“informação capaz de ser processada por um computador” (Fonte: Houaiss)

DADO

“informação relativa a um indivíduo, capaz de identificá-lo” (Fonte: Houaiss)

“informação capaz de ser processada por um computador” (Fonte: Houaiss)

Prontuário Nome do Aluno

16030364 Alessandro Rodrigues de Almeida

16030365 Raul Seixas

O que é um Diagrama de Fluxo de Dados?

Representação gráfica que mostra o movimento das informações dentro de um sistema

Ferramenta de modelagem gráfica da solução

Análise Estruturada

Permite imaginar um sistema como uma rede de processos funcionais, interligados por dutos e tanques de armazenamentos de dados

Pode ser apresentado para o cliente!

Se for construído da forma correta, é claro

Também conhecido como...

Diagrama de bolhas

DFD

Modelo de processo

Diagrama de fluxo de trabalho

Modelo funcional

“uma representação de como o sistema funciona”

Quer ser um especialista em DFD?

Quem lembra da referência básica indicada na primeira aula?

Analisando um pouco já é possível entender Representação simples Intuitivo Na construção, lembre-se que o cliente

(usuário) é quem vai validar

Ou seja, o cara precisa entender seu desenho

O DFD pode ser desenhado em uma página

Seu cliente vai conseguir examinar o diagrama sem se confundir!

Também utilizado para modelagem de processos...

Fonte: PMBoK, 4ª Edição

DFD ajuda!

Mas não é A SOLUÇÃO para gerenciamento de requisitos e

modelagem da solução.

O DFD ajuda na modelagem da solução.

Entendendo a estrutura – Parte 1

Primeiro componente de um DFD Mostra como uma ou mais entradas são

convertidas em saídas Normalmente, é representado por um círculo

Mas também pode ser uma elipse ou um retângulo

Exemplo:

Validar CPF

Graficamente representado por uma seta que entra ou sai de um processo

Utilizado para mostrar o movimento de fragmentos ou de pacotes de informações de um ponto a outro do sistema

Ou seja, representa os dados em movimento

Exemplo: situação do

pedido

Modela uma coleção de pacotes de dados em repouso

Ou seja, o banco de dados

Normalmente, o nome escolhido para identificar o depósito é o plural do nome dos pacotes transportados pelos fluxos para dentro e para fora dos depósitos

Exemplo:

Pedidos

Representa as entidades externas com as quais o sistema se comunica

Tipicamente, é uma pessoa ou um grupo de pessoas

Mas também pode ser outro sistema com o qual o seu sistema vai se comunicar (por exemplo: B2B)

Exemplo:

Clientes

Entendendo a estrutura – Parte 2

1. Escolher nomes significativos para os processos, fluxos, depósitos e terminadores

2. Numerar os processos 3. Evitar DFDs complexos demais 4. Refazer o DFD tantas vezes forem

necessárias, até obter uma boa estética 5. Certificar-se de que o DFD seja

internamente consistente, além de manter a consistência com outros DFDs

Rotular os processos de modo a identificar as funções que o sistema executa

Iniciando com um verbo no infinitivo...

Validar CPF

Nomes não recomendados para processos: Fazer serviço

Funções diversas

Manipular entrada

Cuidar dos clientes

Processar dados

Edição geral Os nomes acima podem significar muita coisa... Além disso, demonstram que o Analista de Sistemas

não está certo de qual função está sendo executada

Facilitam a referência ao processo

É mais fácil dizer bolha 1 em vez de Editar erros de transações e de relatórios

Facilitam a leitura no detalhamento dos DFDs

A bolha 2 será detalhada através das bolhas 2.1, 2.2 e 2.3

Processo no primeiro nível...

Processo no segundo nível...

Qual processo estamos detalhando?

Um DFD deve ser prontamente compreendido, facilmente absorvido e agradável aos olhos Ou seja, não crie um DFD com diversos processos,

fluxos, depósitos e terminadores... O ideal é que o DFD se ajuste em uma folha

A4 Aprenderemos a “quebrar” o DFD em níveis (nível

0, 1 e 2)

Lembrem do exemplo anterior

Refaça o DFD 5, 10 ou 15 vezes até que esteja...

Tecnicamente correto

Aceitável pelo seu cliente

Tão bem desenhado que você não fique constrangido em mostrá-lo aos diretores da sua empresa

Tome cuidado com...

Poços sem fundo: Bolhas com fluxo de entrada, mas sem fluxo de saída

Tome cuidado com...

Bolhas com geração espontânea: Bolhas com fluxo de saída, mas sem o fluxo de entrada

Tome cuidado com...

Fluxos e processos sem rótulo: Se não conseguiu definir um nome satisfatório para o processo ou fluxo, pode ser que há algum item implícito no sistema que ainda não foi identificado

Tome cuidado com...

Depósitos somente leitura ou somente escrita: Seu banco de dados somente recebe dados ou somente é consultado? Reveja se é assim mesmo que funciona...

Entendendo a estrutura – Parte 3

Nem sempre o DFD vai se ajustar em uma folha A4

Em projetos reais, o fluxo de dados é maior e mais complexo...

Difícil de entender!

O que fazer nestes casos?

“Quebrar” o DFD em níveis!

Vantagens...

Os níveis permitem uma visão geral...

▪ Nos níveis 0 e 1 é possível compreender o diagrama sem a necessidade de entrar no detalhe dos processos, fluxos e depósitos que compõem o DFD

Os níveis permitem o entendimento gradual...

▪ Você pode apresentar um nível de cada vez

▪ Não vai se assustar e nem assustar o cliente e demais envolvidos com um diagrama complexo e extenso logo na primeira apresentação

Vantagens...

Mantém a documentação enxuta

Garante a 3ª diretriz para elaborar um (bom) DFD: Evitar DFDs complexos demais

Neste exemplo, estamos detalhando somente o processo 2. Remeter Livros

\

Chegamos no Nível 2 do DFD... O que faremos agora?

Descrição de cada processo, no nível mais baixo do DFD

Ajuda no entendimento do diagrama de fluxo de dados e serve de apoio para a construção do sistema

Nome do Processo Descrição

2.1 Separar pedido • No módulo de pedidos, pesquisar pedidos em aberto.

• Na tela de pedidos em aberto, o usuário realiza a separação do pedido.

2.2 Realizar baixa no estoque • XXXXXX

2.3 Encaminhar pedido para a transportadora

• XXXXXX

2. Remeter Livros

Entendendo requisitos funcionais e não funcionais...

De acordo com o Houaiss...

“que foi requisitado, requerido”

“condição para se alcançar determinado fim”

Em Engenharia de Software...

“definição de uma característica, atributo, habilidade ou qualidade que um sistema (ou qualquer um de seus módulos e sub-rotinas) deve necessariamente prover para ser útil a seus usuários”

▪ Fonte: Wikipedia (http://pt.wikipedia.org/wiki/Requisito)

Divididos em Requisitos Funcionais e Requisitos Não Funcionais

Funções ou tarefas que o sistema deverá executar ou fornecer

Exemplos:

1. O sistema deve permitir o cadastro de CPF, RG e Título de Eleitor

2. O sistema deve permitir a baixa automática do estoque quando da venda de um produto

3. O sistema deve gerar relatórios segregados para gerentes e analistas

Relacionados ao uso da aplicação em termos de desempenho, usabilidade, confiabilidade, segurança, disponibilidade, e tecnologias envolvidas.

Normalmente, não é preciso o cliente dizer sobre eles, pois eles são características mínimas de um software de qualidade

Exemplos:

1. O sistema deve operar em Windows 95 e Windows 8

2. O retorno de uma pesquisa não pode demorar 2 segundos

3. A base de dados deve ser acessada somente por usuários autorizados

ID Tipo Descrição

1 F O sistema deve permitir o cadastro de CPF, RG e Título de Eleitor

2 F O sistema deve permitir a baixa automática do estoque quando da venda de um produto

3 F O sistema deve gerar relatórios segregados para gerentes e analistas

4 NF O sistema deve operar em Windows 95 e Windows 8

5 NF O retorno de uma pesquisa não pode demorar 2 segundos

6 NF A base de dados deve ser acessada somente por usuários autorizados

alessandro.almeida@uol.com.br www.slideshare.net/alessandroalmeida