Termos de Engenharia de Software em Português

No final de 2018 participei como revisor técnico da tradução da 10a edição do livro “Engenharia de Software” do Ian Sommerville, editado pela Pearson. A revisão foi bastante trabalhosa, mas gratificante – até porque o Sommerville é um pesquisador de Engenharia de Requisitos, assim como eu. Fiquei bastante satisfeito com o resultado – e espero que os leitores também tenham ficado! Agradeço profundamente aos demais envolvidos pela Pearson neste projeto.

Uma das principais dificuldades foi escolher a melhor tradução para os termos. É comum na área de computação – especialmente em blogs – o uso de termos em inglês, apesar de existirem termos perfeitamente adequados em português. Um exemplo é runtime; porque não usar “tempo de execução”? Seria muito cômodo usar o termo em inglês – talvez poucos reclamariam – mas, definitivamente, não seria uma boa tradução.

Para alguns termos foi bastante desafiador chegar à tradução mais adequada. Por exemplo, há o clássico problema da tradução de security e de safety. Em casos como esse, conversei com outros especialistas para encontrar o termo mais adequado (agradeço aos profs. Drs. João Batista Camargo Júnior, Marcos Antônio Simplício Júnior e Eduardo A. P. Alchieri, este último por uma consulta por e-mail) . Também usei normas ABNT, livros sobre o assunto específico (por exemplo, o livro dos profs. Drs. Márcio Delamaro; José Carlos Maldonado e Mario Jino de 2016 sobre teste de software para termos dessa área) e guias importantes da área (Guia do Scrum, Glossário do IREB etc.). Também me baseei em listas de tradução de outros autores (do prof. Dr. Fábio Kon e do prof. Dr. Carlos Maziero). Ah, no caso de security e safety usei “segurança da informação (security)” e “segurança (safety)” – sim, com os termos em parênteses.

Algumas traduções ficaram diferentes das usadas pela edição anterior (a 9a), a qual foi revisada pelo meu colega, o prof. Dr. Kechi Hirama. Não foi fácil decidir mudar essas traduções, mas achei importante fazê-las (por exemplo, no caso de security e safety). Temo que isso gere algumas confusões – em especial aos professores que precisam atualizar o material de aula -, mas tenho certeza que será positivo.

Para ajudar outros tradutores e justificar aos leitores a razão das traduções, coloco aqui a tabela completa de tradução que montei durante a revisão.

Continue reading

Algoritmos e Estruturas de dados de PCS3110 em Python

Montei um repositório ( https://github.com/levysiqueira/py-pcs3110) com a implementação em Python de vários dos algoritmos ensinados em PCS3110 – Algoritmos e Estruturas de Dados para a Engenharia Elétrica, na Escola Politécnica da USP.

Os algoritmos usados em PCS3110 foram adaptados dos livros do Cormen, Leiserson, Rivest e Stein (2011) e do Feofiloff (2009) pelos professores de PCS3110: Anarosa Alves Franco Brandão, Anna Helena Reali Costa, Marcos Antonio Simplício Júnior, Romero Tori e por mim. A implementação em Python foi feita por mim.

Gerência e Qualidade de Software na Univesp

Em 2018 fui responsável por uma disciplina na Univesp, que é uma universidade virtual pública do estado de São Paulo. A disciplina em questão foi Gerência e Qualidade de Software, assunto que já ministrei durante alguns anos uma disciplina de pós-graduação.

O conteúdo do curso inclui vídeo-aulas, as quais estão disponíveis no Youtube. Em duas aulas chamei o pessoal da Codus Tecnologia, através do Vinícius Oyama, para discutir V&V na prática e entrevistar alguns profissionais sobre qualidade de código.

Continue reading

Crítica: Livro “Clean Architecture”

O desenvolvimento de software já teve vários assuntos da moda. Lembro da moda de design patterns: as pessoas colocavam com orgulho no currículo o conhecimento de patterns. Agora design patterns estão fora de moda; aparentemente as pessoas estão se preocupando mais com frameworks / tecnologias específicas e aspectos gerenciais do que questões de design.

Por mais que eu não concorde com essa priorização, a moda faz sentido. Modas desse tipo não são uma mera questão de preferência pessoal ou a visão de alguma celebridade da área. O avanço das tecnologias é tão grande que frameworks resolvem grande parte dos problemas com simplicidade e, com isso, a gestão se tornou novamente o gargalo.

O interessante das modas é que elas são cíclicas… Sim, já houve uma moda sobre aspectos gerenciais. Isso não quer dizer que voltaremos a falar de design patterns; apesar de cíclica, há uma evolução. Então quando a moda de design voltar – e ela vai voltar -, outras questões de design serão importantes.

Todo esse preâmbulo é para falar do livro Clean Architecture, do Robert C. Martin. Como todo livro do “tio” Bob, ele é bem escrito e tem uma leitura fácil e recheada de relatos de experiência interessantes e alguns insights. Continue reading

Template em Word para Dissertações e Teses da EPUSP

Disponibilizei no GitHub um template em MS Word para monografias, dissertações e teses da Escola Politécnica da Universidade de São Paulo. O template atual disponível pela divisão de bibliotecas não usa os recursos de estilos do Word, o que o torna desnecessariamente manual.

Esse template é baseado no que fiz para a minha tese, em 2010. Fiz algumas atualizações para considerar a 4ª edição das Diretrizes e Dissertações da EPUSP.

Já tinha disponibilizado esse documento para alguns alunos, orientados e colegas. Agora torno-o público.

Usando este template, recursos como o de equação (a partir do Word 2007) e uma ferramenta como o Zotero você pode lidar com a gestão e formato das referências. Sem entrar na discussão LaTex X Word, mas já entrando, você só precisa usar LaTex se quiser…

Crítica: Livro "Princípios de Análise e Projeto de Sistemas com UML"

Capa - Princípios de Análise e Projeto de Sistemas com UML

A visão de que a melhor forma de se desenvolver software orientado a objetos é através da criação e do refinamento de modelos UML perdeu sua força depois da aceitação e disseminação dos métodos ágeis em meados da década de 2000 – especialmente por causa do Extreme Programming (XP). Com isso, a UML perdeu bastante da sua importância, sendo vista por alguns mais radicais apenas como uma notação para permitir a discussão (lembrando da “UML como rascunho”, apresentado por Fowler no seu livro UML Distilled).

Mas, claro, a UML e processos similares ao Processo Unificado (UP) ainda são aplicados em diversos contextos – métodos ágeis não são para todos os projetos. Pensando nesses contextos, o livro Princípio de Análise e Projeto de Sistemas com UML, do Eduardo Bezerra, apresenta a UML sugerindo o seu uso ao seguir um processo similar ao UP. O livro parece ser baseado no processo descrito no livro do Larman (Applying UML and Patterns), mas acrescenta algumas técnicas e heurísticas bem interessantes (questões de coesão e acoplamento, técnicas de análise OO, persistência, etc.).

Continue reading

Resultado do Painel na Campus Party 2014

Participei hoje de um painel na Campus Party 2014 sobre o uso de métodos ágeis em projetos de software livre. Além disso, também se discutiu o emprego de métodos ágeis em startups e o uso de métodos ágeis em grandes empresas. Participaram do painel José Honorato Ferreira Nunes (mediador), Alan Braz e Dairton Bassi.

O vídeo do painel deve ficar disponível em breve no site da Campus Party. Ao invés de reapresentar o meu ponto de vista, colocarei alguns artigos sobre esses temas para quem quiser se aprofundar um pouco mais sobre esses assuntos. Continue reading

Painel na Campus Party 2014

 

Dia 29/01/2014 participarei de um Painel na Campus Party 2014, às 11:45, no palco Sócrates. O painel é intitulado “Modelo de desenvolvimento ágil em software livre”. O objetivo é discutir a aplicação de método ágeis em projetos de software livre e em startups. Além de mim, o painel contará com a presença de José Honorato Ferreira Nunes, Alan Braz e Dairton Bassi. Segue a descrição sobre o painel:

Scrum, XP e Kanban são metodologias de desenvolvimento ágil que possibilitam grande redução do tempo de cada iteração de desenvolvimento, aumentando a velocidade do aprendizado através de feedback real dos clientes/usuários. Vamos debater como aplicar essas metodologias no desenvolvimento do software livre e também como trazer essa prática de startups para dentro de grandes equipes, tornando o desenvolvimento mais adaptável as mudanças.

Apesar de não ser um evento científico, esse evento será uma oportunidade interessante para disseminar o conhecimento de Engenharia de Software para a comunidade. Em especial, devo atacar alguns preconceitos comuns sobre métodos de desenvolvimento de software. O painel deverá ser gravado e ficará disponível no site do Campus Party. Pretendo, posteriormente, referenciar aqui alguns artigos e trabalhos que citarei sobre o assunto.

Crítica – Livro "Algoritmos em linguagem C"

Capa do livro "Algoritmos em linguagem C"

Fiz a disciplina de Algoritmos e Estruturas de Dados com o prof. Paulo Feofiloff durante a graduação na Poli – é, já faz um bom tempo… Foi nessa disciplina que realmente aprendi a programar. Mas não foi só isso: aprendi a ensinar durante essa disciplina. Tive ótimos professores na graduação, mas o prof. Feofiloff foi o melhor deles. Ele era dedicado: quase toda aula tinha exercícios e ele os corrigia invariavelmente para a aula seguinte. Ele era objetivo: a aula não tinha enrolação e o conteúdo era em um nível adequado para a sala. Ele era sistemático: o material da aula estava disponível no site dele e a aula seguia o planejamento. Ele era acessível e interessado: ele se esforçava ao máximo para responder todas as perguntas, seja durante a aula ou após ela. Ele era rígido: as correções eram duras, mas honestas. Só não me lembro de ele ser engraçado, mas a minha memória pode estar me enganando…

Por tudo isso, eu fiz questão de ler o livro dele: “Algoritmos em linguagem C” (Campus/Elsevier, 2009). Comprei logo quando foi lançado, mas só agora tive tempo e motivação de lê-lo por completo. E o livro me lembra bastante a aula dele – até pelo conteúdo. É um ótimo livro sobre o tema, direto e objetivo. Continue reading