Componentes do Software
- Componentes do Software
- Um sistema informatizado é formado por dois tipos de componentes:
- Executáveis em máquina e
- Não executáveis em máquina
- Os componentes do software devem mapear as exigências do cliente em código executável.
- Um sistema informatizado é formado por dois tipos de componentes:

- Conceitos:
- Hardware: Estrutura computacional composta por circuitos eletrônicos (processador, memória, portas de entrada/saída, etc.) e periféricos eletro-óptico-mecânicos (teclados, mouses, discos rígidos, unidades de entrada e saída como USB, HDMI, etc.).
- Questão: É importante que o GI tenha conhecimentos sobre capacidade, processamento e escalabilidade de hardware?
- Software: Produto que profissonais de software desenvolvem, para o qual dão suporte no longo prazo. Abrange programas executáveis em um computador de qualquer porte ou arquitetura, conteúdos (apresentados à medida que os programas são executados), informações descritivas tanto na forma impressa (hard copy) ou na forma virtual, abrangendo praticamente qualquer mídia eletrônica.
- Questão: O GI deve conhecer os aspectos de PaaS, SaaS, NaaS, etc?
- Firmware: Conjunto de instruções operacionais que são programadas diretamente no hardware de equipamentos eletrônicos.
- Questão: Noções de firmware são fundamentais para o GI?
- Hardware: Estrutura computacional composta por circuitos eletrônicos (processador, memória, portas de entrada/saída, etc.) e periféricos eletro-óptico-mecânicos (teclados, mouses, discos rígidos, unidades de entrada e saída como USB, HDMI, etc.).

Categorias
- Software de Sistema:
- Desenvolvidos para atender a outros programas
- Compiladores, IDEs, utilitários, drivers, bibliotecas, componentes de SO
- [A] GIT?
- Compiladores, IDEs, utilitários, drivers, bibliotecas, componentes de SO
- Desenvolvidos para atender a outros programas
- Software de Aplicação:
- Programas que solucionam uma necessidade específica de negócios
- Financeiro, planilha, contabilidade, Folha de pagamento, etc
- [B] Evolução para ERP?
- Financeiro, planilha, contabilidade, Folha de pagamento, etc
- Programas que solucionam uma necessidade específica de negócios
- Software de engenharia/científico:
- Ampla variedade de programas de "cálculo em massa"
- Astronomia, biologia molecular, análise genética, meteorologia, etc
- [C] Performance?
- Astronomia, biologia molecular, análise genética, meteorologia, etc
- Ampla variedade de programas de "cálculo em massa"
- Software embarcado:
- Residente num sistema ou produto e utilizado para implementar e controlar características ou funções para o usuário e para o próprio sistema.
- Painel de micro-ondas, computador de bordo de automóveis, firmware de equipamentos telecom, etc
- [D] IoT?
- Painel de micro-ondas, computador de bordo de automóveis, firmware de equipamentos telecom, etc
- Residente num sistema ou produto e utilizado para implementar e controlar características ou funções para o usuário e para o próprio sistema.
- Software para linha de produtos:
- Projetado para prover capacidade específica de utilização por muitos clientes diferentes
- Controle de inventário, bancos, saúde, público, Tele-atendimento, etc
- [E] Acesso simultâneo?
- Controle de inventário, bancos, saúde, público, Tele-atendimento, etc
- Projetado para prover capacidade específica de utilização por muitos clientes diferentes
- Aplicações Web/Mobile:
- Categoria de software voltada às redes, navegadores e software residente em dispositivos móveis
- Apps, Aplicações em HTML, CSS, PHP, etc
- [F] Nativo, responsivo??
- Apps, Aplicações em HTML, CSS, PHP, etc
- Categoria de software voltada às redes, navegadores e software residente em dispositivos móveis
- Software de Inteligência Artificial:
- Faz uso de algoritmos não-numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta
- Robótica, Sistemas especialistas, reconhecimento de padrões, Machine Learning, redes neurais, prova de teoremas e jogos
- [G] Complexo?
- Robótica, Sistemas especialistas, reconhecimento de padrões, Machine Learning, redes neurais, prova de teoremas e jogos
- Faz uso de algoritmos não-numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta
- Software ...
Principais Problemas
- Estimativas de prazo (meses, anos) e custo imprecisas
- [H] BP?
- Produtividade abaixo da praticada pelo mercado
- [I] BP?
- Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)
- [J] Satisfação do usuário?
- Não se dedica tempo para coletar dados sobre o software e seu processo de desenvolvimento. Com poucos dados históricos como guia, as estimativas têm sido “a olho”, com resultados previsivelmente ruins.
- [K] Tem a ver com a figura?
- Sistemas defasados sem proposta de novas ferramentas, métodos, padrões ou processos.
- [L] Inovação?
- A insatisfação do cliente com o sistema “concluído” ocorre muito freqüentemente.
- [M] Perda do cliente?
- Os projetos de desenvolvimento de software normalmente são levados a efeito apenas com um vago indício das exigências do cliente.
- [N] Constrangimento na entrega?
- A comunicação entre o cliente e o desenvolvedor de software freqüentemente é muito fraca.
- [O] Metodologia?
- A qualidade do software freqüentemente é suspeita. Somente agora estão começando a ser seguidos conceitos quantitativos sólidos de confiabilidade e de garantia de qualidade de software.
- [P] Clientes cada vez mais exigentes?
- Só recentemente começamos a entender a importância dos testes de software sistemáticos e tecnicamente completos.
- [Q] Gestor de Qualidade?
- O software existente pode ser muito difícil de manter. A tarefa de manutenção de software devora a maioria de todos os recursos financeiros destinados a ele. A capacidade de manutenção de software não foi enfatizada como um critério importante para a aceitação do software.
- [R] Retrabalho?
Causas
- Gerentes sem vivência em:
- Projetos e seus marcos de evolução
- Métodos efetivos de controle
- Tecnologias que se modificam rapidamente
- Programadores e engenheiros de software com pouca instrução formal, holística e com conhecimento superficial sobre técnicas de desenvolvimento e as áreas de negócio.
- Cada pessoa aborda a tarefa de “escrever programas” com a experiência advinda de esforços passados. Algumas pessoas desenvolvem uma abordagem ordeira e eficiente, mesmo por tentativa e erro, mas muitas criam maus hábitos, que resultam em qualidade e manutenibilidade deficientes.
- Resistência às inevitáveis mudanças. É irônico que enquanto o hardware experimenta enormes mudanças, as pessoas da área de software responsáveis pelo aproveitamento desse potencial, muitas vezes se oponham à mudança quando ela é discutida e resistam a ela quando ela é introduzida.

Colaboração na Wiki
- Edição a vontade e complementações ao conteúdo da Aula 02
- Atenção para a formatação do texto
- Seminários abaixo já começam a valer pontos:
Evolução do Software
- Altamara Rodovalho
- Mayara Freitas Oliveira
A evolução do Software é um assunto amplo e dinâmico, segundo Roger S Pressman em seu livro Software engineering: a practiotioner’s approach: "o contexto em que o software foi desenvolvido está estreitamente ligado a quase cinco décadas de evolução dos sistemas computadorizados. O melhor desempenho de hardware, o menor tamanho e o custo mais baixo, precipitaram o aparecimento de sistemas baseados em computadores mais sofisticados. Mudamo-nos dos processadores à válvula para os dispositivos microeletrônicos que são capazes de processar 200 milhões de instruções por segundo”.
Pressman também divide a atual evolução do Software em 4 eras até o momento, sendo as três primeiras décadas tendo como foco o Hardware para assim reduzir o custo de processamento e armazenagem de dados. Chegando a década de 1980, contando com os avanços na microeletrônica, a computação iniciou um tímido processo de popularização. Já na década de 1990 o foco estava em melhorar a qualidade e reduzir o custo de soluções baseadas em computação, e são os softwares que chegam trazendo diversas soluções. A evolução de softwares do século XXI consiste no período de maior evolução e dinamismo até o presente, softwares vem se tornando obsoletos rapidamente, o ritmo de atualizações é frenético e diversas pequenas empresas com muito potencial surgem contrastando com o crescimento inimaginável das chamadas Big Techs, como é o caso de Apple e Microsoft. Já não é mais possível dissociar a evolução dos Softwares com a evolução humana.
Design Thinking
- Cintia Prado
- Fabiana Paula
Questões
- 01. Para qual das situações abaixo, podemos pressupor que temos um bom software? Por quê?
- A. O Facebook teve seus dados invadidos, copiados e enviados para vários destinos.
- B. Muito calor, os discos ficaram sobreaquecidos mas ainda assim o sistema continuou funcionando normalmente.
- C. Software que faz a programação de velocidade da escada rolante acelerou subitamente.
- D. Desenvolvedor mudou de empresa e quem assumiu não conseguiu entender a documentação para dar sequência ao trabalho.
- E. Incêndio na matriz que mantém os servidores provocou parada generalizada nos sistema de usuários no mundo todo.
- F. Funcionário alterou seu salário e no final do mês recebeu além do que deveria.
- G. Saldo ficou gravado de forma incorreta porque a energia apagou na hora da atualização.
- H. Atendente foi registrar paciente mas sistema não funcionou porque link estava fora do ar.
- I. Sistema que controla o enchimento das garrafas de refrigerante colocou quantidade de líquido abaixo do exigido.
- 02. Qual o meio-termo entre Software de Prateleira e Software-Taylor-made?
- R:
- 03. Qual a diferença entre software livre e software open-source?
- R:
Form