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 disquete, CD ou DVD, dispositivos USB, etc.).
- 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.
- Firmware: Conjunto de instruções operacionais que são programadas diretamente no hardware de equipamentos eletrônicos.
Categorias
- Software de Sistema: Desenvolvidos para atender a outros programas
- Compiladores, IDEs, utilitários, drivers, bibliiotecas, componentes de SO
- Software de Aplicação: Programas independentes que solucionam uma necessidade específica de negócios
- Financeiro, planilha, contabilidade, Folha de pagamento, etc
- Software de engenharia/científico: Ampla variedade de programas de "cálculo em massa"
- Astronomia, biologia molecular, análise genética, meteorologia, etc
- 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
- Software para linha de produtos: Projetado para prover capacidade específica de utilização por muitos clientes diferentes
- Controle de inventário, ERP, Tele-atendimento, etc
- 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
- 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
Principais Problemas
- Estimativas de prazo (meses, anos) e custo imprecisas
- Produtividade abaixo da praticada pelo mercado
- Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)
- Não dedicamos 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.
- Sem nenhum indicador sólido de produtividade, não poderemos avaliar com precisão a eficácia de novas ferramentas, métodos, padrões ou processos.
- A insatisfação do cliente com o sistema “concluído” ocorre muito freqüentemente.
- Os projetos de desenvolvimento de software normalmente são levados a efeito apenas com um vago indício das exigências do cliente.
- A comunicação entre o cliente e o desenvolvedor de software freqüentemente é muito fraca.
- 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.
- Só recentemente começamos a entender a importância dos testes de software sistemáticos e tecnicamente completos.
- O software existente pode ser muito difícil de manter. A tarefa de manutenção de software devora a maioria de todos os dólares destinados a software. A capacidade de manutenção de software não foi enfatizada como um critério importante para a aceitação do software.
Causas
- Gerentes sem vivência em:
- Projetos e seus marcos de evolução
- Métodos efetivos de controle
- Tecnologias que se modificam rapidamente
- Os programadores ou engenheiros de software têm pouca instrução formal, holística e estudam pouco as 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.
Evolução do Software
Crise do Software
Material de apoio
- Original :))
- PRESSMAN, Roger S. MAXIM, Bruce R. Engenharia de Software. Uma abordagem profissional. 8a. edição. 2016.
- REZENDE, Denis A. Engenharia de Software e Sistemas de Informação. BrasofBrasport. 3a. edição. 2005.
- Cópias :((
- www.inf.pucrs.br/~michael/aulas/espe_gest_ti/IntroEngSW.pdf
- file:///home/lclaudio/Downloads/Engenharia%20de%20Software.pdf
- 177.8.219.7:8081/sites/professor/pastas/andrea/.../aula1.ppt
Colaboração na Wiki
- Edição a vontade de complementações ao conteúdo da Aula 02
- Atenção para a formatação do texto
- Valendo pontos:
- Evolução do Software: Aluno selecionado
- Crise do Software: Aluno selecionado