A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

SISTEMA DE INFORMAÇÃO Turma ADS 0019. DESIGN E DESENVOLVIMENTO DE SOFTWARE.

Apresentações semelhantes


Apresentação em tema: "SISTEMA DE INFORMAÇÃO Turma ADS 0019. DESIGN E DESENVOLVIMENTO DE SOFTWARE."— Transcrição da apresentação:

1 SISTEMA DE INFORMAÇÃO Turma ADS 0019

2 DESIGN E DESENVOLVIMENTO DE SOFTWARE

3 OBJETIVOS DA UNIDADE 2 Compreender os fundamentos de design de software; Entender aspectos relevantes sobre design de software; Entender aspectos do desenvolvimento de software; Conhecer boas práticas de gerenciamento de projetos de software. Profº Ricardo luiz3

4 DESIGN DE SOFTWARE

5 Ao decidir pela construção de algo, seja tangível ou intangível, há uma série de etapas que são comuns. Profº Ricardo luiz5

6 Ao optar por construir uma casa você decide qual será o processo construtivo a ser adotado. Este processo poderá ser linear, incremental ou iterativo. Profº Ricardo luiz6

7 Você também definirá quais são os requisitos da sua construção. (peças). A etapa seguinte é transformar estes requisitos em uma planta para que uma equipe de obras civis possa realizar a construção. (funcionais ou não funcionais) Profº Ricardo luiz7

8 Na Engenharia de Software a fase de desenho da planta da construção civil corresponde à fase de design de software. Profº Ricardo luiz8

9 O objetivo do design de software é prover uma descrição da estrutura de funcionamento que servirá de base para a construção do software. Profº Ricardo luiz9

10 Também pode ser entendido como a descrição da forma que o sistema terá quando estiver pronto para utilização. Profº Ricardo luiz10

11 O termo descrição pode ser entendido como uma representação, que poderá ser textual ou gráfica. Profº Ricardo luiz11

12 Pfleeger (2004, p. 159) nos ensina que o design de software é o processo criativo de transformar o problema em uma solução. Profº Ricardo luiz12

13 TIPOS DE DESIGN

14 Em determinados momentos do processo de software há necessidade de utilização do design para comunicar como o software será construído para pelo menos dois públicos. (design conceitual e técnico) Profº Ricardo luiz14

15 O modelo conceitual tem a finalidade de esclarecer ao cliente/usuário como o software desempenhará as funções necessárias. Profº Ricardo luiz15

16 O design conceitual descreve os limites, as entidades, atributos e relacionamentos do sistema. Profº Ricardo luiz16

17 Esta descrição poderá responder a questões como (PFLEEGER, 2004): – De onde virão os dados? – O que acontecerá com os dados no sistema? – Qual será a aparência do sistema para os clientes/usuários? – Que opções serão oferecidas para os clientes/usuários? – Qual é a sequência de eventos? – Como será a aparência dos relatórios e das telas? Profº Ricardo luiz17

18 Este modelo de design não deverá utilizar termos técnicos e não se concentra em detalhes técnicos. Profº Ricardo luiz18

19 Este modelo de design não deverá utilizar termos técnicos e não se concentra em detalhes técnicos. – Ser escrito na linguagem do cliente/usuário. – Não conter jargão técnico. – Descrever as funções do sistema. – Ser independente da implementação. – Estar vinculado aos documentos de requisitos. Profº Ricardo luiz19

20 Portanto, o design conceitual deverá possibilitar ao cliente/usuário o entendimento do que o sistema fará, o que oferecerá de resultados e também esclarece as características externas observáveis do sistema. Profº Ricardo luiz20

21 Já o desenho que será utilizado na comunicação com a equipe de desenvolvimento é chamado de design técnico. Profº Ricardo luiz21

22 Este modelo tem a finalidade de explicitar os componentes de software necessários para atender às necessidades do cliente/usuário. Profº Ricardo luiz22

23 O design técnico pode compreender inclusive componentes de hardware que precisam ser considerados na construção da solução proposta. Profº Ricardo luiz23

24 No design técnico devem ser considerados diversos requisitos necessários à solução do problema do cliente/usuário. – Configurações de hardware. – Necessidades de software. – Interfaces de comunicação. – Entradas e saída do sistema. – Arquitetura de rede utilizada. Profº Ricardo luiz24

25 ARQUITETURA DE SOFTWARE

26 Softwares que possuem grande conjunto de requisitos tipicamente são divididos ou decompostos em diversos subsistemas que oferecem o conjunto de serviços necessários para o software cumprir sua função. Profº Ricardo luiz26

27 O processo de definição de quais serão estes subsistemas, os controles necessários e a comunicação de tais subsistemas são conhecidos como o projeto de arquitetura do software. Profº Ricardo luiz27

28 A arquitetura de software é, portanto, a estrutura de organização e divisão dos módulos que o compõem. Profº Ricardo luiz28

29 Sommerville (2003), indica três vantagens de projetar e documentar explicitamente uma arquitetura de software: Profº Ricardo luiz29

30 MODULARIDADE

31 No processo de definição do design mais adequado ao software, outra tarefa bastante árdua é a definição da modularidade. Profº Ricardo luiz31

32 É uma tarefa árdua pelo fato de haver diversos fatores envolvidos na decisão da distribuição do software em módulos. Profº Ricardo luiz32

33 Pfleeger (2004), indica que o design de um software seja criado com base em um dos seguintes modos: – Decomposição modular; – Decomposição orientada a dados; – Decomposição orientada a eventos; – Design outside-in (de fora para dentro); – Design orientado a objetos; Profº Ricardo luiz33

34 O design de software pode ser elaborado através de uma das abordagens descritas ou a partir da combinação de algumas dessas abordagens. A idéia central é utilizar uma hierarquia, aumentando o detalhamento a cada nível. Profº Ricardo luiz34

35 DESIGN DE INTERFACES COM O USUÁRIO

36 O design de interface com o usuário pode iniciar na fase de requisitos para os casos em que há necessidade de explicitar algumas interfaces críticas da aplicação. Profº Ricardo luiz36

37 Porém o maior volume de trabalho ocorre na fase de design. É nesta fase que as interfaces com o usuário são desenhadas. Profº Ricardo luiz37

38 Embora possa parecer simples, se considerarmos a importância que as interfaces com o usuários representam para um software, chegaremos à conclusão de que é uma atividade com grau de complexidade relativamente alto. Profº Ricardo luiz38

39 Assumindo a premissa de que o usuário considera que o software é representado principalmente pelas suas partes visíveis, o seu design pode ser crítico para determinados projetos. Profº Ricardo luiz39

40 Uma interface com o usuário deve abordar: – Metáforas: elementos que podem ser reconhecidos e aprendidos. – Modelo mental: organização e representação de elementos. – Regras de navegação para o modelo: como se mover entre os elementos. – Aspecto: aparência do sistema. – Impressão: experiência do usuário. Profº Ricardo luiz40

41 O objetivo de considerar tais elementos é permitir que o usuário obtenha acesso rápido ao conteúdo que necessita, sem que perca a compreensão enquanto navega pelas informações. Profº Ricardo luiz41

42 Duas questões fundamentais devem ser consideradas em seu design: cultura e preferência Profº Ricardo luiz42

43 Quando o software é desenvolvido para uso por uma grande diversidade de usuários que podem abranger o país ou quem sabe o mundo, é necessário que se considere diversos aspectos relacionados a este possível público. Profº Ricardo luiz43

44 Os aspectos que devem ser considerados são as crenças, valores, normas, tradições, hábitos e até mesmo os mitos daqueles que utilizarão o software. Profº Ricardo luiz44

45 As cores também podem ter significados muito relevantes. Na Inglaterra, a cor púrpura representa a realeza, e, no Japão, púrpura significa dignidade e nobreza. Mas na Grécia antiga, púrpura simboliza a morte e o demônio. Profº Ricardo luiz45

46 INDEPENDÊNCIA DOS COMPONENTES

47 É desejado que todo software desenvolvido seja estruturado de forma a facilitar o processo de manutenção. Profº Ricardo luiz47

48 Um design de software para poder ser considerado bom deveria possuir as seguintes características (PFLEEGER, 2004): Profº Ricardo luiz48

49 Facilidade de entendimento. Facilidade de implementação. Facilidade de realização de testes. Facilidade de modificação. Tradução correta dos requisitos em software. Profº Ricardo luiz49

50 A facilidade para realizar modificações é um aspecto altamente relevante, pois a manutenção é tipicamente de longo prazo. Profº Ricardo luiz50

51 É relativamente comum encontrarmos casos de alterações em requisitos ou correção de defeitos exigirem que o design do software seja modificado para acomodar a mudança necessária. Profº Ricardo luiz51

52 Uma das formas de atender à boa parte das características do que é considerado um bom design é privilegiar a independência de componentes. Profº Ricardo luiz52

53 Para o reconhecimento e medição do grau de independência dos componentes de um software são utilizados os conceitos de acoplamento e coesão. Profº Ricardo luiz53

54 O conceito de acoplamento diz respeito ao grau de dependência entre componentes. A coesão está relacionada à parte interna da construção do componente. Profº Ricardo luiz54

55 O design de software considerado ideal é aquele que possui baixo acoplamento e alta coesão. Profº Ricardo luiz55

56 DESENVOLVIMENTO DE SOFTWARE

57 É nessa fase que entra em cena a arte da programação de computadores. Para que o software seja escrito de forma a atender requisitos de desempenho, proteção, segurança, disponibilidade e principalmente facilidade de manutenção. Profº Ricardo luiz57

58 É fundamental que o processo criativo da programação se restrinja às soluções dadas aos desafios de implementação. Profº Ricardo luiz58

59 Este processo criativo, portanto, deve seguir padrões de codificação, depuração e testes para que o código fonte seja legível e manutenível por qualquer pessoa que conheça os padrões. Profº Ricardo luiz59

60 Uma das fases que tipicamente tem consumido a maior fatia de esforço em um projeto de software é a fase de desenvolvimento, também conhecida como fase de codificação Profº Ricardo luiz60

61 PADRÕES DE CODIFICAÇÃO

62 Na fase de desenvolvimento deve ser dada grande atenção aos padrões de codificação. Padrões de codificação ou estilos de codificação se referem às convenções utilizadas para escrita de código fonte. Profº Ricardo luiz62

63 A definição do que é um bom padrão/estilo de codificação é relativamente dependente da equipe de desenvolvimento em que se está inserido. Profº Ricardo luiz63

64 Para determinadas equipes trabalhar utilizando um prefixo nas propriedades ou variáveis que identifique o tipo delas é uma das melhores práticas e que trazem resultados impressionantes. Profº Ricardo luiz64

65 Para outras equipes é considerada a coisa mais ridícula e inadmissível já criada pelo homem. Profº Ricardo luiz65

66 Utilizar padronizações de código é muito importante se olharmos do ponto de vista do processo que mais consome recursos no desenvolvimento de software, a manutenção. Profº Ricardo luiz66

67 A padronização de código pode ter valor incalculável do ponto de vista da redução da probabilidade de inserção de bugs em processos de manutenção e da agilidade que pode permitir no momento da detecção da origem de um determinado problema. Profº Ricardo luiz67

68 A padronização de código também permite que pessoas que não desenvolveram aquele trecho de código façam a sua manutenção com um nível de facilidade aproximado ao nível de facilidade de quem o escreveu. Profº Ricardo luiz68

69 A legibilidade de código se refere a quão simples/fácil um trecho de código é para leitura e qual é a quantidade de pessoas que conseguem ler o código escrito (as palavras-chave são facilidade de entendimento). Profº Ricardo luiz69

70 Alguns elementos podem facilitar a legibilidade como endentação, cores utilizadas para diferenciar palavras reservadas, tipos das variáveis, tamanho do texto (linha), utilização de negrito, etc. Profº Ricardo luiz70

71 Todos os identificadores de um programa devem ter nomes significativos. A questão de nomes de identificadores também é muito controversa. Profº Ricardo luiz71

72 As declarações de variáveis devem ser feitas sempre que possível no início de blocos de código. Obs.: A técnica de declarar variáveis no momento que serão utilizadas deve ser evitada. Profº Ricardo luiz72

73 As variáveis devem ser inicializadas o mais próximo possível de sua declaração. Obs.: se houver algum valor padrão, este deve ser atribuído à variável para que na pior das hipóteses, o valor padrão seja utilizado. Profº Ricardo luiz73

74 Os iniciantes na programação têm uma tendência de não se importarem adequadamente com a questão da endentação Profº Ricardo luiz74

75 Não escrever linhas de código com mais de 90 caracteres. Códigos grandes devem ter a quebra de linhas após a vírgula, ou antes de um operador. Profº Ricardo luiz75

76 Outra questão relevante é o espaçamento entre operandos e operadores. Deve-se considerar também a importância do uso de parênteses para priorizar operações. Profº Ricardo luiz76

77 Cada tipo de laço de repetição deve ser utilizado para a situação mais apropriada. Profº Ricardo luiz77

78 Quando erros ou falhas são identificados no software pode ser necessário realizar o processo de depuração de código. Profº Ricardo luiz78

79 Bugs podem ser entendidos como "comportamentos" indesejados pela pessoa que programou o código. Profº Ricardo luiz79

80 ESTILOS DE ENDENTAÇÃO

81 Existem diversos tipos de estilos de endentação de código fonte, dentre estes, os mais conhecidos e utilizados são: o estilo K&R, BSD/Allman, BSD/KNF, Whitesiths, GNU e Banner. Profº Ricardo luiz81

82

83

84

85

86

87 GERENCIAMENTO DE PROJETOS DE SOFTWARE

88 Para o adequado gerenciamento de projetos de software os principais modelos utilizados atualmente são o PMBoK e o SCRUM. Profº Ricardo luiz88

89 O PMBoK é um guia de melhores práticas em gerenciamento de projetos que pode ser utilizado para gestão de projetos de quaisquer áreas. Ele descreve um modelo mais formal de gestão de projetos. Profº Ricardo luiz89

90 Já o SCRUM é um modelo para a gestão de projetos de software ágil. Ambos os modelos têm foco em planejamento, execução, controle e encerramento. Profº Ricardo luiz90

91 A gestão de pessoas é uma atividade muito importante no gerenciamento de projetos. Em função disso, o relacionamento interpessoal é fundamental para obtenção de melhores resultados. Profº Ricardo luiz91

92 O gerenciamento de projetos é uma das atividades mais árduas desempenhada pelo profissional de software, pois o grau de contribuição das pessoas no resultado do projeto é muito significativo em desenvolvimento de software. Profº Ricardo luiz92

93 ABRANGÊNCIA DO GERENCIAMENTO DE PROJETOS

94 Softwares são muito utilizados como suporte aos negócios há poucas décadas. Profº Ricardo luiz94

95 Uma questão importante que deve ser levada em consideração é o fato de que o software deixou de ser diferencial para as organizações, pois praticamente todas fazem uso dele. Profº Ricardo luiz95

96 O uso de recursos de softwares é uma necessidade do dia a dia das organizações. Profº Ricardo luiz96

97 Cada organização tem um grau de dependência de softwares para execução de suas atividades e a margem de oportunidades para utilização como diferencial estratégico tem diminuído. Profº Ricardo luiz97

98 Na mesma proporção que o software deixa de ter participação como diferencial estratégico para as organizações ele passa a se tornar crítico em termos de dependência. Profº Ricardo luiz98

99 Os softwares precisam estar disponíveis 24 horas por dia, 7 dias por semana, caso contrário poderá representar um gargalo para o crescimento dos negócios. Profº Ricardo luiz99

100 Um fator que tem preocupado as organizações em relação às atividades de desenvolvimento de software é a falta de gente para atender às demandas existentes nas organizações. Profº Ricardo luiz100

101 Mas afinal o problema está na falta de gente ou no excesso de demanda? O que ocorre provavelmente é o reflexo do produto de ambos Profº Ricardo luiz101

102 Acredita-se que atualmente o software tem papel importante nas atividades das organizações. O software tornou-se um requisito básico para a sobrevivência e crescimento das organizações. Profº Ricardo luiz102

103 DEFINIÇÃO DE PAPÉIS E RESPONSABILIDADES

104 A definição clara de papéis e responsabilidades dentro de um projeto de software é um elemento importante para que os componentes da equipe do projeto canalizem suas energias em realizar o escopo do projeto e não percam tempo com outras preocupações. Profº Ricardo luiz104

105 No organograma deverão constar todos os níveis da estrutura hierárquica relevante do projeto. O registro dos papéis e responsabilidades pode ser feito, por exemplo, em uma ata de reunião. Profº Ricardo luiz105

106 Em projetos maiores é aconselhável que as preocupações de realizar o trabalho operacional sejam delegadas para um membro da equipe e que o responsável pelo projeto possa realizar o acompanhamento efetivo do progresso do projeto tomando decisões de forma ágil e imediata à necessidade. Profº Ricardo luiz106

107 Uma ferramenta muito importante no gerenciamento de projetos maiores é a matriz RACI (Responsible, Accountable, Consult and Inform), pois possibilita uma visão clara das responsabilidades de cada envolvido no projeto. Profº Ricardo luiz107

108 FUNÇÕES E RESPONSABILIDADES

109 O processo de desenvolvimento do projeto é planejado em torno da exigência de que todo projeto seja administrado com uso de uma equipe integrada, que inclua a representação adequada das áreas funcionais e de negócios envolvidas. Profº Ricardo luiz109

110 Os membros da equipe devem ter o poder de tomar decisões em nome da função ou área que representam. Profº Ricardo luiz110

111 As funções e responsabilidades de cada membro da equipe devem ser definidas e claramente comunicadas a todos na equipe. Profº Ricardo luiz111

112 Os objetivos da organização e do projeto devem ser definidos e compreendidos por todos os membros da equipe, que aceitaram participar do projeto. Profº Ricardo luiz112

113 Uma equipe integrada de projeto exibe também características de trabalho em equipe, inclusive cooperação, comunicação aberta e alto nível de confiança entre os vários representantes que participam da equipe. Profº Ricardo luiz113

114 Uma equipe integrada de projeto exibe também características de trabalho em equipe, inclusive cooperação, comunicação aberta e alto nível de confiança entre os vários representantes que participam da equipe. Profº Ricardo luiz114

115 GESTÃO DE PESSOAS

116 No mundo do trabalho, as habilidades das pessoas podem ser divididas em habilidades técnicas também conhecidas por "hard skills" e habilidades pessoais, também conhecidas como "soft skills. Profº Ricardo luiz116

117 Cada vez mais se pode perceber que as habilidades pessoais têm influência no sucesso profissional. Profº Ricardo luiz117

118 Uma pessoa que cultive apenas as habilidades técnicas poderá tornar-se muito boa naquele assunto. O limite do crescimento profissional dela tipicamente está relacionado ao somatório das habilidades técnicas com as habilidades pessoais. Profº Ricardo luiz118

119 Isto é realmente polêmico, mas o que normalmente se percebe na área de software é esta relação, pois mesmo que o profissional seja muito bom tecnicamente haverá momentos em que ele precisará interagir com pessoas. Profº Ricardo luiz119

120 Habilidades Técnicas geralmente são fáceis para observar, quantificar e medir. Já, as habilidades pessoais são tipicamente difíceis de serem observadas, quantificadas e medidas. Profº Ricardo luiz120

121 Elas se referem na relação entre as pessoas comunicando, ouvindo, dialogando, fornecendo feedback, cooperando com membros, resolvendo problemas, contribuindo em reuniões, resolvendo conflitos, entre outras. Profº Ricardo luiz121

122 Habilidades pessoais têm grande importância para as oportunidades e desenvolvimento da carreira, bem como conhecimentos técnicos aprofundados. Profº Ricardo luiz122


Carregar ppt "SISTEMA DE INFORMAÇÃO Turma ADS 0019. DESIGN E DESENVOLVIMENTO DE SOFTWARE."

Apresentações semelhantes


Anúncios Google