Disciplinas - Eng. Software | INSTITUTO DE COMPUTAÇÃO
Nuvens e Virtualização de Redes
Mineração Para Dados Complexos
Fundamentos de Programação e Desenvolvimento Web
Tecnologia Semântica para Computação Cognitiva
Disciplinas - Eng. Software
Cada disciplina ficará sob a responsabilidade de um ou mais professores do corpo docente do Curso, mas ela poderá ser ministrado por qualquer outro professor, mediante aprovação interna.
Ao professor da disciplina compete ministrar aulas, sanar dúvidas e aplicar avaliações de desempenho.
INF-0318 - Análise Orientada a Objetos e Projeto Arquitetural
INF-0319 - Projeto e Implementação Orientados a Objetos
INF-0320 - Interfaces Homem Computador
INF-0321 - Verificação e Validação de Software
INF-0323 - Linguagens e Ambientes para Programação de Software
INF-0325 - Modelagem e Projeto de Banco de Dados
INF-0326 - Qualidade de Software
INF-0329 - Prática em Engenharia de Software
INF-0330 - Requisitos de Software e Modelos de Especificação
INF-0331 - Componentização e Reuso de Software: Conceitos e Práticas
INF-0332 - Arquitetura Orientada a Serviços - SOA & WebServices: Conceitos e Práticas
INF-0333 - Gerenciamento de Projetos de Software: Aspectos Econômicos e Planejamento
INF-0334 - Tópicos em Engenharia de Software - I
Carga Horária: 31 horas, 7 aulas presenciais
Professora: Cecília Mary Fischer Rubira e Leonardo Montecchi
Pré-Requisito Desejável: Conhecimento de conceitos básicos de programação orientada a objetos
Conceitos fundamentais da análise orientada a objetos para a estruturação e modelagem de sistemas através da construção de diagramas de classes. Diagramas dinâmicos da UML, como por exemplo, diagramas de sequência e de colaboração. Modelagem estática e modelagem dinâmica. Identificação de objetos e sua classificação em classes, especificação de atributos e operações, identificação dos relacionamentos de generalização/especialização, agregação e associação entre as classes. Noções de tipos abstratos de dados, encapsulamento, polimorfismo, herança simples e múltipla, classes abstratas, interfaces, pacotes, metaclasses, delegação, e padrões de projeto. Projeto arquitetural. Conceitos básicos de arquitetura de software, definição de componentes, conectores e configurações arquiteturais, atributos de qualidade associadas à arquitetura de software e como ela deve ser usada de desenvolvimento de sistemas centrados na arquitetura.
Ao final da disciplina o aluno deve ter aprendido os conceitos fundamentais de orientação a objetos e deve ser capaz de, partindo da especificação de um problema, criar um diagrama de classes que represente uma solução para o problema. Também o aluno deve ser capaz de definir a arquitetura de software do sistema alvo, de acordo com os requisitos de qualidade priorizados durante o projeto arquitetural.
Rumbaugh, J. et al., Object-Oriented Modeling and Design, Prentice Hall, 1991.
Booch, G., Object-Oriented Design with Applications, Benjamin-Cummings, 1991.
Meyer, B., Object-Oriented software construction, Prentice-Hall, 1988.
Stroustrup, B., The C + + Programming Language, Second Edition, Addison-Wesley, 1992.
Graham, N., Learning C + +, McGraw-Hill, 1991.
Daconta, M.C., Java for C/C + + Programmers, John Wiley&Sons, 1996.
Arnold, K. & Gosling, J., Programando em Java, Makron Books, 1997.
Carga Horária: 31 horas, 6 aulas presenciais e 1 aula a distância
Professor: Luiz Eduardo Buzato
Pré-Requisito Desejável: INF-0318 e INF-0323
Introdução: projeto orientado a objetos. Projeto: de sistema. Organização de um sistema em subsistemas, estruturação. Identificação de concorrência inerente ao problema. Identificação de problemas de redes, banco de dados e interface com o usuário. Projeto de objetos. Definição completa das classes. Projeto dos algoritmos para implementar as operações. Particionamento em classes e relacionamentos em módulos. Iteração, verificação e refinamento do modelo. Ambiente de implementação. Escolha do ambiente alvo para a implementação. Linguagens de programação orientadas a objetos. Ambientes de programação orientados a objetos. Estudo de casos.
Ao final da disciplina o aluno deve ser capaz de traduzir uma especificação de um problema para um sistema orientado a objetos e também deve ter adquirido uma visão completa do ciclo de desenvolvimento de software orientado a objetos: análise, projeto e implementação. Esta visão inclui um estudo comparativo das principais linguagens orientadas a objetos existentes atualmente.
Stroustrup, B., The C + + Programming Language, Second Edition, Addison- Wesley, 1992. Graham, N., Learning C + +, McGraw-Hill, 1991.
Daconta, M.C. Java for C/C + + Programmers, John Wily & Sons, 1996.
Arnold, K. & Gosling, J. Programando em Java, Makron Books, 1997.
Carga Horária: 27 horas, 6 aulas presenciais
Professor: Julio Cesar dos Reis
Pré-Requisito Desejável: INF-0330
Meta a ser alcançada na construção de uma interface de usuário: design de um sistema computacional que faça sentido aos seus usuários; Conceitos Básicos em IHC: Interface, Interação, Affordance; Qualidade em IHC: Usabilidade, Acessibilidade, Comunicabilidade; Fatores humanos; Princípios do Design Centrado no Usuário; Princípios do Design Universal; A importância de um processo para a construção de interfaces de usuário; IHC e Engenharia de Requisitos; Artefatos e métodos para apoiar o design de sistemas interativos. Prototipação: em papel, por meio de ferramentas; Storyboard: uso de ferramentas; análise de tarefas; Avaliação em IHC: teoria e prática; Redesign de interfaces.
Desenvolver uma noção dos conceitos básicos e das principais práticas em Interação Humano-Computador (IHC) e Design da Interação. Entender a qualidade da interface de usuário como fator de sucesso de um sistema interativo. Conscientizar-se da importância da clarificação de problema (análise de usuário, tarefas, contexto organizacional) para projetos centrados no usuário. Conhecer um processo de projeto de interface de usuário e suas técnicas subjacentes. Ser capaz de construir e avaliar um protótipo tanto em papel quanto por meio de uma ferramenta computacional. Relacionar as atividades de design em IHC com atividades de um modelo iterativo e incremental de desenvolvimento de software. Desenvolver o raciocínio crítico para o projeto de sistemas de qualidade que façam sentido aos seus usuários e demais stakeholders.
Baranauskas, M.C.C., Martins, M.C., Valente, J.A. (orgs). Codesign de Redes Digitais: Tecnologia e Educação a Serviço da Inclusão Social. Penso Editora, 2013.
Barbosa, Simone, and Bruno Silva. Interação Humano-Computador. Elsevier Brasil, 2010.
Liu, K. Semiotics in Information Systems Engineering. Cambridge University Press, 2000.
Preece, Jenny, Yvonne Rogers, and Helen Sharp. Design de interação. Bookman, 2005.
Rocha, Heloísa Vieira da, and Maria Cecília Calani Baranauskas. Design e avaliação de interfaces humano-computador. Unicamp, 2003.
Soegaard, Mads and Dam, Rikke Friis (eds.). "The Encyclopedia of Human-Computer Interaction, 2nd Ed.". Aarhus, Denmark: The Interaction Design Foundation. 2014. Available online at http://www.interaction-design.org/encyclopedia/interaction_design.html
Professores: Eliane Martins e Bruno Teixeira de Abreu
Pré-Requisito Desejável: INF-0318, INF-0319 e INF-0323
Introdução: definição, importância da verificação e validação ao longo do ciclo de vida; classificação das técnicas. Revisões técnicas: passeio (walkthrough); inspeção do produto. Testes: fundamentos; os testes e o ciclo de vida. Técnicas de teste: caixa branca e caixa preta. Testes de unidade, de integração e de sistemas. Testes OO. Documentação de testes. Automação de testes. Metodologias de teste.
Ao final da disciplina espera-se que o aluno tenha adquirido consciência sobre a importância da Verificação e Validação para a qualidade do software que é produzido. Em especial, espera-se criar a conscientização de que testes são essenciais, mas não são a única forma de se garantir a qualidade de um sistema. Com relação aos testes, espera-se que o aluno tenha compreendido a importância dos mesmos, seu impacto nos custos de desenvolvimento do software e também que se trata de uma atividade a ser levada em conta desde cedo no desenvolvimento do software e que, como o desenvolvimento, o processo de testes também deve ser dividido em fases e deve ser documentado.
Beizer, B., Sottware Testing Techniques, International Thomson Computer Press. 2th Edition, 1990.
Beizer, Boris. Black Box Testing. John Wiley, 1995.
Myers, G. M. The Art of Software Testing. Wiley, 1979.
Siegel, Shel. Object Orientd Software Testing: a Hierarchical Approach. John Wiley, 1996.
Andrioli, S.J. Software Validation, Verification, Testing and Documentation, Petrocelli Books. 1986.
Hetzel, W. Teste de Software, Campus, 1987.
Professor: Sandro Rigo
Pré-Requisito Desejável: Conhecimento básico em programação
Esta disciplina introduz conceitos básicos de programação orientada a objetos, como encapsulamento, tipos abstratos de dados, herança, classes abstratas, agregação, acoplamento dinâmico, polimorfismo e noções de interface, pacotes e tratamento de exceções. Para exemplificar os conceitos, a disciplina toma como base uma linguagem de programação moderna (Java), e um ambiente de projeto amplamente utilizado (Eclipse).
Espera-se que ao final do curso o aluno tenha compreendido os conceitos principais de uma linguagem OO moderna, e saiba utilizá-los para programar aplicações de médio porte em um ambiente de programação realista.
G. Araújo, Programando em Java, apostila, IC-Unicamp, 2007.
C.M.F.Rubira & P.H.S.Brito, Introdução à Programação Orientada a Objetos usando Java, apostila, IC-Unicamp, 2007.
Ken Arnold & James Gosling, The Java Programming Language, 2nd, Addison-Wesley, 1997.
Bruce Eckel, Thinking in Java, 3a Edição, 2002.
Carga Horária: 24 horas, 5,5 aulas presenciais
Professores: Célio Cardoso Guimarães e Ricardo da Silva Torres
Pré-Requisito Desejável: Conhecimento básico em ciência da computação
Conceitos básicos; Modelagem de dados (MER); Projeto lógico de dados (Modelo Relacional); Conceitos de normalização de dados relacionais; A Linguagem SQL - Teoria e Prática; Projeto e implementação de aplicações em Sistemas de Informação usando bancos de dados e Banco de dados objeto-relacional e persistência de objetos.
Ao final da disciplina o aluno deverá estar familiarizado com a Tecnologia de Banco de Dados de forma que possam desenvolver modelos de sistemas baseados nesta tecnologia.
Fundamentos de banco de dados. Guimarães, Célio. UNICAMP. 2003.
Elmasri, R. and Navathe, S.B. -- Sistemas de Banco de Dados, Addison-Wesley, 4a.edição, 2005.
Korth, H.F. e Silberschatz, A. -- Sistemas de Bancos de Dados, Makron Books, 5.ªedição, 2006.
Ramakrishnan, R. -- Database management systems, McGraw-Hill, 1998.
Ullman, J.D. and Widom, J. -- A first course in database systems, Prentice-Hall, 1997.
Garcia-Molina, H. and Ullman, J.D. and Widom, J. – Database System Implementation, Prentice-Hall, 2000.
Date, C.J. – Introdução a sistemas de Banco de Dados, Campus, 8.ª edição, 2003.
Professor: André Luiz de Castro Villas Boas
Pré-Requisito Desejável: INF-0321
Conceitos de qualidade de produto e de processo. Qualidade do produto de software: ISO/IEC 9126 e ISO 2500. Sistemas da Qualidade: ISO 90003 e ISO 9001. Modelos de qualidade de software. CMMI (Capability Maturity Model Integration). PSP (Personal Software Process). SPICE - ISO 15504. Evoluções recentes.
Ao final da disciplina o aluno deverá ter refinado suas instituições a respeito de quais aspectos são importantes para a qualidade de um software, e estar familiarizado com vários modelos de qualidade do processo de desenvolvimento do software.
Modelos de Qualidade. Cortes, M. L., Chiossi, T. C., Ed da Unicamp, 2001.
Software Engineering Metrics and Models. Conte. S. D et al. 1986.
Software Quality assurance and Evaluation. Dobbins. J. H ed ASQC Quality Press. 1990.
Software Quality Assurance and Manegement. Evans. M. W and Marcianic. J. J., John Wiley and Sons. 1987.
Software Quality: theory & management. Gillies, A. C., Chap, am and Hall, 1992.
Software Quality Management and ISO 9001. Jenner, M. G., Wiley-QED, 1995.
Pré-Requisito Desejável: INF-0319, INF-0321 e INF-0323
Definição de um problema. Elaboração de uma proposta de desenvolvimento. Análise e projeto do sistema. Implementação e teste.
Ao final da disciplina o aluno terá praticado noções teóricas envolvidas na construção de módulos de software.
Engenharia de Software. Pressman, R.S., Makron Books, 1995.
Software Validation, Verification, Testing and Documentation. Andrioli, S. J., Petrocelli Books, 1986.
Modelagem e projetos Baseados em Objetos. Rumbaugh, J et al. Campus, 1994.
Sistemas de Bancos de Dados. Korth, H.F.et al., McGraw Hill, 1989.
Software Testing Techniques, Beizer, B. International Thomson Computer Press. 2th ed, 1990.
Developing Software for the User Interface, Bass, L. & Coutaz, J., Addison- Wesley, 1991.
Professores: Breno Bernard Nicolau de França e Sindo Vasquez Dias
Introdução a engenharia de software. Paradigmas de desenvolvimento. Elicitação, especificação, documentação e validação de requisitos. Modelos para especificação de sistema de software.
Ao final da disciplina o aluno deve compreender as diferentes atividades envolvidas no desenvolvimento de um software, e como o paradigma de desenvolvimento escolhido afeta estas atividades. Finalmente, o aluno deve ser capaz de levantar, avaliar e especificar os requisitos do usuário utilizando modelos.
Introdução à Engenharia de Software, Carvalho, A e Chiossi, T,. Editora da UNICAMP, 2001.
Software Engineering: A practitioner's Approach, Pressman, R. 4ª ed., McGraw-Hill,2004.
Requirements Engineering, Hull, E, Jackson, K.,Dick, J., SpringerVerlag, 2004.
Requirements Engineering: A Good Practice Guide, Sommerville, I. and Sawyer, P. John Wiley & Sons, 1997.
Issues in Requirements Elicitation. Chistel, M.G. and Kang, K.C. Software Engineering Institute, Technical Report CMU/SEI-92-Tr-12, Pittsburgh, PA.Carnegie Mellon University, Sep, 1992.
Applying Use Cases- A practical guide, Schneider, G., Winters, J., Addison-Wesley, 1998.
Professor: André Santanchè
Pré-Requisito Desejável: Conhecimento em análise e projeto orientados a objetos
Introdução a componentização, reuso e CBSE. Componentes de software: principais características, propriedades e categorias. Especificações, modelagem e arquiteturas de componentes utilizando a UML. Componentes e a Arquitetura orientada a serviços (SOA). Implementação, modelos (padrões) e frameworks de componentes. Padrão SCA. Manutenção, evolução e gerência de configuração (CM) de componentes e soluções componentizadas. Gestão estratégica de componentes.
Permitir aos alunos adquirirem uma visão ampla dos conceitos e técnicas da engenharia de software baseada em componentes, desde a identificação e arquitetura de componentes, passando-se pela sua especificação, modelagem, implementação, implantação e evolução. Os laboratórios da disciplina exercitam a modelagem de componentes, utilizando uma abordagem extremamente prática.
UML Components: A Simple Process for Specifying Component-Based Software. John Cheesman, John Daniels - Addison-Wesley Professional; 1ST edition (October 13, 2000)
Large Scale Component Based Development (Paperback). Alan W. Brown - Prentice Hall Ptr; 1ST edition (December 15, 2000)
Core J2EE Patterns: Best Practices and Design Strategies, Second Edition. Deepak Alur, Dan Malks, John Crupi - Prentice Hall Ptr; 2 edition (May 10, 2003)
Enterprise Unified Process: The Strategic Reuse Discipline. Scott Ambler, John Nalbone e Michel J. Vizdos - Prentice Hall (Fevereiro, 2005)
Measuring Software Reuse: Principles, Practices and Economic Models. Jeffrey S. Poulin - Addison-Wesley Professional; Primeira edição (Novembro, 1996)
Software Reuse: Architecture, Process and Organization for Business Success. I. Jacobson, M. Griss, P. Jonsson - Addison-Wesley Professional; Primeira edição (Maio, 1997)
Software Reuse: Architecture, Process and Organization for Business Success. I. Jacobson, M. Griss, P. Jonsson - Addison-Wesley Professional; Primeira edição (Maio, 1997).
Carga Horária: 22 horas, 5 aulas presenciais
Professor: José Cláudio Vahl Junior e Kleber Rogério Bacili
Introdução SOA: motivadores, definições, benefícios e desafios. Principais características: provider, consumer & registry. Estudo de casos nacionais e internacionais. Identificação e modelagem de serviços. Principais tecnologias de web services: XML, WSDL, SOAP e UDDI. Interoperabilidade em web services, especificações emergentes e ferramentas. Governança SOA e métricas de reuso. Infraestrutura SOA (ESB, Registries and Repositories etc.); Roadmap de adoção nas empresas e tendências de mercado.
O objetivo dessa disciplina é apresentar aos alunos a forma de construção de aplicações através da utilização de arquitetura orientada a serviços (SOA) e das principais tecnologias WebServices. Trata-se de uma abordagem que vem atraindo muita atenção do mercado pois permite a aplicação dos conceitos de componentização e reuso reduzindo custo e prazo de novos projetos de desenvolvimento. Os alunos serão capacitados nos principais conceitos, benefícios, técnicas, boas práticas, aplicações em estudo de casos e exercícios. O objetivo é que os alunos estejam capacitados a planejar a implantação do conceito SOA dentro de suas empresas e a projetar aplicações orientadas a serviços lançando mão de um amplo leque de tecnologias e produtos.
Understanding SOA with Web Services (Independent Technology Guides). Eric Newcomer, Greg Lomow - Addison-Wesley Professional (December 14, 2004)
Service-Oriented Architecture (SOA): Concepts, Technology, and Design. Thomas Erl - Prentice Hall Ptr (August 2, 2005)
Service-Oriented Architecture (SOA): A Planning and Implementation Guide for Business and Technology. Eric A. Marks and Michael Bell - Wiley (April 28, 2006)
Enterprise SOA : Service-Oriented Architecture Best Practices. Dirk Krafzig, Karl Banke, Dirk Slama - Prentice Hall Ptr (November 9, 2004)
Carga Horária: 31 horas, 7 presenciais
Professores: José Alexandre D'Abruzzo Pereira e Thelma Cecília dos Santos Chiossi
Conceitos de Gerenciamento de Projetos de Software. Métricas de processo e de produto. Modelos de previsão de custo/duração. Planejamento: estudo de viabilidade, organização de projetos, análise de risco, acompanhamento e controle de projetos.
Ao final da disciplina os alunos deverão ser capazes de: elaborar medição do produto de software utilizando Pontos de Função e Pontos de Caso de Uso, elaborar estimativas de custo do produto baseando-se nas medidas realizadas e produzir um plano de desenvolvimento do produto de software baseado nas estimativas.
Software Management, Reifer, D. J., Computer Society, 6ª ed, 2002.
Software Metrics - A Rigorous & Practical Approach. Fenton, E. N. and Pfleeger, L. S., 2ª ed., PWS Publishing Company, 1998.
Análise de Pontos de Função: Medição, Estimativas e Gerenciamento de Projetos de Software, Simões, C. V., Albert, R.,G., ed Érica, 2003.
Planejamento de Sistemas de Informação e Informática, Rezende, D. A., ed Atlas S.A, 2003.
The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary Edition. Brooks, F., Addison-Wesley, 1995.
Managing the Software Process. Humphrey. W. S., Addison-Wesley. 1990.
Software Engineering Economics. Boehm, B. W., Prentice Hall. 1981.
Carga Horária: 23 horas, 6 aulas a distância
Professor: Kleber Rogério Bacili
Temas atuais e emergentes em Engenharia de Software, envolvendo tanto tecnologias quanto metodologias. Temas atuais transversais à Engenharia de Software. Ambientes e ferramentas para Engenharia de Software.
Atualizar os alunos em um conjunto de temas recentes em Engenharia de Software.
Fornecer aos alunos uma visão crítica de como novas tecnologias e novas metodologias se relacionam e impactam a Engenharia de Software.
Permitir aos alunos terem contato com especialistas de mercado e da academia nos assuntos selecionados para a disciplina.