Buscar

Fundamentos de desenvolvimento de software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Continue navegando