58
Marino Hilário Catarino 10 de outubro de 2014 1

Seminario software-marino

Embed Size (px)

DESCRIPTION

Supporting software analysis and design

Citation preview

Page 1: Seminario software-marino

Marino Hilário Catarino

10 de outubro de 2014 1

Page 2: Seminario software-marino

1. Introdução

2. A Study of Collaboration in Software Design

3. Assessment of a framework to compare software development methodologies

4. Let´s Go to the Whiteboard: How and Why Software Developers Use Drawings

2

Page 3: Seminario software-marino

Engenharia de Software

FERRAMENTAS: dão suporte automatizado aos métodos.

Existem atualmente ferramentas para sustentar cada um dos métodos

Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering

3

Page 4: Seminario software-marino

PROCEDIMENTOS: constituem a ligação entre os métodos e ferramentas

Seqüência em que os métodos serão aplicados

Produtos que se exige que sejam entregues

Controles que ajudam assegurar a qualidade e coordenar as alterações

Referências que possibilitam administrar o progresso do software.

4

Page 5: Seminario software-marino

Ciclos de Etapas de Software

Conjunto de etapas que envolve MÉTODOS, FERRAMENTAS e PROCEDIMENTOS.

Alguns ciclos de vida mais conhecidos são:

1. Ciclo de Vida Clássico (Cascata)

2. Prototipação

3. Modelo Espiral

5

Page 6: Seminario software-marino

James Wu e T.C.N. Graham da Queen’s University , Canada Paul W. Smith da IBM Canada 2003

É um estudo de colaboração em uma empresa de grande porte de design de software. Estudos etnográficos de equipes de desenvolvimento no campo são relativamente raros. A metodologia incluiu: Sombreamento, Entrevistas Registo de eventos de comunicação

6

Page 7: Seminario software-marino

O objetivo deste estudo foi investigar a colaboração e uso de ferramentas de design de software.

Foi motivado por uma percepção de que existem muitas ferramentas para o suporte de software porém apenas um subconjunto limitado de as tarefas e atividades envolvidas nestas ferramentas.

7

Page 8: Seminario software-marino

O estudo investiga quatro hipóteses:

1. O projeto de software é um atividade altamente colaborativa em que os membros da equipe freqüentemente se comunicam.

2. Projetistas de software preferem ferramentas informais e não ferramentas específicas, tanto para design e comunicação.

8

Page 9: Seminario software-marino

3. Os membros da equipe freqüentemente mudam de localização física ao longo do dia.

4. Os membros da equipe freqüentemente mudam a forma com que se comunicam.

9

Page 10: Seminario software-marino

Bellotti e Bly apresentam um estudo de uma equipe de projeto e destacam a importância da mobilidade no local para design de software colaborativo.

Kraut e Streeter pesquisam as práticas de coordenação em 65 projetos diferentes em uma única empresa de software.

Seaman e Basili abordam os aspectos da produtividade de comunicação ao estudar as características organizacionais e de processos que influenciam em uma empresa de software ao comunicar as atividades.

10

Page 11: Seminario software-marino

Três métodos principais de coleta de dados:

1. Entrevistas; foram realizadas 17 entrevistas.

2. Sombreamento;

3. Registo de eventos de comunicação.

11

Page 12: Seminario software-marino

Membros de uma equipe tem um alto grau de interação visando o apoio ao seu trabalho.

São feitas comunicações com freqüência, e muitas vezes alternado entre modalidades de comunicação.

Esses eventos consumiram em média 124 minutos, mais de 2 horas da jornada de trabalho, e envolveu em média 3 pessoas.

12

Page 13: Seminario software-marino

Preferência marcada para o uso de ferramentas informais, não específicas. Os resultados apresentado nesta seção são de sombreamento e entrevistas;

O design criativo é amplamente apoiada pelo meio de comunicação informal (como papel e quadro branco);

Para as tarefas formais do projeto eram utilizados o IBM Lotus Notes e editores de texto. Isto é em partes devido a cultura interna da empresa em estudo: ◦ a empresa havia padronizado o Lotus Notes para

compartilhamento de documentos.

13

Page 14: Seminario software-marino

Quadro comparativo:

14

Page 15: Seminario software-marino

As entrevistas revelaram uma preferência para a comunicação cara a cara na interação síncrona.

Telefone e quadro branco são também muito utilizados.

15

Page 16: Seminario software-marino

Designers mudam de local com freqüência para interações cara a cara com colegas, ou áreas de encontro em comum;

Em geral as pessoas preferem falar pessoalmente ao invez de usar o telefone, mesmo quando isso implica uma mudança de localização.

16

Page 17: Seminario software-marino

Na sequência de uma comunicação cara a cara que continua depois com um e-mail implica uma mudança de interação síncrono para assíncrona.

Comunicação:

Síncrona 90 min/dia;

Assíncrona 35 min/dia.

17

Page 18: Seminario software-marino

1.O projeto de software é um atividade altamente colaborativa em que os membros da equipe freqüentemente se comunicam.

(H1) Os membros da equipe observados eram altamente interativos, gastando em média mais de duas horas por dia em tarefas de comunicação.

2. Projetistas de software preferem ferramentas informais e não ferramentas específicas, tanto para design e comunicação.

(H2) Designers preferem ferramentas leves de uso geral para o projeto contra ferramentas de design de domínio específico. Nos estágios iniciais do projeto foram utilizados papel e quadro branco.

18

Page 19: Seminario software-marino

3. Os membros da equipe freqüentemente mudam de localização física ao longo do dia. (H3) Os desenvolvedores mudam de local com freqüência a fim de colaborar. Em média, os desenvolvedores ficam em mais de seis locais por dia. 4. Os membros da equipe freqüentemente mudam a forma com que se comunicam. (H4) Designers frequentemente mudar a maneira pela qual eles se comunicam. Verificaram que é típico para os designers participar de uma reunião cara a cara em um tópico e depois seguir com um e-mail para uma pergunta complementar.

19

Page 20: Seminario software-marino

Uma ferramenta que suporta apenas comunicação assíncrona, via e-mail ou repositório de documento, não aborda as interações predominantemente síncronos. Ignora uma grande parte da atividade diária dos designers;

20

Page 21: Seminario software-marino

Os designers preferem usar ferramentas de uso geral que se adequam às suas necessidades, seja para o projeto ou a comunicação, ao invés de ferramentas específicas devido a mais sobrecarga em sua tarefa ou interação.

Mudanças na localização física, sincronicidade e modalidade de comunicação são freqüentes, e as ferramentas atuais não são suficientes para suportar tais mudanças.

21

Page 22: Seminario software-marino

Riaan Klopper, Stefan Gruner e Derrick G. Kourie

University of Pretoria, South Africa

2007

Este artigo avalia o processo de tomada de decisão e a metodologia de desenvolvimento de software em uma empresa de engenharia de software. A estrutura que foi utilizada na empresa para decidir sobre uma metodologia adequado para a análise e o projeto do processos de negócios e sistemas de software.

22

Page 23: Seminario software-marino

Gregor Snelting criticou fortemente a proliferação inflacionária de "novos" conceitos de engenharia de software e metodologias, especialmente da comunidade acadêmica em nota publicada quase exatamente 10 anos (1997)

Snelting afirmou que os conceitos e metodologias são apenas produzidos por causa da publicação, mas nunca foram sujeitos a qualquer tentativa de avaliação empírica.

Baseado em Snelting, perguntamos qual das metodologias software disponíveis é útil.

23

Page 24: Seminario software-marino

Tomar uma decisão, a partir de uma perspectiva organizacional para escolher a metodologia de desenvolvimento de software não é tarefa fácil.

O escopo deste artigo inclui, portanto, a avaliação tanto da estrutura como prescrito pelo Avison e Fitzgerald, e o processo que foi usado.

24

Page 25: Seminario software-marino

É importante compreender os conceitos básicos de uma metodologia de software para avaliar um processo. Isso permite que o leitor coloque o processo e estrutura que é investigada em um contexto melhor, e ajuda na compreensão dos resultados apresentados.

25

Page 26: Seminario software-marino

Um bom método de software é uma metodologia que: Pode ser descrito quantitativamente como qualitativamente; Pode ser usado repetidamente, cada vez conseguir resultados semelhantes; Pode ser ensinada aos outros dentro de um prazo razoável; Pode ser aplicado por outros com um nível razoável de sucesso; Atingir significativamente, e de forma consistente, resultados melhores do que qualquer outras técnicas, ou uma abordagem ad-hoc; São aplicáveis em uma porcentagem relativamente grande de casos.

26

Page 27: Seminario software-marino

Argumentos a favor de organizações que usam metodologias de desenvolvimento de software: 1. Metodologias ajudam a lidar com a complexidade do processo de desenvolvimento de software; 2. Metodologias reduzem os riscos e incertezas, tornando as tarefas de desenvolvimento mais transparente e visível; 3. Metodologias podem fornecer uma estrutura para a aplicação de técnicas e recursos em momentos apropriados durante o processo de desenvolvimento; 4. Metodologias ajudam a capacidade de intercâmbio de desenvolvedores de software. Isto é ainda mais importante quando o desenvolvimento trabalho é terceirizado; 5. Certificação (ISO, CMM, TMM, etc) se torna possível para as organizações.

27

Page 28: Seminario software-marino

Existem várias notações diferentes disponíveis para sistemas de software de modelagem.

Parte dos requisitos organizacionais era ter uma notação padronizada aceita internacionalmente e que pudesse modelar tanto o sistema técnico quanto o processos de negócios.

O UML foi escolhida como a notação.

28

Page 29: Seminario software-marino

O processo de alto nível que foi seguido para facilitar o processo de tomada de decisão para a seleção de uma metodologia de software foi:

29

Page 30: Seminario software-marino

Os requisitos organizacionais incluíram o seguinte: A metodologia de software que facilite a comunicação e a compreensão entre as divisões de negócios e de TI; A metodologia de software que iria criar e manter uma biblioteca de processos de negócio em um nível empresarial, que podem ser reutilizados em diferentes projetos estratégicos; A metodologia de software que iria manter um modelo de um sistema de software, a partir da documentação de negócios, onde compreensível, bem como documentação técnica pode ser gerado; A notação comum que pode ser usado para pessoas de negócios e tecnologia da mesma forma; Um ambiente onde as diferentes partes interessadas de um projeto podem colaborar para construir e manter um modelo de software; A metodologia de software que facilite processo de reengenharia de negócios; A metodologia de software que pode integrar com os processos existentes, tais como a metodologia de gerenciamento de projetos, controle de qualidade, controle de mudanças; Um processo padronizado que pode ser repetido para diferentes projetos e ainda produzir "os mesmos" resultados.

30

Page 31: Seminario software-marino

Strate Ltd. é a Central de Ativos da África do Sul, com cerca de 140 funcionários, a empresa é responsável pela compensação, liquidação e atividades de ações para a maioria dos comércios eletrônicos realizados na Bolsa de Valores de Joanesburgo (JSE).

31

Page 32: Seminario software-marino

Outro fator que desempenhou um papel importante na escolha da metodologia de software foi a experiência prática que os analistas de negócios já tiveram em trabalhar com ela.

O quadro para a comparação de metodologias de software em nosso estudo piloto continha um conjunto inicial de diferentes critérios de avaliação (parâmetros) para aplicar a cada metodologia.

Os pesos foram atribuídos a cada critério de avaliação para torná-lo mais relevante para as necessidades específicas da organização que foram recolhidos anteriormente.

32

Page 33: Seminario software-marino

O framework sugerido por Avison e Fitzgerald foi escolhido para auxiliar no processo de tomada de decisão. A principal razão para a escolha deste framework foi o critério de avaliação precisa que ele proporciona para comparar as diferentes metodologias, em contraste com as outras estruturas que foram consideradas como demasiado vago e subjetivo.

A Separação de Projeto Lógico: implica que deve haver

uma separação de requisitos, e como ela é implementada;

As técnicas e ferramentas: são as várias estratégias e tecnologias usadas para apoiar a metodologia. Um exemplo pode ser que RUP usa UML.

33

Page 34: Seminario software-marino

Os seguintes métodos foram escolhidos para o exercício de comparação:

Aris

RUP

URDAD

34

Page 35: Seminario software-marino

A pontuação numérica de entre 1 e 5 foi dada a cada critério, com a seguinte interpretação:

1. Muito ruim: "O que não atender a exigência

desse critério"; 2. Ruim: "Dificilmente se encontra a exigência

desse critério"; 3. Média: "Modestamente atende a exigência

desse critério"; 4. Bom: "Atende a exigência desse critério muito

bem"; 5. Muito bom: "Atende a exigência dada

excepcionalmente bem“.

35

Page 36: Seminario software-marino

Atribuição de Pesos:

A fim de tornar o método mais relevantes para a organização em questão, os requisitos da organização para uma metodologia de desenvolvimento de software também teve de ser integrados nos resultados quantificados.

Os seguintes ponderações foram atribuídos a cada critério de avaliação baseado na relevância para a organização: 0.5 - relevância “Baixa“; 1.0 - relevância "Normal" e 1.5 - relevância “Alta"

36

Page 37: Seminario software-marino

Tabela com o resultado: Metodologia:

37

Page 38: Seminario software-marino

A partir de todos os resultados, a metodologia URDAD deve ser a metodologia escolhida para a organização, mas a decisão continua a ser um exercício subjetivo.

38

Page 39: Seminario software-marino

Mauro Cherubini – École Polytechnique Fédérale de Lausanne

Gina Venolia e Rob DeLine – Microsoft Research

Andrew J. Ko – Carnegie Mellon University

2007

Este artigo trata em como os desenvolvedores de software utilizam as ferramentas para fazer esboços e diagramas, que representam o seu código.

39

Page 40: Seminario software-marino

Diagramas são importantes ferramentas para todo design e disciplina de engenharia, porém como é o uso de diagramas nas atividades de desenvolvimento de software?

4 questões:

A. Como os engenheiros usam diagramas em seu trabalho? B. Por que os engenheiros usam diagramas em seu trabalho? C. Que convenções gráficas que os engenheiros usam? D. Qual é a cultura em torno desses desenhos?

40

Page 41: Seminario software-marino

Fizeram uma primeira pesquisa com 350 desenvolvedores da Microsoft, onde 60 retornaram um questionário sobre uso de diagramas. Realizaram entrevistas e refinaram as perguntas em 9 cenários.

Fizeram uma nova pesquisa onde selecionaram 400 pessoas aleatóriamente entre as 8.570 empregados da microsoft.

41

Page 42: Seminario software-marino

81%

11%

5% 3%

Desenvolvedor Lider de equipe Arquiteto Outros

7% sexo feminino e 85% tinham entre 20 e 39 anos. A médiaéra de 7 anos como desenvolvedor

42

Page 43: Seminario software-marino

Convenção visual

Caixas para representar desde banco de dados a métodos

Setas para representar relacionamentos

43

Page 44: Seminario software-marino

Motivações e cenários

Os diagramas são feitos principalmente para: Entendimento; Design e para Comunicação

44

Page 45: Seminario software-marino

45

Page 46: Seminario software-marino

Cenários: 1. Entendimento do código existente: Mais

importante, compreensão do código. Uso de quadro branco.

2. Encontro Ad-hoc: Tirar dúvida do desenvolvedor com a equipe.

3. Design/refatoração: Desenvolvedor planeja como irá implementar nova funcionalidade, conserto ou bug. Muito importante.

4. Rever design: Mudança na proposta do design, não é muito frequente.

5. Novo membro na equipe: Para explicar o projeto para um novo integrante.

46

Page 47: Seminario software-marino

6. Explicando para um participante secundário: Explicar para um participante sem relação com a implementação, por exemplo equipe de testes, gerente de projeto ou cliente interno. Os diagramas são muito importantes

7. Explicando para um cliente: Desenvolvedores com a responsabilidade de explicar o software. Consideram a menos importante. Usam padrões gráficos nos diagramas.

8. Exposição: Como no método ágil, expor a estrutura ou código.

9. Documentação: Muito importante, alto grau de formalidade e refinamento nos diagramas.

47

Page 48: Seminario software-marino

Nível de investimento ( 4 tipos):

1 - Provisório: um simples desenho, para entendimento do código ou desingn, rapidamente perdendo o valor.

48

Page 49: Seminario software-marino

2 - Esboço repetitivo: algo provisório foi redesenhado em diferente contexto ou em partes, como em encontros Ad-hoc ou em explicações para outros.

49

Page 50: Seminario software-marino

3 - Entrega do desenho: Em alguns casos um esboço repetitivo pode ter um investimento de tempo e esforço, assim virando algo permanente. Isto ocorre mais em revisão de design.

50

Page 51: Seminario software-marino

4 - Arquivando: Quando o diagrama se torna parte do documento.

51

Page 52: Seminario software-marino

A. Como os engenheiros usam diagramas em seu trabalho?

Desenvolvedores usam meios transitórios para as atividades de exploração e usam soluções permanentes quando se comunicam com outras pessoas ou todo o grupo.

52

Page 53: Seminario software-marino

B. Por que os engenheiros usam diagramas em seu trabalho?

Três razões principais:

1. Compreender;

2. Projetar;

3. Comunicar.

53

Page 54: Seminario software-marino

C. Que convenções gráficas os engenheiros usam?

Os desenvolvedores não seguem qualquer padrão gráfico, na maioria dos casos, os desenvolvedores usaram uma linguagem visual simples caixas-e-flechas cujos elementos assumem significados, dependendo do contexto. No entanto, para a documentação, um estilo mais formal foi escolhido, embora os sistemas de notação padrão foram raramente utilizados.

54

Page 55: Seminario software-marino

D. Qual é a cultura em torno desses desenhos?

Os resultados mostram uma adoção limitada de ferramentas de desenho. Apesar da disponibilidade de editores visuais, tais como ferramentas de UML, os desenvolvedores não utilizam amplamente.

55

Page 56: Seminario software-marino

1.Captura dos esboços nos quadros brancos;

2.Integrar engenharia reversa e esboços;

3.Nível de abstração;

4.Visualização compartilhada entre a equipe de desenvolvimento.

56

Page 57: Seminario software-marino

Como e porque os desenvolvedores usam diagramas?

A notação informal foi usada para apoiar a comunicação cara a cara e as ferramentas atuais não foram capazes de suportar essa necessidade, porque não ajudam a exteriorizar os modelos mentais de código.

57

Page 58: Seminario software-marino

58