Escolar Documentos
Profissional Documentos
Cultura Documentos
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!”.
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.
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ÊNCIA DA PRODUTIVIDADE NA ECONOMIA GLOBAL &ONTE 4HE
0RODUCTIVITY )MPERATIVE -C+INSEY 'LOBAL &ORCES 3URVEY 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. 'ASTOS EM 4) A NÓVEL MUNDIAL &ONTE 'LOBAL )4 -ARKET 2EPORT
&ORRESTER 2ESEARCH )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.
Olhando para trás e lembrando as questões levantadas por Dê seu feedback sobre esta edição! Feedback
eu
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?”