O documento descreve 7 princípios da engenharia de software:
1. Rigor e formalidade para aumentar a confiabilidade dos resultados do desenvolvimento de software.
2. Separação de interesses para dividir um problema complexo em aspectos mais simples.
3. Modularidade para dividir um sistema complexo em unidades menores e mais simples.
Este documento fornece uma introdução à engenharia de software, discutindo sua importância, características e desafios. Em três frases:
O documento introduz o conceito de engenharia de software, definindo-a como um processo sistemático e disciplinado para desenvolver software de forma econômica e confiável. Também discute os principais paradigmas de engenharia de software, como cascata e prototipação, e identifica a necessidade de métodos para lidar com os problemas crônicos no desenvolvimento de software, como atrasos e
O documento discute engenharia de software, metodologias e processos. As principais informações são: 1) Metodologias ágeis incentivam mudanças nos requisitos para entregar o que o cliente precisa; 2) O Manifesto Ágil estabeleceu princípios como indivíduos e interações, software funcionando e resposta rápida a mudanças; 3) O RUP é um framework de processo centrado em arquitetura baseado em UML e casos de uso.
O documento discute a arquitetura de software, definindo-a como a estrutura de um sistema de software, incluindo os componentes, propriedades e relacionamentos. Também aborda linguagens para descrever arquitetura, visões e padrões de arquitetura.
O documento discute o modelo CMMI, incluindo suas representações (contínua e por estágios), níveis de maturidade e como ele é usado no Brasil. A maioria das empresas brasileiras usa a representação por estágios e está nos níveis 2 ou 3 de maturidade, com algumas poucas no nível 5. Metodologias ágeis também estão sendo adotadas.
O documento discute processos de engenharia de software, incluindo modelos como cascata e incremental. O modelo em cascata é composto por sequências de atividades como análise de requisitos, design, implementação e testes. Já o desenvolvimento incremental envolve o desenvolvimento inicial e versões sucessivas com base em comentários. A engenharia de software orientada a reuso busca incorporar códigos e sistemas semelhantes ao projeto.
Qualidade de software - Gestão de Projetos de Software - BSIMonnalisa Medeiros
Este documento discute os conceitos e métodos de garantia de qualidade de software. Aborda tópicos como definição de qualidade, evolução histórica da garantia da qualidade, planejamento e controle de qualidade, custos associados e modelos de padronização como CMMI, ISO 9000 e ISO 9126.
O documento discute a definição de maturidade e capacidade de processo de software, o Modelo MPS.BR e seu objetivo de melhorar os processos de software em empresas brasileiras. Também descreve os níveis iniciais do modelo, incluindo os processos e resultados esperados no Nível G.
O documento discute metodologias de desenvolvimento de software, enfatizando que deve ser realizado em equipe, seguir um processo e usar metodologias como a cascata, prototipação, ciclo de vida ou incremental. Também menciona modelos ágeis como Scrum e eXtreme Programming e a importância de seguir um processo para garantir qualidade e reduzir custos.
Este documento fornece uma introdução à engenharia de software, discutindo sua importância, características e desafios. Em três frases:
O documento introduz o conceito de engenharia de software, definindo-a como um processo sistemático e disciplinado para desenvolver software de forma econômica e confiável. Também discute os principais paradigmas de engenharia de software, como cascata e prototipação, e identifica a necessidade de métodos para lidar com os problemas crônicos no desenvolvimento de software, como atrasos e
O documento discute engenharia de software, metodologias e processos. As principais informações são: 1) Metodologias ágeis incentivam mudanças nos requisitos para entregar o que o cliente precisa; 2) O Manifesto Ágil estabeleceu princípios como indivíduos e interações, software funcionando e resposta rápida a mudanças; 3) O RUP é um framework de processo centrado em arquitetura baseado em UML e casos de uso.
O documento discute a arquitetura de software, definindo-a como a estrutura de um sistema de software, incluindo os componentes, propriedades e relacionamentos. Também aborda linguagens para descrever arquitetura, visões e padrões de arquitetura.
O documento discute o modelo CMMI, incluindo suas representações (contínua e por estágios), níveis de maturidade e como ele é usado no Brasil. A maioria das empresas brasileiras usa a representação por estágios e está nos níveis 2 ou 3 de maturidade, com algumas poucas no nível 5. Metodologias ágeis também estão sendo adotadas.
O documento discute processos de engenharia de software, incluindo modelos como cascata e incremental. O modelo em cascata é composto por sequências de atividades como análise de requisitos, design, implementação e testes. Já o desenvolvimento incremental envolve o desenvolvimento inicial e versões sucessivas com base em comentários. A engenharia de software orientada a reuso busca incorporar códigos e sistemas semelhantes ao projeto.
Qualidade de software - Gestão de Projetos de Software - BSIMonnalisa Medeiros
Este documento discute os conceitos e métodos de garantia de qualidade de software. Aborda tópicos como definição de qualidade, evolução histórica da garantia da qualidade, planejamento e controle de qualidade, custos associados e modelos de padronização como CMMI, ISO 9000 e ISO 9126.
O documento discute a definição de maturidade e capacidade de processo de software, o Modelo MPS.BR e seu objetivo de melhorar os processos de software em empresas brasileiras. Também descreve os níveis iniciais do modelo, incluindo os processos e resultados esperados no Nível G.
O documento discute metodologias de desenvolvimento de software, enfatizando que deve ser realizado em equipe, seguir um processo e usar metodologias como a cascata, prototipação, ciclo de vida ou incremental. Também menciona modelos ágeis como Scrum e eXtreme Programming e a importância de seguir um processo para garantir qualidade e reduzir custos.
O documento discute os principais componentes, tipos e problemas do software, incluindo estimativas imprecisas de prazo e custo, baixa qualidade e produtividade. Também aborda as causas destes problemas, como a falta de experiência de gerentes e treinamento formal de desenvolvedores, além da mitologia em torno do software que pode levar a expectativas irrealistas.
O documento descreve os princípios e métodos ágeis de desenvolvimento de software. Apresenta o Manifesto Ágil de 2001, que valoriza indivíduos, software funcional, colaboração com clientes e resposta à mudança. Também discute exemplos de métodos ágeis como SCRUM, XP, FDD e DSDM.
O documento introduz conceitos básicos de engenharia de software, incluindo: (1) a definição de software e a crise histórica no desenvolvimento de software, (2) a introdução da engenharia de software para lidar com os desafios por meio de modelos de processo e gerenciamento de projetos, e (3) os principais modelos de processo e gerenciamento de projetos de software.
O documento discute a modelagem de sistemas, incluindo fundamentos, tipos de modelos, e engenharia dirigida a modelos. Aborda modelos de contexto, interação, estrutura, comportamento e considerações finais sobre modelagem.
Este documento descreve uma unidade curricular sobre a arquitetura interna de computadores. O objetivo é identificar os principais elementos de uma arquitetura de computador, como as unidades de execução e a estrutura da memória e do processador. Os tópicos incluem a organização de um computador, componentes, gestão da memória e do processador, e interfaces de periféricos.
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
O documento discute os conceitos e aplicações de Processos de Desenvolvimento de Software (PDS), comparando modelos tradicionais como Cascata e RUP com modelos ágeis como SCRUM e XP. Resume que PDS organizam atividades, papéis e artefatos para o desenvolvimento de software, e que não existe um modelo perfeito, sendo importante customizá-los de acordo com cada organização.
O documento discute os tipos de dados primitivos em programação, como inteiros, reais, caracteres e lógicos. Apresenta também constantes e variáveis, declarando que variáveis podem ter seus valores alterados durante a execução do programa ao contrário de constantes. Explica ainda a atribuição de valores às variáveis e operadores aritméticos.
O documento resume os principais tópicos sobre desenvolvimento de sistemas web, incluindo: (1) a diferença entre Internet e Web, como a Web usa a Internet para compartilhar hipertextos; (2) o modelo cliente-servidor e como ele funciona; (3) URLs e como elas localizam recursos na Web.
O documento resume uma aula sobre levantamento de requisitos para engenharia de software. Apresenta técnicas como análise do problema, identificação de stakeholders, e casos de uso para entender as necessidades dos usuários e definir os requisitos do sistema.
1. O documento apresenta Paulo Furtado como professor e fornece informações sobre suas disciplinas de levantamento de requisitos. 2. É discutido o que a disciplina ensina e não ensina, com foco em questionar a forma atual de identificação de requisitos e priorizar a priorização. 3. A primeira aula trata de conceitos iniciais como visão de produto, evolução, processos cognitivos e aprendizado.
O documento introduz conceitos básicos de engenharia de software, abordando:
1) A definição de software e sua classificação em diferentes categorias;
2) Os principais problemas que levaram à "crise do software" e a evolução da área ao longo das décadas;
3) Os papéis e disciplinas associados ao desenvolvimento de software.
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Leinylson Fontinele
O documento descreve uma aula prática sobre cabeadamento de redes de computadores, ensinando os 8 passos para construir um cabo de rede, incluindo escolher o padrão, liberar os fios, alinhar e cortar, encaixar nos conectores, verificar a crimpagem e testar o cabo. Materiais como cabo par trançado, conectores RJ-45 e alicate de crimpagem são necessários.
O documento discute processos e threads em sistemas operacionais, incluindo: (1) o que é um processo e como é representado no sistema, (2) os diferentes tipos e estados de processos, e (3) como o escalonador do sistema operacional agenda qual processo receberá tempo de CPU.
O documento descreve o framework Scrum para gestão de projetos, incluindo seus eventos, artefatos e princípios-chave como entregas incrementais de valor, times auto-organizáveis e feedback contínuo. Ele também discute a importância da priorização do backlog do produto e da definição do escopo da sprint para entregas bem-sucedidas.
O documento apresenta os principais paradigmas de engenharia de software, como desenvolvimento clássico (cascata), prototipagem, modelo iterativo e espiral. Discute as etapas do ciclo de vida de desenvolvimento de software, como levantamento de requisitos, análise, projeto, implementação, testes e implantação. Também aborda os pontos positivos e negativos de cada paradigma.
Software Architecture In Practice presents software architecture concepts illustrated with a real world case study about the process of architecting, and the architecture itself, of the provisioning system built for the largest brazilian telecommunications company. It's a 24x7 mission-critical system that is extremely reliable and scalable. Presented for PANGEA community (http://pangeanet.org/) and Unatec's Systems Architecture students.
Arquitetura de Software Na Pratica apresenta conceitos sobre arquitetura de software ilustrados com um estudo de caso real sobre o processo de arquitetar, e a própria arquitetura de software, de um sistema de aprovisionamento construído para a maior companhia de telecomunicações do Brasil. É um sistema de missão crítica 24x7 extremamente confiável e escalável. Apresentado para a comunidade PANGEA (http://pangeanet.org/) e estudantes da disciplina de Arquitetura de Sistemas na faculdade Unatec.
O documento descreve o modelo CMMI, incluindo sua história, representações, níveis de maturidade e disciplinas. Ele também apresenta casos de sucesso como a AMBISIG em Portugal, que aplica um processo multi-modelo CMMI alcançando altos níveis de maturidade em desenvolvimento e serviços.
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Marcello Thiry
(1) O documento introduz o tema de engenharia de software, discutindo sua origem e motivação. (2) Apresenta os principais tópicos que serão abordados, incluindo a crise do software, características de software e qualidade. (3) Define engenharia de software como a aplicação sistemática de métodos científicos e empíricos para criar, melhorar e implementar software.
Expected Monetary Value - EMV (Project Management Series)Marcello Thiry
Project Management Course
Expected Monetary Value
EMV
Universidade do Vale do Itajaí
University of Vale do Itajaí
Univali
Incremental Tecnologia
English version
O documento discute os principais componentes, tipos e problemas do software, incluindo estimativas imprecisas de prazo e custo, baixa qualidade e produtividade. Também aborda as causas destes problemas, como a falta de experiência de gerentes e treinamento formal de desenvolvedores, além da mitologia em torno do software que pode levar a expectativas irrealistas.
O documento descreve os princípios e métodos ágeis de desenvolvimento de software. Apresenta o Manifesto Ágil de 2001, que valoriza indivíduos, software funcional, colaboração com clientes e resposta à mudança. Também discute exemplos de métodos ágeis como SCRUM, XP, FDD e DSDM.
O documento introduz conceitos básicos de engenharia de software, incluindo: (1) a definição de software e a crise histórica no desenvolvimento de software, (2) a introdução da engenharia de software para lidar com os desafios por meio de modelos de processo e gerenciamento de projetos, e (3) os principais modelos de processo e gerenciamento de projetos de software.
O documento discute a modelagem de sistemas, incluindo fundamentos, tipos de modelos, e engenharia dirigida a modelos. Aborda modelos de contexto, interação, estrutura, comportamento e considerações finais sobre modelagem.
Este documento descreve uma unidade curricular sobre a arquitetura interna de computadores. O objetivo é identificar os principais elementos de uma arquitetura de computador, como as unidades de execução e a estrutura da memória e do processador. Os tópicos incluem a organização de um computador, componentes, gestão da memória e do processador, e interfaces de periféricos.
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
O documento discute os conceitos e aplicações de Processos de Desenvolvimento de Software (PDS), comparando modelos tradicionais como Cascata e RUP com modelos ágeis como SCRUM e XP. Resume que PDS organizam atividades, papéis e artefatos para o desenvolvimento de software, e que não existe um modelo perfeito, sendo importante customizá-los de acordo com cada organização.
O documento discute os tipos de dados primitivos em programação, como inteiros, reais, caracteres e lógicos. Apresenta também constantes e variáveis, declarando que variáveis podem ter seus valores alterados durante a execução do programa ao contrário de constantes. Explica ainda a atribuição de valores às variáveis e operadores aritméticos.
O documento resume os principais tópicos sobre desenvolvimento de sistemas web, incluindo: (1) a diferença entre Internet e Web, como a Web usa a Internet para compartilhar hipertextos; (2) o modelo cliente-servidor e como ele funciona; (3) URLs e como elas localizam recursos na Web.
O documento resume uma aula sobre levantamento de requisitos para engenharia de software. Apresenta técnicas como análise do problema, identificação de stakeholders, e casos de uso para entender as necessidades dos usuários e definir os requisitos do sistema.
1. O documento apresenta Paulo Furtado como professor e fornece informações sobre suas disciplinas de levantamento de requisitos. 2. É discutido o que a disciplina ensina e não ensina, com foco em questionar a forma atual de identificação de requisitos e priorizar a priorização. 3. A primeira aula trata de conceitos iniciais como visão de produto, evolução, processos cognitivos e aprendizado.
O documento introduz conceitos básicos de engenharia de software, abordando:
1) A definição de software e sua classificação em diferentes categorias;
2) Os principais problemas que levaram à "crise do software" e a evolução da área ao longo das décadas;
3) Os papéis e disciplinas associados ao desenvolvimento de software.
Introdução à computação - Aula Prática 4 - Redes de Computadores (Cabeamento ...Leinylson Fontinele
O documento descreve uma aula prática sobre cabeadamento de redes de computadores, ensinando os 8 passos para construir um cabo de rede, incluindo escolher o padrão, liberar os fios, alinhar e cortar, encaixar nos conectores, verificar a crimpagem e testar o cabo. Materiais como cabo par trançado, conectores RJ-45 e alicate de crimpagem são necessários.
O documento discute processos e threads em sistemas operacionais, incluindo: (1) o que é um processo e como é representado no sistema, (2) os diferentes tipos e estados de processos, e (3) como o escalonador do sistema operacional agenda qual processo receberá tempo de CPU.
O documento descreve o framework Scrum para gestão de projetos, incluindo seus eventos, artefatos e princípios-chave como entregas incrementais de valor, times auto-organizáveis e feedback contínuo. Ele também discute a importância da priorização do backlog do produto e da definição do escopo da sprint para entregas bem-sucedidas.
O documento apresenta os principais paradigmas de engenharia de software, como desenvolvimento clássico (cascata), prototipagem, modelo iterativo e espiral. Discute as etapas do ciclo de vida de desenvolvimento de software, como levantamento de requisitos, análise, projeto, implementação, testes e implantação. Também aborda os pontos positivos e negativos de cada paradigma.
Software Architecture In Practice presents software architecture concepts illustrated with a real world case study about the process of architecting, and the architecture itself, of the provisioning system built for the largest brazilian telecommunications company. It's a 24x7 mission-critical system that is extremely reliable and scalable. Presented for PANGEA community (http://pangeanet.org/) and Unatec's Systems Architecture students.
Arquitetura de Software Na Pratica apresenta conceitos sobre arquitetura de software ilustrados com um estudo de caso real sobre o processo de arquitetar, e a própria arquitetura de software, de um sistema de aprovisionamento construído para a maior companhia de telecomunicações do Brasil. É um sistema de missão crítica 24x7 extremamente confiável e escalável. Apresentado para a comunidade PANGEA (http://pangeanet.org/) e estudantes da disciplina de Arquitetura de Sistemas na faculdade Unatec.
O documento descreve o modelo CMMI, incluindo sua história, representações, níveis de maturidade e disciplinas. Ele também apresenta casos de sucesso como a AMBISIG em Portugal, que aplica um processo multi-modelo CMMI alcançando altos níveis de maturidade em desenvolvimento e serviços.
Engenharia de Software - Introdução e Motivação (Marcello Thiry)Marcello Thiry
(1) O documento introduz o tema de engenharia de software, discutindo sua origem e motivação. (2) Apresenta os principais tópicos que serão abordados, incluindo a crise do software, características de software e qualidade. (3) Define engenharia de software como a aplicação sistemática de métodos científicos e empíricos para criar, melhorar e implementar software.
Expected Monetary Value - EMV (Project Management Series)Marcello Thiry
Project Management Course
Expected Monetary Value
EMV
Universidade do Vale do Itajaí
University of Vale do Itajaí
Univali
Incremental Tecnologia
English version
A União Europeia está enfrentando desafios sem precedentes devido à pandemia de COVID-19 e à invasão russa da Ucrânia. Isso destacou a necessidade de autonomia estratégica da UE em áreas como energia, defesa e tecnologia digital para proteger seus cidadãos e valores fundamentais. Ao mesmo tempo, a UE deve manter sua abertura e cooperação com parceiros que compartilham os mesmos princípios.
Pedaços de XP, FDD, Scrum e Kanban na Análise de Negócios e Engenharia de Req...Rafael Barbosa Camargo
Relato de uma jornada partindo da Análise e Engenharia Tradicional de Requisitos para uma abordagem ágil utilizando pedaços de várias metodologias e frameworks ágeis.
ISO TS16949 2002 Apresentação dos RequisitosRogério Souza
Este documento apresenta a norma técnica ISO/TS 16949:2002, que estabelece os requisitos de um sistema de gestão da qualidade para organizações do setor automotivo. A norma descreve princípios como foco no cliente, liderança, melhoria contínua e gestão por processos. Além disso, refere-se a manuais como APQP, FMEA, MSA e PPAP que fornecem diretrizes para o sistema de gestão da qualidade.
Workshop de Requisitos - User Story MappingMarcelo Neves
Este documento apresenta a técnica de User Story Mapping para organizar e priorizar requisitos de software. A técnica envolve mapear user stories em um diagrama para visualizar o fluxo de valor, relacionamentos entre histórias, e ajudar a priorizar e planejar releases do produto. O documento fornece exemplos de como estruturar user stories e como usá-las para criar um mapa que guie o desenvolvimento do produto.
Este documento apresenta uma técnica chamada JAD (Joint Application Design) para levantamento de requisitos de software. Inicialmente, ele discute problemas comuns no processo de elicitação de requisitos, como a comunicação deficiente entre usuários e desenvolvedores. Em seguida, introduz a pirâmide de requisitos e algumas técnicas tradicionais de elicitação como entrevistas e brainstorming. Finalmente, apresenta a técnica JAD em mais detalhes.
Método RON - Requisitos Orientado ao Negócio
Tem por objetivo apresentar método de definição e gerencia de requisitos com base nas atividades de um processo de negócio.
Escrevendo requisitos de alta qualidade Marcelo Neves
Este documento discute como criar requisitos de alta qualidade, definindo o que é um requisito, dicas para evitar termos ambíguos e recomenda adotar a perspectiva do usuário. Também fornece exemplos de como evitar lógica complexa, sentenças negativas, omissões e usar vocabulário claro.
Analista de Negócios e o Ciclo Vida dos RequisitosCompanyWeb
Este material é utilizado no nosso curso de Analista de Negócios na CompanyWeb (www.CompanyWeb.com.br).
Analista de Negócios
Objetivo
•Discutir porque as empresas necessitam de um Analista de Negócio; •Fundamentos da Notação BPMN para contribuir na produção dos Requisitos de software.
•Apresentar BABok, guia de referência das melhores práticas para o Analista de Negócios;
•Apresentar quais são as competências (conhecimentos, habilidades e atitudes) do Analista de Negócios.
•Apresentar o Ciclo de Vida dos Requisitos segundo o BABOK.
•Apresentar Caso de USO com UML voltado a Analista de Negócios.
Conteúdo Programático
1) Papel do Analista de Negócios nas Organizações
• Desafios e resultados com o Analista de Resultados;
• Resolvendo problemas de negócios;
• Foco no negócio;
• Foco na Análise de Negócios;
• Definição de soluções para problemas empresariais;
• Obtenção de requisitos;
• Facilitador entre o negócio e a TI
2) Framework do Escopo de Atuação do Analista de Negócios
• Criamos uma estrutura gráfica para definir o escopo, as fronteiras de atuação do Analista de Negócios, Analista de Processos. Uma maneira prática para entender a atuação do Analista de Negócio no cenário corporativo
3) Notação BPMN (Business Process Management Notation):
- Visão geral da BPMN;
- Principais recursos;
- Regras de Negócios, Processos de Negócios e Requisitos funcionais e não funcionais;
- Melhor prática para documentar o processo;
- A importância do diagrama de processo na produção dos requisitos de software;
- Exemplo prática processos e requisitos de software.
4) Apresentação do BABoK 2.0 – Áreas de Conhecimento
• São 5 áreas de conhecimento do BABok, o livro do Analista de Negócio. É a Áreas de Conhecimentos orientam os analistas de negócios a determinar quais atividades são necessárias para completar um esforço de análise de negócios. Abrange a identificação dos Stakeholders, a seleção de técnicas de análise de negócios, o processo que será utilizado para gerenciar os requisitos, e como avaliar o andamento dos trabalhos.
• Iremos apresentar as áreas de conhecimento, sua estrutura de entradas e saídas, técnicas/ferramentas.
• Planejamento e monitoramento;
• Elicitação de Requisitos;
• Gerenciamento e Comunicação de Requisitos;
• Análise Corporativa;
• Análise de Requisitos;
• Avaliação e Validação da Solução.
5) Guia de Utilização do BABoK – Roadmap para as Áreas de Conhecimento e Tarefas
• Para facilitar o dia-a-dia do analista de negócios, criamos u
veja mais no www.companyweb.com.br ou contato@companyweb.com.br
O documento apresenta o professor Tiago Barros, que ministrará o curso de especialização em Engenharia de Software. O curso abordará processos de desenvolvimento de software, engenharia de requisitos, documentação e elicitação de requisitos. Os alunos formarão equipes para definir e documentar os requisitos de um projeto de software.
Este documento discute validação e gerenciamento de requisitos no processo de engenharia de software. Ele descreve os objetivos da validação de requisitos, formas de validação como revisão de documentos, prototipagem e testes, e ferramentas para gerenciamento de requisitos e mudanças.
1) A análise de requisitos é fundamental para obter um software de alta qualidade e envolve descobrir e refinar os requisitos através da comunicação entre cliente e desenvolvedor.
2) Os principais passos da análise incluem modelar o domínio da informação, desenvolver modelos do sistema, particionar o problema e especificar requisitos funcionais e não funcionais.
3) Uma especificação de requisitos efetiva separa funcionalidade de implementação, modela o sistema e seu ambiente, e é revisada para garantir completude e
Este documento discute requisitos de engenharia de software. Apresenta tipos de requisitos funcionais e não funcionais, e discute como especificá-los de forma clara, completa e consistente para evitar ambiguidades. Também discute alternativas à especificação de requisitos em linguagem natural, como especificações estruturadas, baseadas em modelos e tabelas.
Como colocar as referências segundo a abntitqturma201
Este documento fornece modelos para referenciar diversos tipos de fontes, incluindo livros, periódicos, teses, relatórios e documentos eletrônicos. São apresentados modelos para referenciar obras completas, partes de obras, artigos em revistas e jornais, congressos, legislação, filmes, disquetes, e-mails e listas de discussão. Os modelos incluem informações como nome dos autores, título, local, editora, ano de publicação e páginas para fornecer referências completas e
1. O documento descreve os processos de engenharia de requisitos, incluindo atividades como estudo de viabilidade, elicitação e análise de requisitos, especificação e validação.
2. A elicitação e análise de requisitos envolvem interagir com stakeholders para obter requisitos do sistema através de técnicas como entrevistas e observações.
3. Os requisitos obtidos são então documentados, classificados e negociados para resolver conflitos, produzindo uma versão inicial dos requisitos do sistema
Princípios Fundamentais da Análise de Requisitoselliando dias
O documento discute princípios fundamentais da análise de requisitos para o desenvolvimento de software. Ele descreve as etapas da análise de requisitos, incluindo descoberta, refinamento e modelagem. Também discute os participantes do processo e suas responsabilidades, como o cliente e o analista de sistemas. Finalmente, fornece diretrizes para a especificação e comunicação de requisitos.
O documento discute os processos de engenharia de requisitos para software, incluindo a definição de requisitos funcionais e não funcionais. Apresenta os tipos de requisitos como requisitos de usuário, sistema e especificação de software. Também discute representações estruturadas de requisitos e linhas guias para elaboração de requisitos.
Slides utilizado na disciplina de Análise e Levantamento de Requisitos no curso Superior de Tecnologias em Sistemas para Internet no IF Goiano campus Morrinhos.
O documento discute os custos associados a erros nos requisitos de software. Quanto mais tarde um erro é detectado, maior o seu custo de correção. Erros comuns incluem fatos incorretos, omissões e inconsistências. A engenharia de requisitos visa elicitar, modelar e analisar os requisitos para evitar esses erros.
Este documento resume uma apresentação sobre skills de desenvolvedores em ambientes low code. A apresentação discute: 1) Como equipes de desenvolvimento usaram plataformas low code para soluções de clientes; 2) Skills relevantes como modelagem de dados e modularização ainda são importantes; 3) Desenvolvedores com skills técnicas têm vantagem em ambientes enterprise low code.
O documento apresenta o professor Rogério Patrício Chagas do Nascimento, doutor em engenharia informática e mestre em ciência da computação. Ele irá ministrar a disciplina de Tópicos Especiais em Engenharia de Software e discutir tópicos relacionados a novas metodologias de desenvolvimento de software. Os alunos serão avaliados por meio de seminários, manuscritos e blogs sobre temas como novas metodologias ágeis e modelos de processo.
Este documento apresenta uma situação-problema para os alunos de um curso de tecnologia em análise e desenvolvimento de sistemas. Os alunos devem formar grupos e realizar 4 tarefas relacionadas ao desenvolvimento de software, aplicando conceitos de interação homem-computador, sistemas de informação, segurança da informação e ética profissional. As tarefas incluem o desenho de uma tela de cadastro, análise de dados, criptografia de dados e apresentação de venda de software. Normas detalhadas são fornec
O documento fornece informações sobre a disciplina de Engenharia de Software ministrada pelo professor Ernesto Bedrikow, incluindo sua formação acadêmica, experiência profissional, ementa, conteúdo programático e dinâmica das aulas.
O documento discute os processos, métodos e ferramentas para desenvolvimento de software, enfatizando a importância de se seguir um processo estruturado e contínuo de melhoria. Aborda os modelos tradicionais como Waterfall e os mais modernos como ágeis, além de questões como gerência de requisitos, configuração e planejamento para garantir o sucesso dos projetos.
Este documento é uma apostila para um curso de extensão sobre MFC (Microsoft Foundation Classes) e apresenta conceitos básicos de programação orientada a objetos. O documento discute a história da programação orientada a objetos, princípios como encapsulamento e herança, e conceitos como classe, objeto, método e mensagem.
UAI Test 2014 - Storyboards - dos Requisitos aos TestesJosé Correia
Storyboards ajudam a melhorar a comunicação entre times e clientes, fornecendo informações visuais sobre os requisitos, fluxos e testes de um software de forma concisa e fácil de entender. Eles podem ser criados em ferramentas como PowerPoint e ajudam a antecipar e corrigir problemas antes do desenvolvimento, reduzindo custos. Devem ser armazenados de forma segura e rastreável.
Aula Teste Fatec Engenharia de Software IIIDalton Martins
O documento discute a importância da arquitetura de software no desenvolvimento de projetos de TI. Apresenta os principais problemas enfrentados por projetos, como falta de comunicação entre equipes, e argumenta que a arquitetura de software pode ajudar a documentar a complexidade dos sistemas e facilitar a compreensão compartilhada entre os diferentes atores envolvidos.
O documento apresenta as informações sobre o professor Rogério Patrício Chagas do Nascimento, incluindo sua formação acadêmica, áreas de pesquisa e interesse, disciplinas ministradas, parcerias internacionais e experiência.
LIVRO PROPRIETÁRIO - CENÁRIOS DE TECNOLOGIA DA INFORMAÇÃOOs Fantasmas !
O documento apresenta os principais conceitos de sistemas de informação, teoria de sistemas e tecnologia da informação. Em 3 frases:
1) Define sistemas de informação como sistemas que recebem dados, armazenam-nos e manipulam-nos para gerar informações para os usuários;
2) Explica que um sistema é um conjunto de elementos inter-relacionados que compõem um todo com função definida, observado por um sujeito;
3) Apresenta exemplos de sistemas como o sistema respiratório e circulatório no
Este documento apresenta Felipe Pimentel, um arquiteto de software e consultor que ministra palestras e treinamentos sobre desenvolvimento orientado a testes (TDD). Ele discute os benefícios do TDD, como aumentar a qualidade do código e produtividade, e demonstra técnicas TDD em três exemplos de calculadora, FizzBuzz e aplicação bancária.
1) O documento apresenta o plano de aula de uma disciplina de Fundamentos de Sistemas de Informação que abordará conceitos como dados, informação, sistemas e tecnologia da informação. 2) Serão discutidos temas como planejamento estratégico de SI, infraestrutura de TI, segurança da informação e sistemas de gestão empresarial. 3) A avaliação dos alunos consistirá em provas, trabalhos em grupo e seminários sobre sistemas de informação.
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
O documento apresenta brevemente os palestrantes Daniel Cukier e Rafael Prikladnicki, seus contextos acadêmicos e experiências com métodos ágeis. Também traz a agenda da apresentação "Introdução a Métodos Ágeis de Desenvolvimento de Software" com tópicos como princípios, problemas com abordagens tradicionais e alguns métodos ágeis.
O documento apresenta novas tecnologias de representação e interação para simulação, engenharia e MDSE, incluindo exemplos e estudos de caso. Dois mini-estágios são propostos: um aplicando robótica e realidade aumentada e outro interface de hardware para simulação em Matlab. Conceitos como MBSE, realidade virtual, aumentada e cruzada são explicados, com ênfase na melhoria da interação homem-máquina.
Webinar: Oportunidades e requisitos no projeto de hardware para IoTEmbarcados
De tempos em tempos ocorre um “salto quântico” no mercado: alguns paradigmas caem, novos paradigmas surgem e cabe a nós nos posicionarmos da melhor forma e o mais rapidamente possível, para transformar problemas em oportunidades!
Com o mercado de IoT não é diferente: é relativamente intuitivo imaginar serviços de informação que podem ser prestados por meio de coleta e análise de dados a partir de sensores eletrônicos. Mas quantas não são as vezes em que isso depende da construção de um protótipo funcional (e barato) de um sistema embarcado? Quantas vezes não iniciamos testes com placas prontas e, após um certo ponto, entendemos que esses testes não conseguem refletir toda a realidade do produto final, pois envolvem recursos (de hardware e de firmware) que não estarão na versão final e interferem nos resultados dos testes?
Quando se trata de sistemas embarcados, a ponte entre uma ideia e um produto está no projeto de um protótipo funcional! Para realizar esse projeto, precisamos ter, e saber usar, ferramentas para desenho de esquemas elétricos e layouts de placa. Além disso, também precisamos realizar pesquisas sobre componentes, desenhar footprints, fazer contato com fabricantes de placas e montadores, estruturar testes (visuais, eletrônicos e funcionais), identificar problemas e corrigi-los.
Neste webinar conversaremos sobre esse ciclo de trabalho, com ênfase ao projeto de placas por meio do Autodesk Eagle, ferramenta usada nos treinamentos de projeto de placas ministrados no Liceutech.
Confira o video em: https://experience.embarcados.com.br/webinars/requisitos-projeto-hardware-para-iot/
A análise e modelagem de software não é uma atividade simples, quando o domínio do software não é algo trivial e mais complicado ainda. O Domain Driven Design sugere uma nova abordagem para resolver estas tarefas, criando uma linguagem única para todas as pessoas envolvidas no projeto.
Nesta palestra buscamos conhecer um pouco mais sobre essa abordagem e quais ferramentas temos para aplicá-la utilizando PHP.
Tarefa 1:
Considerando as funções básicas de um computador:
Unidade de Entrada – Na qual podemos inserir/entrar com dados no computador. Exemplo: teclado, mouse e outras entradas.
Unidade de Saída – Em que os dados podem ser visualizados. Exemplo: telas, impressoras e outras saídas.
Unidade de Processamento – Onde acontece o processamento das informações. Exemplo: processador do computador.
Unidade de Armazenamento – Memórias (RAM, ROM, HD, discos externos, pen drives, cartões de memória).
Faça uma pesquisa na internet e monte dois computadores completos, um para escritório, na utilização básico no do dia a dia, e outro com configuração superior para trabalhos que utilizam mais recursos do equipamento, descreva a configuração completa e justifique sua escolha, exemplo a seguir:
Computador 01 (Uso básico): Gabinte:
Placa-mãe: Processador:
PRODUÇÃO TEXTUAL
INTERDISCIPLINAR
HD:
Memória: Monitor: Teclado: Mouse:
Justificativa:
Computador 02 (Uso pesado):
Gabinte:
Placa-mãe:
Processador:
HD:
Memória:
Monitor:
Teclado:
Mouse:
Justificativa:
Tarefa 2:
A governança da segurança da informação é definida como um subconjunto de governança empresarial que oferece direcionamento estratégico, assegura que os objetivos sejam atingidos, gerencia riscos e monitora o êxito ou a falha do programa de segurança corporativa.
a) Pesquise e exemplifique uma matriz de risco.
b) Pesquise sobre controles para mitigação de riscos.
PRODUÇÃO TEXTUAL
INTERDISCIPLINAR
Tarefa 3:
O termo Segurança da Informação é utilizado para se referir à defesa de dados. É o que garante que apenas pessoas autorizadas tenham acesso a computadores, dados e redes, garantindo que todas as informações mantenham sua integridade, confidencialidade, disponibilidade e autenticidade.
Um dos é um processo que busca eliminar as chances de terceiros obterem acesso a dados é a criptografia.
a) Pesquise, defina e exemplifique, dentro da criptografia a assinatura digital.
Tarefa 4:
As funções hash são uma parte fundamental das tecnologias blockchain. Por este motivo, compreendendo as funções hash, será mais fácil compreender conceitos como a prova de violação, as impressões digitais e a proveniência. Sabendo disso, responda as questões a seguir:
• Explique com suas palavras, o funcionamento de uma função hash;
• Descreva pelo menos dois algoritmos da função hash da família MD e SHA.
• Cite pelo menos duas aplicações para a utilização das funções hash;
Tarefa 5:
O conceito de sistema distribuído é de um sistema que possui componentes localizados
em computadores interligados em rede e que se comunicam e coordenam suas ações através da troca de mensagens entre os componentes. É comum pensarmos em componentes como sendo apenas servidores e máquinas conectadas em rede, mas quando falamos de componentes podem ser componentes de hardware ( servidores ) ou de software ( aplicações e serviços ).
Os componentes interligados em rede podem estar separados por qualquer distância. No mesmo edifício de uma
Slide da disciplina de Introdução aos Padrões Web e Tecnologias para o Ambiente Digital, ministrada pelo professor Thiago Prado Campos - Aula 02 - 28/05/2011
O documento resume o Congresso Internacional em Testes e Qualidade de Software (CInTeQ) de 2011, que reuniu palestrantes nacionais e internacionais para discutir temas como contratação de testers, acessibilidade em sites governamentais e gestão de conhecimento em TI. O documento também apresenta o método TMap NEXT para gerenciamento de testes.
Semelhante a Princípios da engenharia de software (marcello thiry) (20)
Valor Monetário Esperado - VME (Série Gerência de Projetos)Marcello Thiry
O documento discute o uso do Valor Monetário Esperado (VME) para auxiliar a gerente de projetos Sandra a escolher entre dois projetos candidatos, considerando os riscos envolvidos em cada um. O VME leva em conta a probabilidade e o impacto financeiro estimado de cada risco ou oportunidade para calcular qual projeto trará maior retorno esperado à organização. No entanto, o método tem limitações como a subjetividade na quantificação dos impactos e a preocupação maior com perdas do que ganhos.
Object-oriented programming Undergraduate Course Presentations
java.io streams and files in Java
University of Vale do Itajaí
Univali
Incremental Tecnologia
English version
Apresentações para as disciplinas de Orientação a Objetos (graduação)
java.io fluxos (streams) e arquivos em Java
Universidade do Vale do Itajaí
Univali
Incremental Tecnologia
The document discusses several key principles of software engineering:
1. Modularity - Systems should be composed of independent modules that can be developed and reused independently.
2. Abstraction - Complexity is managed by abstracting away unnecessary details and focusing on essential aspects.
3. Separation of concerns - Different aspects of a problem are separated, so each can be addressed independently.
Software Engineering - Introduction and Motivation (Marcello Thiry)Marcello Thiry
Software Engineering Undergraduate Course Presentations
Introduction and Motivation
University of Vale do Itajaí
Univali
Incremental Tecnologia
English version
POO - Unidade 2 (parte 3) - Diagrama de Sequência (versão 1)Marcello Thiry
O documento discute programação orientada a objetos e diagramas de sequência. Ele explica como diagramas de sequência ilustram a interação entre objetos ao longo do tempo, mostrando a troca de mensagens e a implementação de operações. Ele também descreve elementos como mensagens síncronas e assíncronas, auto-mensagens, condições e laços.
POO - Unidade 2 (parte 2) - Classe de Associação, Agregação, Composição (ver...Marcello Thiry
Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.
POO - Unidade 1 (parte 2) - Orientação a Objetos com Java e UML (versão 4)Marcello Thiry
Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.
POO - Unidade 1 (complementar) - Introdução a Java e UML (versão draft 01)Marcello Thiry
Este documento apresenta uma introdução à programação orientada a objetos em Java. Ele discute conceitos básicos como JRE e JDK, compilação e execução de programas Java, variáveis, tipos de dados, comentários e a classe System. O documento também fornece instruções sobre como configurar o ambiente de desenvolvimento Java.
POO - Unidade 1 (parte 1) - Princípios e conceitos da Orientação a Objetos (v...Marcello Thiry
Material utilizado na disciplina de Programação Orientada a Objetos (animações e outros efeitos foram perdidos no carregamento). Ciência da Computação (3o período). Universidade do Vale do Itajaí - Campus Kobrasol.
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoMateusTavares54
Quer aprender inglês e espanhol de um jeito divertido? Aqui você encontra atividades legais para imprimir e usar. É só imprimir e começar a brincar enquanto aprende!
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, Betel, Ordenança para buscar a paz e fazer o bem, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Sistema de Bibliotecas UCS - Chronica do emperador Clarimundo, donde os reis ...Biblioteca UCS
A biblioteca abriga, em seu acervo de coleções especiais o terceiro volume da obra editada em Lisboa, em 1843. Sua exibe
detalhes dourados e vermelhos. A obra narra um romance de cavalaria, relatando a
vida e façanhas do cavaleiro Clarimundo,
que se torna Rei da Hungria e Imperador
de Constantinopla.
5. marcello.thiry@gmail.com
Princípios formam a base
para métodos e técnicas
Um meio sistemático de fazer
alguma coisa
https://upload.wikimedia.org/wikipedia/c
ommons/thumb/8/8f/PSM_V10_D029_A
ncient_fire_making_methods.jpg/800px-
PSM_V10_D029_Ancient_fire_making_
methods.jpg
(Ghezzi, Jazayeri & Mandrioli, 2003)
6. marcello.thiry@gmail.com
métodos e técnicas*
* Neste curso, estes dois termos
serão usados sem distinção
semântica
Como planejar...
Como testar...
Como projetar...
Como codificar...
Como elicitar requisitos
Como estimar...
...
Observação, entrevistas, workshops, questionários...
7. marcello.thiry@gmail.com
Um corpo de práticas, procedimentos e regras
Sistema de métodos e princípios usados
em uma determinada disciplina
(Ghezzi, Jazayeri & Mandrioli, 2003)
12. marcello.thiry@gmail.com
List of Unified Modeling Language tools
https://en.wikipedia.org/wiki/List_of_Unified_Modeling_Language_tools
List of diagramming tools
http://www.diagramming.org/
Data Modeling Tools
http://toolsfordatabases.com/data-modeling-tools.html
Comparison of data modeling tools
https://en.wikipedia.org/wiki/Comparison_of_data_modeling_tools
Test management tools
https://en.wikipedia.org/wiki/Test_management_tools
List of GUI testing tools
https://en.wikipedia.org/wiki/List_of_GUI_testing_tools
List of web testing tools
https://en.wikipedia.org/wiki/List_of_web_testing_tools
Comparison of project management software
https://en.wikipedia.org/wiki/Comparison_of_project_management_software
List of build automation software
Configuration, Build, Integration, ...
https://en.wikipedia.org/wiki/List_of_build_automation_software
Application lifecycle management (ALM)
https://en.wikipedia.org/wiki/Application_lifecycle_management
Experimente...
…
18. marcello.thiry@gmail.com
Leonardo da Vinci
(1452-1519)
“…Leonardo da Vinci employed a
variety of techniques ...”
“One of his most well-known paintings,
the Mona Lisa, displays some of the
techniques used by da Vinci in its
grandeur.”
http://www.davincilife.com
19. marcello.thiry@gmail.com
Engenharia de software deve ser
praticada sistematicamente
Rigor é um complemento necessário para
a criatividade que aumenta a confiança
nos resultados do desenvolvimento
Precisão, exatidão
20. marcello.thiry@gmail.com
Rigor
permite repetitividade e faz com as
equipes evitem problemas ocorridos
em projetos anteriores
Qual nível de disciplina conjunto de
regras nós precisamos para…
… produzir produtos com maior confiabilidade e
qualidade, sem deixar de controlar custos e
atender expectativas?
21. marcello.thiry@gmail.com
Logo, rigor varia em grau!
Nós precisamos usar a quantidade apropriada
http://mcx.sourceforge.net/upload/matlab_mmclab.pnghttp://www.mathworks.com/products/matlab/
http://4.bp.blogspot.com/-
IyHsfT1sB1A/UhTQdRV8opI/AAAAAAAABiI/H2R3X1OmAUg/s1600/V
NLIVES.NE-Simple-calculator-01.png
22. marcello.thiry@gmail.com
Formalidade é rigor no mais alto grau
Permite automação ferramentas
Uma prática formal pode ser verificada por
leis matemáticas
Métodos formais redes de petri, z, …
O código fonte é escrito numa linguagem
formal
25. marcello.thiry@gmail.com
https://en.wikipedia.org/wiki/
Edsger_W._Dijkstra
“The term separation of concerns
was probably coined by Dijkstra in
his 1974 paper On the role of
scientific thought”
Edsger Wybe Dijkstra
(1930-2002)
A pioneer in the fields of computer
science and computational physics.
Among many contributions, he coined
the phrase "structured programming"
and discovered the algorithm for the
shortest path in a graph, which now
bears his name.
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html
Paper "On the role of scientific thought" transcribed by Richard Walker:
https://en.wikipedia.org/wiki/Separation_of_concerns
26. marcello.thiry@gmail.com
O único meio de dominar a complexidade
de um projeto é separar os diferentes
interesses
Tempo
Qualidades
Visões
Partes
Habilidades
http://www.crochetville.com/community/uploads/monthly_06_2013/post-48806-0-42116700-1370920781.jpg
29. Um sistema complexo pode ser dividido em
unidades ou partes menores e mais simples
MÓDULOS
http://www.brickshop.co.uk/bricks-16-c.asp http://www.lego.com/ http://constructionweekonline.com//pictures/LEGO_Sungnyemun.jpg
36. marcello.thiry@gmail.com
https://en.wikipedia.org/wiki/
Niklaus_Wirth
In 1971, Niklaus Wirth, wrote the
influential paper Program Development
by Stepwise Refinement. Today, we refer
to this approach as top-down design (or
top-down decomposition).
Niklaus Emil Wirth
(1934-)
A Swiss computer scientist, best known for
designing several programming languages (Algol
W, Pascal, Modula, Modula-2, Oberon, Oberon-
2, Oberon-7) and for pioneering several classic
topics in software engineering. In 1984 he won
the Turing Award for developing a sequence of
innovative computer languages. He designed
the simple programming language PL/0 to
illustrate compiler design. It has formed the
basis for many university compiler design
classes.
http://oberoncore.ru/_media/library/wirth_program_development_by_stepwise_refinement2.pdf
“Program Development by Stepwise Refinement” (1971)
37. marcello.thiry@gmail.com
Considerações TOP-DOWN
+ -Disciplina lógica, que
organiza bem o pensamento
Permite equipes maiores
serem divididas entre os
subsistemas
Funciona muito bem para
pequenos projetos
Focado em requisitos
funcionais
Pensar um sistema como
uma única função topo
Decisões prematuras, menos
preparada para mudanças
Reuso é mais difícil
Posterga codificação e
testes
Aumenta chance de
dependências indesejáveis
41. marcello.thiry@gmail.com
BOTTOM-UP Considerations
+ -
Permite antecipar
codificação e testes
Potencializa reuso, mais
fácil para incorporar e
testar módulos pré-
existentes
Mais preparado para
mudança
Sem alguma antecipação, pode
ser difícil ligar módulos
Foco não está em requisitos
funcionais resultados podem
não atender alguma
necessidade
Difícil desenvolver um
sistema completo bottom-up
Adequado para equipes
menores
43. marcello.thiry@gmail.com
TOP-DOWN X BOTTOM-UP
Ambas permitem entender as relações entre
visões de alto e baixo nível abstração de um
sistema
Na prática, o design de sistemas maiores nunca é realmente top-down
Alguns ramos são projetados antes de outros
Projetistas reusam experiência e módulos
Projeto híbrido
Sua combinação potencializa entendimento, proteção da
informação e reuso
(Sommerville, 1995)
45. marcello.thiry@gmail.com
https://en.wikipedia.org/wiki/
David_Parnas
The concept of information hiding was
first described by Parnas in his paper On
the Criteria to be Used in Decomposing
Software into Modules (1972)
David Lorge Parnas
(1941-)
Canadian early pioneer of software engineering,
who was one of the first to recognize the
importance of software structure. He developed
the concept of information hiding in modular
programming, which is an important element
of object-oriented programming today. He is
also noted for his advocacy of precise
documentation.
https://www.cs.umd.edu/class/spring2003/cmsc838p/Design/criteria.pdf
“On the Criteria to be Used in Decomposing Software into Modules” (1972)
46. marcello.thiry@gmail.com
Conta
getNumero : int
depositar float
sacar float
getSaldo : float
Encapsulamento + Ocultação de informação
IMPLEMENTAÇÃOINTERFACE
http://thumbs.dreamstime.com/t/manikin-keep-distance-
orange-cartoon-character-red-text-30647683.jpg
Módulos cliente dependem somente da interface
Continuidade: pequenas mudanças tem efeitos localizados
Aumenta reusabilidade e capacidade de substituição
Proteção: isolamento dos defeitos
(Meyer, 1988-1997)
Information Hiding
47. marcello.thiry@gmail.com
Todos os elementos de um módulo
devem estar altamente relacionados
Coesão: medida interna
OBJETIVO: ALTA COESÃO
Todos os elementos
compartilham o mesmo objetivo
Entendimento de um módulo de
modo isolado
Conta
getNumero : int
depositar float
sacar float
getSaldo : float
48. Princípio da responsabilidade única
Martin*, 1995
*Robert Martin é conhecido como Uncle Bob
http://wordlesstech.com/wp-content/uploads/2010/12/swiss-army-knife-giant-elite1.jpg
https://lostechies.com/gabrielschenker/2009/01/21/real-
swiss-don-t-need-srp-do-they/
By Gabriel Schenker
49. Motivo para mudar
PARTE ÚNICA de toda a funcionalidade
Encapsulamento coesão
Antecipar como a classe irá evoluir
Uma classe deveria ter um único
motivo para mudar
RESPONSABILIDADE
54. marcello.thiry@gmail.com
Cada módulo comunica-se com a menor
quantidade possível de outros módulos
Acoplamento: medida externa
Dependência entre módulos
OBJETIVO: BAIXO ACOPLAMENTO
Reduzindo o acoplamento
+ Entendimento
Meyer, 1988-1997
+ Testabilidade
+ Modificabilidade
+ Reusabilidade
65. marcello.thiry@gmail.com
Módulo como um pacote...
Oferece um espaço único de nome
namespace
Encapsula classes, interfaces e recursos
Regras de acesso: visibilidade package
66. marcello.thiry@gmail.com
Módulo como uma biblioteca...
Contém um ou mais pacotes
Pedaço de código sem estado interno e um
API pública
Em Java, os limites de um JAR não ficam
claros depois de sua liberação no class path
67. marcello.thiry@gmail.com
Módulo como uma classe...
Podem ser instanciadas várias vezes
Podem implementar várias interfaces
Classes e responsabilidade única
Granularidade?
70. marcello.thiry@gmail.com
Mas tenha cuidado…
Você deve
desconsiderar apenas
aqueles detalhes que
podem ser realmente
ignorados
O que
fazer
aqui???
http://www.convio.com/common-ground/assets/crazy_sm.jpg
71. marcello.thiry@gmail.com
Abstração
Caso especial de separação de interesses
Técnica para dominar a complexidade
Aspectos importantes x Detalhes menos importantes
A seleção de quais aspectos são importantes e quais
podem ser ignorados depende do observador e do
problema observado
Modelagem, diagramação, prototipação,
equações, …
80. marcello.thiry@gmail.com
Como apoiar a manutenibilidade?
Ferramentas de gerência de configuração
Controle de versão
Gerência de mudanças
Integração
Repositórios
Componentes reutilizáveis
Documentação
83. marcello.thiry@gmail.com
Se você pensa que já encontrou uma
solução, pense novamente!
Mas com uma mente
mais aberta!
Enquanto estiver resolvendo um problema...
84. marcello.thiry@gmail.com
Tente verificar se existe uma instância de um
PROBLEMA MAIS GENÉRICO
Algumas vezes, um problema genérico é mais fácil
de resolver do que um caso especial
Talvez, a solução possa ser aplicada em
outros casos
Você precisa considerar o
custo/benefício entre
generalidade, desempenho e custo
Mas...
Enquanto estiver resolvendo um problema...
85. *Keynote address: data abstraction and hierarchy, OOPSLA '87
http://dl.acm.org/citation.cfm?id=62141
Se um objeto X do tipo T tem um método P
que se comporta de uma forma
O objeto Y do tipo S, onde S é um subtipo
de T, deveria ter o mesmo método P se
comportando da mesma forma
Princípio da substituição de Liskov
Liskov, 1987
86. Princípio da substituição de Liskov
Liskov, 1987
*Keynote address: data abstraction and hierarchy, OOPSLA '87
http://dl.acm.org/citation.cfm?id=62141
Tudo está na semântica!
Depender mais das interfaces do
que de tipos de classe
89. marcello.thiry@gmail.com
Entregar um sistema em partes para obter feedback contínuo dos usuários e
adicionar novas features de modo incremental
Entregar um protótipo inicial e então adicionar novas features de modo
incremental para transformar o protótipo em produto
O processo avança em passos sucessivos incrementos
FeedbackEntrega FeedbackEntrega Entrega
Exemplos processo
Desenvolvimento
usuário
Inc #1 Inc #2 Inc #N
usuário usuário usuário
Desenvolvimento Desenvolvimento
90. marcello.thiry@gmail.com
References.
(Ghezzi, Jazayeri & Mandrioli, 2003). Fundamentals of Software Engineering. 2nd ed. Pearson Education.
(ISO/IEC 25010, 2011). Systems and software engineering — Systems and software Quality Requirements
and Evaluation (SQuaRE) — System and software quality models.
(Martin, 1995). https://groups.google.com/forum/?hl=en#!topic/comp.object/WICPDcXAMG8.
(Meyer, 1997). Object-Oriented Software Construction. 2nd ed. Prentice Hall.
(Sommerville, 2015). Software Engineering. 10th ed. Pearson.