Introdução à Engenharia de Software

24.18k views5822 WordsCopy TextShare
Rainara Maia
Aula do Capítulo 1 do livro Engenharia de Software Moderna do prof. Marco Tulio Valente. Este proj...
Video Transcript:
o olá pessoal vamos começar então nossas aulas do curso remoto de engenharia de software aula de hoje é mais pro apresentar a vocês a área com um todo então nosso objetivo aqui é ter uma visão horizontal de toda a área de engenharia de software certo que é o que vocês vão ver ao longo de todo o curso e para começar essa e esse essa introdução à área eu vou falar um pouco sobre o histórico né dessa área por quê que ela surgiu como é como ela surge certo bom a gente tá cansada de saber que
o software ele tá em todo lugar né ele tava nas mais variadas áreas e lugares como por exemplo hospitais supermercados né e até na nossa própria casa então não é uma surpresa certo que a engenharia do software né é surgiu como uma área dentro da área de computação justamente para poder investigar e propor soluções que permitam desenvolver software de maneira mais produtiva ou seja desenvolveu sócia com um produto que outras eng se desenvolvem e não sou de forma produtiva mas também com qualidade o que não adianta também ter só um software se ele não apresenta
atributo de qualidade e aí a engenharia de software essa área que aparece aí com uma sub área da da contração ela trata justamente das abordagens metodologias é pra desenvolver operar mantém evolui soft de maneira sistemática certo então essa é a grande o grande diferencial né já que ela é uma engenharia então tem que ser de forma sistemática construção sorte tem que ser de forma sistemática oi e aí como ela surgiu né como foi que essa área que é tão importante para o desenvolvimento surgiu bom e historicamente ela surgiu é no final da década de 60
do século passado né mais precisamente a partir de 1968 é isso naquela antes disso né os primeiros computadores eles eram mais preocupados em resolver problemas científicos cálculos científicos certo então só tinha como a gente conhece hoje não era uma grande preocupação naquela época até porque o não tínhamos raro e para isso mas houve um grande progresso um grande avanço no hardware né e é essa mudança esse progresso ela possibilitou que sofre esse se você desenvolvidos então os computadores eles começam a evoluir no que diz respeito ao honrado e começaram estar presente em vários lugares né
aí não só nas universidades mas começava a chegar em grandes empresas e aí as pessoas começavam a perceber que aquilo poderia se tornar muito maior que novas aplicações poderiam ser desenvolvidas né e elas realmente se tornaram possíveis como sistemas comerciais é né folha de esse como exemplo folha de pagamento controle de clientes bom é mas não era tão simples assim naquela época não existia um pensamento comum do que que era como desenvolver um software que era mais o que é um cálculo matemático não é envolver outras coisas outras interações e aí foi que um grupo
de cerca de 50 cientistas da computação é se reuniu durante uma semana lá na alemanha certo é e o objetivo desta reunião deles essa conferência era justamente discutir o que na época eles consideravam um problema que era o sofre né então para eles o software é oi e aí é depois de muitas discussões eles geraram um relatório esse relatório tinha mais de 130 páginas em que eles afirmavam que existe uma necessidade que os só se fosse construído com base em princípios na técnicas tal como ocorre com outros produtos que é que já eram bem estabelecidos
é com outras engenharias certo como por exemplo engenharia civil engenharia mecânica então aqui é um pedaço do que eles do que eles falaram no relatório né eles destacam justamente é o problema é que é o software né eles falam é o problema é que certas classes de sistemas estão colocando demanda sobre nós que estão além das nossas capacidades e das teorias e métodos de projetos que conhecemos no e então naquela época eles não sabiam como construir um grande sócio eles sabiam como construir aplicações para cálculos né mas grande softwares não então é essa conferência chamou
atenção para isso e foi daí que o termo foi cunhado engenharia de software né que é uma área da computação que é preocupada com todo desenvolvimento e manutenção de um sócio certo e eu já gente sabe que já se passou muito tempo desde aquela conferência e realmente tivemos muitos avanços na área que eu posso ficar diversos avanços né processos padrões freio nos modelos tudo que possibilita a construção de sorte de maneira mais produtiva e com mais qualidade certo porém e apesar da de toda a evolução que a área teve que a notável com certeza ainda
assim a gente não pode dizer que está tudo resolvido e tá tudo solucionado né então frederick books né que ele é um cientista um ele ganhou o prémio turing contração que ao prêmio mais importante da área é ele foi um dos primeiros a chamar a atenção para esse fato e não um artigo dele em 1987 ele escreveu um artigo né não existe bala de prata essência de acidente em engenharia de software né então essa esse termo bala de prata não existe balas de prata ficou bem conhecido que a justamente que remete justamente aquela solução né
que dizem que a matar um lobisomem só uma bala de prata em um determinado horário e é uma solução que parece ser mágica e isso não existe na área da engenharia de sorte então apesar de todos os avanços né ainda não temos uma solução mágica que vai te dizer como fazer um software de forma muito produtiva e com muita qualidade certo sofá e aí ele a tentou para uma coisa que o que é muito importante que existem várias dificuldades no desenvolvimento do software na engenharia dos offer e ele dividiu essas essas dificuldades em duas dificuldades
em dois tipos de dificuldades as dificuldades essenciais e acidentais certo as essenciais elas tem a ver com dificuldades inerentes à natureza do sócio ou seja por causa da natureza do software a gente não nunca vai conseguir fugir dessas dificuldades então por exemplo a complexidade é uma coisa aqui é inerente do soft então existem softwares que são enormes é muito grande que tem muitas linhas de código por exemplo sofre com um sistema operacional imagine quantas linhas de código tem então quanto maior ele é mais complexo nessa complexidade cresce em isso gera várias dificuldades né por exemplo
mantém um sofre como esse é bem mais difícil do que manter algo menor certo conformidade é o software ele atende alguma necessidade do ambiente e esse ambiente ele muda o tempo todo né por exemplo a gente pega uma uma um sistema para imposto de renda tá certo para fazer declarações de imposto de renda é o imposto de renda ele é baseado em inglês mas pode ser que amanhã essas leis mudem se essas leis é mudarem o sol chega vai ter que estar em conformidade com essa nova lei então sofre tem que mudar também é então
ele tem que estar conforme ele tem que seguir o ambiente certo então isso é uma dificuldade que o ambiente muda muito e por ser o se tratar de código o software ele se torna um pouco mais fácil assim digamos no sentido da palavra de quando quando a gente compara por exemplo uma casa é mais fácil de mudar né não porém essas mudanças com certeza geram várias consequências e por último a natureza abstrata do software neosoft ele é intangível não é uma coisa que a gente possa pegar oi gente diz que ele é invisível diferente de
projetos como por exemplo uma casa um prédio né da engenharia civil que você pode ver visivelmente eles ser construído ele ser feitos ser desenvolvido sofre ou não menina não é assim não funciona dessa forma então por causa de todas essas características é várias várias dificuldades né surgem e ao longo do caminho do desenvolvimento e tem as as dificuldades acidentais mais que são dificuldades mais relacionadas a problemas tecnológicos a problemas que podem de certa forma serem resolvidos na diferente de por exemplo das dificuldades essenciais eu não porque eu não posso mudar que são coisas que são
inerentes à natureza do software mas as dificuldades é acidentais são normalmente problemas tecnológicos por exemplo às vezes nós se envolver usando um frame ou que esse frango ou que não possui muita documentação ou pode ser que a gente esteja utilizando uma ideia é né que é um ambiente desenvolvimento que sofre muitos crentes muitos muitas falhas então isso é um problema que dificulta ainda mais é o desenvolvimento aí do sol certo bom mas o que se estuda em engenharia de software é se estuda várias coisas obviamente uma área muito grande vocês sabem que a engenharia de
software ela até um curso de graduação né no nosso campus de quixadá nós temos um curso de graduação só em engenharia de software então é óbvio né notável que se estuda muitas coisas e eu posso citar aqui algumas áreas e para fazer isso eu segui osso é bock o que é o super bock anotar aqui para vocês e tu é bom que ele é um corpo de conhecimento certo na área de engenharia de software e se sua bock ele é organizado pela e três e confira society então ele organiza vou colocar aqui corpo e aí
eu te conhecimento e em engenharia é de sócio é bem organiza todas as áreas da engenharia de software todas as áreas de conhecimento que compõem a engenharia de software então assim vocês podem ver que 12 horas né 12 aires então tem engenharia de requisitos projeto construção teste manutenção em processos modelos qualidade a gente vai falar um pouquinho de cada área porque falando um pouquinho de cada área vocês tem justamente essa visão é geral do que é que a engenharia de software então curso de engenharia de software gente ele se base em todas essas áreas então
a gente vai ter aula de engenharia de requisitos de projeto construção e testes no tensão gerência de configuração processos modelos enfim todas essas que diz respeito a todas essas áreas que dizem respeito à engenharia de software estão começando pela engenharia de requisitos 1 e é engenheiro de requisitos é a melhor área da engenharia de software segundo quem segundo raynara mar carvalho eu mesmo que estou falando isso valores porque ela é minha área né o no doutorado eu trabalhei com essa área então por isso que eu digo que ela é a melhor área da engenharia de
software mas de fato ela é muito importante porque tudo começa a partir dos requisitos sai usuário ele precisa de um sistema para resolver algum problema dele em alguma necessidade que ele tem então a primeira coisa que um engenheiro ele tem que fazer é descobrir que problema é esse com esse problema pode ser solucionado através de um sócio e para isso né eu vou usar engenheiro de requisitos que é o que é todo esse conjunto de atividades em que eu vou definir analisada ou comentar e validar os requisitos de um sistema requisito a tudo aquilo eu
tenho no sistema certo então ele define que o soft vai fazer como ele vai fazer ele vai operar por enquanto é interessante que vocês tenham só uma visão dos principais tipos de requisitos funcionais e não funcionais certo mas nós teremos aulas só de engenharia de requisitos mas vamos dar que uma visão zinha geral requisitos funcionais são requisitos que definem o que um sistema vai fazer então não ruim são as funcionalidades certo do sistema e os requisitos não funcionais definem como não é um sistema vai fazer aquelas funções certo e aí existem vários exemplos é que
eu coloquei desempenho então por exemplo pode ser que eu esteja criando um sistema para um banco de o meu um requisito funcional vai ser sacar dinheiro tá certo oi e o requisito não funciona ao vai ser por exemplo segurança bom então eu quero que aquela função sacar dinheiro tenha segurança então esses são exemplos de requisitos tá então isso é só uma visão zinha geral é a gente vai estar ela sobre isso o projeto de software projeto de software também é uma outra área muito importante uma vez que você sabe o que mais ou menos o
cliente precisa né em forma de requisitos você vai projetar o seu sócio então é durante esse projeto que você vai definir por exemplo as unidades de código certo mais num nível mais alto do que código em sintam é essa área projeto é como se antes de passar direto para a implementação eu vou tentar projetar e visualizar o meu sócio ah tá e a isso pode ser feito através né das você projetar suas unidades de código como por exemplo você pode se projetar faz uma se as classes do seu sistema né caso você esteja por exemplo
trabalhando com uma linguagem orientada a objetos bom aí você pode definir mais um nível de interfaces né e aí existem esses dois tipos de interfaces interfaces pro vidas e interfaces requeridas as interfaces para ouvidas elas são e serviços que uma unidade de código torna público para uso pelo resto do sistema ou seja é o que ela prover para outras unidades interfaces requeridas são aquelas interfaces que a unidade ela precisa de outros né para funcionar eu vou aqui é um exemplo bem simples né porém didático para vocês entenderem aqui nós temos um nessa a gente vou
considerar um um exemplo de um sistema de banco a gente pode i representar a unidade com uma classe de conta bancária então isso aqui é uma classe né conta bancária e nessa classe ela possui o que 3 interfaces é pro vidas né ou seja são interfaces prover para outras classes né outras outras unidades aí de de código tá então aqui eu tenho três públicas né por exemplo pegar saldo pegar o nome e o extrato né todas elas são na verdade métodos dessa classe certo é bom aí tenho também a gente pode perceber que aqui a
gente tem uma interface requerida então pressa é essa a unidade de código funcionar eu tenho que eu dependo de uma outra classe certo que é justamente a classe cliente certo então essa mãe tá face requerida e essas aqui são as interfaces pro vidas tá então assim como vocês podem ver durante o projeto tá de um de um soft a gente não entra em detalhes muito profundo de implementação a gente fica muito aqui ainda no alto nível né de cosmo então como exatamente vai ser esse método eu tô aqui eu botei três pontinhos eu não sei
certo é uma coisa para implementação então se eu fizesse o projeto de forma mais ainda alto nível né por exemplo não usando classes mas por exemplo pac e eu estaria já pensando numa arquitetura o que também é uma área né da engenharia de software certo um projeto para pensar no projeto arquitetural arquitetural que a organização do seu sócio e é bom e aí temos né também área de construção o que é se trata da implementação certo ou seja a codifi cação é quando eu vou pegar todas o projeto que eu fiz eu vou de fato
implementar e aí diversas decisões aqui são tomadas eu botei vários exemplos de decisões por exemplo é freimor bibliotecas de terceiros o que é que eu vou usar certo técnicas para tratamento de exceção quais vão ser as ferramentas com ambiente desenvolvimento eu vou utilizar qual o banco de dados eu vou utilizar então tudo isso são decisões que eu tenho que tomar para poder construir o meu sócio e oi e aí temos também teste de software teste de software é uma área também muito importante da engenharia de software né que é uma área que trata justamente da
verificação e da validação de sistemas né não adianta você de novo é descobrir o que o cliente quer implementar e não testar porque com certeza esse sócio ainda vai ter muitos problemas muitos erros e aí o que é que é o teste né ele é justamente a atividade que consiste na execução de um programa com um conjunto finito de caso com o objetivo de verificar se ele possui o comportamento esperado o certo é é importante ressaltar aqui é uma frase muito famosa que o pessoal conhece bastante pessoal da computação da engenharia de sócio do da
extra né que também foi um prémio turing computação e é que sintetiza resumo não apenas os benefícios mas também as limitações dessa área de testes né então que é qual é essa frase ele disse que teste de software mostram a presença de bugs mas não a sua ausência é muito legal isso porque a gente vê que realmente não tem como a gente dizer que um sofre está sem por cento livre de falhas certo que a gente faz é o máximo que a gente pode que né é tentar achar esses bem o que que é importante
saber certo do dessa área testes de software já está sub área da engenharia de software três pontos importantes primeiro e existem diversos tipos de testes tá eu tenho sua notar que alguns e tem um teste de unidade onde eu vou testar somente uma unidade de código por exemplo uma classe certo eu tenho a teste de desempenho onde eu vou testar a eficiência né o desempenho do meu sistema certo eu tenho um teste de usabilidade o que é para ver o quanto o meu sistema é fácil de usar e por aí vai tem vários tipos de
testes certo os testes gente eles podem ser usados tanto para verificar como validar sistemas então na área da engenharia de software muito conhecida essa subir área que a verificação e validação dos sistemas a verificação né ela tem ela tem como objetivo garantir que um sistema atende a sua especificação lá de requisitos e já validação ela tenta garantir que um sistema atende às necessidades dos seus clientes então percebam a diferença entre esses termos veio ver né ver e ver é como a gente chama essa área verificação e validação então verificar basicamente é eu posso perguntar assim
para tá ficando estou implementando o sistema corretamente ou seja eu tô implementando o jeito que a minha especificação de requisitos diz para implementar e validação eu poderia apertar assim estamos implementando o sistema correto ou seja é aquilo que o cliente realmente está querendo que pode ser gente que o que o que a gente está querendo não esteja especificado não é o ideal mas pode ser que isso aconteça por isso que existe essa diferenciação entre verificação e validação e testes é pode ser tanto uma atividade de verificação pontos de validação por exemplo quando você realiza um
teste de um método né de uma classe você verifica se ele retorna o resultado especificado então você tá fazendo uma atividade de verificação a mais por outro lado se você faz um teste de aceitação teste funcional que é um outro tipo de teste você tá o que você tá mostrando os resultados para o seu cliente né e ele tá dizendo se tá atendendo não que ele quer então eu vou pedir a validação certo é bom claro que isso tudo a gente é uma área tô tentando assim fazer realmente uma visão geral para vocês a uma
visão geral de engenharia de software aqui tá bom outra coisa importante de definir essa alguns conceitos relacionados a testes que é que tem várias definições porém na literatura sabe que são defeitos bugs e falhas tá então defeito né o que é que é um defeito primeiro vamos vamos pensar assim no bugue né o bug ele é um termo bem mais informal certo às vezes ele é usado com vários objetivos para para dizer que tem um defeito que tem uma falha tá mas o uso mais comum é realmente é como sinônimo de defeito tá certo e
a falha né ela ocorre quando um código com defeito vai ser executado então o defeito é algo que está implementado de forma errada no sistema sai é um erro mesmo que o programador pode ter cometido e quando esse defeito ele é executado ele pode gerar uma falha ah tá que falha justamente é algo que que não é um resultado em um correto certo e é causado por um defeito então assim o termo bug ele é eu considero ele mais informar o que pode muita gente usa para várias coisas mas na verdade ele tá mais para
defeito né e existe essas duas diferenças aí defeito e falha certo tá bom o código defeituoso então é aquele que não está de acordo com sua especificação ou seja programador fez algo errado isso esse pode foi executado e de fato levar o programa apresentar um resultado incorreto diz que ocorreu uma falha certo fazendo uma e aí vamos para a manutenção e evolução soft uma outra área e da engenharia de software que que é interessante vocês saberem aqui certo aí primeiro que com os sistemas tradicionais da engenharia sofre também precisa de manutenção é com passar do
tempo o software pode ficando é desatualizado né e como a gente já comentou o ambiente muda constantemente em que forte é preciso estar em conformidade com essas mudanças então o termo mudar né é justamente o que leva essa área de manutenção seja a gente tem que manter a gente tem que alterar alterar o software para poder estar em conformidade com o ambiente certo aí a existem vários tipos de manutenção processo de manutenções aqui eu vou falar um pouquinho desses tipos eu tenho a manutenção corretiva essa manutenção ela tem o objetivo de corrigir bug reportado por
usuários né então pode ser que você lance um sistema e mesmo tendo passado por toda a uma bateria de testes ainda tenha problemas né lá olha só o termo bug aqui como pode ser representado por várias coisas né falhas e tal e tem uma manutenção preventiva que tem o objetivo de corrigir bugs latentes no código e ainda não causarão falhas ou seja são defeitos que estão lá mas que ainda não foram executados e para prevenir eu vou lá eu achei né aquele vou então fazer a manutenção e tem a manutenção adaptativa que tem o objetivo
de adaptar um sistema uma mudança em seu ambiente incluindo tecnologia legislação regras de integração e fim ambiente moodle tem que adaptar o meu sócio então manutenção adaptativa e tem uma a manutenção evolutiva que é aquela para incluir uma nova funcionalidade ou uma perfeito amento certo do meu sistema então gente é interessante essa área de manutenção evolução é bastante importante às vezes o sistema passa mais tempo nessa fase de manutenção do que na fase de desenvolvimento ensina é então é é importante sempre está mantendo seu sócio e também teremos ao sucesso e aí temos também a
área de gerência de configuração certo porque porque é inconcebível hoje em dia né desenvolver um software sem o sistema de controle de versões nesse sofre você vai construindo ele interativamente incrementalmente e ele vai gerando várias versões e quase manutenções estão bem vai acontecendo e você tem que tão controlar essas mudanças né em versões certo e aí é que estão e sistemas de controle de versão como por exemplo gift inclusive eu vou lançar uma série de vídeos que ensinam como usar o kit na através do kit rubi é que o monitor monitor da disciplina está produzindo
e aí vamos lá é e sistemas de controle de versão eles armazenam todas as versões de um só e quando eu falo em todas as versões de software não é só o código-fonte tá também são documentações e manuais o relatório sem fim é mas a gerência de configuração não é só usar simplesmente um sistema de configuração tem tem várias outras coisas por trás tá diz respeito também a esse conjunto de políticas para gerenciar as diversas versões então pode ser que por exemplo eu tenho que definir um esquema para identificar as vezes de um software né
as versões aquele soja quando ele vai ser liberado se uma determinada a mudança já muda a versão ou não enfim essa parte gerência de configuração trata de tudo isso e é temos também a gerência de projetos certo porque o sofre ele também é um projeto né ele tem começo meio e fim que eu tenho que gerenciar tudo isso e essa área de gerência de projeto ela diz respeito a isso a gerenciar por exemplo contratos recursos humanos né remuneração os riscos concorrência é a gerência de projetos ela foca nem tudo isso certo é isso porque a
gente quer entregar o que o software na data certa né com um custo correto não é um custo que foi inicialmente pensado então a gerente ela vem para poder organizar tudo isso aí e é aquele mesmo carinha lá que falei lá no começo não frederik busque ele faz uma observação interessante o que é justamente é da representada aqui nessa frase que essa frase meu que virou uma lei né que a gente conhece como lady bug então ele fala que a inclusão de novos desenvolvedores em um projeto que está atrasado contribui ainda mais para torná-lo ainda
mais atrasada então é quando você pensa assim a outra já tá atrasado qual a solução vamos trazer mais envolvedores não nem sempre essa é a solução na verdade isso pode até atrasar mais ainda por quê por quê que isso pode acontecer porque esses novos vou ver dores eles vão ter que ir primeiro aprender o sócio que está sendo utilizado eles vão que tem tem que entender a o que é que já foi desenvolvido o que é que precisa desenvolver então isso leva tempo então o tempo né representa aí um atraso certo então a gerência de
projetos ela vem muito também para cuidar dessa questão do time né de gerencial tinha e desenvolvedores a outra é importante muito importante da engenharia de software a área de processo que até já falei um pouquinho disse para vocês né que que é um processo o processo é a algo que vai definir quais as atividades etapas devem ser seguidas para construir e entregar um sócio então aquela coisa que eu tava dizendo que a gente já discutiram passo a passo né do que que eu tenho que fazer certo se a gente for pegar assim de forma bem
geral historicamente existem dois grandes tipos de processo né mas sim falando de como bem geral mesmo que são os processos em cascata e os processos agem insta ou em cascata a gente já conhece que aquela coisa as fases elas são sequenciais então você só passa para uma próxima quando terminar uma mas tenta ver as próximas os processos vagens que são mais incrementais interativa então a gente vai seguir mais na disciplina aqui né mais claro que e tem as suas vantagens e desvantagens certo bom nós temos também modelos de sócio né o que é que é
isso que área é essa professora modelos um modelo não que é um modelo é uma representação no nível mais alto de um sistema certo o objetivo é permitir que os desenvolvedores possam analisar fatos questões mais essenciais né de modo mais fácil e rápido sem ter que mergulhar nos detalhes do código então aqui tá muito relacionado com aquela área que eu já falei que a área do projeto de sócio então normalmente quando você projeto só o que você vai construir modelos né nesses modelos você vai discutir justamente coisas que de forma mais alto nível tá certo
aí tem essas duas engenharias aqui aí como é que eu posso produzir modelos eu posso produzir modelos antes que o código seja criado então por exemplo posso reproduzir um modelo de classes lembra quando eu falei da classe conta bancária e que ela também depende de uma classe cliente então essa essa isso que eu tô fazendo é justamente construindo um modelo tá eu tô aqui construindo um modelo estou fase criando uma representação de mais alto nível e eu tô fazendo isso antes do código né que a justamente projetando mas pode ser que eu faça modelos depois
que o código foi criado e isso é chamado de engenharia reversa certo seja criou modelos depois que o código e foi criado né eu posso fazer isso a porque qual é a certa gente a utilidade disso né de criar depois que o código já tá criado é para poder entender melhor aquele código não é porque às vezes o código ele é tão complexo tão grande que é difícil entender o olhando apenas para o código você cria esses modelos para ter uma visão geral certo do sistema a qualidade de sorte também outra are you oi e
aí gente é uma grande área dentro da engenharia de software aqui existem existe a qualidade do processo seja o quanto o meu processo ele é bom e a qualidade do meu produto quanto o meu produto ele é bom certo seja ontem ele tem qualidade e a qualidade do produto pode ser dividido em qualidade externa e qualidade interna a qualidade externa é avaliar justamente o quanto ele é bom do ponto de vista externo sem eu precisar olhar o código dele será que ele é fácil de usar será que ele tá sendo rápido então óleo ele com
um olhar mais externo e a qualidade interna tem a ver com o código né com a minha estrutura interna será que esse código está realmente bem desenvolvido está será que é fácil de manter ele que tá seguro e aí existem várias técnicas nesta até destrava aliar a qualidade por exemplo métricas é uma estratégia que eu posso usar para acompanhar o desenvolvimento de um produto a gente vai ter aula disso também revisões de código também é uma até a avaliar a qualidade interna do meu produto é quando um desenvolvedor não código produzido por um desenvolvedor somente
entra em produção depois ser revisionado inspecionado por outro desenvolvedor então existem várias outras técnicas aqui que eu não vou entrar em detalhes agora porque a ideia é só mostrar uma visão geral aqui o fechei então vai bom clarisoft a essas próximas nove aspectos econômicos é como se fosse nas áreas mais transversais né a prática profissional ela diz respeito bem a formação desse desse profissional da engenharia de software e também tem a ver com a responsabilidade ética aí eu trago aqui né uma uma frase que importante para esse contexto que é a engenheiros de software devem
se comprometer em fazer da análise a especificação projeto desenvolvimento teste e manutenção sofre uma profissão benéfica e respeitada certo é isso aqui ele ele faz parte né do código de ética e do código de ética da acm que é uma organização né de computação tá e também dá em três é ah tá então tem a ver com isso gente quando você vai desenvolver você também tem que ter é dica você tem que estar pensando eu tô realmente ouvindo uma coisa que vai ser benéfica certo para o para a sociedade não é a prática e os
aspectos econômicos né tem a ver com as decisões as questões econômicas que englobam aí um desenvolvimento quando você vai fazer um software você tem que pensar e você faz parte de uma startup né por exemplo se você tem que pensar em como você vai monetizar né o seu solte o seu serviço e aí você começa a ter que pensar em modelos de rentabilização preços né então isso envolvem muito conhecimento e claro você pode nem ter empresas que contratam né normalmente grandes companhias que contratam economistas só para avaliar esse aspecto aí mais econômico bom fechando essas
áreas eu quero dar só uma visão geral também que existem em vários tipos de sistemas é esses diferentes tipos de sistemas existem várias classificações para a sistemas eu vou usar essa classificação do livro que eu vou passar para vocês essa classificação de vídeo sistemas em três por exemplo sistema satilde sistemas business e casuais os primeiros tem a ver mais com sistemas críticos até colocar aqui críticos o que são sistemas onde qualquer falha pode causar um imenso prejuízo como por exemplo pode causar vidas perdas de vidas humanas né então são sistemas que envolvem o desenvolvimento um
desenvolvimento muito mais formal certo por exemplo um uma um processo ágil talvez não fosse o mais adequado para esse tipo de sistema tem os sistemas business certo e sistemas eles é incluem as mais variadas aplicações corporativas por exemplo financeiras né recursos humanos e temos sistemas web como redes sociais tá então é mais o tipo de sistema que a gente está acostumado a ver e tem também e sistemas casuais né são sistemas que não sofrem pressão um nível alto de qualidade são sistemas que podem até ter alguns bugs né que não vão comprometer de forma profunda
o seu funcionamento por exemplo a um script que eu vou fazer para um trabalho acadêmico certo um programa de conversão de dados são programinhas né que são casuais tá então não sofre uma grande pressão mas então como vocês podem perceber a gente está mais focado nesse tipo de sistema aqui certa piscinas ok bom então é isso é aula de introdução é realmente para dar uma visão geral da engenharia de software para vocês terem sair dessa aula com essa noção de que realmente é uma área muito grande e é tu que é um curso de graduação
para fazer essa aula eu usei assim esse livro que ele é novo ele é um livro de engenharia de software moderna então ele é bem atual é desse ano ele é do pro seu marco túlio valente com um professor da de minas gerais eu comprei esse livro justamente para mim atualizar e fazer esse curso remoto né até como uma alternativa aí dos livros mais tradicionais tu saber viu então é isso se você tiver alguma dúvida esses podem mandar e-mail vocês também tem meu whatsapp aí para a próxima aula eu vou passar os as correções do
exercícios da lista de exercícios que eu já passei no cigarro quem tchau gente espero que vocês tenham gostado aí um abraço
Copyright © 2024. Made with ♥ in London by YTScribe.com