Engenharia de Software I
modelagem

Frank de Alcantara - 2020   

Ementa

Processo de desenvolvimento de software. Histórico e desenvolvimento do paradigma de Orientação a Objetos. Aspectos das linguagens de modelagem de sistemas.

Conteúdo>

Engenharia de Software.

Análise Orientada a Objetos: história e conceitos de aplicação do paradigma de Programação orientada a objetos.

UML2 (Unified Modeling Language): histórico; visão geral dos diagramas da UML; diagrama de casos de uso; diagrama de classes; diagrama de sequência...

Tópicos Adicionais em Engenharia de Software.

Ferramentas Sugeridas

UML: Genimodel

Mais tarde definiremos as ferramentas para desenvolvimento de software.

Estas são apenas Sugestões, você pode usar a ferramenta que desejar.

Engenharia

Se um construtor constrói uma casa para alguém, e não a constrói de forma correta, e a casa por ele construída cai e mata seu proprietário, então o construtor deve ser morto. (Artigo 229 do código de Hammurabi - 1790 AC)

Há quase 4000 anos a humanidade já se preocupava em regular a profissão de engenheiro. Deixando claro que a função do engenheiro é servir ao usuário de forma adequada e segura.

Engenharia de Software

A Engenharia de software é jovem! Podemos marcar sua origem na primeira metade do Século XX. Ainda estamos aprendendo o que é isso!

O produto software é abstrato, sujeito a mudanças constantes, algumas vezes conflitantes. Além disso, o desenvolvimento de um produto de software é uma tarefa complexa com centenas de disciplinas diferentes interligadas.

Engenharia de Software

Consiste na modelagem de um sistema como forma de minimizar a complexidade. Utilizar estes modelos em busca de uma solução viável para um problema. Avaliando dados, descobrindo informações e determinando uma forma de criar e organizar o conhecimento.

Este processo permite criar uma ferramenta racional para a tomada de decisão, ou execução de uma tarefa específica necessária a solução do problema.

Sistema

Sistemas são conjuntos de partes interagindo para um objetivo comum. Podemos classificá-los em naturais, sociais e artificiais.

O objetivo da engenharia é modificar sistemas independente da sua natureza. A Engenharia de Software lida com sistemas artificiais modificando tanto os sistemas naturais quanto os sistemas sociais.

Solução de Problemas

  1. Formular;
  2. Analisar;
  3. Buscar soluções;
  4. Escolher a solução adequada;
  5. Especificar a solução.

A função da engenharia é solucionar problemas. A Engenharia de Software é uma atividade de engenharia. Requer experiência, experimentação, reuso de soluções e evolução contínua.

Engenharia de Software - Processos

  1. Elicitação de Requerimentos;
  2. Analise do sistema;
  3. Design do sistema;
  4. Design dos objetos;
  5. Implementação;
  6. Testes;
  7. Entrega;
  8. Manutenção;

Engenharia de Software - Processos

Dependendo dos processos escolhidos para a criação do software, para a gestão do projeto, ou mesmo para o modelo de ciclo de vida do produto, estes processos podem ter nomes diferentes, podem estar destruídos de forma diferente e podem até não existir.

Neste curso, vamos considerar todos indispensáveis. E não vamos nos preocupar com nomes e ordens. Mas, vamos focar em Processos Ágeis.

Sistemas Modelos

Sistemas são conjuntos de partes interagindo para um objetivo comum. Podemos classificá-los em naturais, sociais e artificiais.

Modelo é uma representação simplificada de um sistema, ou de parte de um sistema, onde estão representadas as funcionalidades essenciais para o entendimento do sistema, ou do problema.

Modelagem

É a arte, e a ciência, de reduzir um problema a sua representação mais simples. Esta é uma técnica de redução de complexidade por meio da exclusão das partes do sistema que sejam irrelevantes para a solução do problema em um determinado domínio.

No caso de um projeto, seu cronograma e seu orçamento são modelos do projeto em si.

Modelagem Ágil

Processos de desenvolvimento ágil como o Scrum e eXtreme Programming baseiam seu processo de modelagem na criação e análise de User Stories. Este é um processo de modelagem dinâmico que mais eficiente se os analistas e desenvolvedores conhecerem as técnicas de modelagem clássicas.

Modelagem UML

Unified Modeling Language™ ou, Linguagem Unificada de Modelagem é O resultado da junção, nos anos 1980 e 1990, de vários esforços para a criação de uma linguagem para a modelagem de sistemas desenvolvidos por Rumbaugh, Jacobson e Booch e Booch. Em 1996 a primeira versão da UML estava pronta e disponível para uso.

Desde então, a UML está intimamente relacionada com o Rational Unified Process - RUP da IBM e com o paradigma de programação orientada a objetos.

Modelagem- Paradigmas de Programação

Ainda que exista uma relação entre UML, RUP e programação orientada a objetos. Não há nenhuma limitação ao uso da modelagem, ou mesmo da UML, com outros paradigmas de programação.

Tanto a modelagem em geral, quanto a UML em particular, são técnicas para a análise e entendimento de problemas.

Unified Modeling Language™ - UML

A UML permite criar

  • Modelos funcionais (diagrama de caso de uso)
  • Modelos de objetos (diagrama de classes)
  • Modelos dinâmicos (diagrama de sequência)

Alguns autores classificam os diagramas em apenas dois grupos: estáticos e dinâmicos.

UML - Diagramas Estáticos

Diagramas estáticos, ou estruturais, descrevem a estrutura do sistema. Usam os objetos, seus atributos, operações e relacionamento. Exemplo: diagrama de classes.

Diagramas dinâmicos, ou comportamentais, descrevem a interação entre os componentes do sistema, não raramente, entre objetos. Detalhando as mudanças de estado destes objetos. Exemplo: diagrama de casos de uso.

Fixação Conteúdo

Resolva o questionário proposto!!!

Um Pouco de História - Simula 67

Projeto de Ole-Johan Dahl e Kristen Nygaard desenvolvido no Norwegian Computing Center - (NCC) em Oslo entre os anos de 1962 e 1967. Criada para ser uma linguagem capaz de descrever e simular um evento. Baseada no ALGOL 60

A linguagem continha a maior parte dos conceitos que usamos hoje em linguagens orientadas a objetos.

Objetos

Programação orientada a objetos utiliza uma abstração da realidade chamada de objeto que abstrai tanto dados quanto procedimentos. Ou seja, um objeto contém dados, que representam seu estado e métodos para ler e alterar estes estados.

Os objetos são instâncias em memória de artefatos de código chamados de classes. São as classes que definem tanto a abstração de dados quanto os métodos que serão utilizados para sua manipulação.

Classes

A sintaxe utilizada para criar uma classe varia de acordo com os limites de cada uma das linguagens de programação orientadas a objetos. As linguagens mais utilizadas são: Javascript, Python, Java, Go, C++, Typescript, Ruby, PHP e C#.

Uma classe define um tipo de objeto, assim como a palavra endereço define um tipo de informação. Com uma mesma classe, podemos instanciar vários objetos.

Instâncias

A palavra instância se refere a uma classe, em memória, um objeto. O ato de instanciar é o ato de criar as estruturas de memória necessárias para suportar um objeto. A classe contém o conjunto de instruções que permitirá ao programa criar os objetos que precisa.

Uma vez instanciado, um objeto, tem propriedades onde estão armazenados seus dados e métodos que serão utilizados para acessar estes dados.

Associação

Objetos podem ser relacionados por meio de uma associação, esta associação irá determinar como um objeto de uma determinada classe irá se relacionar com objetos de outras classes.

Por exemplo, poderíamos ter uma classe Aluno contendo dados sobre alunos que fosse associada a classe Endereco que conteria dados de endereço.

Classes: exemplo

public class Aluno
                    {
                      private Vector notas;
                      int nNotas;
                     public void nota(int n);
                      protected boolean notaGravada(int n);
                    }
                
                

Fixação de Conteúdo

Resolva o questionário proposto!!!

Referências

BRUEGGE, B.; DUTOIT, A. H. Object-Oriented Software Engineering Using UML, Patterns, and Java. 3º. ed. Pittsburgh, USA: Prentice Hall, 2010.

Impressão

Clique aqui para salvar como pdf.

Agradecimento

The HTML Presentation Framework

Criado por Hakim El Hattab e colaboradores