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

Use Case CRUD Formats

One of the most common questions students and inexperienced practitioners ask when creating a use case model is how to write CRUD (create, read, update and delete) use cases. There are several options to represent these functions:

  1. Not representing it as a use case (Bittner; Spence, 2002; Lily, 2000)
  2. Create one “manage” use case.
    1. Create, update, and delete functions are represented as alternative flows (Cockburn, 2000)
    2. The use case has several basic flows (Övergaard; Palmkvist, 2004)
  3. Create each use case separately.
    1. Use the extends relationship from a “read” use case.
    2. The create, update, and delete use case has a includes relationship with a “read” use case.
    3. Use a precondition to specify specific CRUD use cases from a base use case (Cockburn, 2000)
    4. Represent the use cases without any relationships.

Even though this is a common issue, there is no correct answer for this question. It is a matter of preference. In fact, this is one of the main problems of the use case technique: there is no single method. Each author proposes different terminology, concepts, semantics, templates, rules, and guidance on how to create them (another post presents the result of a survey on use case concepts). Continue reading

JUnit error when testing an Xtext DSL

As part of a research idea, I’m now creating a language to write Use Cases, using Xtext. It is also a good opportunity to analyze more deeply this framework for building textual DSLs in Eclipse.

But this is not why I’m writing this post. After I wrote the language specification, I wanted to create some tests. I followed the very brief tutorial and wrote a simple test. However, It didn’t work. The failure trace in JUnit always presented an error:

org.eclipse.xtext.parser.ParseException: java.lang.IllegalStateException: Unresolved proxy http://wwww.levysiqueira.com.br/MyLanguage.ecore#//Element.Make sure the EPackage has been registered.

at org.eclipse.xtext.parser.antlr.AbstractAntlrParser.doParse(AbstractAntlrParser.java:105)

... Continue reading

Crítica – Livro "VHDL – Descrição e Síntese de Circuitos Digitais"

Decidi escrever, em português, algumas críticas de livros que estou lendo e, a primeira delas é sobre o livro “VHDL – Descrição e Síntese de Circuitos Digitais” de Roberto d’Amore (2ª Edição, LTC, 2012). Gostaria de deixar claro que não tenho nenhuma relação com o autor ou com a editora e, portanto, a crítica representa simplesmente a minha opinião sobre o livro. Esse livro apresenta a linguagem de descrição VHDL, enfatizando o seu uso para a síntese de circuitos digitais.
Continue reading