Engenharia de Software e Sistemas - IF682
2011.1






Professor: Márcio Lopes Cornélio
Email: Email


Engenharia de Software vai além do desenvolvimento de software. Há processos envolvidos que levam à obtenção deum produto de software, passando pela definição do projeto, seu planejamento, desenvolvimento e manutenção. Portanto, não se trata apenas de programação, uma atividade que pode ser desenvolvida de forma independente de outras pessoas, mas de atividades que requerem trabalho em equipe e capacidade de comunicação. Neste curso, vamos estudar princípios da Engenharia de Software, como planejar, descobrir requisitos e apresentar uma solução que será construída de forma iterativa.

Horários

Aulas

Terça: 15h-17h (Sala D002)
Quinta: 13h-15h (Sala D002)

Monitoria

Terças: 17h-18h (Lab G1)

Nas aulas de monitoria serão apresentadas ferramentas úteis ao desenvolvimento dos projetos. Além disso, haverá discussão sobre os projetos entre as equipes e os monitores que as acompanham. Os horários de atendimento com os monitores individualmente estão abaixo. É necessário que se combine antecipadamente que o atendimento será necessário, desta forma otimizamos o tempo dos monitores.

Atendimento

Sexta: 9h - 10h30min (Sala C104)
 
Para facilitar a comunicação via email que não acontecer pela lista descrita abaixo, utilizem [if682] como parte do assunto do email. 

Lista

Para facilitar a comunicação no âmbito da disciplina, todos devem se inscrever na lista if682-l. Ela pode ser encontrada na página de grupos do Google para o CIn.

Objetivos

O objetivo principal deste curso é estudar, analisar, discutir, e aplicar conceitos de Engenharia de Software. Do ponto de vista prático, os conceitos estudados serão aplicados no desenvolvimento de um projeto de software.

A ementa oficial da disciplina é a seguinte:

Plano

AulaDataAssuntoProjetoPrática (monitoria)
101/03Apresentação do curso. Introdução à Engenharia de Software.
203/03Software: natureza e qualidades. Princípios da Engenharia de Software.
08/03Feriado: Carnaval
310/03Processos de desenvolvimento de software
415/03Apresentação do processo a ser usado no projeto. (OpenUP. http://epf.eclipse.org/wikis/openup/)
517/03Planejamento de projeto
Entrega: definição de equipes e temas dos projetos
622/03Gerenciamento de Riscos. Requisitos de software.
724/03Processo de Engenharia de Requisitos Ferramenta de teste de unidade
829/03Visão geral da Linguagem de Modelagem Unificada
Casos de uso
931/03Arquitetura de softwareEntrega 1: definição dos projetos. O que vai ser entregue? Veja aqui.
1005/04Projeto de arquitetura (estilos arquiteturais)Criação de casos de teste
1107/04Projeto de arquitetura (estilos arquiteturais)
1212/04Documentação de arquiteturaFerramenta de controle de versão
1314/04Projeto detalhado: princípios
Texto complementar: Design Principles and Design Patterns

1419/04Projeto detalhado: padrões
Texto complementar: Design Patterns
Entrega prévia. Veja aqui.

21/04Feriado: TiradentesEntrega 2: primeira parte do projeto.  O que vai ser entregue? Veja aqui.
1526/04Especificação Formal
1628/04Especificação Formal (Alloy)
1703/05Especificação Formal (Alloy)


1805/05Primeiro Exercício Escolar
1910/05Verificação e validação
Entrega 3: segunda parte do projeto. Veja aqui o que será entregue.
2012/05Teste de software.  Teste de sistema e componentes.
2117/05Projeto de casos de teste.
2219/05Gerenciamento de configuração
(slides complementares)

2324/05Apresentação dos projetos
Apresentação do resultado da terceira iteração.
Lab G4
2426/05Resolução/discussão (1EE)
Entrega 4: terceira parte do projeto. Veja aqui o que será entregue.
2531/05Reuso de Software
2602/06Evolução e refatoração de software
2707/06Desenvolvimento de sistemas críticos
2809/06Gerenciamento de qualidade
2914/06Segundo Exercício EscolarEntrega 5: quarta parte do projeto
Data da entrega: 15/06
Conteúdo: mesmo que das entregas anteriores, mas sem plano de iteração.
3016/06Apresentação de projetos
3121/06Apresentação de projetos
28/06Segunda Chamada
05/07Exercício Escolar Final


Projeto

O projeto será desenvolvindo por meio de equipes (máximo de 6 integrantes) e envolve a construção, passando por todas as estapas de desenvolvimento, de um sistema de software não-trivial. Não serão aceitos sistemas com as mesmas ênfases de outros já desenvolvidos em semestres anteriores, ou seja, evitem sistemas de locadoras, academias e outros similares. Sistemas multidisciplinares, potencialmente útil para outra(s) disciplina(s) que estejam sendo cursadas, são bem-vindos ou de acordo com áreas de interesses dos membros das equipes.

Dentre os possíveis projetos estão aqueles descritos no concurso SCORE (Student Contest on Software Engineering). Vejam tanto os projetos para 2011 quanto para a edição  anterior (2009). Além disso,  projeto também podem  utilizar  API's como as  do Mendeley, Google Maps, Flickr, Dropbox, dentre outras para o desenvolvimento de sistemas (respeitando as licenças definidas).

Veja as equipes e seus projetos aqui.

Avaliação

A avaliação neste curso se dará da seguinte forma: os aspectos teóricos serão avaliados por meio de dois exercícios escolares; a prática será avaliada por meio do desenvolvimento de um projeto de software.

Quanto aos exercícios escolares, caso um estudante não realize um deles, ele(a) pode, desde que com justificativa, realizar uma prova de segunda chamada que substitui a prova a que o(a) estudante faltou. A não realização dos dois exercícios implica em reprovação.

A média da disciplina será calculada da seguinte forma:

 Média = ( 3 * NotaEE1 + 3*NotaEE2 + 4*NotaProjeto)/10,

 onde
NotaProjeto = (NotaEntrega1 + NotaEntrega2 + NotaEntrega3 + NotaEntrega4 + NotaEntrega5) / 5 ,

onde NotaEntregaX (X = 1 .. 5) corresponde à nota referente à entrega de partes do projeto, sendo cinco ao todo.


As notas podem ser vistas aqui.

Datas das provas

Referências

Livro-texto

 Ian Sommerville. Engenharia de Software - 8a  Edição.
 Pearson/Addison-Wesley, 2007.


Textos Complementares

Links

Além destas referências, ao longo do curso novos textos serão indicados.


Última atualização: 13/06/2011