Git Product home page Git Product logo

encostaki's Introduction

| Home | Courseware | Apoio | Programação em Par | Projeto | Syllabus | Equipes | Notas | Exercícios Escolares |

IF977 - Engenharia de Software

IF977

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.

Sistemas de Informação, Centro de Informática, (UFPE)

Instrutores

Local e Horários

Centro de Informática, horários: segunda (18:50-20:30) e quarta (17:00-18:40), sala E123.

Comunicação

  • 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 Discord para uma comunicação mais dinâmica (para entrar, entre em contato com o professor).

Edições anteriores

Atenção

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.

Ementa

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.

Objetivos

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.

Metodologia

Utilizaremos uma abordagem aderente a essa jornada de educação digital. Para isso, temos uma composição metodológica inspirada em Sala de Aula Invertida, Pensamento de Design, Design de Experimentação e Ensino Baseado em Desafios. Trabalharemos com missões e para cada missão os alunos devem -- individualmente ou em grupo, isso vai se ajustando ao longo da jornada - inicialmente individual -- produzirem algo -- um texto, um sistema, uma imagem, um infográfico, um video, etc. -- que vai ser definido em função de cada missão (seus prazos são definidos a depender da missão em questão).

Temos como base os princípios:

  • Conhecimento como “obra aberta” (em vez de “mensagem fechada”);
  • Curadoria de conteúdos, sínteses e roteiros de trabalho (em vez da produção de conteúdos próprios para EAD, por exemplo);
  • Ambiências computacionais diversas (em vez de se restringir aos serviços do Ambiente de Aprendizagem);
  • Aprendizagem em rede, colaborativa (em vez de aprendizagem isolada);
  • Divergência, convergência e conversação entre todos, em interatividade (em vez de apresentação de conteúdos);
  • Atividades autorais inspiradas nas práticas da cibercultura (em vez de “estudo dirigido”);
  • Mediação online para colaboração (em vez de “tutoria reativa”); e,
  • Jornada formativa e colaborativa, baseada em competências (em vez de apenas exames presenciais).

Do ponto de vista de plataforma de apoio a jornada de educação digital, utilizamos um servidor do Discord para comunicação assíncrona e ambientes de reunião (sala de audio e video) para encontros fortuitos, os encontros síncronos (e gravados) acontecem em uma sala fixa no Google Meet, Mural para dinâmicas de trabalho síncrono e para as missões utilizados a plataforma Strateegia). Informamos que cada aula terá a duração de 60 (sessenta) minutos, configurada no Siga.

Avaliação

A avaliação neste curso se dará da seguinte forma: os aspectos teóricos serão avaliados por meio das missões com caráter de avaliação individual, mas vale ressaltar que as missões possuem uma natureza de execução prática; a consolidação dos aspectos teóricos discutidos ao longo da disciplina serão avaliados por meio de um exercício prático e em equipe que consistirá no desenvolvimento de um projeto de sistema de informação SaaS simples. Quanto aos exercícios escolares no formato de missões, as 25% piores avaliações de cada estudante serão descartadas. A não realização das missões ou no exercício em, equipe implica em reprovação. A media da disciplina sera calculada da seguinte forma:

  • Media = ( 4 * NotaEE1 + 6 * NotaProjeto) / 10, onde
    • NotaEE1 é a nota individual do estudante referente às missões;
    • NotaProjeto é a nota do projeto sera calculada com base nos seguintes aspectos:
      • avaliação do desempenho nas iterações; escopo do cenário; identificação das personas; concepção do Plano de MVP; especificação da Proposta de Solução; projeto da Arquitetura; especificação e implementação de Testes; Implantação da solução; Relato de Lições Aprendidas & Decisões de Projeto.

Monitoria

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)

Bibliografia principal (mas não limitada a)

P. Bourque and R.E. Fairley, eds., Guide to the Software Engineering Body of Knowledge, Version 3.0, IEEE Computer Society, 2014; www.swebok.org. Disponível online.

Bibliografia complementar

  • 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

Ferramentas

Links, posts e artigos diversos

encostaki's People

Contributors

dependabot[bot] avatar eacj avatar gbl3 avatar holivra avatar pvls avatar rkdsa avatar vinicius3w avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

eacj joismar pvls

encostaki's Issues

Conectar API's

  1. Aprofundar os estudos em API's
  2. Verificar conexão com API
  3. Integrar API's com nosso projeto

Arrumar o login com o facebook

  • De alguma forma, está com um bug que algumas contas do facebook não conseguem se cadastrar, já outras conseguem, ele meio que quando essas contas que não estão conseguindo se cadastrar tentam logar, fica com uma espécie de loop e volta pra página de autenticação sempre, a princípio acreditei que o plugin tinha um limite de cadastros, mas no momento estou incerto quanto a isso, mas as contas que já eram cadastradas conseguem logar sem mais problemas.

Correção iteração 1 - Testes

- Rspec

  • Atraso na entrega -> não
    • Entregas feitas no até o dia final da iteração (09/10) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (10/10) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (11/10) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (12/10 em diante) são zeradas.
  • Testes completos (todos verdes) -> não
    • Redução de 5%
    • Seguinte erro foi encontrado ao executar o comando "rspec spec/"
Failure/Error: expect(user.descricao_completa).to eql("Fname: James, senha: 34597654432, Usuário: james")
     
       expected: "Fname: James, senha: 34597654432, Usuário: james"
            got: "First Name: James, Middle Name: , Usuário: james, Senha: 34597654432"
     
       (compared using eql?)
  • Caminhos felizes/caminhos tristes -> não (sem penalidade por esta iteração)
    • Foram verificados apenas a existência de caminhos felizes nos testes

- Cucumber

  • Atraso na entrega -> não
    • Entregas feitas no até o dia final da iteração (09/10) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (10/10) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (11/10) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (12/10 em diante) são zeradas.
  • Testes completos (todos verdes) -> não
    • Redução de 5%
    • Seguinte erro foi encontrado ao executar o comando "cucumber features/users.feature"
When I click on the Cadastrar button # features/step_definitions/testeUsers.rb:5
      uninitialized constant Cadastrar (NameError)
      ./features/step_definitions/testeUsers.rb:6:in `/^I click on the Cadastrar button$/'
      features/users.feature:8:in `When I click on the Cadastrar button'
    • Esse erro é gerado porque vocês não colocaram o nome/texto/identificador do botão entre aspas (""). Adicionalmente, mesmo que tivessem posto, o mesmo não funcionaria pois Cadastrar não é um botão e sim um link (tag ).
  • Caminhos felizes/caminhos tristes -> não (sem penalidade por esta iteração)
    • Foram verificados apenas a existência de caminhos felizes nos testes

Nota final: 10 * (100% - 5% - 5%) = 9.0


Observação

  • Vocês precisam fazer testes mais completos, a ideia de testes é quebrar o código em si, procurar falhas existentes e explorar as mesmas e por isso caminhos tristes (onde é induzida a tentativa de falha) devem estar mais presentes que os felizes em si

Report.pdf

Correção iteração 0

Histórias de usuário:

  • Atraso na entrega das HU's -> não, (nota base 10.0)

    • Entregas feitas no até o dia final da iteração (25/09) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (26/09) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (27/09) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (28/09 em diante) são zeradas.
  • Formato ->

    • Faltou o título em cada HU.
    • Redução de 5%
  • História bem escrita -> Ok

  • Observação: Cadastro das histórias como Issues

    • É uma boa pratica cadastrar cada HU separadamente como Issue. Porque?
      • Fica mais fácil de vocês se organizarem (saberem qual issue será trabalhada em dada Iteração)
      • Fica mais fácil para correção (vocês sinalizam qual issue será trabalhada diretamente, por meio das milestones)

nota final: nota base 10 * (100% - 5%) = 9,5


Ata de reunião:

  • Atraso na entrega da Ata de Reunião -> não
  • Participantes da reunião -> ok
  • Tópicos discutidos ->
    • Poucos detalhes:
      • A Ata da reunião deve trazer detalhes sobre o que foi discutido, o que foi abandonado e o porque foi, para evitar no futuro retorno ao mesmo tema
      • A falta de detalhes leva a crer que os tópicos são genéricos
    • Redução de 10%
  • O que foi definido (Ações a serem tomadas)->ok
  • Formato Markdown -> ok

nota final: 10 * (100% - 10% ) = 9.0


Mockups e storyboards:

  • Atraso na entrega dos Mockup's e Storyboards -> não, (nota base 10.0)

    • Entregas feitas no até o dia final da iteração (25/09) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (26/09) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (27/09) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (28/09 em diante) são zeradas.
  • Mockups -> ok

  • Storyboard -> ok

nota final: 10 * (100%) = 10


Preenchimento do GitHub:

  • Atraso no preenchimento -> não, (nota base 10.0)
    • Entregas feitas no até o dia final da iteração (25/09) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (26/09) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (27/09) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (28/09 em diante) são zeradas.
  • Nome do projeto -> ok
  • Descrição do projeto -> ok
  • Justificativa do projeto -> ok
  • Especificação do papel dos membros -> ok
  • Uso de Issues e Labels ->
    • As Issues devem possuir também descrição ou conteúdo mais detalhados.
    • Redução de 3%
    • Adição de novas Labels deve ser feita.
    • Redução de 10%
    • Adição dos Milestones também deve ser feita uma por interação
    • Redução de 10%
  • Observação:
    • As Issues devem ser criadas no ínicio de cada interação e não no final, as mesmas servem para planejamento e organização durante a iteração
    • Porfavor, fechem apenas as Issues que estiverem com a label Accepted (que colocarei após corrigir a issue ao final de cada iteração) e cadastrem as seguintes labels no repositório:
      sem titulo

nota final: 10 * (100% - (3% + 10% + 10%)) = 7,7


Postmortem

  • Atraso do Postmortem -> não, (nota base 10.0)
    • Entregas feitas no até o dia final da iteração (25/09) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (26/09) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (27/09) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (28/09 em diante) são zeradas.
  • O que estava planejado ->ok
  • Listar as atividades que foram planejadas para a interação e o responsável por cada uma delas ->
    • Faltou indicar o responsável por cada item planejado
    • Redução de 7,5%
  • O que foi feito -> ok
  • Listar as atividades que foram realizadas para a interação e o responsável por cada uma delas ->
    • Faltou indicar o responsável por cada item realizado
    • Redução de 7,5%
  • O que não foi feito ->
  • Não foi adicionado ao postmortem o que não foi feito.
  • Redução de 15%
  • O que está planejado pra próxima iteração ->
  • Listar as atividades que foram planejadas para a próxima interação e o responsável por cada uma delas ->
    • Faltou indicar o responsável por cada item que será realizado para a próxima interação
    • Redução de 7,5%
  • Lições aprendidas -> ok
  • Formato Markdown -> ok

nota final: 10 * (100% - (7,5% + 7,5% + 15% + 7,5%)) = 6,25


Observações finais:

Pessoal, reforçando, sempre criem as issues no começo das iterações. Além de dar mais tempo para corrigir o erro a criação no início também vai contar ponto nas próximas iterações.

FeedBack dos testes de TDD e BDD - Iteração 02

Testes BDD:

  • Possui caminhos felizes e tristes -> Ok
  • Todos verdes -> Ok

Nota BDD: 5

Testes TDD:

  • Possui caminhos felizes e tristes -> O teste de descrição de usuário só possui caminho feliz, -0.5
  • Todos verdes -> Ok

Nota BDD: 4.5


nota final: 9.5

Implementar comentarios

  • Os usuários serão capazes de comentar sobre coisas que acharem interessantes e poderão interagir.

Feedback Cadastrar histórias no gitHub IT2

Eai galera, tudo certinho??

Uso de lable : OK
Milestones : OK
1 Issue por participante : OK
Descrição da issue : -0,2.

Com relação a descrição das issues, descrevam todas as issues que forem cadastradas, algumas vocês descreveram, outras não

Qualquer duvida só falar aqui. Caso concordem, só fechar a issue.

Colocar ícone da página

  • Pin na parte superior da aba da aplicação (estávamos tendo problemas em adicionar diretamente com html).

Correção do Postmortem

  • O que estava planejado -> OK
  • O que foi feito -> OK
  • O que não foi feito -> OK
  • O que está planejado pra próxima iteração -> OK
  • Lições aprendidas -> OK
  • Formato Markdown -> OK

Nota final -> 10

Correção Postmortem i3

  • O que estava planejado -> OK
  • O que foi feito -> OK
  • O que não foi feito -> OK
  • O que está planejado pra próxima iteração -> OK
  • Lições aprendidas -> OK
  • Formato Markdown -> OK

Nota final -> 10

Correção ER - Iteração 3

- Modelo ER

  • Atraso na entrega -> não
    • Entregas feitas no até o dia final da iteração (06/11) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (07/11) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (08/11) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (09/11 em diante) são zeradas.
  • Aderente ao existente no projeto -> sim
  • Segue as normas preferinidas de modelagem ER -> sim

Nota final: 10 * (100%) = 10.0

Terminar o front

  • Da página inicial, dos perfis dos usuários, além das outras páginas da aplicação.

Deploy no heroku

Obs: Estamos com problemas relacionados a isso, a princípio acreditávamos que era o devise, mas não, era outra coisa, e estamos trabalhando pra tentar deixar tudo 100%.

Correção testes - iteração 3

- Rspec

  • Atraso na entrega -> não
  • Entregas feitas no até o dia final da iteração (06/11) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (07/11) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (08/11) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (09/11 em diante) são zeradas.
  • Testes completos (todos verdes) -> sim

  • Caminhos felizes/caminhos tristes -> sim

- Cucumber

  • Atraso na entrega -> não
  • Entregas feitas no até o dia final da iteração (06/11) têm nota base 10;
    • Entregas feitas no até um dia após final da iteração (07/11) têm nota base 8;
    • Entregas feitas no até dois dia após final da iteração (08/11) têm nota base 6;
    • Entregas feitas após dois dias do final da iteração (09/11 em diante) são zeradas.
  • Testes completos (todos verdes) -> não
    • Redução de 10%
    • Seguinte erro foi encontrado ao executar o comando "rspec spec/"
Then I should see the text Login                  # features/step_definitions/Then.rb:17
      expected to find text "Login" in "Areas Regional Endereco Bairro Localidade Descricao Latitude Longitude Import Selecione um arquivo CSV: New Area" (RSpec::Expectations::ExpectationNotMetError)
      ./features/step_definitions/Then.rb:18:in `/^I should see the text ([^"]*)$/'
      features/areas.feature:9:in `Then I should see the text Login'
And I click on the Sign up link                            # features/step_definitions/When.rb:5
      Unable to find visible link "Sign up" (Capybara::ElementNotFound)
      ./features/step_definitions/When.rb:6:in `/^[I ]*click on the ([^"]*) link$/'
      features/areas.feature:14:in `And I click on the Sign up link'
  • Caminhos felizes/caminhos tristes -> sim

Nota final: 10 * (100% - 10%) = 9.0


Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.