Sistemas de Informação - Aula 17 - Engenharia de software

16.05k views2794 WordsCopy TextShare
UNIVESP
Curso de Engenharia Univesp - Universidade Virtual do Estado de São Paulo Disciplina: Sistemas de In...
Video Transcript:
[Música] Olá eu sou o professor Marcelo Fantinato Esta é a disciplina de sistemas de informação Vamos começar agora com a aula número 17 cujo assunto é engenharia de software nesta semana nós vamos ver quatro aulas que tratam basicamente do mesmo assunto a construção dos sistemas de informação nas aulas anteriores nós vimos uma série de assuntos relacionados aos conceitos básicos aos conceitos gerais do que significam os sistemas de informação Qual a importância dos sistemas de informação para as organizações para a sociedade agora nós teremos quatro aulas em que nós vamos aprender um pouco a respeito de
como construir sistemas de informação que são conceitos bastante importante pra área de engenharia tanto Engenharia de Produção quanto engenharia de computação Então nós vamos começar com essa primeira aula apresentando o conceito de engenharia de software a engenharia de software é uma área bastante Ampla dentro da Computação em que eh tratado os conceitos relacionados à construção de software de uma forma bastante Ampla quando Nós pensamos em Sistemas de Informação Nós pensamos mais do que software vocês devem se lembrar desse conceito relacionado a uma das aulas que nós vimos lá no início vocês devem se lembrar que
sistema de informação é formado por hardware software pessoas e procedimentos Mas nós vamos gastar algumas aulas aqui conhecer com um pouco mais de profundidade a engenharia de software muitos dos conceitos relacionados à engenharia de soft nós poderemos extrapolar para engenharia de sistemas de informação de uma forma mais Ampla bom como objetivos da aula nós vamos então apresentar uma visão Geral do processo de engenharia de software nós vamos contextualizar a engenharia de software no desenvolvimento de S informa então como eu comentei com vocês nós vamos aprender sobre engenharia de software porém entender como a engenharia de
software é usada para o desenvolvimento de sistemas de informação e por fim nós vamos também exemplificar os principais modelos de processo de engenharia de software começando então com a primeira definição relacionada à engenharia de software O que é engenharia de software engenharia de software é o conjunto de técnicas métodos e ferramentas para o desenvolvimento de software Então como nós definimos engenharia de software o conceito engenharia de software ele é um conceito bastante abstrato quando nós tentamos defini-lo pode ser um conjunto de técnicas um conjunto de abordagens um conjunto de métodos assim como ferramentas computacionais que
dão suporte a essas técnicas a essas ferramentas a a a esses métodos tudo para desenvolver software então quando nós falamos em engenharia de software de uma forma geral nós estamos pensando em qualquer tipo de técnica qualquer tipo de método que de alguma forma apoiado ou não por alguma ferramenta computacional ajude aos Engenheiros de software por exemplo aos analistas de sistema desenvolver um software construir um software e como o software é uma das partes mais importantes de um sistema de informação nós entendemos que também isso ajuda no desenvolvimento de um sistema de informação a engenharia de
software ela é uma área da Computação que foi estabelecida por volta da década de 60 década de 70 ainda a do século passado então nós já temos aí por volta de 50 anos quando a engenharia de software foi criada perto de outras áreas de engenharia Ah é uma área de engenharia relativamente recente bom Por que o nome engenharia de software justamente porque essa área da Computação Visa tratar o desenvolvimento de software como uma atividade de engenharia ou seja inspirada em outras outros tipos de engenharia engenharia civil engenharia elétrica ou Engenharia de Produção engenharia de computação
nós temos vários tipos de engenharia engenharia mecânica enfim nós também dentro da Computação nós entendemos que o desenvolvimento de software deve ser feito baseado a em técnicas em métodos ou em em atividades de engenharia isso leva a pensarmos no desenvolvimento de software de forma Econômica confiável e que trabalhe em máquinas reais ou seja nós não queremos desenvolver software construir softwares de uma forma não sistemática de uma forma que no final aquele desenvolvimento fique muito caro que o software não seja confiável que o software não tenha qualidade ou que ele nem possa ser usado em máquinas
realmente disponíveis na sociedade para isso é que o o desenvolvimento de software precisa ser feito de uma forma bastante sistemática então nós podemos entender como atividades de engenharia como atividades bastante sistemáticas Ah bom como eu comentei com vocês no início a engenharia de software é um conceito da Computação focada exclusivamente no desenvolvimento de software propriamente dito mas ah nós podemos entender isso também de uma forma ainda mais alto nível como a engenharia de sistemas ou então no nosso caso aqui da disciplina a engenharia de sistemas de informação Qual a diferença da engenharia de software para
a engenharia de sistemas de informação a diferença basicamente está relacionado à diferença do que é um software e a diferença do que é um sistema de informação aquele conceito que vocês já viram nas primeiras aulas então os conceitos dos dois tipos de engenharia eles são similares mas a engenharia de sistema de informação está num contexto mais amplo ou seja para desenvolver um sistema de informação Nós também Queremos ser sistemáticos nós também queremos Ah que seja feito de uma forma Econômica com qualidade porém nós não podemos nos preocupar apenas no desenvolvimento do software mas também do
hardware de como as pessoas serão envolvidas quais os procedimentos serão adotados desenvolver inclusive os procedimentos que as pessoas precisam seguir para usar aquele software e aquele hardware ou na verdade aquele conjunto de software e aquele conjunto de de hardware que faz parte do sistema de informação Ah que está resumido aqui software hardware procedimentos pessoas isso aqui vocês devem se lembrar faz parte da definição do que é um sistema de informação ou um sistema sociotécnico e não um sistema puramente técnico ah bom ah quando nós falamos na engenharia de software e agora tanto faz sabendo que
existe essa diferença de níveis de abstração quando a gente fala em engenharia de software ou engenharia de sistemas engenharia de sistemas de informação ah quando eu estiver falando apenas em engenharia de software vocês já podem ah imaginar que que as mesmas definições os mesmos conceitos valem para uma engenharia de sistema de de informação Ok bom quando nós falamos em engenharia de de software que nós temos que desenvolver o software de uma forma sistemática isso significa inclusive separar de uma forma bem definida as diferentes atividades que devem acontecer durante o desenvolvimento de software ah da mesma
forma como em diferentes tipos de engenharia as coisas são feitas em etapa na no desenvolvimento de sistemas no desenvolvimento de software as coisas também precisam ser feitas em etapas então por exemplo na engenharia civil ao se construir um edifício o edifício não é construído todo de uma vez só tem que ser feito um planejamento tem que ser feito diferentes tipos de projeto projeto arquitetural projeto da parte hidráulica o projeto da parte eh de energia depois você começa a fazer na Fundação aí você monta todo eleto do prédio e ainda você tem que ir andar por
andar o acabamento por exemplo é uma das últimas coisas a ser feitas a pintura do prédio por fim depois que o prédio está com todo o acabamento por exemplo você faz a parte de jardinagem e aí no fim você faz as validações finais ou seja existem diferentes etapas não dá para você construir de trás para frente ou tudo em paralelo isso acontece para outros tipos de engenharia também tá na engenharia mecânica na engenharia de alimentos enfim engia de software tem que ser da mesma forma a diferença é que o software é o que nós chamamos
de um produto intangível nós Não pegamos o software nós não conseguimos ver o software nós apenas usamos depois que ele tá pronto isso leva as pessoas acharem que o desenvolvimento de software pode ser feito de uma forma diferente que as pessoas simplesmente podem ir lá e começar programar e fazer o software e está pronto que não precisa passar por todas essas etapas porque o prédio visivelmente você vê que não dá para construir tudo de uma vez só que tem que ser etapa por etapa porque você percebe ele fisicamente Quando você vê e o software como
a gente não vê como nós Não vimos o software eh fisicamente às vezes é difícil nós percebemos que ele também precisa ser construído passo a passo mas na verdade ele precisa e sempre que uma equipe de desenvolvimento de um sistema de informação tem Tent atropelar as coisas provavelmente a qualidade não vai ser tão boa Bom enfim pensando aqui nas etapas da engenharia de software em geral nós temos as seguintes etapas especificação e análise de requisitos projeto de software implementação do software teste do software configuração de software gerência de projeto garantia da qualidade e manutenção de
software Essas são as principais fases as principais etapas que se passam durante a o desenvolvimento de software algumas podem ser sequenciais outras paralelo Ah isso vai depender dos modelos de ciclo de vida os modelos de processo que ah existem O que são então esses modelos de processo significa Como organizar essas diferentes atividades de engenharia de software nós vamos fazer Essas atividades que eu apresentei aqui anteriormente todas em sequência uma depois da outra em paralelo algumas em sequência outras em paralelo Como organizar Essas atividades dentro do desenvolvimento de software isso como organizar nós chamamos de processo
o processo de engenharia de software mas como nós temos diferentes formas de ter esses processos então nós chamamos essas diferentes formas de modelo então nós podemos ter diferentes modelos de processo e uma organização usa um modelo outra organização usa outro modelo e assim por diante Ok então aqui eu já tinha destacado isso pode ser nós vamos seguir de forma sequencial de forma paralela ou semip paralela ou ainda alguma outra forma de forma geral sempre que se vai desenvolver um software nós seguimos Essas atividades aqui isso é fazendo o geral quando eu comento que existem diferentes
modelos cada modelo tem uma característica específica essa figura aqui ela tenta definir as características gerais de qualquer modelo o que ela significa primeiro nós temos que definir e entender o problema ou seja qual sistema qual software vai ser desenvolvido Então eu preciso definir o problema ID ificar as causas do problema identificar objetivos de solução identificar requisitos de informação tudo isso para entender o que vai ser desenvolvido depois eu vou desenvolver soluções alternativas eu vou pensar todas as soluções todas as alternativas em que o software pode tratar para ser desenvolvido Por fim eu vou escolher a
melhor solução já que eu pensei em diferentes alternativas para tratar o problema que eu preciso resolver se eu tenho diferentes alternativas eu preciso escolher a melhor solução para desenvolver propriamente dita e depois que eu escolhi eu implemento essa solução essa primeira etapa é o que nós chamamos de análise de sistemas é um conceito bastante usado tanto que existem vários Profissionais que são chamados analistas de sistema os analistas de sistemas que ou analistas de sistemas de informação Mas normalmente nós chamamos apenas de analistas de sistema eles se concentram nessa primeira etapa que é entender o que
precisa ser feito analisar esse problema pensar em soluções diferentes e escolher a melhor solução para depois alguém implementar essa solução propriamente dita a implementação então é feita por outros tipos de profissionais que não analistas mas sim os programadores bom pensando nos modelos de processo propriamente dito então nós temos alguns exemplos O primeiro exemplo é o que nós chamamos de ciclo de vida clássico ou o modelo em Cascata é a forma mais antiga que nós temos de organizar aquelas atividades eu falei para vocês que elas poderiam ser sequenciais ou paralelas semip paralelas ou alguma outra forma
bom a forma mais antiga que nós temos de organizar Essas atividades é justamente todas numa sequência e isso isso é chamado o ciclo de vida clássico clássico porque é o primeiro e ele é chamado também de um modelo em Cascata por quê Porque eu termino uma atividade que é análise de sistemas todo o resultado vai pra próxima que é o projeto de sistema depois tudo todo o resultado quando eu termino ela inteiramente vai paraa próxima que é a programação a implementação depois tudo pro teste eu vou testar tudo que foi implementado depois eu eu vou
implantar tudo que foi eh testado e depois eu vou pra produção e manutenção e eu não volto nunca de uma atividade para outra ah outros tipos de modelos de processo que nós temos é por exemplo a prototipagem a prototipagem ela é uma evolução da do modelo ciclo de vida em em cascata do clássico em que em algum momento eu crio um protótipo um protótipo do que o software vai ser e eu verifico com o usuário se o usuário gostou daquele protótipo sempre que o usuário não achar que O protótipo está bom eu vou melhorar aquele
protótipo e eu fico aqui num looping num laço melhorando O protótipo e verifico com o usuário melhor O protótipo e verifico com o usuário quando o usuário achar que O protótipo está bom o suficiente na verdade é porque conseguir chegar no software final e eu acabo aquele ciclo de vida aquele processo bom uma evolução do modelo em Cascata percebam é o modelo em Cascata Que nós tínhamos visto mas a diferença é que eu tenho retornos Em algum momento verificou-se que a em geral sempre que eu partia de uma atividade e chegava na outra eu precisava
voltar para atividades anteriores ou para corrigir erros que foram feitos pelas equipes anteriores ou mesmo para alterar algo que tinha sido feito não necessariamente um erro mas que a equipe posterior que estava trabalhando por exemplo no projeto do software percebia que algo precisava ser mudado em termos de requisitos por exemplo uma outra evolução é um modelo espiral o modelo espiral diz que eu vou com ciclo de vida menor o ciclo de vida vai aumentando vai aumentando até que ele fique bastante grande e em cada ciclo de vida eu tenho diferentes etapas algumas vão se repetindo
em cada ciclo e outras vão sendo adicionadas então por exemplo algumas que são sempre eh repetidas é aqui a análise de riscos eu sempre vou fazer análise de risco saber se existem riscos associados ao software que eu estou desenvolvendo ou não Por exemplo eu estou desenvolvendo um software e existe um risco daquele tipo de funcionalidade não dar certo existe um risco de ficar muito caro sempre eu faço isso de tempos em tempos ah e o modelo iterativo e incremental ele é é uma evolução também do ciclo de vida em Cascata em que diz Em vez
de eu fazer Todas aquelas atividades de uma vez só eu faço um pouco um pouco de requisitos um pouco de projeto um pouco de implementação um pouco de testes para um pedacinho do ah do software um um incremento terminei começa tudo de novo para mais um pedacinho terminei começa tudo de novo para mais um pedacinho e assim por por por diante Isso significa que eu vou fazendo incrementos eu faço um pedaço do software outro pedaço outro pedaço e assim por diante Então eu tenho vários incrementos E cada vez que eu passo pelo ciclo de vida
isso é chamado de uma iteração eu estou iterando por isso ele é chamado de um modelo iterativo e incremental e por fim mais recentemente nós temos os modelos ágeis os modelos ágeis eles visam simplificar todos esses modelos apresent aqui para de uma forma mais parecida com esse último que é interativo e incremental por porém de uma forma ainda mais simples ele reduzir o ciclo de vida em no máximo de duas a quro semanas para em cada ciclo de vida de de duas a quatro semanas eu ter já uma versão do software sendo executada mas também
a por incrementos depois dessa versão de duas a quro semanas eu começo tudo de novo e assim eu vou por várias iterações até que depois de alguns meses depois de algumas dessas interações eu tenho o software final sendo executado bom com isso nós finalizamos essa visão Geral de engenharia de software de processo de engenharia de software e dos modelos de processo de software nas próximas aulas nós vamos ver alguns algumas informações com um pouco mais de detalhe a respeito das principais atividades da engenharia de software obrigado [Música] 2 [Música]
Copyright © 2024. Made with ♥ in London by YTScribe.com