SauloCav / Software-Engineering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Software-Engineering

Software engineering is the process of developing, testing and deploying computer applications to solve real-world problems by adhering to a set of engineering principles and best practices. The field of software engineering applies a disciplined and organized approach to software development with the stated goal of improving quality, time and budget efficiency, along with the assurance of structured testing and engineer certification.

Though the original use of the term is uncertain, the first software engineering conference was held and sponsored by NATO in 1968. The conference addressed the inconsistency and unreliability in software development as well as the need for better quality assurance (QA) and reliability. The conference gathered international experts who agreed the systematic approach of physical world engineering should be applied to software development, as it already was developed with those goals in mind.

Resources

What Does a Software Engineer Do?

https://www.coursera.org/articles/software-engineer

O que é um Software Engineer?

https://medium.com/trainingcenter/o-que-%C3%A9-um-software-engineer-8631b2eb69f2

The ABC of software engineering

https://bertrandmeyer.com/2013/03/25/the-abc-of-software-engineering/

Developer Survey Results 2018

https://insights.stackoverflow.com/survey/2018#ethics

Código de Ética SBC

https://www.sbc.org.br/institucional-3/codigo-de-etica

Code of Ethics IEEE

https://www.computer.org/education/code-of-ethics

ACM Code of Ethics and Professional Conduct

https://www.acm.org/code-of-ethics

Manifesto for Agile Software Development

https://agilemanifesto.org/

Software Engineering Body of Knowledge (SWEBOK)

https://www.computer.org/education/bodies-of-knowledge/software-engineering

610.12-1990 - IEEE Standard Glossary of Software Engineering Terminology

https://ieeexplore.ieee.org/document/159342

Linux Kernel History Report 2020

https://www.linuxfoundation.org/resources/publications/linux-kernel-history-report-2020

Why Google stores billions of lines of code in a single repository

https://dl.acm.org/doi/10.1145/2854146

No Silver Bullet Essence and Accidents of Software Engineering

https://ieeexplore.ieee.org/document/1663532

the chaos report

https://www.standishgroup.com/sample_research_files/chaos_report_1994.pdf

The New New Product Development Game

https://hbr.org/1986/01/the-new-new-product-development-game

Business object design and implementation workshop

https://dl.acm.org/doi/10.1145/260094.260274

The New New Product Development Game

https://hbr.org/1986/01/the-new-new-product-development-game

Embracing change with extreme programming

https://ieeexplore.ieee.org/document/796139

Software Engineering at Google

https://arxiv.org/abs/1702.01715

Pair programming: what's in it for me?

https://dl.acm.org/doi/10.1145/1414004.1414026

What agile teams think of agile principles

https://dl.acm.org/doi/10.1145/2133806.2133823

SCRUM Development Process

https://link.springer.com/chapter/10.1007/978-1-4471-0947-1_11

The Scrum Guide

https://www.scrum.org/resources/scrum-guide

Kanban: Successful Evolutionary Change for Your Technology Business

https://isbnsearch.org/isbn/0984521402

The Art of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling

https://isbnsearch.org/isbn/0471503363

A spiral model of software development and enhancement

https://dl.acm.org/doi/10.1145/12944.12948

Failures to be celebrated: an analysis of major pivots of software startups

https://arxiv.org/abs/1710.04037

The Top 10 Adages in Continuous Deployment

https://www.computer.org/csdl/magazine/so/2017/03/mso2017030086/13rRUwIF6ja

Online controlled experiments at large scale

https://dl.acm.org/doi/10.1145/2487575.2488217

Sprint O Metodo Usado no Google Para Testar e Aplicar Novas Ideias em Apenas Cinco Dias (Em Portugues do Brasil)

https://isbnsearch.org/isbn/8551001523

CSIndexbr is celebrating 5 years!

https://csindexbr.org/

The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses

https://isbnsearch.org/isbn/0307887898

Naming the Pain in Requirements Engineering: Contemporary Problems, Causes, and Effects in Practice

https://arxiv.org/abs/1611.10288

JOT

https://www.jot.fm/contents/issue_2003_09/article4.html

OMG

https://www.omg.org/

Sketches and Diagrams in Practice

https://arxiv.org/abs/1706.09172

What's wrong with git?: a conceptual design analysis

https://dl.acm.org/doi/10.1145/2509578.2509584

On the criteria to be used in decomposing systems into modules

https://dl.acm.org/doi/10.1145/361598.361623

Software Design Glossary

https://engineering.fb.com/2011/09/27/uncategorized/software-design-glossary/

The Paperboy, The Wallet, and The Law Of Demeter

https://www2.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/paper-boy/demeter.pdf

Towards a metrics suite for object oriented design

https://dl.acm.org/doi/10.1145/118014.117970

A metrics suite for object oriented design

https://ieeexplore.ieee.org/document/295895

A Complexity Measure

https://ieeexplore.ieee.org/document/1702388

Class Calendar.Builder

https://docs.oracle.com/javase/9/docs/api/java/util/Calendar.Builder.html

Criticism of Linux

https://en.wikipedia.org/wiki/Criticism_of_Linux

The structure of the “THE”-multiprogramming system

https://dl.acm.org/doi/10.1145/363095.363143

Uma Simples SPA

https://engsoftmoderna.info/examples/vue.html

Big Ball of Mud

https://joeyoder.com/PDFs/mud.pdf

Modularization of a Large-Scale Business Application: A Case Study

https://ieeexplore.ieee.org/document/4786949

TestCoverage

https://martinfowler.com/bliki/TestCoverage.html

Flaky Tests at Google and How We Mitigate Them

https://testing.googleblog.com/2016/05/flaky-tests-at-google-and-how-we.html

Tasty mocking framework for unit tests in Java

https://site.mockito.org/

The Selenium Browser Automation Project

https://www.selenium.dev/documentation/

Development and Deployment at Facebook

https://ieeexplore.ieee.org/document/6449236

Software Engineering at Google

https://arxiv.org/abs/1702.01715

Do developers care about code smells? An exploratory survey

https://ieeexplore.ieee.org/document/6671299

From Public to Private to Absent: Refactoring JAVA Programs under Constrained Accessibility

https://link.springer.com/chapter/10.1007/978-3-642-03013-0_19

Why We Refactor? Confessions of GitHub Contributors

https://arxiv.org/abs/1607.02459

How to teach Git

https://rachelcarmena.github.io/2018/12/12/how-to-teach-git.html

Continuous deployment at Facebook and OANDA

https://dl.acm.org/doi/10.1145/2889160.2889223

Continuous Integration

https://martinfowler.com/articles/continuousIntegration.html

FeatureBranch

https://martinfowler.com/bliki/FeatureBranch.html

Feature toggles: practitioner practices and a case study

https://dl.acm.org/doi/10.1145/2901739.2901745

Why Google stores billions of lines of code in a single repository

https://dl.acm.org/doi/10.1145/2854146

Books

UML Distilled: A Brief Guide to the Standard Object Modeling Language

https://dl.acm.org/doi/book/10.5555/861282

A Philosophy of Software Design

https://dl.acm.org/doi/book/10.5555/3288797

Clean Architecture: A Craftsman's Guide to Software Structure and Design

https://dl.acm.org/doi/book/10.5555/3175742

Design patterns: elements of reusable object-oriented software

https://dl.acm.org/doi/book/10.5555/186897

Exercises in Programming Style

https://dl.acm.org/doi/book/10.5555/2648631

Engenharia de Software Moderna

https://engsoftmoderna.info/

The mythical man-month (anniversary ed.)

https://dl.acm.org/doi/book/10.5555/207583

Object-oriented software construction (2nd ed.)

https://dl.acm.org/doi/book/10.5555/261119

Software Maintenance Management

https://dl.acm.org/doi/book/10.5555/601062

Object-Oriented Software Engineering: A Use Case Driven Approach

https://dl.acm.org/doi/book/10.5555/993806

User Stories Applied: For Agile Software Development

https://dl.acm.org/doi/book/10.5555/984017

Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd Edition)

https://dl.acm.org/doi/book/10.5555/1044919

Writing Effective Use Cases

https://dl.acm.org/doi/book/10.5555/517669

Extreme Programming Installed

https://dl.acm.org/doi/book/10.5555/557459

Extreme programming explained: embrace change

https://dl.acm.org/doi/book/10.5555/318762

Peopleware: Productive Projects and Teams

https://dl.acm.org/doi/book/10.5555/2505459

Engineering Software as a Service: An Agile Approach Using Cloud Computing

https://saasbook.info/

Development and Deployment at Facebook

https://ieeexplore.ieee.org/document/6449236

Agile Project Management with Kanban

https://dl.acm.org/doi/book/10.5555/2774938

Effective Java (2nd Edition) (The Java Series)

https://dl.acm.org/doi/book/10.5555/1377533

Software Architecture: Foundations, Theory, and Practice

https://dl.acm.org/doi/book/10.5555/1538494

Open Sources: Voices from the Open Source Revolution

https://dl.acm.org/doi/book/10.5555/553109

Patterns of Enterprise Application Architecture

https://dl.acm.org/doi/book/10.5555/579257

Refactoring: improving the design of existing code

https://dl.acm.org/doi/book/10.5555/311424

Succeeding with Agile: Software Development Using Scrum

https://dl.acm.org/doi/book/10.5555/1667109

How Google Tests Software

https://dl.acm.org/doi/book/10.5555/2207802

Clean Code: A Handbook of Agile Software Craftsmanship

https://dl.acm.org/doi/book/10.5555/1388398

Pragmatic Unit Testing in Java 8 with JUnit

https://dl.acm.org/doi/book/10.5555/2808995

XUnit Test Patterns: Refactoring Test Code

https://dl.acm.org/doi/book/10.5555/1076526

Refactoring object-oriented frameworks

https://dl.acm.org/doi/book/10.5555/169783

A Philosophy of Software Design

https://dl.acm.org/doi/book/10.5555/3288797

The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations

https://dl.acm.org/doi/book/10.5555/3044729

Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation

https://dl.acm.org/doi/book/10.5555/1869904

Extreme Programming Explained: Embrace Change (2nd Edition)

https://dl.acm.org/doi/book/10.5555/1076267

Projects and gists

Singleton (Design Patterns) mtov

https://gist.github.com/mtov/704348e216e85918d7375a6b3d40dcdb

Channel Decorator (Design patterns) mtov

https://gist.github.com/mtov/c8d65378a2904af01c20c53922f5ae1d

Observer (Design Pattern) mtov

https://gist.github.com/mtov/5fadb0e599cb84fd6bd124b2ff37c03c

Visitor (Design Patterns) mtov

https://gist.github.com/mtov/d447fd22974c57688d0fd109cb9509ea

Builder (Design Pattern) mtov

https://gist.github.com/mtov/cb98612474f01eccc5e10fa08f82a62b

Simple Single Page Application (SPA) using Vue.js

https://gist.github.com/mtov/ac1120c5b3e0a85d39bb7b05d20ee307

Exemplo de Testabilidade - Servlet

https://gist.github.com/mtov/72a7da4aed79818fbd6aae4e0774d6a5

Exemplo de testabilidade - Chamada Assíncrona

https://gist.github.com/mtov/a3f73350010758925172a7f433e2ba71

Mock manual

https://gist.github.com/mtov/c162dce743cc2cb8fdbc25605c35cc2b

guava

https://github.com/google/guava/blob/master/guava-tests/test/com/google/common/base/StringsTest.java

Exemplo de Mocks - usando Mockito

https://gist.github.com/mtov/f7781e3f164a62c85cf4294271b9c2fd

Exemplo de teste de servlet usando mocks

https://gist.github.com/mtov/5372c7ffebe79c21768d0b1290c409b1

Exercício para converter teste manual em teste de unidade (automatizado)

https://gist.github.com/mtov/11d9dce2bd37fe462003992835ebb1ba

Teste de unidade de uma classe Stack

https://gist.github.com/mtov/3601acd0b32a1d0a85b4a81a43af4284

About

License:MIT License