PARTE I PROFESSOR: EDILSON LIMA UNIDADE 1 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I a. A importncia do software; b. Caractersticas, componentes e aplicaes do software; e c. Crise e mitos de software ROTEIRO PROFESSOR: EDILSON LIMA 02/35 ROTEIRO ROTEIRO PROFESSOR: EDILSON LIMA 03/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I a. A importncia do software
O software o produto mais importante desta ltima era. E devido a sua dualidade com o hardware que com o passar do tempo melhora o desempenho, diminui o tamanho e reduz o custo, permite-se utilizar o software para gerar sistemas mais sofisticados. 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I O software possui um duplo papel na produo, no s pode constituir um produto, como tambm pode ser o veculo de melhora de um produto. Exemplo: Como produto de software - podemos citar toda a linha de software e que normalmente so comercializados, tais como software de sistema e de aplicao. Um exemplo simples seria o produto Word da Microsoft. Como veculo de melhora de um produto de software podemos citar o software Globalink, um tradutor de lnguas que ao instalar pode ser inserida como uma funo de chamada no Word, bem como pode ser usado isoladamente como um produto completo. Como veculo de melhora de um produto industrial quando o software esta associado a um hardware especfico de uma mquina que pode assim ser automatizada. PROFESSOR: EDILSON LIMA 04/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I b. Caractersticas, componentes e aplicaes do software
CARACTERSTICAS DO SOFTWARE
O software desenvolvido ou passa por um processo de engenharia; no fabricado. Os problemas de qualidade do hardware podem ser corrigidos pela manufatura, o que no ocorre com o software. Os custos dos software esto concentrados no trabalho de engenharia (anlise, projeto e implementao). PROFESSOR: EDILSON LIMA 05/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I
O Software no se desgasta. O software no suscetvel aos males ambientais que causam desgaste do hardware, no devido a efeitos ambientais como o hardware, mas sim devido a mudanas que ocorrem no ciclo de vida do software. O software no se desgasta, mas se deteriora! Quando o hardware se desgasta substitudo por outro sobressalente. Durante o ciclo de vida o software passar por modificaes (manuteno). E a medida que so feitas modificaes, provvel que novos defeitos sejam introduzidos, causando dente na curva de taxa de falhas. PROFESSOR: EDILSON LIMA 06/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I PROFESSOR: EDILSON LIMA 07/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I
O software continua sendo construdo por encomenda. medida que uma disciplina de engenharia evolui, novos componentes so criados. No mundo do software estes componentes ainda esto sendo aprimorados e esto apenas comeando em ampla escala. Estes componentes devem ser implementados de modo que possam ser reusados. O reuso de um componente uma atividade natural no processo de engenharia. A reusabilidade do software uma mtrica de qualidade usada para avaliar o quanto um programa ou parte dele pode ser usada em outras aplicaes. PROFESSOR: EDILSON LIMA 08/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I COMPONENTES
Os componentes de software so criador por meio de uma srie de converses que mapeiam as exigncias do cliente para cdigo executvel em mquina. Um modelo (ou prottipo) das exigncias convertido num projeto. O projeto de software convertido numa forma de linguagem que especifica a estrutura de dados do software, os atributos procedimentais e os requisitos relacionados. A forma de linguagem processada por um tradutor que a converte em instrues executveis em mquinas. PROFESSOR: EDILSON LIMA 09/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I A reusabilidade uma caracterstica importante de um componente de software de alta qualidade, ou seja, o componente deve ser projetado e implementado de forma que possa ser reusado em muitos programas diferentes.
Os componentes de software so construdos usando uma linguagem de programao que tem um vocabulrio limitado, uma gramtica explicitamente definida e regras de sintaxe e semntica bem formadas. Esses atributos so essenciais para a traduo por mquinas. As formas de linguagem em uso so linguagens de mquina, linguagem de alto nvel e linguagem no procedimentais. PROFESSOR: EDILSON LIMA 10/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I SISTEMAS BASEADOS EM COMPUTADOR
A palavra sistema possivelmente o termo mais usado e abusado do vocabulrio tcnico. Existem sistemas econmicos, polticos, educacionais, bancrios e muitos outros tipos de sistemas.
Pressman em 2002, define sistemas baseados em computador como o conjunto ou arranjo de elementos que so organizados para atingir alguma meta predefinida pelo processamento da informao.
A meta do sistema baseado em computador a de apoiar alguma funo de negcio ou desenvolver um produto que pode gerar receita. Uma forma comum de sistema baseado em computador so os Sistemas de Informao. PROFESSOR: EDILSON LIMA 11/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Conceito de Sistemas de Informao
Sistema - o conjunto de elementos, concretos ou abstratos, intelectualmente organizado.
Informao - o conjunto de dados organizados e que representam algo til para a interpretao do ser humano.
Sistema de informao Stair em 2006 conceitua o sistema de informao SI como sendo um conjunto de componentes inter- relacionados que coletam, manipulam e disseminam dados e informaes para proporcionar um mecanismo de realimentao para atingir um objetivo. PROFESSOR: EDILSON LIMA 12/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Transformao de dados em informao
O termo informao no deve ser confundido com os dados. Um gerente deve entender que a informao o recurso mais importante de uma organizao, ela representa a inteligncia da organizacional. Conhecer os processos de transformao de dados em informao auxilia na administrao de um sistema de informao. PROFESSOR: EDILSON LIMA 13/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Dados so caracteres, textos, imagens, sons e voz, que expressam um fato isolado e que por si s no representam algo til, mas podem ser usados para formar algum conhecimento. Processamento so os processos de transformao dos dados (ou informao realimentada) em nova informao. Estes processos so formados pelos programas de computador que compe um software, so responsveis por realizar operaes de clculos, classificao e organizao da informao. Armazenamento o local onde se guardam dados, informaes e programas. Feedback (realimentao) Processo de retornar a informao para entrada com objetivo de gerar novas informaes. Informao o resultado obtido pelo sistema que expressa o conhecimento de uma determinada operao. PROFESSOR: EDILSON LIMA 14/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Estrutura da Informao
A montagem da informao ocorre pelo processamento dos dados. Os dados por si s, no representam algum conhecimento (veja a Figura). Os programas responsveis pelo processamento so instrues intelectualmente organizadas, ou seja, para que se possa desenvolver um programa de computador no basta s ter o programador e uma linguagem de programao, necessrio extrair o conhecimento de um especialista do negcio.
Este conhecimento analisado e transformado em algoritmos (funes lgicas e matemticas), que por intermdio da linguagem de programao, o conhecimento convertido em programa de computador. PROFESSOR: EDILSON LIMA 15/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I PROFESSOR: EDILSON LIMA 16/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Elementos de um sistema baseado em computador
Software: so programas de computador, estruturas de dados e documentao correlacionada que servem para realizar o mtodo lgico, procedimento ou controle necessrio. Hardware: dispositivos eletrnicos que fornecem capacidade computacional, dispositivos de interconectividade (Exemplo: computadores de rede, dispositivos de telecomunicaes) que possibilitam o fluxo de dados e dispositivos eltricos/eletromecnicos (Exemplo: sensores, motores, bombas) que fornecem funes do mundo externo. PROFESSOR: EDILSON LIMA 17/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Elementos de um sistema baseado em computador (continuao)
Pessoal (Peopleware): Usurios e operadores de hardware e software, especialistas do conhecimento e especialistas da TI. Base de dados: Uma coleo de informao grande e organizada a que se tem acesso por intermdio do software. Documentao: Informao descritiva (Exemplo: manuais impressos, arquivos de ajuda on-line, Web sites) que mostram o uso e/ou operao do sistema. Procedimentos: Passos que definem o uso especfico de cada elemento do sistema ou contexto de procedimento no qual o sistema reside. PROFESSOR: EDILSON LIMA 18/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I
Observao: Se acrescentarmos a rede de computadores a um sistema baseado em computador, est caracterizado o SI Sistema de Informao. A parte fsica da rede de computadores corresponde ao hardware necessrio para a interconectividade. A engenharia de sistemas dever decidir protocolos de comunicao, topologias, enlaces, regras de acesso e controles de taxas de transferncia. PROFESSOR: EDILSON LIMA 19/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I APLICAES DO SOFTWARE
O contedo de informao e a determinncia so fatores importantes na determinao da natureza de um aplicativo. Por exemplo, muitas aplicaes comerciais fazem uso de dados de entrada altamente estruturados (um banco de dados) e produzem relatrios formatados. PROFESSOR: EDILSON LIMA 20/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I As seguintes reas de software indicam a amplitude das aplicaes:
Software de Sistemas. uma coleo de programas escritos para dar apoio a outros programas, normalmente possui uma forte interao com o hardware e so utilizados como processadores de telecomunicao, componentes do sistema operacional, computadores com intenso uso de mltiplos usurios, operaes concorrentes que exigem escalonamento (schedule), compartilhamento de recursos, estrutura de dados complexas e mltiplas interfaces; Software de Tempo Real. um software que monitora/analisa/controla eventos do mundo real, exige um controle/sada que responde ao ambiente externo e um componente de monitorao que coordena todos os demais componentes de forma a obter resposta em tempo real (que, tipicamente, varia de 1 milisegundo at 1 minuto) possa ser mantida. O termo tempo-real difere do interativo ou time-sharing que podem exceder o tempo de resposta sem resultados desastrosos; PROFESSOR: EDILSON LIMA 21/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I As seguintes reas de software indicam a amplitude das aplicaes:
Software Comercial. o de maior rea de aplicao. Distintos sistemas de informao que processam folhas de pagamentos, contas a pagar e a receber, estoques, etc. Os tipos mais comuns de sistemas de informao esto na categoria do e-business (negcios eletrnicos). So eles: ERP (Enterprise Resource Planning) Planejamento dos Recursos Empresariais; CRM (Customer Relationship Manager) Gerenciamento das Relaes com o Cliente; e SCM (Supply Chain Management) Gerenciamento da Cadeia de Suprimentos; Software Cientfico e de Engenharia. caracterizado por algoritmos de processamento de nmeros. As aplicaes variam da astronomia a vulcanologia, da anlise de fadiga de mecnica dinmica orbital de naves espaciais recuperveis, e da biologia molecular manufatura automatizada; PROFESSOR: EDILSON LIMA 22/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I As seguintes reas de software indicam a amplitude das aplicaes:
Software Embutido. O software embutido (embedded software) reside na memria ROM e usado para controlar produtos e sistemas para mercados industriais e de consumo. Pode ser usado para controlar tambm funes muito limitadas, tais como o controle de um forno de microondas e funes digitas de automveis; Software de Computador Pessoal. Processamento de textos, planilhas eletrnicas, computao grfica, diverses, gerenciamento de banco de dados, etc. De fato, o software de computador pessoal continua a representar os mais inovadores projetos de interfaces com seres humanos de toda a indstria de software;
PROFESSOR: EDILSON LIMA 23/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I As seguintes reas de software indicam a amplitude das aplicaes:
Software para Web. As pginas da Web recuperadas por um browser constituem software que incorpora instrues executveis (p. ex., CGI, HTML, Pearl ou Java) e dados (p. ex., hipertexto e uma variedade de formatos visuais e de udio); Software de Inteligncia Artificial (Artificial Inteligency AI). Faz uso de algoritmos no numricos para resolver problemas complexos que no sejam favorveis computao ou anlise direta. Atualmente, a rea de AI mais ativa a dos sistemas especialistas, tambm chamados sistemas baseados em conhecimento. Outras reas de aplicao: so o reconhecimento de padres (voz e imagem), jogos e demonstrao de teoremas. Atualmente a chamada rede neural artificial simula a estrutura dos processos cerebrais e pode levar a uma nova classe de software que consegue reconhecer padres complexos e aprender com a experincia passada. PROFESSOR: EDILSON LIMA 24/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I c. Crise e mitos de software CRISE Pressman em 2002 intitulando Software: Uma crise no horizonte define crise como um ponto decisivo no curso de algo. O termo se refere a um conjunto de problemas que so encontrados no desenvolvimento de software de computador.
Por haver um rpido crescimento da demanda por software, imaginava- se que com toda a complexidade no desenvolvimento, haveria uma forte crise. Com a inexistncia da Engenharia de Software nessa poca, no haviam tcnicas estabelecidas para o desenvolvimento de sistemas que funcionassem adequadamente ou que pudessem ser validadas. Porm estes mesmos problemas considerados como a crise do software, ainda so os mesmos da atualidade. PROFESSOR: EDILSON LIMA 25/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Gerentes responsveis pelo desenvolvimento de software concentram-se nas questes problemticas de primeiro plano:
As estimativas de prazo e de custo frequentemente so imprecisas; A produtividade das pessoas da rea de software no tem acompanhado a demanda por seus servios; e A qualidade de software s vezes menos que adequada. PROFESSOR: EDILSON LIMA 26/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Esses problemas so a manifestao mais visvel de outras dificuldades do software:
No so dedicados tempo para coletar dados sobre o processo de desenvolvimento de software. Sem nenhuma indicao slida de produtividade, no podemos avaliar com preciso a eficcia de novas ferramentas, mtodos ou padres; A insatisfao do cliente com o sistema concludo ocorre muito frequentemente. A comunicao entre o cliente e o desenvolvedor de software frequentemente muito fraca; e A qualidade de software frequentemente suspeita. Somente agora comeam a surgir conceitos quantitativos slidos de confiabilidade e garantia de qualidade de software.
PROFESSOR: EDILSON LIMA 27/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I MITOS DO SOFTWARE O mito de software /sistemas surgiu nos primrdios de seu desenvolvimento e propagaram desinformao e confuso. Alguns dos mitos remanescentes de software ainda merecem crditos:
Mitos Administrativos o Mito: J temos um manual repleto de padres e procedimentos para trabalhar com o sistema. Isso no oferecer ao meu pessoal tudo o que eles preciso saber? o Realidade: O manual de padres pode muito bem existir, mas ser que ele usado? Os profissionais tm conhecimento de sua existncia? completo? Em muitos casos, a resposta a todas estas perguntas no.
PROFESSOR: EDILSON LIMA 28/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Mitos Administrativos
o Mito: Temos os softwares de ltima verso e compramos os mais novos computadores. Porque ainda estamos atrasados? o Realidade: E preciso muito mais do que o ltimo modelo de computador para se trabalhar com um software de alta qualidade. As operaes com os novos softwares /sistemas so mais importantes do que o hardware para se conseguir boa qualidade e produtividade, tais operaes dependem do treinamento do pessoal.
o Mito: Se estamos atrasados com prazo, podemos adicionar mais usurios ou programadores? o Realidade: O desenvolvimento de software no um processo manufaturado. PROFESSOR: EDILSON LIMA 29/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Mitos dos Clientes
o Mito: Uma declarao geral dos objetivos suficiente para comear a escrever programas. o Realidade: Uma definio inicial ruim a principal causa de fracasso dos esforos de desenvolvimentos de software. Dominar a informao, funo, desempenho, interfaces, restries de projeto e critrios de validao fundamental.
o Mito: Os requisitos de projeto mudam continuamente, mas as mudanas podem ser facilmente acomodadas, porque o software /sistema flexvel. o Realidade: verdade que os requisitos de software /sistema se modificam, mas o impacto da mudana varia de acordo com o tempo em que ela introduzida. PROFESSOR: EDILSON LIMA 30/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I PROFESSOR: EDILSON LIMA 31/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Mitos do Profissional
o Mito: Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estar completo. o Realidade: Os dados de indstrias indicam que entre 50% e 70% de todo o esforo gasto num programa ser despendido depois que ele for entregue pela primeira vez ao cliente.
o Mito: Enquanto o software no estiver funcionando no tenho condies de avaliar sua qualidade. o Realidade: Um dos mecanismos mais efetivos de avaliao de software /sistema a reviso formal, que pode ser aplicada desde o incio do projeto, o que considerado um filtro de qualidade.
PROFESSOR: EDILSON LIMA 32/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Mitos do Profissional
o Mito: Um projeto bem sucedido o programa funcionando. o Realidade: Um programa funcionando somente uma parte de uma configurao de software. A documentao forma os alicerces para um desenvolvimento bem sucedido e, o que mais importante, fornece um guia para a tarefa de manuteno de software. PROFESSOR: EDILSON LIMA 33/35 1 SOFTWARE E ENGENHARIA DE SOFTWARE PARTE I Um analista de sistema sempre deve fazer reflexo sobre a Qualidade na Engenharia de Software e na Interao Homen-Computador.
FIM DA UNIDADE PROFESSOR: EDILSON LIMA 34/35 ROTEIRO PROFESSOR: EDILSON LIMA Bibliografia PAULA FILHO, Wilson de Pdua. Engenharia de software Fundamentos, mtodos e padres. 2.ed. Rio de Janeiro: LTC, 2003. PRESSMAN, Roger S. Engenharia de software. 6.ed. Rio de Janeiro: Mc- Graw-Hill, 2006. SOMMERVILLE, Ian. Engenharia de software. 6.ed. So Paulo: Addison Wesley, 2003.