Engenharia de Software Competência: Compreender a importância do software e da engenharia de Software Agenda • • • • O que é Software? Papel evolutivo do Software. Características do Software. Aplicações de Software. O que é Software? • Software de computador é o produto que os engenheiros de software projetam e constroem. • Abrangem programas que executam em computadores de qualquer tamanho e arquitetura, documentos que incluem formas impressas e virtuais e dados que combinam números e texto, mas também incluem em representações de informação em figuras, em vídeo e em áudio. Por que é importante? • Por que afeta praticamente todos os aspectos de nossas vidas e tornou-se difundido no nosso comércio, na nossa cultura e nas nossas atividades do dia a dia. Quais são os passos? • Você constrói software de Computador como constrói qualquer outro produto bem-sucedido, aplicando um processo que leva a um resultado de alta qualidade, que satisfaz as necessidades das pessoas que vão usar o produto. Qual é o produto do trabalho? • Do ponto de vista do engenheiro de software, o produto do trabalho é o conjunto de programas, documentos e dados que compõem um software de computador. • Mas do ponto de vista do usuário o produto do trabalho é a informação resultante, que de alguma forma torna melhor o mundo do usuário. Papel evolutivo do Software • Hoje em dia o software assume um duplo papel. • Ele é produto e, ao mesmo tempo, o veículo para a entrega do produto. Papel Evolutivo do Software • Como produto ele disponibiliza o potencial de computação presente no computador, ou mais amplamente, numa rede de computadores acessível pelo hardware local. • O software é um transformador de informação – produzindo, gerando, adquirindo, modificando, exibindo, ou transmitindo a informação, que pode ser tão simples como um único bit ou tão complexa como uma apresentação em multimídia. Papel Evolutivo do Software • Como veículo usado para a entrega do produto, o software age como uma base para controle do computador (sistemas operacionais), para a comunicação da informação (redes) e para a criação e o controle de outros programas (ferramentas e ambientes de software). Papel Evolutivo do Software • O software entrega o mais importante produto da nossa época – A Informação. • O software transforma dados pessoais (p. ex: as transações financeiras de uma pessoa) de modo que possam ser mais úteis em determinado contexto; • Gera informação comercial para melhorar a competitividade; • Fornece um portal para as redes de informação de âmbito mundial (ex:Internet) e proporciona os meios para obter informação em todas as formas. Papel Evolutivo do Software • A importância do software de computadores tem passado por mudanças significativas em pouco mais de 50 anos: – Melhora surpreendente no desempenho do hardware; – Profundas modificações na arquitetura de computadores, aumento significativo na memória e na capacidade de armazenamento – Variedade de opções incomuns de entrada e saída. • Isso tudo tornou os sistemas baseados em computador mais sofisticados e complexos. • Sofisticação e complexidade podem produzir magníficos resultados quando um sistema é bem-sucedido, mas também pode causar enormes problemas para quem precisa construir sistemas complexos. Papel Evolutivo do Software. • O programador solitário de antigamente foi substituído por uma equipe de especialistas em software, com cada um se concentrando numa parte da tecnologia necessária para produzir uma aplicação complexa. • Porem os mesmos questionamentos feitos ao programador solitário estão sendo feitos quando modernos sistemas baseados em computador são construídos: Papel Evolutivo do Software • Por que leva tanto tempo para concluir um software? • Por que os custos de desenvolvimento são tão altos? • Por que não podemos achar todos os erros antes de entregar o software aos clientes? • Por que continuamos a ter dificuldade em avaliar o progresso enquanto o software é desenvolvido? Essas, e muitas outras perguntas, são uma manifestação da preocupação sobre o software e a maneira pela qual ele é desenvolvido – preocupação que leva a adoção da prática de engenharia de software. Características do Software • O Software é um elemento de um sistema lógico e não de um sistema físico. Assim, o software tem características que são consideravelmente diferentes daquelas do hardware. 1. O software é desenvolvido, ou passa por um processo de engenharia, não é manufaturado no sentido clássico. 2. O Software não “se desgasta”. 3. Apesar da industria estar se movendo em direção a montagem baseada em componentes, a maior parte de software continua a ser construída sob encomenda. Aplicações de Software • Software de Sistemas. É uma coleção de programas escritos para servir outros programas. – Exemplos: Compiladores, Utilitários para gestão de arquivos, componentes de sistemas operacionais, acionadores e processadores de telecomunicações, compartilhamento de recursos. Aplicações de Software • Software de Tempo Real. – Software que monitora/analisa/controla eventos do mundo real à medida que eles ocorrem é chamado de tempo real. – Resposta tipicamente varia entre 1 milissegundo a 1 segundo. Aplicações de Software • Software Comercial: Processamento de informação comercial é a maior área de aplicação do software. – Exemplo: Folha de pagamento, Contas a pagar/receber,controle de estoque, processamento de transações de ponto de venda Aplicações de Software • Software Científico e de engenharia. – Tem sido caracterizado por algoritmos que processam números. As aplicações vão da astronomia à vulcanologia, da análise automotiva de tensões à dinâmica orbital do ônibus espacial e da biologia molecular à manufatura automatizada. Aplicações de Software • Software Embutido: – Software embutido reside situado nas memórias ROM leitura simples e é usado para controlar produtos e sistemas para o mercado consumidor e industrial. O software embutido pode realizar funções muito limitadas e particulares (p. ex: controle de teclado par o forno de microondas). Aplicações de Software • Software para computadores pessoais: – Processadores de texto, Planilhas, aplicações gráficas, multimídia, diversão, gestão de bases de dados, aplicações financeiras pessoais e comerciais. Aplicações de Software • Software para Web. – As páginas da web recuperadas por um browser constituem software que incorpora instruções executáveis (CGI, HTML, Java) e dados (P. ex: Hipertexto e uma variedade de formatos visuais e de aúdio). – A rede se transforma em um grande computador que fornece um recurso quase ilimitado de software, que pode ser acessado por qualquer um que tenha um modem.