todas as propostas

Propaganda
Propostas de Dissertação em
Engenharia do Software
Rodrigo Serafim ([email protected])
João Paulo Carvalho ([email protected])
www.quidgest.com | [email protected]
Agradecimento
Departamento de Engenharia Informática
Núcleo de Parcerias Empresariais
www.quidgest.com | [email protected]
Alguns factos sobre a Quidgest
• 30% do Orçamento dedicado à I&D em Engenharia do
Software. 60 técnicos com responsabilidades de I&D
• I&D financiada pelo Sifide, pelo QREN, pelo H2020 e em
colaboração com IST/INOV ou com FCTUNL
• I&D reconhecida pelo mercado, nomeadamente pelas
grandes corporações, governos e entidades supranacionais
(Nações Unidas, Banco Mundial, IADB, BAD, etc)
• 804 diferentes sistemas em produção gerados com Genio
www.quidgest.com | [email protected]
Bill Gates vision:
“a computer on every
desk and in every
home”
www.quidgest.com | [email protected]
Our vision:
A unique
management
system*, for
every company
* Source of
competitive
advantage
www.quidgest.com | [email protected]
Model Driven
Development
=
Independência
da tecnologia
Rapid Application
Development
=
Simulação
Genio
Software
Prodution Line
=
Personalização
em massa
Code Generation
=
Automatização
Em qualquer plataforma
Automatic
MFC
Code
Generation
Add-in
T-SQL
www.quidgest.com | [email protected]
PL /
SQL
Fórmula
• 98% automático + 2% manual
Automático
+ Novos Padrões do Genio
+ Manual (em último recurso)
• Canalizar a criatividade para novos padrões.
O que é um perfil difícil de encontrar.
www.quidgest.com | [email protected]
http://www.quidgest.pt/it_Trends2020.asp
www.quidgest.com | [email protected]
 Cadeira relevante no programa do IST:
 https://fenix.tecnico.ulisboa.pt/disciplinas/TVS/2015-2016/2-semestre/programa (Teste
e Validação de Software)

 Objetivos:
 Desenvolvimento de processos e automatismos que integrem técnicas de verificação
de software em ambiente de Continuous Integration e geração de software com
Genio.

 Contexto:
 Aplicação prática da validação como processo automático de garantia da qualidade
do código produzido, por via automática (geração) ou manual. Os novos processos
automáticos de validação podem ser integrados em Genio, sendo aplicados a todos os
sistemas produzidos pela empresa.
 Resultados esperados:
1. Integração de uma solução tecnológica de validação adaptada ao ambiente de
2.
Continuous Integration e geração de software com Genio.
Escalabilidade e sustentabilidade da tecnologia escolhida, para aplicação prolongada
e generalizada nas soluções da empresa;
 Competências necessárias (ou a desenvolver): C#, Java, C++, Genio, Jenkins.
Qualidade em ambientes industriais (Juran, Deming), CMMI
 A programação de testes unitários capazes de automatizar tarefas de verificação de
aplicações traz indiscutíveis benefícios, desde a capacidade de detetar regressões de
funcionalidade, de ajudar a documentar os casos de uso do código até otimizar o
processo de qualidade de integração continua.
A referência ao termo “unitário” aqui é entendida no sentido lato, ou seja, qualquer
elemento que possa correr de forma isolada dados determinado Setup inicial, dados
parâmetros de input e cujas expectativas de output sejam determinísticas.
Pretende-se que o projeto seja desenvolvido no contexto da plataforma Genio.
O Genio é uma plataforma de desenvolvimento baseada em modelos e geração de
código. Os seus modelos determinam regras de negócio, validações, integridade de
dados entre outros comportamentos complexos. Cada declaração possível neste
modelo é considerada de padrão.
Pretende-se aplicar a abordagem de testes unitários já existente nos sistemas gerados
pelo Genio à automatização de testes de interface gráfica, já replicáveis através da
ferramenta Q-CRT.

Componentes a realizar:
•
Desenvolvimento da execução de scripts Q-CRT através da biblioteca de testes
unitários Google Test já em funcionamento
•
Desenvolvimento de um modelo genérico de comparação automática de resultados
em base de dados relacional
•
Desenvolvimento do parsing de ficheiros de log Q-CRT para Jenkins;
•
Desenvolvimento do gerador de scripts de testes de interface a partir do modelo
do Genio.
Opcional/Avançado:
 Invocação por job Jenkins de baterias de testes registadas em QAM e recolha
automática de resultados para QAM
 Interligação dos requisitos registados em Genio ao QAM para rastreamento dos erros
detetados
Competências necessárias (ou a desenvolver):
 Google Test – biblioteca de testes usada para a invocação e análise de testes unitários
 QAM – Quality Assurance Management – ferramenta de gestão de testes
 Q-CRT – Quidgest Capture, Reproduction and Tutorial tool - ferramenta de recolha e
execução de sequências de operações na interface gráfica
 Jenkins – ferramenta de integração contínua e automatização de processos (aplicada
à geração de código, compilação, instalação e execução de testes unitários)
 Transact-SQL
 http://www.quidgest.pt/ITO_sense.asp
 Identificação de Padrões para aquisição inteligente de dados, através de
• sensores (Internet of Things),
• identificadores (Internet of People),
• interfaces máquina-máquina
• Big Data.
 Monitorização e recolha de dados provenientes de sensores, com capacidade de
atuação automática e controlo remoto.
 Integração de sensores com sistemas de informação de gestão, com toda a
comunicação, de e para os sensores, a obedecer a padrões bem definidos.
 Estes padrões são análogos aos padrões Genio, já desenvolvidos pela Quidgest em
outros projetos de I&D, o que vai permitir que os sensores sejam integrados em
qualquer sistema Quidgest sem especiais necessidades de adaptação.
 Controlador único e modularidade: cada sensor terá um módulo individual, permitindo
adicionar módulos consoante as necessidades, sem alteração do controlador.
 Conectividade: 3G, wi-fi, Ethernet
 Integração de qualquer tipo de sensor analógico: temperatura, humidade,
proximidade, pH, luminosidade, índice UV, vento, deteção de gases, deteção de
caudal.
 Racionalidade económica e modularidade para possibilitar investimentos faseados, por
parte dos potenciais clientes.
 O Genio é um modelo declarativo que recorre sobretudo (98%) a atributos mas requer
pontualmente (2%) a utilização de fórmulas, validações e rotinas manuais.
 O objetivo do projeto é a criação de uma linguagem de alto nível para integração na
plataforma Genio (geração automática de software), tornando possível, a partir de
uma só codificação de fórmulas ou validações, a geração em diversas linguagens de
programação.






Criação de uma gramática para a linguagem Genio
Criação de um parser a partir dessa gramática
Criação de compilador para uma linguagem de destino
Inferência de tipos
Integração de chamadas e processamento de queries
Validação de compatibilidade entre variáveis
 Embora o objetivo de uma base de dados seja manter os dados normalizados, numa
perspetiva de performance e de simplificação das aplicações que têm de interagir com
essa base de dados, a redundância controlada de dados é fundamental.
 O Genio é uma plataforma de desenvolvimento baseada em geração de código. Parte
dos seus padrões tira partido desta redundância para manter cálculos intermédios de
regras de negócio e ajudar o consultor a geri-las automaticamente garantido ao nível
aplicacional a integridade dos dados.
 Pretende-se formalizar as vantagens e desvantagens deste tipo de modelação e criar
regras de boas práticas de quando usar e não usar.
 Pretende-se também que seja desenvolvido, durante o projeto, um sistema de gestão
de redundância modular que permita de forma síncrona ou assíncrona desencadear
mecanismos que verificam e corrigem informação incoerente.
 Um sistema empresarial é normalmente constituído por vários componentes lógicos e
físicos, ou seja, várias aplicações e múltiplos servidores. Cada um destes sistemas
consome recursos com diferentes perfis de necessidade e também produz outputs a
diferente ritmo.
 No entanto, por vezes surgem situações anómalas que vão levar ou a um aumento
dos recursos necessários ou a um diferente ritmo de produção de outputs. Podem
também emitir erros por variadas razões, desde inputs inesperados, entrada num
estado inconsistente ou até defeitos que originaram no código fonte do sistema.
 Pretende-se criar um módulo de monitorização da execução de sistemas capaz de
analisar através de regras sinais de vida relevantes (uso de CPU, inserts por segundo
na BD, log de erros, etc). Estas regras devem ser parametrizadas pelo administrador de
sistema de forma a detetar situações anómalas e devem acionar notificações ou até
ações automáticas em reação a elas.
 O projeto tem como objetivo refletir sobre os conteúdos, as metodologias, os






requisitos, os perfis de docentes e de alunos, os cenários de aprendizagem que vão
tornar competitivas as universidades que ensinarão engenharia do software durante a
década de 2020
Que interações devem ter com a indústria de software, com outros setores
económicos, com outras universidades?
Que aposta fazer no empreendedorismo e na chegada ao mercado? Qual a dimensão
previsível de projetos bem sucedidos? Que enquadramento de suporte a esta
dinâmica? Como atrair e potenciar o talento?
O que deixar de ensinar?
Como garantir a formação ao longo de toda a vida profissional, face a tecnologias que
mudam a cada 5 anos?
Como fazer face à escassez brutal de programadores? Como reconverter especialistas
de outras áreas?
Onde se encontram as universidades mais avançadas nestes domínios?
 O recente (janeiro 2016) relatório do Banco Mundial “Digital Dividends”, para além de
um muito bem documentado panorama global sobre os dividendos que se têm
obtido desta revolução digital, alerta para a possibilidade – não desejada – de captura
das vantagens das tecnologias de informação pelas elites.
 A favor dos países em desenvolvimento, a presente revolução tecnológica é mais
acessível, porque requer menores investimentos do que as anteriores vagas de
industrialização. Em particular, a criação de um emprego na indústria de criação de
software exige um milésimo do investimento requerido pela criação de um emprego
em outros setores industriais.
 Em contrapartida, é cada vez mais complexa a aprendizagem de linguagens de
programação tradicionais, a um nível de domínio suficiente para permitir dar origem a
soluções transacionáveis internacionalmente.
 Que processos podem contribuir para a transferência de tecnologias de
desenvolvimento de software a um nível mais elevado de abstração, menos
dependentes de programação manual e mais eficazes, como a modelação e geração
automática?
 A evolução para sistemas de informação dotados de capacidades cognitivas e
preditivas constituirá uma vantagem competitiva para qualquer empresa do setor de
desenvolvimento de sistemas de gestão empresarial. E terá um impacto disruptivo na
gestão dos seus potenciais utilizadores, nomeadamente nas grandes empresas e
organismos governamentais.
 Durante anos, os sistemas de gestão empresarial (nomeadamente, ERP, CRM, BPM)
limitaram-se a recolher dados a posteriori e a agregá-los, fornecendo-os aos decisores
num momento em que já não é possível alterar decisões ou reverter tendências não
desejadas.
 Deste modo, organizações de grande dimensão (BES, BPN, BANIF, Estado Português,
Estado Grego, Lehman Brothers) acumularam decisões erradas, que as inviabilizam,
causando verdadeiras catástrofes sociais, que levam décadas a serem corrigidas –
quando o são – em todos os seus múltiplos efeitos (falência, recessão, desemprego,
défices insustentáveis, programas de austeridade, perda de independência, fluxos
migratórios, fuga de cérebros, destruição de competências, etc.)
 O grande desafio científico e tecnológico resulta de nunca vir a ser possível antecipar
totalmente o futuro. A imprevisibilidade existirá sempre. Porém, pela incorporação de
novos conceitos e metodologias (tornados também acessíveis, pelo grande aumento
da capacidade de computação ao dispor dos decisores) em cada época aproximamonos mais deste objetivo.
 O projeto consiste na avaliação e exploração das possibilidades da linguagem R para
dotar os sistemas de informação desenvolvidos automaticamente em Genio de
capacidades cognitivas e preditivas
 A integração em Genio potencia os resultados obtidos, sendo exemplo do impacto
que se pede a um engenheiro de software, que não deve ser confundido com um
beta-tester ou um developer.
 As vulnerabilidades, os casos de crimes que aproveitam essas vulnerabilidades e o
impacto brutal em qualquer empresa (hoje em dia, as empresas são, essencialmente,
organizações digitais) constituem a motivação científica/tecnológica para o projeto
proposto.
 Mas, na verdade, o grande choque da tomada de consciência desta tendência vai
fazer-se por via da regulação, pelo menos no espaço da União Europeia.
 Mais conscientes do elevado perigo da ausência de segurança digital do que a opinião
pública e do que os próprios potenciais lesados, o Parlamento Europeu, o Conselho e
a Comissão Europeia têm vindo a alertar, a criar diretivas e a impor prazos muito
curtos de concretização de medidas neste domínio.
 O objetivo do projeto é criar roadmaps e soluções aplicáveis às grandes empresas, em
menos de 2 anos, para cumprir com esta regulamentação





Continuous requirements – a deteção contínua de necessidades
Continuous development – o desenvolvimento imediato
Continuous integration – a integração contínua
Continuous delivery – a entrega contínua
Continuous deployment – a utilização contínua
Compromisso da Quidgest em
• Apoiar as teses, através de conselhos,
referências, sugestões e casos práticos,
por parte de um orientador experiente
• Delimitar os temas, de modo a que estes sejam
– exequíveis e realizáveis no tempo previsto
– inovadores e motivantes
– relevantes para a Engenharia do Software
•
•
•
•
•
•
Integrar os mestrandos nos projetos de I&D em curso na Quidgest
Proporcionar Bolsas de I&D
Completar a formação nas matérias que o requeiram
Colaborar com o orientador por parte do IST
Dar espaço à inovação
Criar oportunidades para a continuação da carreira profissional do
mestrando, em projetos da Quidgest, com integração nos seus quadros
www.quidgest.com | [email protected]
Download