Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Desenvolvimento de Softwares AULA TEÓRICA 1 Software: instruções, estruturas de dados que possibilitam aos programas manipular informações, informação descritiva... Programa: sequencias de passos descrito por um algoritmo 1. Algoritmo: estrutura passo a passo de como o problema deve ser resolvido. 1.1. Objetivo: representar fielmente o raciocínio envolvido na lógica de programação 1.2. Receita de bolo 1. Software de sistema: Windows, android, contato direto com o hardware, coleção de programas que apoiam outros programas 1.1. Operacionais: é aquele necessário para funcionamento do hardware ou parte dele 1.1.1. Supervisão dos processos executados pelo computador. 1.1.2. Gerencia todo hardware e software, realiza a comunicação entre eles 1.1.3. Funções: facilitar o uso pelo usuário, gerenciar os recursos do computador, controlar a execução de programas pela CPU 1.2. Tradutores: convertem os programas escritos para um código em linguagem de máquina 1.2.1. Linguagem de alto nível mais próxima ao usuário e o computador n entende. 1.2.1.1. INTERPRETADORES: quando ele traduz linha por linha do programa 1.2.1.2. COMPILADORES: compila o código todo, faz um executável e depois o usuário consegue executar 2. Software utilitário: oferece ferramentas para organizar os discos, verificar disponibilidade de memória e corrigir falhas de processamento. Útil. Antivírus, compactadores, emuladores, desfragmentadores. 3. Software aplicativo 4. Linguagens – tratam de dados de um computador por meio do uso de algoritmos 1) CICLO DE VIDA DE SOFTWARE: traz uma certa organização, controle na atividade no desenvolvimento do software a) Definição: como o usuário quer o programa. Reuniões com o cliente (levantamento de requisitos). i) Requisitos funcionais: dizem respeito as funções que o software deve ter ii) Requisitos não funcional: restrições, exemplo: quer que o software rode no Linux iii) Análise de sistema: divisão do problema. Relacionamento entre subproblemas b) Desenvolvimento – verificação e testes. Fase genérica que abrange a fase de projeto, codificação, testes etc. i) Definição da sequência de passos necessários para a execução de cada um dos módulos definidos na fase de projeto. Escolhe a linguagem de programação. ii) Nessa fase verificamos se os Padrões de qualidade, pré estabelecidos, estão sendo cumpridos c) Manutenção: preparação dos manuais. i) Como o software pode ser atualizado ii) Resolução de problemas que aparecem depois que o software foi instalado iii) Treinamento dos usuários iv) Inclusão de algum módulo d) Essas 3 fases são genéricas e cada projeto pode ter fases adicionais específicas AULA PRÁTICA 1 Site replic.com Linguagem C Visual Studio scanf_s AULA 2 – Fundamentos e desenvolvimento de software 1) Crise do software: foi o problema do software não acompanhar o desenvolvimento do hardware a) Conceito de engenharia de software foi proposto em 1965 b) Circuitos integrados menos e mais baratos, sugem os computadores de mesa, o desenvolvimento de software era informal. c) Documentação inexistentes na época d) Perda de tempo e dinheiro, ausência de metodologia e) BUGS MAIS FAMOSOS i) Erro de interpretação de um requisito: alguma restrição que o cliente impõe no seu sistema ii) Erro de sintaxe no código iii) Causa de queda do sistema iv) BUG – vem do fato de como os computadores antigos era com válvulas que atraiam insetos e isso causava a queda do sistema v) BUG FAMOSO (1) 1962 – falha na sonda mariner 1 (a) Desvio de curso (b) Fórmula que foi digitada errada (2) 1985 – 1987 – acelerador médico therac-25 (a) Muitas pessoas morreram nesse acelerador que tratava tumores (b) Máquina emitia 100x mais energia do que o técnico digitava (c) Pacientes morreram (d) Não tinha documentação, manual do usuário (3) 1993 – divisão de números com ponto flutuante no Pentium (a) Na divisão havia um erro na 4ª casa decimal, de 0.006% (b) Prejuízo de meio bilhão de dólares 2) ENGENHARIA DE SOFTWARE a) Conceito: aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção de software, isto é, aplicação de engenharia de software. AGIL E ADAPTAVEL b) Disciplina de engenharia relacionada a todos os aspectos de produção de software c) Abrange um processo, cj de métodos e ferramentas i) Processo = fases de vida do processo d) CAMADAS DA ENGENHARIA – em camadas i) Foco na qualidade (base) ii) Processos : define a metodologia de desenvolvimento iii) Métodos: técnicas de desenvolvimento – como fazer. Modelos e regras iv) Ferramentas: ferramentas case, que dão apoio à construção da documentação etc... 3) ENGENHEIRO DE SOFTWARE a) Aplica o processo de engenharia de software b) Em 2018 a profissão de engenheiro de software foi regulamentada e vinculada ao CREA c) SBC (sociedade brasileira de computação) – não concorda com essa vinculação ao crea d) Engenheiro de software não é i) Analista ii) Programador e) ENGENHEIRO DE SOFTWARE - atividade i) faz a escolha dos processos, planejamento, gerência e produção a serem implementadas ii) avaliar o desenvolvimento iii) verifica se o processo é eficiente iv) reavalia o processo continuamente f) ANALISTA i) Levantar os requisitos – modelagem ii) Descobre o que o cliente precisa g) PROGRAMADOR i) Construção da solução física ii) Passa para a linguagem de programação iii) Conhece a fundo a linguagem, as bibliotecas iv) Teste e depuração h) NÃO DEVE SE PREOCUPAR apenas com as questões técnicas i) Confidencialidade: respeitar a confidencialidade do cliente ii) Competência: não aceitar trabalhos fora de sua competência iii) Direitos sobre propriedade intelectual: ciente das leis locais e assegurar proteção da propriedade intelectual iv) Mau uso dos computadores: não utilizar habilidades técnicas para fazer mau uso dos computadores 4) MITOS a) Mitos de gerenciamento i) Já temos um livro cheio de padrões e procedimentos para desenvolver software ii) Se o cronograma atrasar, acrescentamos mais programadores. Quando entram mais integrantes pode haver atraso, pois tem que deslocar um profissional para dar apoio ao novato e explicar o novo. Tempo perdido que poderia estar desenvolvendo iii) Software n é manufaturado: mais gente não necessariamente é eficiência iv) Terceirizar o projeto de software pode não ser boa ideia, pois tem que revisar e controlar b) Mitos do cliente i) Definição geral dos objetivos é suficiente para começar a escrever os programas ii) Fase mais importante é o levantamento e definição dos requisitos iii) Achar que a maior parte dos detalhes podem ser preenchidos posteriormente iv) Os requisitos de software mudam e podem ser facilmente assimiladas pois o software é flexível. Uma mudança de requisitos no final do projeto pode atrasar muito c) Mitos do profissionais da área i) Programa feito e colocado em uso, o trabalho está terminado ii) Realidade: 60 e 80% de todo esforço será despendido após a entrega do software ao cliente pela primeira vez iii) Até que o programa esteja em execução não há como avaliar a qualidade. Na fase do planejamento já dá pra avaliar a qualidade iv) Modelos, documentos, planos, todos são necessários além do programa funcionando v) Eng de soft – vai fazer criar documentação volumosa e desnecessária e vai retardar vi) Realidade – objetiva criar um produto de qualidade e reduzir o retrabalho 5) IMPORTÂNCIA DA ENG SOFTWARE na área de desenvolvimento a) Estudar e monitorar todas as atividades do processo de desenvolvimento: definição, desenvolvimento e manutenção b) Importância: capacitar para o desenvolvimento de sistemas complexos dentro do prazo c) Qualidade: confiável (caso haja falhas, o sistema se recupera), desempenho (tempo), fácil de usar (usabilidade), fácil de manter (manutenibilidade), satisfaz os requisitos d) ATIVIDADES i) Planejamento: solução, pessoas e cronograma ii) Qualidade: atendimento das necessidades iii) Requisitos: expectativa do cliente. iv) Desenvolvimento: escolha do processo ideal v) Manutenção: menos bugs, código limpo, sistema planejado6) REFLEXÃO: toda vez que você pensar não temos para engenharia de software, pense, termos tempo pra fazer de novo? (roger Pressman) AULA PRÁTICA – 2 Jogo simples para entender os requisitos Usar o scratch.mit.edu
Compartilhar