Fundamentos de Engenharia de Software Requisitos de Software (Classes de Domínio) Modelo de Requisitos de SW Modelo de Casos de Uso Modelo de Classes de Domínio (MCD) Maquete Artefatos de um MCD Classes: Relações entre objetos: associações e suas respectivas multiplicidades; e Relação entre classes: generalização e herança Como descrever modelos de Domínio? Linguagem padrão: Unified Modeling Language (UML) Linguagem gráfica Como especificar a linguagem do modelo de classes? Exemplo de diagrama de classes Atributos Qualificadores de atributos público (public): qualquer classe tem acesso ao elemento. representado por +. protegido (protected): qualquer descendente da classe tem acesso ao elemento. representado por #. privado (private): apenas a própria classe tem acesso ao elemento. representado por -. pacote (package): apenas as classes do mesmo pacote têm acesso ao elemento. representado por ~. Tipos de dados UML Boolean –valor lógico (verdadeiro ou falso); Integer – um número inteiro; String – uma seqüência de caracteres; UnlimitedNatural – conjunto dos números naturais. Associações UML <1 pessoa> Emprego <0..n empresa> <1 empresa> Emprego <0..n pessoa> <1 empregado > Gerencia <0..n empregado> Multiplicidade 0..1 – Opcional 1..1 –Obrigatório existir um objeto, freqüentemente representado por apenas 1 1..5 – Número limitado de objetos entre um e cinco 0..* –Número ilimitado de objetos (possivelmente nenhum - representada por apenas *); 1..* – Número ilimitado de objetos (pelo menos um) Multiplicidades Classes associativas <1 emprego> = <1 pessoa> Emprego <1 empresa> +data de início+ data de fim + salário Generalização Classe derivada, subclasse ou classe filha: classe que herda parte dos seus atributos e métodos de outra classe; Classe base, superclasse ou classe pai: é uma classe a partir da qual classes novas podem ser derivadas. Herança Salada é um tipo de Produto Agregação e composição restaurante possui 0.. n mesas pedido é composto por itempedido (pelo menos 1) Níveis de modelo de classes O processo MDA faz utiliza pelo menos três diferentes níveis de Modelos de Classe: Domínio; Análise; Projeto. Roteiro para construção do MCD 1 Identificar as classes Resultado: Lista de classes. 2 Identificar os atributos Resultado: Lista de Classes com seus respectivos atributos. 3 Identificar as associações binárias Resultado: Classes, atributos e suas associações binárias 4 Identificar os supertipos e subtipos Resultado: Modelo de classes com a hierarquia de herança 5 Identificar e formalizar as associações múltiplas Resultado: Modelo de classes com a especificação não-ambígua das associações de ordem superior a 2. Modelos de classes bem formados (Flavin) R1-Toda classe deve estar associada a uma funcionalidade bem definida do sistema que está sendo modelado. R2-Toda classe deve possuir um ou mais atributos cuja combinação identifique de forma única todos objetos da classe. R3-Todo atributo de uma classe deve ser aplicável a todos os objetos da classe. Esta regra ainda pode ser reforçada por duas sub-regras: 3.1 - os valores de todos os atributos não-identificadores dependem unicamente dos identificadores 3.2 - uma propriedade de uma hierarquia genérica deve ser atribuída somente à classe de nível mais alto da hierarquia. R4-Uma classe possui uma declaração formal se obedece às Regras 1, 2 e 3 e possui pelo menos um atributo não-identificador diretamente associada a ela. Modelos de classes bem formados R5-Duas classes A1 e A2, subclasses de A, são ditas independentes se obedecerem a um ou ambos os casos abaixo: 5.1 - A1 e A2 obedecem às Regras de 1 a 4 e, após a aplicação da Regra 3, existe pelo menos um atributo não-identificador associado a um dos subtipos e não ao outro; 5.2 - Existe uma regra de negócio que declara que A1 e A2 pertencem a subconjuntos disjuntos de A e atribui, a cada objeto das subclasses, valores distintos e um subconjunto independente de identificadores primários. R6-A abstração da interação entre diversas classes é uma classe formalmente declarada se as seguintes condições forem satisfeitas: 6.1 - As Regras 1 a 4 se aplicam a esta classe; 6.2 - Os objetos desta classe têm a capacidade interagir com outros objetos do modelo, i.e., capaz de serem formalmente associados a outros objetos do modelo. Modelos de classes bem formados R7-Um conjunto de classes é uma descrição suficiente do modelo se: 7.1 - Todas as classes de domínio estão presentes no modelo 7.2 - Qualquer elemento do dicionário de dados ou é um atributo de uma classe ou pode ser gerado pela intersecção de objetos de duas ou mais classes. R8-Um modelo de classes é chamado de modelo de mínima complexidade se o conjunto de classes que o compõe é suficiente e contém somente os objetos necessários. R9-Um modelo de classes é modular se não existir nenhuma classe cujos atributos sejam dependentes do identificador primário de outras classes independentes. Um exemplo de modelo de classes