Você está na página 1de 5

Engenharia

Nesta seção você encontra artigos voltados para testes, processo,


modelos, documentação, entre outros

Engenheiro de Software: We Need You


Sobre a Importância da Engenharia de Software

De que se trata o artigo?


Apresenta a engenharia de software, destacan-
do sua importância no contexto atual do avanço
tecnológico e crescimento econômico mundial,
além de salientar a necessidade de formação de

E
ngenharia compreende o uso de
princípios e conhecimento empí- engenheiros de software.
rico e científico obtidos a partir
de estudos, investigações e experiências Para que serve?
visando o desenvolvimento de um pro- Informar quão essencial é a formação de profissio-
Antonio Mendes da Silva Filho duto que, dependendo da área, pode ser nais de engenharia de software a fim de atender a
antoniom.silvafilho@gmail.com um motor, um dispositivo eletrônico, um demanda de desenvolvimento de software com-
Professor e consultor em área de tecnologia prédio ou um sistema de software. Para
da informação e comunicação com mais
plexo e de grande porte.
de 20 anos de experiência profissional, é
tanto, três aspectos essenciais devem
autor do livros Introdução a Programação ser considerados: custo (orçamento de Em que situação o tema é útil?
Orientada a Objetos com C++, Arquitetura desenvolvimento), tempo (cronograma O artigo explora conhecimentos necessários de
de Software, Programando com XML, todos de execução) e qualidade. Dentro deste um engenheiro de software e seu importante
pela Editora Campus/Elsevier, tem mais de contexto, a engenharia de software, a papel para atender a demanda de desenvolvi-
30 artigos publicados em eventos nacionais
e internacionais, colunista para Ciência e
exemplo de outras engenharias, também mento de sistemas de software que satisfaçam
Tecnologia pela Revista Espaço Acadêmico visa o desenvolvimento de um produto restrições de custo, tempo de desenvolvimento
com mais de 60 artigos publicados, tendo (software) que pressupõe satisfazer aos e qualidade, que compreendem pilares da enge-
feitos palestras em eventos nacionais e no requisitos de qualidade, dentro do prazo nharia de software.
exterior. Foi Professor Visitante da Univer- e sem estourar o orçamento.
sity of Texas at Dallas e da University of
Ottawa. Formado em Engenharia Elétrica
O profissional de engenharia de sof-
pela Universidade de Pernambuco, com tware (ler Nota do DevMan 1) é crucial entretenimento, operação de aviões,
Mestrado em Engenharia Elétrica pela para o momento atual e também será diversos segmentos da indústria, comu-
Universidade Federal da Paraíba (Campi- pelas próximas décadas. Por quê? Basta nicações nas variadas mídias e muito
na Grande), Mestrado em Engenharia da olhar ao seu redor. Tudo em seu cotidia- mais. Em tudo, você encontrará softwa-
Computação pela University of Waterloo
e Doutor em Ciência da Computação pela
no é influenciado por software como, por re. Portanto, se você é um engenheiro de
Univesidade Federal de Pernambuco. exemplo, atividades bancárias, ensino, software, “We Need You!”.

20 Engenharia de Software Magazine - Engenheiro de Software: We Need You


E N GEN H A RI A D E SOF T WAR E

Nota do DevMan 1

Engenharia de Software
A Engenharia de Software visa à criação de produtos de software que atendam
as necessidades de pessoas e instituições e, portanto, tenham valor econômico. Para
isso, usa conhecimentos científicos, técnicos e gerenciais, tanto teóricos quanto em-
píricos. Ela atinge seus objetivos de produzir software com alta qualidade e produti- Figura 1. Pilares da Engenharia de Software
vidade quanto é praticada por profissionais treinados e bem informados, utilizando
tecnologias adequadas, dentro de processos que tirem proveito tanto da criatividade Agora, se você quiser uma visão mais completa, observe
quando da racionalização do trabalho. que software compreende não apenas o conjunto de instru-
ções que são executadas num processador para fornecer as
funcionalidades de um sistema, mas também todo artefato
Software no cotidiano vinculado ao código, como a documentação do sistema (que
Você já percebeu que software está praticamente em todas as traz informações do projeto), bem como documentação para
coisas de seu cotidiano? Um exemplo simples é a central telefônica usuário (informando-lhe como utilizar o software).
que permite que duas pessoas conversem ao telefone. O controle Nesse sentido, um engenheiro de software é o profissional
da operação das centrais telefônicas é todo feito por software. Você responsável por levantar e analisar o conjunto de requisitos,
já foi a alguma casa lotérica para efetuar um pagamento de conta desenvolver o projeto, implementá-lo, testá-lo e entregar
de água ou energia? Ou já arriscou jogar na loteria? Quando você ao cliente. Mas, para ter sucesso na execução do projeto,
vai à casa lotérica por qualquer um dos motivos acima, você está o engenheiro de software precisa considerar três aspectos
usando o sistema que tem todo seu controle feito por software e essenciais às engenharias, que costumo denominar dos
o mesmo acontece quando você vai ao banco. Perceba que quase pilares da engenharia: Custo, Tempo e Qualidade. Esses
todos os sistemas hoje em dia têm seu controle operacional sendo pilares, juntamente com a compreensibilidade e princípios
feito por software. E com certeza você é usuário de computador de engenharia, constituem as preocupações do engenheiro
que possui diversos tipos de software operando nele. Observe de software desde o primeiro dia de qualquer projeto, como
que o software tem se tornado um companheiro e sido uma ilustrado na Figura 1.
ferramenta fundamental de nosso dia-a-dia. Todavia, há algo que precede a tudo isso. É inegável a ne-
Se você ‘olhar’ para trás, poderá perceber que há, aproxi- cessidade de satisfazer esses três pilares, isto é, controlar o
madamente cinco décadas atrás, software constituía uma orçamento, cronograma de execução e defeitos (ou bugs). No
pequena, senão ínfima parcela dos sistemas computacionais entanto, o engenheiro de software não terá sucesso se não
quando comparado ao hardware. Naquela época, os custos considerar princípios (de engenharia) e entendimento (cor-
de desenvolvimento e manutenção de software eram despre- reto, completo e consistente) do sistema a ser desenvolvido.
zíveis. Hoje, porém, software é responsável por significativa Embora tudo o que foi apresentado acima seja essencial, o
porção dos sistemas computacionais. Encontramos software que torna a Engenharia de Software uma disciplina impor-
nas mais diversas aplicações. No uso doméstico, fazemos uso tante? E, mais, a pergunta que não quer calar: Precisamos de
de processadores de texto (como, por exemplo, Word da Mi- engenheiros de software?
crosoft). Adicionalmente, software tem sido um componente A resposta a segunda pergunta é sim, e esse profissional
importante e muito utilizado em diversos sistemas. Podemos será essencial nas décadas vindouras. A resposta a primeira
exemplificar seu uso no controle e supervisão dos sistemas pergunta é dada em partes neste artigo.
de geração e distribuição de energia bem como em sistemas
de telecomunicações, onde ele é encarregado do controle e Características da Engenharia de Software
roteamento de milhares de ligações telefônicas. Observe que Software é um produto (artefato) complexo, por natureza,
empresas e pessoas têm conseguido otimizar suas atividades, exigindo atividades e processo bem definidos, além de execu-
geralmente, fazendo uso de software. Mas, o que é software? ção disciplinada do projeto. Adicionalmente, software não é
Software compreende um conjunto de instruções que quando produzido (no estrito sentido da palavra) como acontece com
são executadas em um processador fornecem funcionalidades carros, aparelhos de TV e outros equipamentos. Diferente-
com desempenho desejado. Software é também entendido mente, software é desenvolvido. Software requer um processo
como programa de computador, o qual é composto de ins- de desenvolvimento e não um processo de ‘fabricação’, impli-
truções que fazem o computador prover as funcionalidades cando que ele exigirá o uso da engenharia sempre.
desejadas. Entretanto, esse conjunto de instruções não precisa
apenas ser executado num computador. Com a redução de cus- Por que software é considerado complexo?
to dos processadores, podemos encontrar software em outros Aqui, três fatores são destacados (sem a intenção de ser
dispositivos como, por exemplo, o telefone celular. completo) como responsáveis por essa complexidade.

Edição 30 - Engenharia de Software Magazine 21


1. Software é um artefato de difícil compreensão e desenvol- integridade, manutenibilidade, usabilidade e corretude, em
vimento. Frequentemente, o engenheiro opta pelo software geral, impõem dificuldade maior para o desenvolvimento.
em detrimento do hardware na solução de problema por con- Dentro desse contexto, o software deve satisfazer a metas de
siderar sua manutenção mais fácil e também (em parte) pelo produto como eficiência e confiabilidade, deve atender metas
fato do software não ‘sofrer’ desgaste físico. Vale ressaltar que de projeto (sendo executado em conformidade com cronogra-
o sistema de software está sujeito a mudanças e evolução e, ma e orçamento) e deve acomodar a metas de processo que
portanto, seu entendimento e desenvolvimento devem levar antecipa possível evolução do produto.
em consideração essas futuras modificações. Outro fator im-
pactante para compreensão e desenvolvimento de software Considerando os fatores destacados que contribuem para
é que ele não é um artefato ´visível’ que seja facilmente e tornar software um artefato complexo, pode-se obter outra
intuitivamente capturado por modelos ‘tratáveis’. classificação alternativa em termos de pessoas, processo e
produto, como ilustrado na Tabela 1.
2. Software é desenvolvido e, portanto, requer que diver-
sos artefatos sejam ‘construídos’ como, por exemplo, plano Necessidade de Engenheiros de Software
de projeto, documento de requisitos, modelo arquitetural, Tecnologia da informação e, mais especificamente, softwa-
código, especificação de casos de teste, plano de teste, dentre re tem sido e continuará a ser um produto demandado no
outros. Observe que utilizar um processo de desenvolvi- mercado global. Apesar da volatilidade que se tem observa-
mento requer diversos métodos para elicitação e análise de do em alguns segmentos do mercado, os cenários indicam
requisitos, método de projeto e implementação, métodos crescimento de demanda por software e seus profissionais.
de teste e inspeção para cada um dos artefatos gerados no De acordo com pesquisa da McKinsey & Company, uma das
desenvolvimento. forças determinante do aumento da economia global tem sido
o fluxo crescente de informações que implica num aumento
3. Software precisa satisfazer metas de produto, de projeto da capacidade de inovação, desenvolvimento e customização
e de processo. Concomitante a esses métodos, o engenheiro de produtos e serviços, além de maior conhecimento e satis-
de software faz uso da linguagem natural para elaborar do- fação dos consumidores, como ilustrado na Figura 2.
cumentos e de outras notações e linguagens especializadas Como destacado na Figura 2, inovação será um fator pre-
para descrever modelos e escrever código. Não apenas isso, ponderante juntamente com uso da tecnologia com objetivo
ainda deve identificar os atributos de qualidade (ou requi- de apoiar atividades de pessoas e instituições. Mas as ins-
sitos não funcionais) que o software deve oferecer suporte. tituições de ensino superior (IES) brasileiras têm formado e
Atributos de qualidade como confiabilidade, eficiência, capacitado o capital humano existente no Brasil de modo a
atender e permitir crescimento consistente e vigoroso nos
Fator Exemplo próximos anos?
Pessoas Tamanho da equipe, nível de familiaridade com processo, nível de conhecimento, É preocupante a forma pela qual o capital humano brasi-
grau de motivação e envolvimento da equipe leiro na área de Engenharia de Software tem sido formado
Processo Disponibilidade de ferramentas, disponibilidade e padrão de uso de métodos, ciclo e colocado no mercado. Nesse sentido, um conteúdo crítico
de vida de projeto, restrições orçamentárias e de cronograma, mecanismos de e parte integrante da engenharia de software é reuso de
tratamento e rastreamento de mudanças de requisitos software que constitui aspecto essencial à produtividade no
Produto Domínio da aplicação, grau de inovação do produto, atributos de qualidade exigidos desenvolvimento de sistemas de software. Entretanto, esse
(como interoperabilidade e confiabilidade) conteúdo, extremamente essencial é muito pouco trabalhado
Tabela 1. Fatores influenciadores na complexidade de software nos cursos de graduação da área. Ainda não há nas empresas
de desenvolvimento de software a ‘cultura’ institucionalizada
orientada para o reuso. Observe que reuso de software é uma
das formas para elevar a produtividade de uma companhia
e, mais importante, a produtividade é um fator determinante
para posicionar a empresa na economia nacional e global.
Isto é ilustrado na Figura 3, que indica avaliação feita em
pesquisa junto a 1400 executivos de empresas sobre o grau
de importância da produtividade na economia global.
Isso destacado acima aponta para a importância da enge-
nharia de software e necessidade de formar mais capital
humano nesta área. Mas, não é tudo. Pesquisa realizada pela
Forrester Research, Inc. informa que gastos a nível mundial
no ano de 2009 foram de US$ 1,469 trilhões no setor de TI,
sendo US$ 362 bilhões referentes a software, havendo previsão
Figura 2. Efeitos do aumento do fluxo de informação (Fonte: Five forces
RESHAPINGTHEGLOBALECONOMY -C+INSEY'LOBAL3URVEY2EPORT  que nos anos de 2010 e 2011 os gastos com software serão de

22 Engenharia de Software Magazine - Engenheiro de Software: We Need You


E N GEN H A RI A D E SOF T WAR E

aproximadamente US$ 400 e 440 bilhões, como mostrado na Adicionalmente, observa-se a nível mundial que cerca de 10%
Figura 4. Desse total, quase metade do total do mercado de da provisão orçamentária da empresas tem sido destinada para
software é pertinente aos EUA, enquanto que cerca de 10% aquisição e atualização de sistemas de software nos anos de
do total é pertinente à América Latina, como mostrado nas 2010 e 2011, como ilustrado na Figura 7. Esse percentual é de
Figuras 5 e 6, respectivamente. aproximadamente de 10% em 2010 e 15% (estimados) em 2011
na América Latina, justificado em grande parte pelo momento
econômico vivido no Brasil.
Em Relatório Global de Tecnologia da Informação 2009-2010,
divulgado pelo Fórum Econômico Mundial, este ano o Brasil
ficou na 61ª posição no ranking de desenvolvimento do setor,
com estimativa de demanda de cerca de 200 mil profissionais
de TI. Esses dados, e os números apresentados anteriormente,
contribuem para destacar a importância de formar capital
Figura 3. )MPORTÊNCIADAPRODUTIVIDADENAECONOMIAGLOBAL&ONTE4HE
0RODUCTIVITY)MPERATIVE -C+INSEY'LOBAL&ORCES3URVEY  humano na área de Engenharia de Software.
Aliado a este aspecto, software é um produto ‘onipresente’ do
cotidiano das pessoas e das empresas. Praticamente, ninguém se
imagina hoje em dia viver sem os sistemas de comunicações que
permitem conversações telefônicas (da telefonia fixa e móvel)
locais, interurbanas e internacionais. Também, ninguém se ima-
gina viver sem a indústria dos transportes que nos proporciona
serviços de transportes via terrestre e aérea. O cotidiano das
pessoas e das empresas dependem, e muito, do transporte aéreo.
Por exemplo, o Boeing 777 tem mais de 4 milhões de linhas de
código enquanto que o jato F-22 tem mais de 2 milhões de linhas
de código. Não é possível desenvolver sistemas desse porte sem
a disciplina de engenharia. Sistemas como esses exigem elevado
Figura 4. 'ASTOSEM4)ANÓVELMUNDIAL&ONTE'LOBAL)4-ARKET2EPORT
&ORRESTER2ESEARCH )NC  nível de confiabilidade em seu funcionamento. Sistemas dessa
natureza requererem do profissional habilidades de:
Idenficar  funcionalidades  do  sistema;
Analisar  se  não  existe  inconsistência,  ambiguidade  e  se  todas  
as  funcionalidades  foram  levantadas;
Desenvolver  o  projeto  e  coordenar  sua  execução;
Dimensionar  a  equipe  e  fazer  alocação  de  tarefas;
Definir  e  usar  tecnologias  para  implementar  a  solução;
Testar  o  sistema  e  implantá-­‐‑lo  no  ambiente  do  usuário.

Embora os argumentos e dados apresentados indiquem a


crescente demanda por profissionais de Engenharia de Softwa-
re, sua formação é condição básica para lidar com os desafios
da área. E, para tanto, deve-se considerar as competências
Figura 5. 'ASTOSEM4)NOS%5!&ONTE'LOBAL)4-ARKET2EPORT &ORRESTER preconizadas no Curriculum Guidelines for Undergraduate
2ESEARCH )NC  Degree Programs in Software Engineering (vide Quadro de
Links no final deste artigo).

Figura 6. 'ASTOSEM4)NA!MÏRICA,ATINA&ONTE'LOBAL)4-ARKET2EPORT Figura 7. $ISTRIBUI¥ÎODOGASTOSEM4)NA!MÏRICA,ATINA&ONTE'LOBAL)4


&ORRESTER2ESEARCH )NC  -ARKET2EPORT &ORRESTER2ESEARCH )NC 

Edição 30 - Engenharia de Software Magazine 23


Desafios da Engenharia de Software • “Por que temos dificuldades em medir o progresso enquanto
A Engenharia de Software, a exemplo de outras engenharias, o software está sendo desenvolvido?”
possui desafios. Entretanto, o avanço tecnológico e crescimento
econômico que o mundo tem experimentado desde o século Conclusão
passado e atuais tendências de uso da tecnologia impõem Software é uma ‘entidade’ quase onipresente que afeta,
desafios aos engenheiros de software que compreendem: praticamente, o dia a dia das pessoas e das empresas. Seu uso
1. Produtividade e complexidade – Crescente complexidade ocorre na educação, comunicações, transporte, entretenimento,
dos sistemas e necessidade de lidar com a heterogeneidade medicina e governos das três esferas, dentre tantas aplicações.
de sistemas de software considera o modelo orientado para Software é parte essencial e crítica no comando de aviões, ban-
serviços. cos, operações em bolsas de valores, assim como num sistema
2. Eficiência e previsibilidade – Limitações dos modelos de pequeno porte como aquele utilizado na vídeo locadora
existentes para determinar quantitativamente as qualidades mais próxima de sua residência.
do produto e processo, além da necessidade de gerenciar um Engenharia de Software surgiu para atender a demanda por
desenvolvimento distribuído com grandes equipes (com parte uma disciplina de engenharia, que tem como pilares custo,
da equipe e atividades off-shore). tempo e qualidade, para o desenvolvimento de sistemas de
3. Dependability – A dependability é característica crítica em médio e grande porte como os exemplos destacados neste
diversos sistemas de software e tem como atributos confiabili- artigo, muito embora também empregada para desenvolver
dade, disponibilidade, segurança e manutenibilidade. Dentre um ‘toy example’ (isto é, sistema de pequeno porte) como o
esses atributos, confiabilidade e segurança são mandatórias na da vídeo locadora ou aquele utilizado no caixa e controle de
maioria dos sistemas de software e, portanto, requer integração estoque de pequenas mercearias.
de aspectos técnicos, gerenciais e organizacionais. A verdade é que desde o crescimento do uso dos computado-
4. Reuso – Maturidade é observada numa disciplina quando res pessoais na década de 80, desde o surgimento da Internet
ela é empregada de maneira eficiente e proporciona resulta- na década de 90, a quantidade de sistemas de software têm
dos excelentes em termos de custo, tempo e qualidade. Essa crescido em tamanho e complexidade e, como discutido no
‘maturidade’ vem com uma ‘cultura de reuso’ de artefatos de artigo, os dados sobre investimentos no setor têm crescido e
software. continuarão a crescer demandando, cada vez mais, profissio-
nais de engenharia de software. Portanto, se você é engenheiro
Dos desafios apontados acima, reuso afeta e é influenciado de software, “We Need You!”.
pelos demais em que ele pode proporcionar os seguintes
benefícios: Links
• Atendimento a demanda de negócios; Software and higher education
• Maior produtividade; http://portal.acm.org/citation.cfm?id=1107458.1107486
• Melhor qualidade;
• Menos tempo para entrega do produto; Guide to the Software Engineering Body of Knowledge (SWEBOK)
• Melhor uso de recursos; http://www.computer.org/portal/web/swebok
• Auxílio a questões complexas de sistemas;
• O reuso de forma sistemática implica numa recuperação de Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering
investimento de qualquer tecnologia. http://sites.computer.org/ccse/

É papel do engenheiro de software lidar com os desafios Collection of Software Bugs


destacados e responder a elas é uma das metas da engenharia http://wwwzenger.informatik.tu-muenchen.de/persons/huckle/bugse.html
de software que tem definição clássica dada por Fritz Bauer
em 1969, como: Measuring and Sustaining the New Economy, Software, Growth, and the Future of
“O  estabelecimento  e  uso  de  sólidos  princípios  de  engenharia  para   the U.S Economy: Report of a Symposium (2006)
que  se  possa  obter  economicamente  um  software  que  seja  confiável  e   http://www.nap.edu/catalog.php?record_id=11587
que  funcione  eficientemente  em  máquinas  reais.”

Olhando para trás e lembrando as questões levantadas por Dê seu feedback sobre esta edição! Feedback
eu
s

Tom DeMarco no livro Why Software Cost so Much? em 1975


A Engenharia de Software Magazine tem que ser feita ao seu gosto.


sobre e

ainda ‘parecem’ atuais:


Para isso, precisamos saber o que você, leitor, acha da revista!
• “Por que demora tanto tempo para que os programas sejam
s

ta
edição
Dê seu voto sobre este artigo, através do link:
concluídos?”
• “Por que os custos são tão elevados?” www.devmedia.com.br/esmag/feedback
• “Por que não descobrimos todos os erros antes de entregar-
mos o software ao nosso cliente?”

24 Engenharia de Software Magazine - Engenheiro de Software: We Need You

Você também pode gostar