sábado, 19 de maio de 2012


Mapas Mentais para o Ensino de Engenharia de Software


Os mapas mentais podem representar qualquer tipo de conhecimento de forma sintética, clara e objetiva. Abaixo estou disponiblizando alguns mapas mentais que podem ser utilizados para o ensino de engenharia de software em cursos técnicos ou superiores de computação como recurso adicional às notas de aulas:



Engenharia de Software
  • Engenharia de Requisitos
  • Projeto de Software
  • Modelo de Processos
  • Modelagem
  • Verificação & Validação
  • Metodologias

Tecnologias de Separação de Interesses (Parnas, Foote, Maes, Wiser, Alexander, Kickzales)
  • Desenvolvimento Baseado em Componentes
  • Separação de Interesses
  • Padrões de Projeto
  • Framework
  • Composição Adaptativa
  • Programação Orientada a Aspectos

Desenvolvimento Ágil
  • Manifesto
  • Princípios
  •  Revisão de Software e Programação em Pares

Extreme Programming (XP) Test-driven Development (TDD)
  • Extreme Programming - Conceitos Básicos, Princípios e Práticas Primárias e Corolárias.
  • Desenvolvimento Baseado em Testes - Manifesto, Teste Automatizado, Objetivo, Características, Estratégias e Padrões.

sábado, 21 de abril de 2012


What agile teams think about agile principles
by Laurie Williams - Communications of the ACM 04/2012 vol.55

In the mid-1990s, the prescribed means of keeping software development projects out of trouble and on schedule was to follow a heavyweight software development methodology consisting of a complete requirements document, including architecture and design, followed by coding and testing based on a thorough test plan. The philosophy was often summarized as “Do it right the first time.” Common belief among software engineers at the time was that projects run into trouble when they do not strictly adhere to a methodology, and, if only they did, all would be well. In reality, all was rarely well.

More here

segunda-feira, 5 de março de 2012


 

2 - Basic Definitions 


3 - Series and Summary



4 - Master Method for Recurrences

 
5 - Converting a Mathematical Definition to a Method

Actually, value-producing recursive algorithms are almost identical to inductive definitions. In fact, creating a value-producing recursive algorithm may require little more than the writing down of the inductive definition.

We can first simply rearrange the parts into an algorithm statement:
    Algorithm factorial(n)
        if n less than or equal to 1
              then the answer is 1
              otherwise the answer is: n×factorial(n-1).

It is easy to see that this algorithm is a straightforward piece-by-piece rewriting of the inductive definition: every piece of the algorithm comes directly from the mathematical definition. The Java method for factorial can be derived just as easily from the algorithm:

    //method for class Calculator
    static int factorial(int n) {
        if (n <= 1)
            return 1;
        else return n * factorial(n - 1);
    }
Each component of the definition—and essentially nothing else—appears in the method. It is not uncommon for value-producing recursive algorithms to flow just as directly from the original definition of the needed result. Any mathematical function that can be defined inductively can be similarly translated into a recursive method. This transforms the problem from one of writing methods to solve problems to one of just defining the problem or the mathematical function.

The same approach will work for any inductively defined mathematical functions such as summation:











becomes:
    //method for class Calculator
    static int sum(int n) {
        if (n <= 1)
            return 1;
        else return n + sum(n - 1);
    }

And it gets better: this example extends directly—almost template-like—to any other summation equation. Thus, the sum of squares:




becomes:
    //method for class Calculator
    static int sumSquares(int n) {
        if (n <= 0)
            return 0;
        else return n*n + sumSquares(n - 1);
    }

Source: “Algorithms and Data Structure: The Science of Computing”

Inscreva-se

Creative Commons 3.0. Tecnologia do Blogger.

Teste a Velocidade da Internet

Siga-me

Curta