Engenharia de Software

Professor: Jair Cavalcanti Leite

Objetivo do Curso 
Programa do Curso 
Bibliografia 
Sites Relacionados

Atualmente a disciplina de engenharia de software na UFRN não está sendo oferecida por mim. Mas você pode ver um resumo das minhas aulas no meu blog.

Não deixe de visitar as páginas do novo curso de engenharia de software da UFRN.


Objetivos

A Engenharia de Software (ES) surgiu em meados dos anos 70 numa tentativa de contornar a crise do software e dar um tratamento de engenharia (mais sistemático e controlado) ao desenvolvimento de sistemas de software complexos. Um sistema de software complexo se caracteriza por um conjunto de componentes abstratos de software (estruturas de dados e algoritmos) encapsulados na forma de procedimentos, funções, módulos, objetos ou agentes e interconectados entre si, compondo a arquitetura do software, que deverão ser executados em sistemas computacionais.

Os fundamentos científicos para a engenharia de software envolvem o uso de modelos abstratos e precisos que permitem ao engenheiro especificar, projetar, implementar e manter sistemas de software, avaliando e garantido suas qualidades. Além disto, a engenharia de software deve oferecer mecanismos para se planejar e gerenciar o processo de desenvolvimento.

O que este curso aborda?

Aprender tudo o que é necessário para se construir software não é papel de uma única disciplina de 60 horas, mas de um elenco de matérias que poderiam compor um curso completo de graduação. Este curso apresenta métodos e técnicas para o desenvolvimento de software que abordam especificação, modelagem, arquiteturas, verificação e testes de software, bem como para o planejamento e gerenciamento do processo de desenvolvimento.A disciplina de ES se preocupa em sistematizar o desenvolvimento através de modelos, técnicas e ferramentas para o produto e para o processo.

O que este curso não aborda?

O curso não ensina em detalhes cada uma das etapas do processo de desenvolvimento. O curso não aborda, por exemplo, a análise de sistemas que é estudada em profundidade em disciplinas de análise; a codificação é estudada em disciplinas de algoritmos e linguagens de programação; o projeto de banco de dados e de interfaces de usuário são estudados nas disciplinas de mesmo nome. Espera-se que o aluno complemente estes conteúdos com o material bibliográfico auxiliar. 


Programa do Curso

  1. Introdução à Engenharia de Software
  2. Processo de Software
  3. Planejamento e Gerenciamento de Software
  4. Requisitos de Software
  5. Modelos de Software
  6. Design e Arquitetura de Software
  7. Verificação e Validação de Software
  8. Manutenção e Evolução de Software

Bibliografia

Artigos para leitura

Os artigos abaixo estão destinados aos alunos do curso. Caso você não consiga baixar um arquivo entre em contato com o professor por e-mail: jair at dimap.ufrn.br 

1. Introdução

  1. James D. Herbsleb. Beyond computer science. Proceedings of the 27th international conference on Software engineering 2005, Pages: 23 - 27.
  2. Boehm, B. "A view of 20th and 21st century software engineering", Proceeding of the 28th international conference on Software engineering 2006, Shanghai, China May 20 - 28, 2006
  3. Parnas, D. Software Engineering: An Unconsummed Marriage - Communications of the ACM, sept 1997, vol. 40, no. 9.
  4. Gisselquist, R. Engineering in Software - Communications of the ACM, oct 1998, vol. 41, no. 10.
  5. Denning, Peter. i>Computer Science and Software Engineering: Filing for divorce? Communications of the ACM, aug 1998, vol. 41, no. 8.
  6. Grimson, J. & Kugler, H. Software Needs Engineering - a position paper. ICSE, Limerick, Ireland, 2000.
  7. Wasserman, A. Towards a discipline of Software Engineering - IEEE Software, 1996.
  8. Brooks, Jr., Frederick P. No Silver Bullet - Essence and Accidents of Software Engineering, in The Mythical Man-Month.Essays on Software Engineering, Twentieth Anniversary Edition, Reading, MA: Addison-Wesley1995
  9. Finkelstein, A. Kramer, J. "Software engineering: a roadmap", in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  10. Shaw, M. Software Engineering Education: a roadmap.in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  11. Shaw, M. What Makes Good Research in Software Engineering. ETAPS, Grenoble, 2002.
  12. Parnas, D. "Successful Software Engineering Research". Software Engineering Notes vol 23 no 3. May 1998 Page 64.
  13. Michela Montesi, Patricia Lago, Software engineering article types: An analysis of the literature, Journal of Systems and Software, Volume 81, Issue 10, October 2008, Pages 1694-1714.
  14. Kai-Yuan Cai, David Card, An analysis of research topics in software engineering – 2006, Journal of Systems and Software, Volume 81, Issue 6, June 2008, Pages 1051-1058.
  15. R. L. Glass, I. Vessey, V. Ramesh, Research in software engineering: an analysis of the literature, Information and Software Technology, Volume 44, Issue 8, 1 June 2002, Pages 491-506.

2. Processo de Software

  1. Fuggetta, A. Software process: a roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002.
  2. Sommervile, I. Software Process Models, ACM Computing Surveys, Vol.28, no.1, March 1996.
  3. Fayad, M. Software Development Process: A necessary Evil. Communications of the ACM, sept 1997, vol. 40, no. 9.
  4. Lichter, H. et al. Prototyping in Industrial Software - Bridgning the Gap Between Theory and Practice - IEEE Transactions on Software Engineering, vol. 20, no 11, nov 1994.
  5. Rational Unified Process - Best Practices for Software Development Teams - Rational White Papers
  6. Boehm, B. "A Spiral Model of Software Development and Enhancement" - IEEE Computer, vol.21, #5, May 1988, pp 61-72
  7. Cusumano, M & Selby, R.How Microsoft Builds Software - Communications of the ACM, jun1997, vol. 40, no. 6
  8. Brechner, Eric. "Journey of Enlightenment: The Evolution of Development at Microsoft" - ICSE’05 May 15–21, 2005, St. Louis, Missouri, USA.
  9. Cusumano, M. ""What road ahead for Microsoft and Windows? Communications of the ACM archive, Volume 49 , Issue 7 (July 2006)
  10. Humphrey, W. Personal Software Process Technical Report SEI-CMU - TR022
  11. Humphrey, W. Team Software Process Technical Report SEI-CMU - TR023
  12. David E. Avison and Guy Fitzgerald, Where Now for Development Methodologies? Communications of the ACM January 2003/Vol. 46, No. 1
  13. Sebastián Tyrrell, The Many Dimensions of the Software Process, ACM / Crossroads / Xrds6-4 /
  14. Ramsim, R.; Paige, R. "Process-centered review of object oriented software development methodologies". ACM Computing Surveys (CSUR), Volume 40 , Issue 1, February 2008
  15. Vijayan Sugumaran, Sooyong Park, Kyo C. Kang Software product line engineering: Introduction, Communications of the ACM
  16. Site: Extreme Programming
  17. L Osterweil, Software Processes Are Software Too, Revisited: An Invited Talk on the Most Influential Paper of ICSE 9" ....

3. Requisitos de Software

  1. Requirements Engineering: a roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002.
  2. Dorfman, M. Requirements Engineering
  3. Zave, Pamela - Classification of Research Efforts in Requirements Engineering - ACM Computing Surveys, vol. 29, no 4, 1997.
  4. Jarke, M. Requirements Tracing - Communications of the ACM, Vol 41, n. 12, Dec 1998
  5. Parsons, J. & Wang, Y. Using Objects to System Analysis Communications of the ACM, Vol 40, n. 12, Dec 1997
  6. Axel van Lamsweerde, Requirements engineering in the year 00: a research perspective, Proceedings of the 22nd international conference on Software engineering, Limerick, 2000.

4. Planejamento e Gerenciamento de Software

  1. Boehm, B. & Sullivan, K, Software Economics: a roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  2. Fenton, N. & Neil, M. Software metrics: roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  3. Artigos da Software Development sobre Estimativas, Custos e Riscos. É preciso procurar no índice da revista.
    1. Estimating Software Costs
    2. Project Cost Adjustments
    3. Risk Analysis
  4. Agarwal, R. et al. Estimating Software Projects, in ACM SIGSOFT, Software Engineering Notes, v. 26 n. 4, July 2001.
  5. Ponto-de-função
    1. David Longstreet, Fundamentals of Function Point Analysis
    2. David Longstreet, Counting Function Point from Uses Cases
  6. Brooks, F. The Surgical Team, in The Mythical Man-Month.Essays on Software Engineering, Twentieth Anniversary Edition, Reading, MA: Addison-Wesley1995
  7. Exemplos de Planos de Projeto de Software:

    1. - http://www4.ncsu.edu/~efg/Shimmer/projectplan.html
    2. - http://www.rspa.com/docs/Projectplan.html
    3. - http://www.srs.gov/general/enviro/erd/gen/contract/e7504.pdf 
    4. - http://www.sss4d.com/Projects/100/plan100.pdf
    5. - http://wilson.dcc.ufmg.br/praxis12/exemplos/documentos/Merci_10_PDSw.pdf

5. Design e Arquitetura de Software

  1. Design Conceitual
    1. Denning, P. & Dargan P., A Discipline of Software Design, Position Paper; Workshop on Software Design; 7-9 August 1992
    2. Kapor, M - A Software Design Manifesto - em Bringing Design to Software - Addison Wesley, 1996.
    3. Doug Rosenberg and Kendall Scott Driving Design with Use Cases - Software Development Magazine, Dezembro 2000. (primeiro de uma série de 5 artigos)
  2. David Garlan, and Mary Shaw, An Introduction to Software Architecture, In V. Ambriola and G. Tortora (ed.), Advances in Software Engineering and Knowledge Engineering, Series on Software Engineering and Knowledge Engineering, Vol 2, World Scientific Publishing Company, Singapore, pp. 1-39, 1993.
  3. David Garlan, Software Architecture: a Roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  4. Jon Siegel. Why use the model driven architecture to design and build distributed applications? Proceedings of the 27th international conference on Software engineering 2005, Pages: 37-37.
  5. Component-based Software Engineering - Volume II, Technical Report SEI-CMU - TR
  6. Sites:
    1. Software Architecture, Software Architects, and Architecting-
    2. Software Architecture and the Architecture Tradeoff Analysis ...

6. Verificação e Validação de Software

  1. Harrold, M. J. Testing: a roadmap, in Finkelstein, A. (ed.) The Future of Software Engineering, ACM Press, 2002
  2. Testing Levels for Object-Oriented Software, ICSE, 2000.

7. Manutenção e Evolução de Software

  1. Bennet, K. Rajlich, V. Software maintenance and evolution: a roadmap 

Sites de Interesse em Engenharia de Software



Jair C Leite
Departamento de Informática e Matemática Aplicada
Universidade Federal do Rio Grande do Norte
Campus Universitário - Lagoa Nova
59072-970 - Natal - RN- Brazil
Fone: +55(84) 215-3814 ramal 322