Baixe o app para aproveitar ainda mais
Prévia do material em texto
MODELO DE MATURIDADE DE SOFTWARE Introdução Esta aula tem como tema central apresentar uma das principais áreas da Computação, a área da Engenharia de Software. Esta é uma área recente que deve ser utilizada para o desenvolvimento, operação e manutenção de software. Objetivo: 1. Conhecer a definição de software, a sua evolução e classificação; 2. Estudar a definição da Engenharia de Software, seus objetivos e características e entender o seu uso como uma tecnologia em camadas. Definição de software Um conceito muito importante que todos devem saber é o de software, o que é realmente um software e quais são os seus componentes. Um Software é composto das seguintes partes: Software Instruções: são os programas de computador que quando executadas produzem a função e o desempenho desejados; Estruturas de dados: possibilitam que os programas manipulem adequadamente os dados que estão sendo tratados; Documentos: os quais descrevem a operação e o uso dos programas. Portanto, software é muito mais do que somente instruções, do que somente código. Ele é composto por um elemento muito importante que são as documentações. Quando compramos um software devemos receber toda a documentação necessária sobre ele, como: nota fiscal, licença de uso, manual de operação, manual de instalação e configuração, dentre outros. Evolução do software Vamos entender agora como ocorreu a evolução do software desde o surgimento da computação, no final da década de 1940 e início da década de 1950. A evolução do software está dividida em eras, que são: 1950 a 1965 A Primeira era do desenvolvimento de software • O desenvolvimento de software era considerado uma arte; • Haviam poucos métodos sistemáticos para o desenvolvimento; • O desenvolvimento de software não era gerenciado; • O hardware sofria contínuas mudanças e era o centro das atenções; •O software era customizado, ou seja, adequado às necessidades do usuário final, e a sua distribuição era limitada; • O software era desenvolvido e utilizado pela mesma pessoa ou organização; • Não havia documentação, todas as informações necessárias sobre o software estavam na cabeça das pessoas que o desenvolveram (one’s head); • O processamento de dados era em lote (batch). 1963 a 1974 A segunda era do desenvolvimento de software • Surgimento da multiprogramação e dos sistemas multiusuários; • Desenvolvimento de técnicas interativas homem-máquina; • Utilização de sistemas de tempo real; • Surgimento da 1ª geração de sgbds; • Nascem as software houses e os produtos de software; •O software era produzido para ampla distribuição em um multidisciplinar, em várias áreas de conhecimentos; • Surge o conceito de biblioteca de software; mercado •Devido à falta de metodologias de desenvolvimento e de documentação, a manutenção era praticamente impossível. 1973 a 1978 A terceira era do desenvolvimento de software • Surgimento dos sistemas distribuídos e paralelos; • Desenvolvimento das redes locais e globais de computadores; •Necessidade de elevada demanda por acesso imediato a dados por parte dos usuários; • Criação dos computadores de uso pessoal (PC - personal computers) e estações de trabalho (workstations); • Uso generalizado de microprocessadores; •Começa a haver um grande consumo de computadores, o que consequentemente baixa o custo do hardware; •Há um forte impacto de consumo, pois os computadores tornaram-se acessíveis a um grande público que antes não tinham acesso ao uso de computadores. 1985 aos dias atuais A quarta era do desenvolvimento de software • Surgimento dos ambiente cliente-servidor; •Desenvolvimento do paradigma orientado a objetos, da linguagem de modelagem unificada (UML) e do processo unificado; • Surgimento dos sistemas multimídia e da realidade virtual; •Desenvolvimento dos sistemas especialistas e de software de inteligência artificial utilizados em sistema do mundo real; • Surgimento das técnicas de 4ª Geração (4GT); •Desenvolvimento da computação biológica e da computação vestível (wearable computers); • Surgimento da internet (information superhighway). Classificação do software Vamos entender agora quais são os diferentes tipos de software existentes e a sua classificação. O software está classificado nos seguintes tipos: Básico: é uma coleção de programas escritos para dar suporte a outros programas. Como por exemplo: compiladores, interpretadores, editores, componentes de sistemas operacionais, dentre outros. De Tempo Real: são programas que monitoram, analisam e controlam os eventos do mundo real quando eles ocorrem. Um sistema de tempo real precisa responder dentro de restrições de tempo especificadas. Há um limite máximo tolerável de resposta, de acordo com as especificações do software, como por exemplo: software de controle de usina nuclear, software de controle e navegação de satélites, dentre outros. Classificação do software Comercial: é o software desenvolvido para o negócio de uma organização. É a maior área para a qual o software é desenvolvido. Divide, basicamente, em Sistemas Discretos, como: sistemas de estoque, de contabilidade, de pagamento, dentre outros. E em Sistemas de Informações, como: sistemas de processamento de transações, sistemas de informações gerenciais, sistemas de suporte à decisão, sistemas de comércio eletrônico, dentre outros. Científico e de Engenharia: são caracterizados por algoritmos que tratam dados numéricos. Como por exemplo: software para cálculo da dinâmica da órbita de um ônibus espacial, software para computação auxiliada por computador (computer aided design), software para simulação de sistemas, dentre outros. Classificação do software Embutido ou Embarcado: é um software que normalmente reside em memória não volátil (ROM) e é utilizado para o controle de produtos e de sistemas para os mercados consumidor e industrial. Como por exemplo: software para controle de micro-ondas, para computadores de bordo de automóveis, para sistemas de freio, dentre outros. Computador Pessoal: é o software utilizado nas atividades domésticas para soluções de problemas do dia a dia, como por exemplo: processadores de texto, planilhas eletrônicas, multimídia, jogos, dentre outros. Classificação do software Inteligência Artificial: é o software que faz uso de algoritmos não numéricos para resolver problemas complexos que não podem ser tratados de forma convencional. Como por exemplo: software de apoio ao diagnóstico de infarto agudo do miocárdio, software para concessão de cartão de créditos, dentre outros. Definição de engenharia de software Nesta parte da aula apresentaremos a área da Engenharia de Software, seus objetivos e características. Abordaremos também os fatores que afetam a prática da Engenharia de Software e o seu uso como uma tecnologia em camadas. Como já foi discutido na aula anterior, no início da computação a preocupação era com o hardware e o software, nada mais era do que uma reflexão posterior. Entretanto, essa visão mudou e com ela gerentes e técnicos se fazem as seguintes perguntas: • Por que o software demora tanto tempo para ser concluído? • Por que os custos de produção têm sido tão elevados? •Por que não é possível detectar todos os erros antes que o software seja entregue ao cliente? •Por que é tão difícil medir o progresso durante o processo de desenvolvimento? Definição de engenharia de software A resposta para todas essas perguntas é: a não adoção de práticas de engenharia de software para o desenvolvimento de software, ou seja, devemos desenvolver software como uma engenharia, da mesma forma que utilizamos a engenharia civil para construir prédios ou utilizamos a engenharia aeronáutica para construir aviões. A Engenharia objetiva analisar, projetar, construir, verificar e gerenciar entidades técnicas e/ou sociais. Quando a entidade a ser construída com a engenharia é software, temos a Engenharia de Software. Definiçãode engenharia de software Então podemos definir Engenharia de Software como: o estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais (PRESSMAN, 2006). Também podemos definir da seguinte forma: Engenharia de Software é a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software (IEEE STANDARD 610.12). Objetivo e características da engenharia de software A engenharia de Software tem como objetivo projetar e desenvolver software com maior qualidade em menos tempo e com o menor custo possível para resolver problemas de forma eficiente e eficaz. A qualidade envolve desenvolver softwares mais eficientes, mais precisos, fáceis de modificar, de usar ou de entender. Essas são características importantes que devem ser priorizadas em um software. A Engenharia de Software é uma disciplina de engenharia que está envolvida com todos os aspectos do desenvolvimento de produtos de software. Os produtos de software consistem de programas desenvolvidos, estruturas de dados e documentação associada. Essa engenharia não está voltada para a programação individual, mas para abordagens provendo mecanismos para que grupos possam lidar com complexidade e mudança na construção de um software. Fatores que afetam a prática da Engenharia de software A Engenharia de Software tem uma série de fatores que afetam a viabilidade de entrega de produtos de software. Os fatores são: •Necessidade de entregar produtos de software de acordo com as exigências do mercado. É o que é frequentemente referenciado como time to market; •Mudanças na economia que afetam a computação. Grandes alterações na economia que têm forte impacto na área de Tecnologia da Computação; • Maior disponibilidade de computadores de mesa potentes. Usuários têm computadores com ótimas configurações para atividades rotineiras; Fatores que afetam a prática da Engenharia de software • Redes de telecomunicações extensíveis. Grande disponibilidade de infraestrutura de redes de computadores à todos; • Disponibilidade e adoção de tecnologia orientada a objetos; • Necessidade de interfaces gráficas para os usuários; • Imprevisibilidade do modelo cascata para o desenvolvimento de software. Tecnologia em camadas A Engenharia de Software é uma tecnologia em Camadas. Para que um problema seja resolvido, a solução deve empregar um conjunto variado de métodos ou técnicas, ferramentas e processos utilizando um paradigma de desenvolvimento específico. É muito importante que no desenvolvimento de um software haja um compromisso organizacional com a qualidade, que leva ao desenvolvimento de abordagens cada vez mais amadurecidas para a Engenharia de Software. FERRAMENTAS •Automatizam o processo de desenvolvimento de software dando suporte aos métodos; •Elas são denominadas de ferramentas Case (Computer Aided Software Engineering – Engenharia de Software auxiliada por computador). Como por exemplo: editores, testadores, modeladores, gerenciadores; •Quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado I-CASE (Integrated CASE). Tecnologia em camadas MÉTODOS •Os métodos de Engenharia de Software fornecem a técnica de como fazer para construir software; •Incluem um amplo conjunto de tarefas que abrange: análise de requisitos, projeto,construção de programas, teste e manutenção, dentre outros; • São constituídos por um conjunto de princípios básicos, que regem cada área da tecnologia e incluem atividades de modelagem a outras técnicas descritivas. PROCESSOS • Representa o fundamento, o principal elemento, da Engenharia de Software; • O processo da Engenharia de Software é o “adesivo” que mantém unidas as camadas de tecnologia e permite o desenvolvimento racional e oportuno de software para o computador. Exercícios de fixação Questão 1 Fonte: Funiversa – 2009 – IPHAN Assim como a Engenharia de Software, existe também na área de informática a Ciência da Computação. Assinale a alternativa que melhor apresenta a diferença entre Engenharia de Software e Ciência da Computação. a) A Ciência da Computação tem como objetivo o desenvolvimento de teorias e fundamentações. Já a Engenharia de Software se preocupa com as práticas de desenvolvimento de software. b) A Engenharia de Software trata da criação dos sistemas de computação (softwares) enquanto a Ciência da Computação está ligada ao desenvolvimento e criação de componentes de hardware. c) A Engenharia de Software trata dos sistemas com base em computadores, que inclui hardware e software, e a Ciência da Computação trata apenas dos aspectos de desenvolvimento de sistemas. d) A Ciência da Computação trata dos sistemas com base em computadores, que inclui hardware e software, e a Engenharia de Software trata apenas dos aspectos de desenvolvimento de sistemas. e) A Ciência da Computação destina-se ao estudo e solução para problemas genéricos das áreas de rede e banco de dados e a Engenharia de Software restringe - se ao desenvolvimento de sistemas. Questão 2 Com base nos conceitos de Engenharia de Software e da Ciência da Computação, julgue a questão a seguir: A ciência da computação estuda os aspectos do desenvolvimento e da evolução de software; a engenharia de software estuda o uso de ferramentas e de codificação. a) Verdadeiro b) Falso Questão 3 Dentre as alternativas a seguir, assinale a que representa os elementos que compõem um software: c) Dados, sistema e instruções. d) Instruções, estruturas de dados e sistema. e) Documentos, dados e instruções. c) Estruturas de dados, documentos e instruções. d) Sistemas, documentos e instruções. Questão 4 Dentre as alternativas abaixo, assinale a única que não representa um problema encontrado na primeira era de desenvolvimento de software: a) O desenvolvimento de software era considerado uma arte. b) O desenvolvimento de software não era gerenciado. c) Haviam poucos métodos sistemáticos para o desenvolvimento. d) Não havia documentação. e) Necessidade de elevada demanda por acesso imediato a dados. Questão 5 É o software que faz uso de algoritmos não numéricos para resolver problemas complexos que não podem ser tratados de forma convencional. Estamos nos referindo ao software: f) Básico. g) De inteligência artificial. h) Embutido ou embarcado. i) De tempo real. j) Comercial. Questão 6 Fonte: Cespe 2013 TRT 10ª Região – Analista Judiciário – Tecnologia da Informação Com relação a conceitos gerais de engenharia de software, julgue o item a seguir: A engenharia de software engloba processos, métodos e ferramentas. Um de seus focos é a produção de software de alta qualidade a custos adequados. a) Verdadeiro b) Falso Questão 7 Fonte: Cespe 2010 TRE-BA – Analista de Sistemas – Desenvolvimento de Sistemas Com relação à engenharia de software, julgue o item a seguir: Entre os desafios enfrentados pela engenharia de software estão lidar com sistemas legados, atender à crescente diversidade e atender às exigências quanto a prazos de entrega reduzidos. c) Verdadeiro d) Falso Questão 8 Fonte: FGV 2010 Badesc – Analista de Sistemas – Desenvolvimento de Sistemas De acordo com Pressman, a engenharia de software é baseada em camadas, com foco na qualidade. Essas camadas são: a) Métodos, processo e teste. b) Ferramentas, métodos e processo. c) Métodos, construção, teste e implantação. d) Planejamento, modelagem, construção, validação e implantação. e) Comunicação, planejamento, modelagem, construção e implantação. Questão 9 Fonte: FCC – 2010 – TRE-RS – Analista Judiciário – Analista de Sistemas Suporte Sobre a engenharia de software, considere: I.Atualmente todos os problemas na construção de software de alta qualidade no prazo e dentro do orçamento foram solucionados. II. Ao longo dosúltimos 50 anos, o software evoluiu de um produto de indústria para um ferramental especializado em solução de problemas e análise de informações específicas. III. Todo projeto de software é iniciado por alguma necessidade do negócio. IV.O intuito da engenharia de software é fornecer uma estrutura para a construção de software com alta qualidade. Está correto o que consta em: a) III e IV, somente. b) II e III, somente. c) I, II e IV, somente. d) II, III e IV, somente. e) I, II, III e IV. Questão 10 Fonte: FCC 2012 – TCE-AM – Analista de Controle Externo – Tecnologia da Informação Considere o excerto a seguir: A engenharia de software pode ser considerada uma tecnologia, com métodos e ferramentas próprios, estruturada em camadas, do ponto de vista sistêmico. A abordagem sistêmica da engenharia de software deve se apoiar num compromisso organizacional com a qualidade que leve à cultura de um processo contínuo de aperfeiçoamento, e é essa cultura que, em última análise, leva ao desenvolvimento de abordagens cada vez mais efetivas. A camada de base em que a engenharia de software se apoia é I e o “adesivo” que mantém unidas as camadas, estruturadas segundo a visão sistêmica, é o II. As lacunas I e II devem ser preenchidas, correta e respectivamente, por: a) A qualidade de processo – método. b) O uso de ferramentas - controle de qualidade. c) O controle de qualidade – método. d) O controle de requisitos – projeto. e) O foco na qualidade – processo. Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27
Compartilhar