Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Introdução à Engenharia de Software
1. 1
ENGENHARIA DE SOFTWARE - AULA 01
INTRODUÇÃO À ENGENHARIA
DE SOFTWARE
PROF. DRA. CLAUDIA MELO
08/Mar/2018
@claudia_melo claudiamelo.org
2. 2
O QUE É SOFTWARE?
• São programas de computadores, em suas
diversas formas, além da documentação
associada.
• Um programa é um conjunto de soluções
algorítmicas, codificadas em uma linguagem
de programação, executado em uma máquina
real (hardware).
• Software é um produto conceitual e lógico. É
empacotamento de conhecimento.
Características
• Invisível
• Complexo
• Mutável
• Em conformidade com o
ambiente
[Brooks, F. No Silver Bullet]
1o software foi escrito por Ada Lovelace, século 19
3. 3
QUÃO BOM DEVE SER O SOFTWARE?
•Manutenibilidade: O software deve ser escrito de forma
que possa evoluir para atender às necessidades dos
clientes.
•Confiança e proteção: A confiança do software inclui
confiabilidade, proteção e segurança.
•Eficiência: O software não deve desperdiçar os recursos
do sistema, como memória e ciclos do processador.
•Aceitabilidade: O software deve ser aceitável para o
tipo de usuário para o qual foi projetado.
4. 4
O QUE É ENGENHARIA DE SOFTWARE?
•Disciplina dedicada a todos os aspectos da produção de
software [Sommerville, 2011].
•Aplicação de teoria, modelos, formalismos, técnicas e
ferramentas da ciência da computação e áreas afins
para o desenvolvimento sistemático de software.
• Aplicação de métodos, técnicas e ferramentas para o
gerenciamento do processo de desenvolvimento.
5. 5
QUANDO ISSO SURGIU PARA A HUMANIDADE?
•Surgimento do termo: 1968, Conferência da OTAN, por
Margaret Hamilton* (líder do time de software, Apollo 11).
•Objetivo: resolver a “Crise do Software”
•Software é entregue atrasado, acima do custo, com
falhas. Enquanto o hardware fica mais barato (Lei de
Moore), o custo do software só aumenta.
*Detalhes em: https://www.nasa.gov/50th/50th_magazine/scientists.html
6. 6
AINDA ESTAMOS EM CRISE?
SIM!
Inúmeras falhas de projetos ainda
existem (e os sistemas são cada vez mais
complexos).
Milhões e bilhões desperdiçados em UM
único sistema!
http://www.bbc.co.uk/news/uk-politics-24130684
http://www.independent.co.uk/life-style/health-and-families/health-news/nhs-pulls-the-plug-on-its-11bn-it-system-2330906.html
http://www.computerweekly.com/news/2240187478/Why-agile-development-failed-for-Universal-Credit
8. SIM!
Inúmeras falhas de projetos ainda
existem (e os sistemas são cada vez
mais complexos).
Milhões e bilhões desperdiçados em
UM único sistema!
8
AINDA ESTAMOS EM CRISE?
MAS…
Não estamos perdidos!
Há inovação acelerada da arte de desenvolve software
e forte comunidade global
(Internet, Conferências, Grupos)
—> somos muito bons em formar comunidade!
(obrigada, pessoal do SW livre, por nos ensinar isso :-)
9. 9
IDEIA CENTRAL DA ENGENHARIA DE SW: PROCESSOS
•É um conjunto de atividades que leva ao
desenvolvimento do produto software
•Um processo define:
•Quem faz, o que faz e quando fazer
•Nem sempre diz como fazer
• Não existe um processo ideal
•Organizações desenvolvem seus próprios processos
10. 10
MODELOS DE PROCESSOS
•Oferecem um roteiro:
• Definem atividades para o
desenvolvimento do software
• Especificam os produtos de
cada atividade
• Indicam os papéis das
pessoas envolvidas
•Exemplos de Modelos de processo:
•Cascata
•Iterativo incremental
•Espiral (RUP)
•Prototipagem
•Métodos ágeis
16. A NATUREZA DO TRABALHO MUDOU NO SÉCULO 21
Otimização
Mecânico
Centrado em processo
Estável, previsível
Indivíduo
Eficiência
Adaptação
Orgânico
Centrado em pessoas
Turbulento, difícil de prever
Time
Trabalho do conhecimento
Produtividade
=
Saída/Entrada
Produtividade do
Trabalhador do conhecimento
Claudia Melo (2013). Productivity of agile teams: an empirical evaluation of factors and monitoring processes
http://www.teses.usp.br/teses/disponiveis/45/45134/tde-25052015-120242/en.php
17. 17
QUEM FAZ SOFTWARE?
• Usuários finais (End-user development)
• Times profissionais com múltiplos
papéis:
• Desenvolvedores/as (DEVs)
• Analistas de qualidade (QAs)
• Analistas de negócio (BAs)
• Designer de experiência do usuário (UXers)
• Gerentes de projeto (PMs)
• Clientes (ou Product Owners)
• Múltiplas formações
18. 18
A PROFISSÃO
• Altíssima demanda por engenheiros/
as de software qualificados/as
• Mercado global, múltiplos tipos de
organizações
• Times de variados tamanhos e
dispersão geográfica
• Serviço/Produto > Projeto
• Mobile First
• Complexidade! Complexidade!
Complexidade!
• Adaptabilidade
• Experiência do usuário
19. 19
CYBERETHICS DEFINITION AND SOME INITIATIVES
https://on.acm.org/c/Code-2018
"Computers are essen(ally a
malleable, universally applicable
tool, so the poten(al applica(ons
for human acAon and
consequent ethical issues are
novel and almost limitless”
“Study of moral, legal, and social
issues involving cybertechnology”
“[…] formulaAon and jusAficaAon
of policies for the ethical use of
such technology"
20. 20
SOME EXAMPLES OF CYBERTECH
CONTROVERSIES
Innovation is a result of the combination and evolution of complementary
technologies.
CYBERTECHNOLOGIES CONTROVERSIAL PRACTICES OR FEATURES, FROM A MORAL PERSPECTIVE
Data Science Discoveries in data mining, propensity and group privacy.
Cloud Compu8ng Consumer privacy, reliability of services, data ownership, and technology
neutrality.
Algorithms Misguided evidence leading to bias; Unfair outcomes leading to discrimina8on,
transforma8on effects leading to challenges for autonomy, and traceability leading
to moral responsibility.
Digital Business Models Intellectual property rights, economic market impact and customer rela8onship.
Internet; IoT; Mobile;
Social
Individual privacy preferences, access controls, emergent social conven8ons and
infrastructures for government surveillance.
SoFware and Society;
Cyberlaw
Cryptocurrency, net neutrality, proprietary code and content and freedom of
speech.
Secure SoFware
Engineering
Purposeful human errors injec8on, soFware piracy and soFware development for
espionage, extor8on, vandalism and theF.
Ar8ficial Intelligence;
Robo8cs
Machine learning, bias in natural language processing and robots as sexual
partners, caregivers, and servants.
C. d. O. Melo and T. C. de Sousa, "Reflections on Cyberethics Education for Millennial Software Engineers," 2017 IEEE/ACM 1st International Workshop
on Software Engineering Curricula for Millennials (SECM), Buenos Aires, 2017, pp. 40-46.