Engenharia de Software é definida como a aplicação de abordagens sistemáticas, disciplinadas e quantificáveis para o desenvolvimento, operação e manutenção de software, estudando métodos para tal de forma econômica e previsível. Algumas definições também destacam que Engenharia de Software oferece métodos, técnicas e ferramentas para desenvolver software de alta qualidade para resolver problemas.
2. Definição 1/30
• IEEE
“A aplicação de uma abordagem
sistemática, disciplinada e
quantificável para o
desenvolvimento, operação e
manutenção do software e o estudo
das abordagens para tal”
3. • Arndt Von Staa, 1987
“O desenvolvimento e a aplicação de
ciência, matemática, técnicas, métodos e
ferramentas para o desenvolvimento e a manutenção
econômica de software de qualidade preditível e
controlável, operando de modo econômico em
máquinas e ambientes reais”
Definição 2/30
4. “Uma disciplina da Ciência da Computação que
oferece Métodos, Técnicas e Ferramentas para
desenvolver e manter softwares com alta
qualidade para a resolução de problemas”.
(Anneliese Mayrhauser, 1990)
Definição 3/30
5. • “Engenharia de software é a criação e a
utilização de sólidos princípios de engenharia
a fim de obter software de maneira
econômica, que seja confiável e que trabalhe
eficientemente em máquinas reais.”
(Friedrich Ludwig Bauer)
Definição 4/30
Panorama Geral: Para que serve o tema “Engenharia de Software”?O curso em 5 minutos (tentar não falar o final do filme) TUDO começa quando percebemos um conflito entre as palavras AMADOR e PROFISSIONAL. Quando sou AMADOR? Quando sou PROFISSIONAL? O QUE VOCÊS ACHAM?“A empresa era considerada uma referência sobre tecnologia bancária. Ganhara alguns prêmios no setor”“Após algumas entrevistas iniciais, o RH concluiu que meu perfil se encaixaria na área de pesquisa e inovação, pensei: beleza!Mas assim que comecei a trabalhar, um gestor veio conversar comigo sobre um desafio.Esse desafio, na realidade era uma batata quente: Ao invés de ir pro setor de pesquisa, ele fez um convite para entrar numa equipe que desenvolveria o primeiro internet banking.O principal argumento que ele usou: você vai adquirir bastante experiência, vai mexer com tecnologia de última geração.Quando o projeto começou a rodar, a crise foi tomando forma:A documentação era o próprio código do antigo sistema. Como um banco como aquele não tinha documentação?Não tínhamos uma visão geral sobre onde deveríamos chegar.Não havia um padrão claro sobre como o código deveria ser produzido.Logo de início ficou claro que a tecnologia era desconhecida para maior parte da equipe. Não era possível encontrar projetos parecidos dentro da empresa nem no mercado em geral: éramos pioneiros na arquitetura proposta.Rodando em delphi e razoavelmente estabilizado foi vendido, mas para rodar com uma nova tecnologia.As estimativas de prazo e custo não faziam sentido (só pra ter uma ideia: 6 meses viraram 5 anos)Como ficávamos alocados no cliente, a pressão era enorme.Desenvolver um sistema bancário envolve muitos problemas complexos (número de acessos simultâneos, transações, segurança, etc.)O padrão era não ter padrão, ironizava o cara mais sênior da equipe.Não sei dizer se a culpa de tudo era a falta de um processo, de saber como as coisas deveriam funcionar.Tínhamos um processo, mas não dá pra dizer que a forma como trabalhávamos se afastava muito de um cenário caóticoAo invés de falarmos que não existia uma forma de trabalhar, era melhor dizer que era um processo caótico.Um outro fator que servia de desafio era que a maior parte das especificações, a grande maioria delas, era o próprio código.A situação era bem pior do que estou te contando, mas pra resumir: Parecia um bando de amadores tentando lidar com questões puramente profissionais. E isso, aos poucos, foi ficando claro para o cliente também.A CRISE ESTAVA NA NOSSA CARA!<alguém aqui já experimentou alguma crise na área de software onde parecia um bando de amador tentando fazer coisas profissionais?>ESSE é o cenário de 2000!MAS um cenário muito parecido ocorreu entre 1961 e 1968Foi quando um grupo se reuniu numa conferência, pela primeira vez chamada de Conferência de Engenharia de Software tentando CONTORNAR a crise.A equipe do sistema bancária também se reuniu e começou a utilizar algumas práticas da Engenharia de Software. Também criou algumas novas práticas adaptadas.Depende muito de como vocês e sua empresa definem AMADORISMO E PROFISSIONALISMOA engenharia se propõe a lidar com essas e outras crises!Ela é definida como <PRÓXIMO SLIDE>
Abordagem sistêmica é uma metodologia que busca conjugar conceitos de diversas ciências a respeito de determinado objeto de pesquisa.SISTEMÁTICO 1Pertencente ou relativo ao sistema. 2 Conforme a um sistema. 3 Que observa um sistema. 4 Metódico, ordenado. 5 Feito com intenção determinada. 6 Tip Diz-se da forma divisionária das medidas Didot. 7 pop Diz-se do indivíduo que, por obedecer a um sistema rígido de vida, se diferencia da coletividade; esquisito, nervoso, pouco acessível.