Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 57 1 Profª Luciane Yanase Hirabara Kanashiro Fundamentos de Desenvolvimento de Software Aula 1 57 2 Conversa Inicial 57 3 Com certeza você já ouviu falar de software... Mas saberia definir o que é software? O que diferencia software de sistema? Ou, ainda, o que diferencia software de programa? Software Lu is M o lin er o / S h u tt er st o ck 57 4 Software, programas e sistemas Algoritmos e linguagens O jargão na área de TI Ciclo de vida do desenvolvimento de software (metodologias) 57 5 Software, programas e sistemas 57 6 Software consiste em: (1) instruções (programas de computador) que, quando executadas, fornecem características, funções e desempenho desejados (2) estruturas de dados que possibilitam aos programas manipular informações adequadamente (3) informação descritiva, tanto na forma impressa quanto na virtual, descrevendo a operação e o uso dos programas Software e programas 1 2 3 4 5 6 2 57 7 Software Programa Sequência de passos ou instruções descritos por um algoritmo Algoritmo Estrutura passo a passo de como um problema deve ser resolvido Ex: uma receita de bolo 57 8 Software de Sistema (Básico) Sistemas Operacionais Sistemas tradutores Software Utilitário Software Aplicativo 57 9 Coleção de programas para apoiar outros programas Sistema operacional Softwares utilitários ou ferramentas de sistema Software de Sistema (Básico) 57 10 Fornecem ao usuário ferramentas para organizar os discos, verificar disponibilidade de memória, corrigir falhas de processamento Úteis ao sistema computacional Ex: antivírus, compactadores, emuladores, desfragmentadores, formatadores, backup Software utilitário 57 11 Programas que auxiliam o usuário de computador a realizar determinada tarefa Popularmente conhecidos como app Ex: navegadores, editor de texto, planilhas apresentações, SGBDs, editor de imagens etc. Software aplicativo 57 12 Sistema operacional 7 8 9 10 11 12 3 57 13 Sistema: conjunto de partes que se interagem para alcançar determinado objetivo O que diferencia software de sistema é que um sistema pode ser definido como um conjunto de softwares que interagem entre si para alcançar determinado objetivo Sistema operacional 57 14 O software básico é aquele necessário para o funcionamento do hardware ou de parte dele Ex: sistemas operacionais e sistemas tradutores Sistemas operacionais 57 15 Software responsável pela supervisão dos processos executados em um computador Gerencia todo o hardware e todo o software do computador e realiza a “comunicação” entre eles Sistemas operacionais Ia m n ee / S h u tt er st o ck 57 16 Sistemas operacionais Abrir o gerenciador de tarefas: CTRL + SHIFT + ESC CTRL+ALT+DEL >> Gerenciador de Tarefas Pesquisa do Windows >> Gerenciador de Tarefas Processo: programa em execução 57 17 Hardware Sistema Operacional Usuário/Aplicativo Camada de software entre o hardware e os softwares usados pelos usuários Sistemas operacionais Ia m n ee / S h u tt er st o ck 57 18 Facilitar o uso do computador pelo usuário, tornando mais simples a utilização de seus recursos Gerenciar os recursos do computador Controlar a execução de programas pela CPU Funções do SO Ia m n ee / S h u tt er st o ck 13 14 15 16 17 18 4 57 19 10000010011111111010101000111 10001110101010101010101011110 printf (“Aprova do \n”); if(media > =7) media = (nota1 + nota2)/2; Converte os programas escritos para um código em uma linguagem de máquina, mais adequada para manipular bits Sistemas tradutores 57 20 Fonte Fonte Fonte Fonte Fonte Compilador 1100010000 0011101011 0101010101 1000111001 0111011011 Fonte Fonte Fonte Fonte Fonte Interpretador 1100010000 CPU Programa escrito em linguagem de alto nível: necessidade ser traduzido para a linguagem de máquina para que o computador possa executá- lo Interpretadores e compiladores 57 21 Algoritmos e Linguagens 57 22 “Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido.” (Forbellone, 1999) Algoritmos 57 23 Objetivo: representar mais fielmente o raciocínio envolvido na lógica de programação Uma vez concebida uma solução, esta pode ser traduzida para qualquer linguagem de programação 57 24 Gap semântico entre lógica de programação e a lógica do dia a dia Semântica na linguagem de programação: referindo ao conteúdo, ao significado Sintaxe está relacionada com as regras, premissas, restrições Modo como as palavras podem ser combinadas e formar os enunciados define a sintaxe Sintaxe x semântica 19 20 21 22 23 24 5 57 25 Exemplo 1: Fiz prova de FDS na semana passada Se escrevêssemos: FDS passada semana prova fiz Exemplo 2: (2 ] - / Sintaxe 57 26 Define o significado formal das expressões, comandos ou unidades de programas Erros de semântica estão relacionados a lógica de programação Exemplo: expressão sintaticamente correta na linguagem Python, mas semanticamente não faz sentido somar um número e um caractere a = 2 + "3" Semântica 57 27 Receita de bolo de caneca Ingredientes 2 colheres (sopa) de achocolatado 3 colheres (sopa) de farinha de trigo 3 colheres (sopa) de açúcar meia colher (chá) de fermento em pó 3 colheres (sopa) de Leite 2 colheres (sopa) de óleo 1 ovo (...) Algoritmos – exemplo 1 A fr ic a S tu d io /S h u tt er st o ck , T o w n fo x/ S h u tt er st o ck 57 28 (...) Modo de preparo Em uma caneca com capacidade superior a 350 ml, misture o achocolatado, a farinha de trigo, o açúcar e o fermento em pó Acrescente o Leite , o óleo e o ovo e misture delicadamente até incorporar Coloque a caneca sobre um prato de sobremesa e leve ao forno micro-ondas por 3 minutos em potência alta Sirva a seguir A fr ic a S tu d io /S h u tt er st o ck , T o w n fo x/ S h u tt er st o ck 57 29 Calcular média de prova Obter as duas notas de provas Calcular a média aritmética Se a média for igual ou maior que 7, o aluno foi aprovado Se não, ele foi reprovado Algoritmos – exemplo 2 57 30 Linguagens de programação tratam os dados de um computador por meio do uso de algoritmos Programador: Deve encontrar um algoritmo que resolve o seu problema Implementá-lo usando uma linguagem de programação Linguagens 25 26 27 28 29 30 6 57 31 Algoritmos Lógica de programação Estrutura de Dados Linguagem C C++ C# Java Python 5732 Exemplo - Python #Obter as duas notas de provas nota1 = float(input("Digite a primeira nota: ")) nota2 = float(input("Digite a segunda nota: ")) #Calcular a média aritmética media = (nota1 + nota2)/2 #Se a média for igual ou maior que 7, o aluno foi aprovado if media >= 7: print("Aprovado") #Se não, ele foi reprovado else: print("Reprovado") #Obter as duas notas de provas nota1 = float(input("Digite a primeira nota: ")) nota2 = float(input("Digite a segunda nota: ")) #Calcular a média aritmética media = (nota1 + nota2)/2 #Se a média for igual ou maior que 7, o aluno foi aprovado if media >= 7: print("Aprovado") #Se não, ele foi reprovado else: print("Reprovado") 57 33 //Obter as duas notas de provas System.out.println("Digite a primeira nota: "); float nota1 = teclado.nextFloat(); System.out.println("Digite a segunda nota: "); float nota2 = teclado.nextFloat(); //Calcular a média aritmética float media = (nota1 + nota2)/2; //Se a média for igual ou maior que 7,o aluno foi aprovado, if (media >= 7) System.out.println("Aprovado"); //Se não, ele foi reprovado else System.out.println("Reprovado"); Exemplo - Java 57 34 //Obter as duas notas de provas printf("Digite a primeira nota: "); scanf_s("%d", ¬a1); printf("Digite a segunda nota: "); scanf_s("%d", ¬a2); //Calcular a média aritmética media = (nota1 + nota2) / 2; //Se a média for igual ou maior que 7, o aluno foi aprovado if (media >= 7) printf("Aprovado"); //Se não, ele foi reprovadoelse printf("Reprovado"); Exemplo - C 57 35 Glossário do desenvolvedor de software 57 36 Significado de Jargão “Linguagem restrita a determinado grupo profissional ou social; gíria. Linguagem de códigos que alguns grupos usam para que pessoas desconhecidas não compreendam suas conversas; gíria.” JARGÃO. In: DICIO, Dicionário Online de Português. Porto: 7Graus, 2022. Disponível em: <https://www.dicio.com.br/jargao/>. Acesso em: 6 dez. 2022 Glossário do desenvolvedor de software 31 32 33 34 35 36 7 57 37 Front-end: parte gráfica de uma aplicação web Back-end: desenvolvimento no lado do servidor Full-stack: ambas as abordagens Glossário do desenvolvedor de software 57 38 API (Application Programming Interface) Conjunto de rotinas e padrões de programação Objetivo: acessar aplicativos de software Plataformas baseados na web Utilizada por programa/aplicação Framework: Conjunto de código de LP específica Auxilia no desenvolvimento web ou de software Biblioteca de códigos com funções já prontas Arcabouço de código 57 39 IDE (Integrated Development Environment): Integra diversas funcionalidades para desenvolvimento em única interface gráfica Auxilia e agiliza o processo de desenvolvimento SDK (Software Development Kit): Composição: compilador, debugger e API Conjunto de ferramentas fornecidos por um fabricante para que se desenvolva para uma plataforma ou sistema especifico 57 40 Nativo Desenvolvido para uma única plataforma Utilização de linguagens e ferramentas específicas para a plataforma em questão Exemplo: para Android, usa-se Android SDK; e Android Studio, linguagem Java e kotlin Híbrido Implementação utiliza html, css e Javascript Frameworks ou ferramentas que permitem uma mesma base de código Uma linguagem e distribuída para várias plataformas 57 41 Serviços: processos de software O termo processo de software nesse caso não é no sentido de conjunto de atividades da engenharia de software, mas, sim, naquele programa processado pelo SO 57 42 Monolítico: roda com um único processo Microsserviços: abordagem arquitetônica e organizacional do desenvolvimento de software na qual o software consiste em pequenos serviços independentes que se comunicam usando APIs bem definidas. São autônomos e especializados Monolithic Microservices A sh al at h a/ S h u tt er st o ck 37 38 39 40 41 42 8 57 43 SOAP – Service-Oriented Architecture (Or Application) Protocol Utiliza arquivos xml Protocolo de transporte: HTTP com REST – Representational State Transfer Conjunto de restrições para criação de webservices Quando um serviço implementa esse padrão: Restfull Restfull utiliza arquivos JSON 57 44 SOAP e REST são APIs e são arquiteturas de webservice Webservices são independentes de linguagem Java .Net C/C++ Python PHP URL, WSDL, SOAP Request/Reponse XML,JSON w eb S ervices URL, WSDL, SOAP Request/Reponse XML,JSON Java.NetC/C++PythonPHP Ashalatha/Shutterstock 57 45 Commit: Enviar alterações de determinado trecho do código Enviar criação de uma nova versão do projeto Versionamento: Atribuição de número de versão ao estado do projeto Exemplo: pastas com versões do projeto: trabalho_FDS_v1, trabalho_FDS_v2 57 46 Snapshot: cópia instantânea em determinado tempo de um volume Debug: Debugging ou debugar Depurar o programa Encontrar erros no programa e tentar resolvê-los Sumstock/Shutterstock 57 47 Git: Sistema de controle de versão Gerencia as várias versões no desenvolvimento de um documento O logo do GIT representa a ramificação para desenvolvimento não linear Github: Plataforma de desenvolvedor completa para criar, dimensionar e fornecer software seguro Utiliza o Git como sistema de controle . 57 48 Ciclo de vida de software 43 44 45 46 47 48 9 57 49 Software Development Life Cycle – SDLC Modelo de processo Representação simplificada de um processo de software Ciclo de vida de desenvolvimento de softwares 57 50 Quatro atividades são comuns a todos os processos de software: especificação, desenvolvimento, validação e evolução Especificação Desenvolvimento Validação Evolução Sommerville (2019) 57 51 Analogia com a construção de casa Especificação Desenvolvimento Validação Evolução S o m m er vi lle ( 2 0 1 9 ), Fr an ck B o st o n /S h u tt er st o ck , m ar u co /S h u tt er st o ck , fr an co lu ca to /S h u tt er st o ck , S ea n L o ck e P h o to g ra p h y/ S h u tt er st o ck , jo se rp iz ar ro / S h u tt er st o ck Especificação: especificar como quer que a casa seja Validação: o que está sendo construído está de acordo com o solicitado Desenvolvimento: construção da casa propriamente Evolução: manutenção da casa. Evoluir para atender necessidades 57 52 Ciclo de vida de um software Especificação Desenvolvimento Validação Evolução S o m m er vi lle ( 2 0 1 9 ) N D A B C re at iv it y/ S h u tt er st o ck , S to ck 4 yo u /S h u tt er st o ck , B lu e P la n et S tu d io / S h u tt er st o ck Especificação Desenvolvimento Validação Evolução 57 53 Clássico Tradicional SDLC Waterfall Modelo cascata Metas e restrições são identificadas junto aos usuários O projeto de software é implementado em unidades de programa Sistema é instalado e colocado em operação Requisitos são mapeados em componentes de hardware e software Unidades de programa são integradas e testadas como um sistema completo Requerimento Projeto Implementação Verificação Manutenção 57 54 Alternativa para gestão de projetos tradicionais Entrega rápida das funcionalidades Foco no software e não no projeto Adequada a aplicações em que os requisitos mudam rapidamente Duas abordagens: o extreme Programming (XP) e o SCRUM Metodologia Ágil 49 50 51 52 53 54 10 57 55 Integração contínua Integração contínua Propriedade Coletiva Lançamentos pequenos Programação em pares Refatoração Projeto simples Planejamento incremental Representante do cliente Desenvolvimento test first Ritmo sustentável Metodologia Ágil 57 56 SCRUM •Product Backlog •Sprint Baclog •Increment Artefatos •Sprint planning •Daily Scrum •Sprint Review •Sprint Retrospective Eventos •Comprometimento •Coragem •Foco •Abertura •Respeito Valores •Scrum master •Product owner •Desenvolvedor Papéis K P D M ed ia /S h u tt er st o ck 57 57 Sprint Retrospective Sprint Review Sprint Planning Daily Scrum Product Backlog Sprint Backlog Increment 1 Scrum Team Scrum Framework 57 58 55 56 57 58
Compartilhar