1
ENGENHARIA DE SOFTWARE - AULA 01
INTRODUÇÃO À ENGENHARIA
DE SOFTWARE
PROF. DRA. CLAUDIA MELO
08/Mar/2018
@claudia_melo claudiamelo.org
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
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
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
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
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
7
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
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
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
11
ETAPAS CLÁSSICAS NO DESENVOLVIMENTO DE
SOFTWARE (EXEMPLO: MODELO CASCATA)
12
MODELOS DE PROCESSO
Iterativo Espiral
13
MODELO ITERATIVO INCREMENTAL
Leia mais sobre esse modelo em: Larman&Basili (2003). Iterative and Incremental Development: A Brief History
14http://blog.crisp.se/wp-content/uploads/2014/10/Screen-Shot-2014-10-07-at-08.20.00.png
MODELO ITERATIVO INCREMENTAL (EVOLUCIONÁRIO)
15
http://raconteur.net/the-digital-economy-2016
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
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
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
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
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.
21
BÔNUS
https://www.technologyreview.com/lists/technologies/2018/
22
PERGUNTAS?
OBRIGADA!
@claudia_melo
claudiamelo.org
claudiam@unb.br

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 DEVESER 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 SURGIUPARA 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 EMCRISE? 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
  • 7.
  • 8.
    SIM! Inúmeras falhas deprojetos 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 DAENGENHARIA 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 •Oferecemum 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
  • 11.
    11 ETAPAS CLÁSSICAS NODESENVOLVIMENTO DE SOFTWARE (EXEMPLO: MODELO CASCATA)
  • 12.
  • 13.
    13 MODELO ITERATIVO INCREMENTAL Leiamais sobre esse modelo em: Larman&Basili (2003). Iterative and Incremental Development: A Brief History
  • 14.
  • 15.
  • 16.
    A NATUREZA DOTRABALHO 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íssimademanda 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 ANDSOME 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 OFCYBERTECH 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.
  • 21.
  • 22.