Frank de Alcantara - 2020
Processo de desenvolvimento de software. Histórico e desenvolvimento do paradigma de Orientação a Objetos. Aspectos das linguagens de modelagem de sistemas.
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.
UML: Genimodel
Mais tarde definiremos as ferramentas para desenvolvimento de software.
Estas são apenas Sugestões, você pode usar a ferramenta que desejar.
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.
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.
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.
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.
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.
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 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.
É 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.
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.
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.
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.
A UML permite criar
Alguns autores classificam os diagramas em apenas dois grupos: estáticos e dinâmicos.
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.
Resolva o questionário proposto!!!
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.
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.
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.
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.
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.
public class Aluno
{
private Vector notas;
int nNotas;
public void nota(int n);
protected boolean notaGravada(int n);
}
Resolva o questionário proposto!!!
BRUEGGE, B.; DUTOIT, A. H. Object-Oriented Software Engineering Using UML, Patterns, and Java. 3º. ed. Pittsburgh, USA: Prentice Hall, 2010.
Clique aqui para salvar como pdf.
Criado por Hakim El Hattab e colaboradores