| Home | Courseware | Apoio | Programação em Par | Projeto | Syllabus | Equipes | Avaliações | Exercícios Escolares |
Esta é a página/repositório da disciplina de Engenharia de Software, voltada ao curso de Bacharelado em Sistemas de Informação, do Centro de Informática (CIn) da Universidade Federal de Pernambuco (UFPE). Esta "versão" da disciplina foi inspirada na experiência profissional do professor Vinicius Cardoso Garcia e nas lições aprendidas com as versões anteriores da disciplina, sugestões e relatos da disciplina "CS169 - Software Engineering" da UC Berkeley.
Para quem tiver curiosidade, a história dessa cadeira é, resumidamente, contada nestes três primeiros artigos. Os demais também influenciaram na história e evolução da cadeira.
- A biblioteca do Desenvolvedor de Software dos dias de hoje
- Ensinando Engenharia de Software na Prática, Parte I
- Ensinando Engenharia de Software na Prática, Parte II
- Qual é o impacto da ES no mercado de Computação e na sociedade como um todo. Computação Brasil, Revista da Sociedade Brasileira de Computação, número 28 de Março de 2015.
- Dias-Neto, A.C., Prikladnicki, R., Barros, M..O. et al. Software engineering research in Brazil from the perspective of young researchers: a panorama of the last decade. Journal of the Brazilian Computer Society, December 2015, 21:14. doi:10.1186/s13173-015-0033-0.
- Christof Ebert, Marco Kuhrmann, Rafael Prikladnicki. Global Software Engineering: An Industry Perspective. IEEE Software, vol.33, no. 1, pp. 105-108, Jan.-Feb. 2016, doi:10.1109/MS.2016.27
- Armando Fox and David Patterson. 2012. Crossing the software education chasm. Commun. ACM 55, 5 (May 2012), 44-49. DOI: https://doi.org/10.1145/2160718.2160732
Sistemas de Informação, Centro de Informática, (UFPE)
- Professor Vinicius Cardoso Garcia ([email protected])
- Professor Colaborador Vanilson Buérgio ([email protected])
Centro de Informática, horários: segunda (18:50-20:30) e quarta (17:00-18:40), sala E123.
- Para facilitar a comunicação via e-mail no âmbito da disciplina, utilizem [if977] como parte do assunto do email.
- [OBRIGATÓRIO] Temos um canal no Slack para uma comunicação mais dinâmica: if977 no slack (para entrar, tem que usar o e-mail institucional do CIn).
Este repositório contém apenas notas de aulas superficiais. Estas notas não devem ser utilizadas como livro-texto. Um bom desempenho na disciplina depende muito do estudo mais profundo dos livros e, principalmente, da prática no computador.
Engenharia de Software não é só desenvolvimento de software. Ou seja, não é somente a atividade de programar e conhecer linguagens e ferramentas de apoio à programação. Existem uma série de processos envolvidos que colaboram na “construção” de um produto de software, desde a especificação do projeto, seu planejamento de execução, desenvolvimento, testes, manutenção e evolução. Portanto, Engenharia de Software claramente não se trata apenas de programação, uma atividade que pode ser desenvolvida de forma independente de outras pessoas, mas sim de um conjunto de atividades, tarefas e mais ainda, papéis que requerem trabalho em equipe (social) e capacidade de comunicação (socialização). Neste curso, vamos estudar princípios da Engenharia de Software, seus objetivos, atividades, papéis, recursos, como planejar um projeto, descobrir requisitos, abstrair uma proposta de construção de um produto de software e apresentar uma solução que será construída de forma iterativa, bem como a continuidade da vida útil deste produto.
O objetivo principal deste curso é estudar, analisar, discutir, e aplicar os fundamentos de Engenharia de Software. Do ponto de vista prático, os conceitos estudados serão aplicados no desenvolvimento de um projeto de um sistema de informação SaaS simples.
Os estudantes irão:
- Entender os novos desafios, oportunidades e problemas em aberto do novo cenário da indústria de software como serviço e as principais diferença sem relação ao software empacotado (SWS, shrink-wrapped software);
- Desenvolver um um projeto de um sistema de informação SaaS simples desde a concepção através de planejamento, desenvolvimento, avaliação/teste, implantação e operação, enfrentando os desafios inerentes de cada fase;
- Compreender e utilizar ferramentas e metodologias ágeis de desenvolvimento, incluindo esboço UI de baixa fidelidade (lo-fi), estórias de usuários, desenvolvimento orientado a comportamento, controle de versão para desenvolvimento baseado em times e ferramentas de gerenciamento para ambientes de computação em nuvem;
- Desenvolver habilidades técnicas e de colaboração para trabalhar em times de desenvolvimento software;
- Compreender e aplicar estruturas, padrões e técnicas fundamentais de programação, incluindo padrões de projeto para arquitetura de software, funções de ordem superior, metaprogramação, reflexão, entre outras, para melhorar a capacidade de manutenção, modularidade e reutilização de software.
Os monitores são responsáveis por aulas práticas da disciplina. Também são responsáveis por acompanhar projetos das equipes formadas. Fora do horário das aulas, deve-se agendar uma reunião com os monitores com o fim de tirar dúvidas sobre o conteúdo da disciplina, bem como para discussão do projeto.
São eles:
- Joismar Antonio Batista Braga (jabb)
- Lerisson F. Freitas (lff3)
- Lucas Serra da Cunha Assad (lsca)
- Mateus Cardozo Gomes da Silva (mcgs)
- Paulo Sergio da Silva Rodrigues (pssr)
- Ricardo Ferreira dos Santos Junior (rfsj)
- Sandrine Ventura Martins (svm2)
- Vinícius Giles Costa Paulino (vgcp)
Além dos monitores, temos também uma equipe de consultores, que estão disponíveis também para ajudar, sempre que solicitados, são eles:
- Alysson dos Santos Lima (asl)
- Antonio Augusto Correa Gondim Neto (aacgn)
- Antonio Rodrigues da Mata Neto (armn)
- André Victor Costa de Melo (avcm)
- Avyner Henrique B. da Fonseca Lucena (ahbfl)
- Denio Batista Brasileiro Bezerra (dbbb)
- Hugo Roberto de Melo Daher (hrmd)
- Ian Fireman (imlbf)
- Isabel Oliveira Jordao do Amaral (ioja)
- Joao Vitor Bizerra de Araujo (jvba)
- Johnny Mayron Santana Ferreira (jmsf2)
- Jorge Henrique Cordeiro Linhares (jhcl)
- José Durval Carneiro Campello Neto (jdccn)
- Linaldo Leite Ferreira Junior (llfj)
- Marcela Pereira de Oliveira (mpo)
- Mariana Ferreira de Melo (mfm2)
- Matheus Raz de Oliveira Leandro (mrol)
- Pedro Jose de Souza Neto (pjsn)
- Pedro Paulo Sousa Neto (ppsn)
- Rafael Felipe Pedroza Jordao (rfpj)
- Rafael Leonardo de Lima Brito (rllb)
- Ricardo Ebbers Carneiro Leao (recl)
- Victor Hugo Barbosa Arruda (vhba)
- Wellington Oliveira (wmof)
- Marco Tulio Valente. Engenharia de Software Moderna. Livro aberto que trata de princípios, conceitos e métodos modernos de Engenharia de Software, que são largamente usados por empresas que produzem software com qualidade e produtividade.
- Armando Fox and David Patterson. Engineering Software as a Service: An Agile Approach Using Cloud Computing. Strawberry Canyon LLC, 2013. First Edition by Armando Fox and David Patterson. Be sure you get the First Edition, version 1.1.0 or later, released July 2014. Earlier editions are missing various chapters, have different chapter numbering, and contain errors that have been corrected. Errata can be found (and reported) at http://beta.saasbook.info/errata.
- Fabio Kon (IME-USP) e Daniel Cordeiro (EACH-USP). Construindo Software como Serviço: Uma Abordagem Ágil Usando Computação em Nuvem. Versão traduzida da primeira Edição.
IEEE Computer Society, Guide to the Software Engineering Body of Knowledge (SWEBOK), 2004 edition. Disponível online.
- SOMMERVILLE, I. Engenharia de Software. 9ª. Ed. São Paulo: Pearson Education, 2011.
- Mary e Tom Poppendieck. Implementando o Desenvolvimento Lean de Software: Do conceito ao dinheiro. Bookman. 2010.
- Matt Wynne and Aslak Hellesoy. The Cucumber Book: Behaviour-Driven Development for Testers and Developers. Pragmatic Bookshelf, 2012
- GitHub (sistema de controle de versão distribuída, rápido e escalável).
- SEBRAE Canvas, Ferramenta gratuita online para criação do Canvas do Modelo de Negócios - SEBRAE
- CS50 IDE, a cloud-based IDE for students and teachers powered by AWS Cloud9.
- Cloud9, your development environment, in the cloud.
- Codenvy, cloud workspaces for Dev teams.
- Coder, an online IDE serving VSCode.
- What is the best alternative to AWS Cloud 9?
- Não sei inglês, e agora? | Podcast FalaDev #03
- What I learned from 6 months contributing to open source
- Software Engineering for Disruptive Innovation
- Ruby On Rails: What It Is and Why We use.
- Essential skills and tools every Javascript developer should master
- Measuring Developer Productivity
- Mapping Go-to-Market to Customers: ‘The Coverage Matrix’
- What I Learned From Startup School Lectures
- Top 12 Things That Destroy Developer Productivity