200 likes | 395 Views
Symbian OS. CMP 167 – Prof. Cláudio R. Geyer Elton N. Mathias Marcelo V. Neves Ricardo M. Redin. Roteiro. Introdução Arquitetura Funcionalidades APIs Segurança Interface Gráfica Desenvolvimento para Symbian IDEs. Introdução. Histórico: Deriva do EPOC (Electronic Piece Of Cheese)
E N D
Symbian OS CMP 167 – Prof. Cláudio R. Geyer Elton N. Mathias Marcelo V. Neves Ricardo M. Redin
Roteiro • Introdução • Arquitetura • Funcionalidades • APIs • Segurança • Interface Gráfica • Desenvolvimento para Symbian • IDEs
Introdução • Histórico: • Deriva do EPOC (Electronic Piece Of Cheese) • O EPOC foi desenvolvido pela Psion Software e o primeiro dispositivo com ele foi lançado em 1989 • Em 1998 a Psion Software tornou-se Symbian (joint venture entre a Psion,Ericsson, Nokia, Motorola, etc) • Em 2004 o EPOC ainda era embarcado em alguns dispositivos • É licenciado por: Nokia, Siemens, Lenovo, Samsung, Motorola, Sony Ericsson, BenQ, Sharp, etc... • O primeiro worm para celulares (Cabir/Symbian) foi desenvolvido em 2004
Introdução • Características (v. 9.2): • Arquitetura de Microkernel de 32 bits • Preemptivo Multitarefa e Multithread • Proteção de memória, modular • Ênfase em conservação de memória, bateria e confiabilidade • Suporte a aplicações de Tempo-Real • Baseado na arquitetura de hardware SoC (System on-Chip) • Desenvolvido em C++ e completamente OO • Sistema baseado em eventos com o uso de Objetos Ativos • Modelo de segurança baseado em capabilities • Grande suporte à protocolos de comunicação e linguagens de programação (OPL, Python, Visual Basic, Simkin, Perl e Java)
, • Em 2 níveis: • Interna (parte do symbian) • Symbian Security Framework • Sistema Operacional protegido • Externos • Nokia patches • Discretix, ...
Segurança Interna • Criptografia: • Certificate framework • Protocolos: HTTPS, WTLS, … • Sistema de assinaturas: • Sistema de chaves publicas a aplicações • Sistema de chaves para acesso à ROM • Controle de Acesso • SIM PIN, device security code • ARM TrustZone
Segurança Interna • Separação • Kernel vs. Espaço do usuário (capabilities) • Processos • Secured ‘wallet’ storage
UIQ • SDK para desenvolvimento de interfaces • APIs em C++ e Java • Suporte a múltiplos dispositivos • Configuração “Over The Air” • Código Aberto (grande comunidade de desenvolvedores) • Características: • Orientado a eventos • Modelo de programação MVC • Desenvolvimento baseado em herança de classes básicas
Model Controller View Estrutura de uma Aplicação
Exemplo de uma Aplicação #include "HelloWorld.h" // Esse é o ponto de entrada do código da aplicação. // Ele cria uma instância de CApaApplication. // EXPORT_C CApaApplication* NewApplication() { return new CExampleApplication; } // Esta função é requerida por todas as DLLs do EPOC32 // Nesse exemplo, ela não faz nada. // GLDEF_C TInt E32Dll(TDllReason) { return KErrNone; }
Application Class .h CExampleApplication : public CQikApplication { private: // cria um document CApaDocument* CreateDocumentL(); // retorna o Uid da aplicação TUid AppDllUid() const; };
Application Class .cpp // Retorna o UID da aplicação TUid CExampleApplication::AppDllUid() const { return KUidViewApp; } // Cria o objeto document CApaDocument* CExampleApplication::CreateDocumentL() { // passa o objeto desta app. return CExampleDocument::NewL(*this) }
Document Class .h CExampleDocument : public CQikDocument { public: // Construtor CExampleDocument(CEikApplication& aApp); static CExampleDocument* NewL(CEikApplication& aApp); // Retorna o modelo. TQExampleAppModel& Model(); private: // Cria a user interface CEikAppUi* CreateAppUiL(); void ConstructL(); private: // CQikDocument SaveL e RestoreL } ;
User Interface Class .h CExampleAppUi : public CQikAppUi { public: // Construtor CExampleAppUi(); void ConstructL(); ~CExampleAppUi(); private: // Command handler para interagir com o usuário. void HandleCommandL(TInt aCommand); private: // Uma visão CExampleAppView* iAppView; };
View Class .h class CExampleView : public CCoeControl { public: // Construtor CExampleAppView(); ~CExampleAppView(); static CExampleAppView* NewL(const TRect& aRect); void ConstructL(const TRect& aRect); private: // Inherited from CCoeControl void Draw(const TRect& /*aRect*/) const; private: // Data internal to View. HBufC* iExampleText; };
Ferramentas de Desenvolvimentos (IDEs) • Metrowerks CodeWarrior • Linguagem C++ • Suporte aos SDKs mais recentes da Nokia • Microsoft Visual C++ • Linguagem C++ • Sem suporte real para desenvolvimento de código Symbian OS • Borland C++BuilderX Mobile Edition • Linguagem C++ • Suporte a design visual • Eclipse • Linguagem Java (J2ME) • EclipseME Plugin • Free
Conclusão • Projetado diretamente para dispositivos móveis • Muito utilizado: • Modular e Extensível • Baseado em padrões • “Aberto” • Primeiras vulnerabilidades exploradas
Referências • www.symbian.com - Site oficial da joint-venture que desenvolve o SO Symbian e fonte principal de pesquisa • Symbian OS Version 9.2, funcional description: http://www.symbian.com/technology/symbos-v92-det.html – Características e funcionalidades do SO • Wikipedia: http://en.wikipedia.org/wiki/Symbian_OS - Informações históricas e sobre a arquitetura • Wikipedia: http://en.wikipedia.org/wiki/EPOC_%28computing%29 - Informações históricas e sobre a arquitetura • Wikipedia: http://en.wikipedia.org/wiki/Symbian_(company) - Histórico da empresa • Chen and D. Kotz. A Survey of Context-Aware Mobile Computing Research. Technical Report TR (http://citeseer.csail.mit.edu/chen00survey.html) - Relatório tecnico que fala sobre computação context-aware (que tomavantagem de informações como localização do usuário, horario,proximidade de dispositivos e atividade do usuário) • www.discretix.com - Site Oficial e fonte principal de pesquisa a respeito do pacoteDiscretix que oferece APIs e especificações relacionadas à segurançapara Symbian OS (criptografia, autenticação, secure storage, DataRights Management) • UIQ: www.uiq.com - Site Oficial e fonte principal de pesquisa a respeito do suite UIQ para desenvolvimento de interfaces para Symbian OS • http://www.metrowerks.com/pdf/IntroSymbianOSforPalmDevelopers.pdf – Introdução para desenvolvedores Symbian OS/Palm