desenvolvimento de saas / engenharia de software como serviço
DESCRIPTION
Minicurso 4 – Desenvolvimento de SAAS / Engenharia de Software como Serviço ministrado no XII Encontro Anual de Computação (EnAComp) realizado em Catalão (GO) no período de 16 a 18 de Setembro de 2015.TRANSCRIPT
![Page 1: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/1.jpg)
Desenvolvimento de SaaS / Engenharia de Software como Serviço
Prof. Vinicius Cardoso Garcia [email protected] :: @vinicius3w :: assertlab.com
![Page 2: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/2.jpg)
Licença do materialEste Trabalho foi licenciado com uma Licença
Creative Commons - Atribuição-NãoComercial-CompartilhaIgual 3.0 Não Adaptada.
Mais informações visite: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.pt
2
![Page 3: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/3.jpg)
Download
Apresentação com anotações
http://bit.ly/ess-enacomp-2015
3
![Page 4: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/4.jpg)
Quem sou eu?• Professor @ Cin-UFPE [Sistemas de Informação, Pós-Graduação em Ciência da Computação], Aug-2010
• 13/44 MSc; 6 (+4 co) DSc :: http://viniciusgarcia.com • ASSERT [Advanced System and Software Engineering Research Technologies] Lab :: http://assertlab.com • Ikewai [http://www.ikewai.com]: rede de business designers
• Netweaver • USTO.RE [http://usto.re] :: Smart Cloud Storage
• Chief Scientist Officer (CSO) • INES [Instituto Nacional para Ciência e Tecnologia em Engenharia de Software] :: http://www.ines.org • Engenheiro de Sistemas :: 2005 ~ 2010 @ CESAR • D.Sc. em Engenharia de Software, Feb-2010 • RiSE [Reuse in Software Engineering] Group
• 2007 –> [Startup]
4
http://amzn.to/ILF8kY
![Page 5: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/5.jpg)
Sobre o CIn-UFPE
5
1ª IES A GANHAR O PRÊMIO
FINEP DE INOVAÇÃO
2011
PREMIADO EM 6 EDIÇÕES DA MICROSOFT IMAGINE CUP
7 X CAMPEÃO BRASILEIRO MARATONA DE PROGRAMAÇÃO
PÓS-GRADUAÇÃO
Defesa da centésima tese de Doutorado em 2006
Defesa da milésima dissertação de mestrado em 2011
Nível 6 na CAPES
Defesa da centésima dissertação de Mestrado Profissional em 2012
OUTRAS CONQUISTAS:
Prêmio Dorgival Brandão Júnior da Qualidade e Produtividade
Concursos de teses e dissertações
Asia Java Mobile Challenge
![Page 6: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/6.jpg)
Engenharia de Software na PráticaPractical Software Engineering
6
![Page 7: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/7.jpg)
Warm up!• O que é Engenharia de Software?
• O que faz um Engenheiro de Software? • E como ele faz?
• Qual aspecto do ciclo de vida do software consome mais recursos?
7
60% of SW total cost over lifecycle is maintenance. We'll have more to say about this later. but ironic that students/courses focus more on "greenfield" SW despite the fact your first project probably won't be, and that more $$ is spent on keeping software useful!
![Page 8: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/8.jpg)
Ranking Top 200 Jobs ('12)1. Software Engineer 28. Civil Engineer 34. Programmer 40. Physician 47. Accountant 60. Mechanical Engineer 73. Electrical Engineer 87. Attorney
8
104. Airline Pilot 133. Fashion Designer 137. High School Teacher 163. Police Officer 173. Flight Attendant 185. Firefighter 196. Newspaper Reporter 200. Lumberjack
Organizes and lists the instructions for computers to process data and
solve problems in logical order. Income: $71,178
InformationWeek 5/15/12. Based on salary, stress levels, hiring outlook, physical demands, and work environment (www.careercast.com)
Researches, designs, develops and maintains software systems along with hardware development
for medical, scientific, and industrial purposes. Income: $88,142 (+25%)
Software Engineer ranks No. 1, followed by Actuary, Human Resources Manager, Dental Hygienist and Financial Planner.
![Page 9: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/9.jpg)
Engenharia de Software• As economias de TODAS as nações desenvolvidas são dependentes
de software. • Cada vez mais sistemas são controlados por software. • A engenharia de software se dedica às teorias, métodos e
ferramentas para desenvolvimento de software profissional • Sistemas não-triviais • Com base em um conjunto de requisitos
9
![Page 10: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/10.jpg)
Poor President Obama...
10
- top sites aim for "four nines" availability. healthcare.gov started as "one four" and is now up to "one nine"- sad thing is we could've predicted. Our students could've warned Obama!
![Page 11: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/11.jpg)
Como evitar o descrédito?• Quais são as lições de 60 anos de Desenvolvimento de
Software? • Vamos revisar algumas abordagens ressaltando pontos fortes
e fracos • Experiência prática com uma boa abordagem para Software
como Serviço
11
![Page 12: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/12.jpg)
Software como ServiçoSoftware as a Service (SaaS)
12
![Page 13: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/13.jpg)
Alvos do software• SW Tradicional: código binário instalado e rodando totalmente no dispositivo do
cliente • Os usuários precisam atualizar repetidamente
• Muitas versões de hardware e muitas versões de SO • Novas versões precisam passar por um ciclo de release extensivo para garantir a
compatibilidade • Uma alternativa onde o desenvolva-se o SW que necessita rodar em apenas uma
plataforma de HW&SO? • Ciclo de releases rápido, sem atualizações dos usuários?
13
Very popular topics
Rent like using doing your laundry in a service
![Page 14: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/14.jpg)
Software como Serviço (SaaS)• SaaS entrega SW & dados como serviço através da rede via
clientes “magros” (e.g., browser) rodando no cliente • Busca, redes sociais, streaming de vídeo
• Versões SaaS de SW tradicionais • Microsoft Office 365, Salesforce
• SaaS é um caminho [revolucionário] sem volta!
14
May change SW industry by end of decade, switch of leaders and followers
![Page 15: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/15.jpg)
6 Razões para SaaS1. Sem preocupações com o HW sobre instalação ou SO 2. Sem preocupações sobre perda de dados (no site remoto) 3. Fácil interação para grupos (mesmos dados) 4. Se o volume de dados é grande ou muda frequentemente, basta manter uma
cópia no sitio central 5. Uma cópia do SW, ambiente de HW controlado => sem aborrecimentos com
compatibilidade [desenvolvedores] 6. Uma cópia 1 => simplifica atualizações para desenvolvedores e sem CRs de
atualização dos usuários
15
Is laptop backed up? Lose my cellphone?
6 means SW changes all the time with more features
Continuously being asked to upgrade my software on my laptop
![Page 16: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/16.jpg)
SaaS ❤ Metodologias Ágeis & Rails• Atualizações frequentes => Ciclo de Vida Ágil • Muitos frameworks para Ágil/SaaS
• Django/Python, Zend/PHP, Spring/Java
• A única esperança é contar com um ambiente altamente produtivo (linguagens, ferramentas, frameworks...) • Sugestão: “Crossing the Software Education Chasm”, A. Fox, D.
Patterson, Comm. ACM, May 2012 (http://bit.ly/1b9QbFj)16
![Page 17: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/17.jpg)
Arquitetura Orientada a Serviço Software Oriented Architecture (SOA)
17
![Page 18: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/18.jpg)
Arquitetura de SoftwareVocê pode/consegue projetar um software de forma que seja possível recombinar módulos independentes para ofertar diferentes apps sem muito esforço de programação?
18
![Page 19: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/19.jpg)
Arquitetura Orientada a Serviço• SOA: Arquitetura de Software onde todos os componentes são
projetados como serviço • Apps são compostas por serviços interoperáveis
• Fácil de derivar uma nova versão para um conjunto de usuários • Também é fácil para se recuperar de um erro de projeto
• Contraste para “SW silo” sem uma API interna
19
Simply, every component can be a service. We’ll do examples of what is and what isn’t.
Combine services into new apps – tailored service is easyEasier to repair, so easy to replace components
In constrast
![Page 20: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/20.jpg)
CEO: Amazon shall use SOA!1. “All teams will henceforth expose their data and functionality
through service interfaces. 2. “Teams must communicate with each other through these
interfaces. 3. “There will be no other form of interprocess communication
allowed: no direct linking, no direct reads of another team's data store, no shared-memory model, no back-doors whatsoever. The only communication allowed is via service interface calls over the network.
20
Blogger at Google used to be at Amazon
Internal blog, for Google rantExternal blog
Mixed them up, and we put it into the book before he deleted entry
Amazon for all its weaknesses, does SOAGoogle, for all its strengths, doesn’t get SOA
Started as silo’d sw in 1995, then 7 years later switched to SOA via directive from Bezos, CEO and founder of AmazonBS in CS Princeton
Blogger claims one of 7 points is false; we’ll figure out which at end
![Page 21: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/21.jpg)
CEO: Amazon shall use SOA!4. “It doesn't matter what [API protocol] technology you use. 5. “Service interfaces, without exception, must be designed
from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions.
6. “Anyone who doesn't do this will be fired. 7. “Thank you; have a nice day!”
21
Why should Iisten to CEO? What does he know? Don’t you read Dilbert? I’m smarter than the CEO. What should I follow this email?
False was 7. Bezos doesn’t care about your day. He got them with “fired”
5 points is one of best dscriptions of SOA; everything must use API
Facebook too; Facebook platform 3 years later
(Google doesn’t get it)
![Page 22: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/22.jpg)
Bookstore: Silo
• Subsistemas internos podem compartilhar dados diretamente • User profile Service
• Todos os subsistemas “dentro” de uma única API (“Bookstore”)
22
(Figure 1.3, Engineering Long Lasting Software by Armando Fox and David Patterson, Beta
edition, 2012.)
the reviews subsystem can get user profile info out of the users subsystem
3 indabilidadedent services inside the silo
![Page 23: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/23.jpg)
Bookstore: SOA
• Subsistemas independentes, como se estivessem em datacenters separados • User Service API
• Pode recombinar serviços para criar novos serviços (“Favorite Books”)
23
(Figure 1.4, Engineering Long Lasting Software by Armando Fox and David Patterson, Beta edition, 2012.)
Creates another app – group’s favorite books app from standard bookstore just another combinationEven though all inside same datacenter, SW written as if in different ones
No service can access another services data – must go through API of service
Note not a layered model of software, but a network connection
![Page 24: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/24.jpg)
Computação em NuvemCloud Computing
24
![Page 25: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/25.jpg)
Qual o HW ideal para SAAS?• Amazon, Google, Microsoft... Desenvolveram sistemas de HW para rodar
SaaS
• O Que eles usam, em termos de infraestrutura de HW: Mainframes? Supercomputers?
• Como desenvolvedores de SW independentes constroem apps SaaS e competem sem um investimento em HW similar a Amazon, Google, Microsoft?
25
![Page 26: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/26.jpg)
Infraestrutura SaaS?• 3 Demandas de infraestrutura para SaaS
1. Comunicação: permitir que os consumidores interajam com o serviço
2. Escalabilidade: flutuações na demanda durante adição de novos serviços para novos clientes rapidamente
3. Confiabilidade: disponibilidade contínua de serviço e comunicação 24x7
26
Scalability for holidaysHas to work all the time – since only in one place
![Page 27: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/27.jpg)
Serviços em Clusters• Cluster: aglomerado de computadores conectados
1. Mais escalável do que servidores convencionais 2. Mais barato do que servidores convencionais
• 20X para equivalentes vs. Servidores maiores 3. Poucos operadores para 1000s servidores
• Seleção cuidadosa de HW e SW idênticos • Monitores de Máquinas Virtuais simplifica a operação
4. Confiabilidade via redundância extensiva
27
Originally mainframe computers, but switched to clusters at Berkeley (NOW)Expensive, how to scale, still failed sometime
Gold plated mainframe still fails, so more copies to overcome when failures, but 20X cheaper
VM help with kill program
20x cheaper so 2 or 3 times as many copies, SW handles failure
![Page 28: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/28.jpg)
Warehouse de Computadores Escaláveis• Clusters cresceu de 1000 para 100 mil servidores com base na
demanda do cliente para aplicativos SaaS • Economias de escala empurraram o custo dos grandes data centers
em fatores de 3x a 8x • Comprar, hospedar, operar 100K vs 1K
• Data centers tradicionais utilizados, cerca de 10% - 20% • Modelos de negócio baseados em pay-as-you-go trazem benefícios
concretos28
Services got popular, so had to keep scaling (100X)House – build own customer warehouse, so cheaperNetwork Bandwidth
Consolidate 100 companies into one datacenter,
2006 Bezos said should be able to sell – AWS Elastic Computing 2 (EC2)Original argument was underutilized 11 months of the year – spare cycles, became so popular
Today its reversed – Amazon now runs on Amazon Web Services
![Page 29: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/29.jpg)
Computação Utilitária / Computação em Nuvem Pública
• Oferece computação, armazenamento, comunicação a centavos por hora • Sem adicionais por escalabilidade
• 1000 computadores @ 1 hora, ou • 1 computador @ 1000 horas
• Ilusão de infinita escalabilidade para o usuário • Tantos computadores quanto você puder dispor
• Exemplos: Amazon Web Services, Google App Engine, Microsoft Azure
29
No premium for scale is striking – usually much more expensive to scale
![Page 30: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/30.jpg)
2013 AWS Instances & Prices
30
Instance Type Per
Hour $ Ratio to small
Virtual Cores
Compute Units
Memory (GiB) Storage (GB)
m1.small $0.06 1.0 1 1.0 1.7 1 x 160 m1.medium $0.12 2.0 1 2.0 3.8 1 x 410 m1.large $0.24 4.0 2 4.0 7.5 2 x 420 m1.xlarge $0.48 8.0 4 8.0 15.0 4 x 420 m3.xlarge $0.50 8.3 4 13.0 15.0 EBS m3.2xlarge $1.00 16.7 8 26.0 30.0 EBS c1.medium $0.15 2.5 2 5.0 1.7 1 x 350 c1.xlarge $0.58 9.7 8 20.0 7.0 4 x 420 cc2.8xlarge $2.40 40.0 32 88.0 60.5 4 x 840 m2.xlarge $0.41 6.8 2 6.5 17.1 1 x 420 m2.2xlarge $0.82 13.7 4 13.0 34.2 1 x 850 m2.4xlarge $1.64 27.3 8 26.0 68.4 2 x 840 cr1.8xlarge $3.50 58.3 32 88.0 244.0 2 x 120 SSD hi1.4xlarge $3.10 51.7 16 35.0 60.5 2 x 1024 SSD hs1.8xlarge $4.60 76.7 16 35.0 117.0 24 x 2048 t1.micro $0.02 0.3 1 varies 0.6 EBS cg1.4xlarge $2.10 35.0 16 33.5 22.5 2 x 840
17 options – vary in cost 75:1, vary in performance 90:1, vary in memory size 150:1, vary in storage 300:1
Pay per hour
2006 for $0.10, now just $0.06
![Page 31: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/31.jpg)
Computação Utilitária• Competição dos Top 500 supercomputadores • 532 Eight Extra Large (@ $2.40/hour), 17000 cores = 240 TeraFLOPS • 72nd/500 supercomputer @ ~$1300 per hour • Cartão de crédito => até 1000s computadores • FarmVille no AWS
• Primeiro grande jogo online: 5M usuários • E se a startup tivesse que construir o data center? • 4 dias = 1M; 2 meses = 10 M; 9 meses = 75M
31
CC2 = Cluster Compute Eight Extra Large
Zygna make Farmville using AWSBiggest in world; too big, too much $
Calling dell, take 6 months, AWS scale with demand
![Page 32: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/32.jpg)
IBM Watson para alugar?• Campeão do Jeopardy • Hardware: 90 IBM Power 750 servers • 3.5 GHz 8 cores/server • 90 @~$2.40/hour = ~$200/hour • Custo de um advogado ou contador... • Para quais tarefas uma máquina com IA seria tão boa quanto uma pessoa
muito bem treinada @ $200/hora? • O que isso pode significar para a sociedade?
32
Same rate as lawyers and accountants
$200 as much as IBM payed for Jeopardy champion
What is this going to mean down the road?
Might want to talk this over wine with your friends majoring in law or accounting
Great jobs for us; what about future of rest of society; ML is delivering
![Page 33: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/33.jpg)
Processos de Desenvolvimento de Software Dirigidos a PlanosPlan-and-Document processes
33
![Page 34: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/34.jpg)
Como evitar o descrédito do SW?• Podemos tornar a construção de software tão previsível em
termos de cronograma, custo e qualidade como a construção de uma ponte ou um edifício?
• Se sim, que tipo de processo de desenvolvimento devemos utilizar para torná-lo previsível a este ponto?
34
![Page 35: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/35.jpg)
Engenharia de Software• Trazer a disciplina engenharia para o SW
• Termo cunhado ~20 anos após o 1º computador • Encontrar métodos de desenvolvimento de SW tão previsíveis em qualidade, custo e tempo
assim como engenharia civil
• “Plan-and-Document” (Dirigido a Plano) • Antes de codificar, o gerente de projeto constrói o plano • Escrever uma documentação detalhada de todas as fazes do plano • Progresso medido/monitorado em relação ao plano • Mudanças no projeto devem ser refletidas na documentação e possivelmente no plano
35
![Page 36: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/36.jpg)
1º Processo de Desenvolvimento: Waterfall (1970)• 5 fases do ciclo de vida Waterfall ou Processo de Desenvolvimento em Cascata
• A.K.A. “Big Design Up Front” ou BDUF
• Análise e definição de requisitos • Projeto de sistema e software • Implementação e teste de unidade • Integração e teste de sistema • Operação e manutenção
• Primeiro modelo a organizar as atividades de desenvolvimento • Uma fase tem de estar completa antes de passar para a próxima.
• Saídas das fases são acordadas contratualmente! • Todas as fases envolvem atividades de validação
36
Like falling down a waterfallLots of planning, 6-12 months or more per stepOften steps done by different peopleThrow over the wallLots of documentation in case people leave
![Page 37: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/37.jpg)
Ciclo de Vida Espiral (1986)• Combina Big Design Up Front com
protótipos • Ao invés de documentar todos os
requisitos no início, vai desenvolvendo o documento de requisitos através de iterações de protótipos à medida que eles são necessários e evoluem com o projeto
37
![Page 38: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/38.jpg)
Ciclo de Vida do Rational Unified Process (RUP) (2003)
38
(Figure 1.5, Engineering Long Lasting Software by Armando Fox and David Patterson, 2nd Beta edition, 2013.)
![Page 39: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/39.jpg)
Gerência de Projetos Dirigida a Plano (DP)• DP depende do Gerente de Projeto
• Escrever contrato para ganhar/vender o projeto • Recrutar equipe de desenvolvimento • Avaliar o desempenho dos engenheiros de software, que estabelece o salário • Estimar os custos, manter o cronograma, avaliar os riscos e superá-los • Documentar o plano de gerenciamento de projetos • Ganhar o crédito pelo sucesso ou culpa se os projetos estão atrasados ou
acima do orçamento
39
![Page 40: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/40.jpg)
Tamanho do Time de DP
• Leva tempo para os novos membros do time aprenderem sobre o projeto
• A comunicação do time aumenta, deixando menos tempo para trabalhar efetivamente
• Para projetos grandes, o Ideal é ter pequenos grupos (4-9 pessoas) hierarquicamente compostos
40
“Adding manpower to a late software project makes it later.” Fred Brooks, Jr., The Mythical Man-Month
![Page 41: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/41.jpg)
AgileDevelopment processes
41
earliest ever lecture prep! follow along download slides
![Page 42: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/42.jpg)
Processo Alternativo?• Quão preciso o Dirigido a Plano pode ser em relação a custo,
cronograma e qualidade? • DP requer extensiva documentação e planejamento e depende da
experiência do gerente • É possível construir software efetivamente, e com sucesso,
sem um cuidadoso planejamento e documentação? • Como evitar o “basta cortar”?
42
![Page 43: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/43.jpg)
Quão preciso são os processos dirigido a planos?
43
!"#$
%&#$
!"#$%&'()&"*'+,-(./%01"&(23334((
'($)*+,$-($./01+2$
342+,$-5+6$./01+2,$-6$2+6*7(42+0$
!"#$
%&#$
&!#$
!"#$%&'()&"*'+,-(./"01-"1(23345(
'($)*+,$-($./01+2$
342+,$-5+6$./01+2$
7+6*8(42+0$-6$4.4(0-(+0$
!"#$
%"#$
&"#$
!"#$%&'()&"*'+,-(./"0'-(12234((
'($)*+,$-($./01+2$
34#$562+,$-7+8$./01+2$
96:-8$0+;6<=$-8$2+8*>(62+0$
(Figure 1.6, Engineering Long Lasting Software by Armando Fox and David Patterson, 2nd Beta edition, 2013.)
3/~500 novos projetos cumprem os custos e o
cronograma
Figure 1.6: The first study of software projects found that 53% of projects exceeding their budgets by a factor of 2.9 and overshot their schedule by a factor of 3.2 and another 31% of software projects were cancelled before completion (Johnson 1995). The an estimated annual cost in the United States for such software projects was $100B. The second survey of 250 large projects, each with the equivalent of more than a million lines of C code, found similarly disappointing results (Jones 2004). The final survey of members of the British Computer Society found that only 130 of 1027 projects met their schedule and budget. Half of all projects were maintenance or data conversion projects and half new development project, but the successful projects divided into 127 of the former and just 3 of the latter (Taylor 2000).
![Page 44: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/44.jpg)
Peres’s Law
44
“If a problem has no solution, it may not be a problem, but a fact, not to be solved, but to be coped with over time.”
— Shimon Peres
(vencedor do Prêmio Nobel da Paz de 1994)
(Photo Source: Michael Thaidigsmann, put in public domain, See http://en.wikipedia.org/wiki/File:Shimon_peres_wjc_90126.jpg)
![Page 45: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/45.jpg)
Agile Manifesto, 2001• “We are uncovering better ways of developing SW by doing it and helping
others do it. Through this work we have come to value • Individuals and interactions over processes & tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan
• That is, while there is value in the items on the right, we value the items on the left more.”
45
![Page 46: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/46.jpg)
“Extreme Programming” (XP), uma versão do ciclo de vida ágil
• If short iterations are good, make them as short as possible (weeks vs. years)
• If simplicity is good, always do the simplest thing that could possibly work
• If testing is good, test all the time. Write the test code before you write the code to test.
• If code reviews are good, review code continuously, by programming in pairs, taking turns looking over each other’s shoulders.
46
![Page 47: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/47.jpg)
Agile lifecycle• Embraces change as a fact of life: continuous improvement vs.
phases • Developers continuously refine working but incomplete prototype
until customers happy, with customer feedback on each Iteration (every ~1 to 2 weeks)
• Agile emphasises Test-Driven Development (TDD) to reduce mistakes, written down User Stories to validate customer requirements, Velocity to measure progress
47
Working but incomplete
More iterations, the more you’ll learn
Write Tests before write code
Customer helps write SW requirements
![Page 48: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/48.jpg)
Agilidade então... E agora?Controverso em 2001 “… yet another attempt to undermine the discipline of software engineering…
nothing more than an attempt to legitimize hacker behavior.” Steven Ratkin, “Manifesto Elicits Cynicism,” IEEE Computer, 2001
Aceito em 2003 Estudo de 2012 com 66 projetos confirmaram que a maioria usava Metodologias Ágeis, mesmo com times distribuídos
48
![Page 49: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/49.jpg)
It Takes a TeamSize & Scrum
49
(Engineering Software as a Service §10.1)
![Page 50: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/50.jpg)
Eng SW como um time de futebol• Era dos Programadores Super-Heróis • Aumento de qualidade e funcionalidades
• O programador não tem como resolver tudo sozinho • Carreira de sucesso
• Ninguém ganha jogo sozinho, quando vence, vencem todos
50
“There are no winners on a losing team, and no losers on a winning team.” Fred Brooks, Jr.
Early in my career knew superhero programmers – go away for weekend and build amazing breakthroughKen Thompson, co-inventor of UNIX, won Turing Award, was a Berkeley studentBill Joy, led BSD UNIX, which was first open source project, hero programmer – wrote vi over long weekend
No longer individuals building amazing things – Linus Torvald leads open source around Linux, but not done by himself
Early – bar was lowNot that many superheroes
What does team need to win (do you need to do more than your part)
![Page 51: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/51.jpg)
Time: Maior campeão da UFSCAR
51
![Page 52: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/52.jpg)
Organização alternativa para o time?• Processo Dirigido a Planos requer uma extensiva documentação e
planejamento e seu sucesso depende da experiência do gerente
• Como devemos organizar um time Ágil?
• Existe alguma alternativa a organização hierárquica com um gerente que coordena o projeto?
52
![Page 53: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/53.jpg)
SCRUM: Organização do time
• Time para “Duas Pizzas” (4 a 9 pessoas) • Scrum é inspirado por pequenas reuniões frequentes
• 15 minutos todo dia, no mesmo lugar e hora • Para aprender mais: Agile Software Development with Scrum by Schwaber & Beedle
53
Bezos, lots of companies, (2 pizza teams in more people)
Need a way to self-organizeScrum – penalty
Standup Meeting
Its 9:08, over by 9:23
What happens at meeting – go
![Page 54: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/54.jpg)
Daily SCRUM Agenda• Responda 3 perguntas nas “daily scrums”:
1. O que foi feito ontem? 2. O que está planejado para hoje? 3. Há algum impedimento ou obstáculo?
• Ajuda as pessoas a identificar o que elas precisam
54
Go around in a circle
By understanding what each team member was doing, the team can identify work that would help others make more rapid progress
This would unblock me if you would do this first
Most is common sense
![Page 55: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/55.jpg)
Papéis do Scrum• Time: times com tamanho 2-pizza que entregam SW • Scrum Master, membro do time que
• Atua como um facilitador que organiza reuniões diárias • Mantêm o backlog do trabalho a ser feito e o time focado • Grava decisões e mede o processo usando o backlog • Comunica-se com os clientes e a gerência fora da equipe. • Remove os impedimentos e obstáculos que impede o time
de fazer progresso no projeto
55
Not the manager – SM is supposed to be the buffer so team can concentrate
![Page 56: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/56.jpg)
Papéis do Scrum• Product Owner: um membro do time (não é o
Scrum Master) que representa a voz do cliente e prioriza as histórias do usuário
56
Team member, not the scrum master, represents customer at daily scrums
Also prioritises user stories
![Page 57: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/57.jpg)
Resolvendo conflitos• e.g. Diferentes visões em uma determinada decisão técnica • Primeiramente liste todos os itens em que os lados concordam
• Ao invés de começar pelas diferenças • Descobriu que estão mais próximos do que imaginavam?
• Cada lado articula argumentos do outro, mesmo que não concorde com eles • Evita confusões sobre termos ou suposições, que pode ser a verdadeira
causa do conflito
57
![Page 58: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/58.jpg)
Resolvendo conflitos• Confronto construtivo (Intel)
• Se você tem uma forte opinião que uma pessoa está propondo uma solução errada tecnicamente, você é obrigado a trazer isso à tona, mesmo que seja o seu chefe
• Discordo e compromisso (Intel) • Uma vez tomada uma decisão, todos precisam abraçá-la e seguir em frente • “Eu discordo, mas eu vou ajudar mesmo que não concorde”
• Resolução de conflitos é muito útil inclusive na vida pessoal!
58
![Page 59: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/59.jpg)
Programação em ParesPair Programming
59
(Engineering Software as a Service §10.2)
University is a chance to make mistakes at university
![Page 60: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/60.jpg)
Duas mentes são melhores do que uma?• O Estereótipo do programador é o lobo solitário que
trabalha na madrugada bebendo Red Bull • Há uma forma mais social de trabalhar?
• Quais os benefícios de ter várias pessoas programando juntas?
• Como prevenir que uma pessoa faça todo trabalho sozinha enquanto a outra está navegando no facebook?
60
![Page 61: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/61.jpg)
Programação em Pares• Goal: improve software quality, reduce time to completion by
having 2 people develop the same code • Some people (and companies) love it • Try in discussion sections to see if you do • Some students in the past have loved it and used for
projects
61
![Page 62: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/62.jpg)
Programação em Pares
• Sente-se lado a lado, com telas para ambos • Sem computador pessoal; muitos disponíveis para qualquer um usar • Para evitar distrações, sem leitor de email, browser, IM...
62
Sarah Mei and JR Boyens at Pivotal Labs
We know that MultiTasking is distracting, so these are real workstations with no facebook, email, twitter, …
Don’t check email between 8AM and 5PM
Productivity improves
New employees say tired after 8 hours
Go home at night and don’t do programming at home
SV Management technique is buying dinner
![Page 63: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/63.jpg)
Programação em Pares• Guia entra com o código e pensa estrategicamente como completar a tarefa,
explicando as decisões enquanto codifica • Observador revisa cada linha de código escrita, e atua como um dispositivo de
segurança para o guia • Observador pensa estrategicamente sobre o problemas e desafios futuros, e
faz sugestões ao guia • Deve haver MUITA conversa e concentração • Os papéis devem se alternar
63
Talking out loud while work (like surgeon on TV)
Driver short term, Observer long termHave to Alternatve
![Page 64: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/64.jpg)
Avaliação da Programação em Pares• PP acelera quando a complexidade da tarefa é pequena • PP eleva a qualidade quando a complexidade é alta
• Curiosamente, o código também fica mais legível • Mais esforço do que na programação solo? • Compartilhamento de conhecimento
• Idiomas de programação, truques em ferramentas, processos, tecnologias... • Muitos times propõe trocar os pares por tarefa
• Eventualmente, todos podem estar “pareados” (“promiscuous pairing”)
64
But Pivotal Labs denies it
More senior and more junior
“promiscuous pairing”
Does it factor in distraction
![Page 65: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/65.jpg)
PP: fazer & Não Fazer• Não mexa no seu smartphone quando for o observador • Considere formar o par com alguém com diferente nível de
experiência que você – os dois irão aprender algo! • Forme pares frequentemente – o aprendizado é bidirecional e
papéis exercitam diferentes habilidades • O observador exercita a habilidade de explicar seu processo
de pensamento ao guia 65
Concentrate on task at hand (not phone)
Great if mismatch to learn
![Page 66: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/66.jpg)
Identificando o que está errado: smells, métricas, SOFAhttp://pastebin.com/gtQ7QcHu
66
(ESaaS §9.5)
![Page 67: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/67.jpg)
Além da Corretude• Podemos dar feedback sobre beleza de software?
• Orientações sobre o que é belo? • Avaliações qualitativas? • Avaliações quantitativas? • Se sim, quão bem eles funcionam? • E existem ferramentas para nos apoiar?
67
![Page 68: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/68.jpg)
Qualitativo: Code Smells• CUPA (do inglês SOFA) captura sintomas que muitas vezes indicam o
"cheiro" código: • É Curto (Short)? • Ele faz apenas Uma (One) coisa? • Será que ela tem Poucos (Few) argumentos? • É um nível consistente de Abstração (Abstraction)?
• Ex: A ferramenta reek do Rails encontra "cheiro" de código68
Code smell alerts you that something may be wrong20 to 60 code smells depending on authorityCode spend several lectures on them, but just give an idea now
Methods that don’t follow this advice will often give off several of the smells
Short – depends on language (More than 1 screenful for old monitors) – try to do one thing, and quickly grasp
old terminals used to be 24 lines by 80 characters, so short fit in one screen Today windows are tremendously larger, so not a good guideline Want to look at method and quickly figure out what it is
One thing – may just call a bunch of methods do this
![Page 69: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/69.jpg)
Único Nível de Abstração• Tarefas complexas precisam do “dividir para conquistar" • Bandeira amarela para "encapsular essa tarefa em um método" • Como uma boa notícia, as classes e métodos deve ler “de cima para baixo"!
• Bom: começar com um resumo de alto nível dos pontos-chave, em seguida, entrar em cada ponto em detalhe
• Bom: cada parágrafo lida com um tópico • Bad: divagar, saltando entre "níveis de abstração", em vez de refino
progressivamente
69
Concentrate on Abstraction since correlated and Most rapidly makes your code start to make ugly, correleates well with other smellsDivide and Conquer: Don’t have one method that does everything. Divide into understandable pieces, and have methods call others
One that orhestrates all the work
Symptom – 1 line of code says what to do, many lines of code around it saying how to do it
One of other SOFA is mulitple rguments
![Page 70: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/70.jpg)
Por que Muitos Argumentos é Ruim?• Difícil de obter uma boa cobertura de testes • Difícil de fazer mock/stub durante o teste • Argumentos booleanos devem ser uma bandeira amarela
• Se a função se comporta de forma diferente com base no valor booleano do argumento, talvez deva ser 2 funções
• Se os argumentos "viajam em um pacote", talvez você precisa extrair uma nova classe • Mesmo conjunto de argumentos para um monte de métodos
70
If behavior really depends on lots of arguments, then lots to test
Also makes it hard to mock/stub if many args interact
Boolean – made 1 method harder to test than 2 methods
![Page 71: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/71.jpg)
Program X & Smellstime_setterTimeSetter#self.convert calls (y + 1) twice (Duplication) .rb -- 5 warnings:
1. TimeSetter#self.convert calls (y + 1) twice (Duplication)
2. TimeSetter#self.convert has approx 6 statements (LongMethod)
3. TimeSetter#self.convert has the parameter name 'd' (UncommunicativeName)
4. TimeSetter#self.convert has the variable name 'd' (UncommunicativeName)
5. TimeSetter#self.convert has the variable name 'y' (UncommunicativeName)
71
class TimeSetter def convert(d) y = 1980 while (d > 365) do if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) if (d > 366) d -‐= 366 y += 1 end else d -‐= 365 y += 1 end end return y end end
A little Ruby goes a long way; if stare at a long time and can’t figure it out, its too long
Not DRY (y+1)
Uncommunicative variables- Suppose hebrew calendar, suppose not english
![Page 72: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/72.jpg)
Quantitativo: Complexidade ABC• Contagens de Assignments, Branches e Condições
• Branching -> :and, :case, :else, :ir, :or, :rescue, : until, :when, :while
• Pontuação = raiz quadrada (A^2 + B^2 + C^2) • NIST (National Inst Stds. & Tech...): ≤ 20 / método • Ex: Ferramenta flog do Rails verifica a complexidade ABC
72
Branching terms are :and, :case, :else, :if, :or, :rescue, :until, :when, :while. NIST – standard for gov’t contracts
![Page 73: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/73.jpg)
Quantitativo: Complexidade Ciclomática (McCabe)• # de caminhos linearmente independentes no código = E-N+2P (edges, nodes, connected components)
• No exemplo, E=9, N=8, P=1, so CC=3
• NIST (Natl. Inst. Stds. & Tech.): ≤ 10/módulo
73
def mymeth while(...) .... end if (...) do_something end end
Ferramenta saikuro do Rails calcula a complexidade ciclomática
a graphical measurement of the number of possible paths through the normal flow of a programNode is basic blockConnected components
Also called McCabe Complexity, after the inventor
![Page 74: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/74.jpg)
Quantitativo: Métricas
• “Hotspots”: lugares onde várias métricas levantam bandeiras vermelhas •add require 'metric_fu' to Rakefile•rake metrics:all
• Considere as métricas com um grão de sal • Como cobertura, melhor para identificar onde há oportunidade de melhoria
74
Metric Tool Target scoreCode-to-test ratio rake stats ≤ 1:2C0 (statement) coverage SimpleCov 90%+Assignment-Branch-Condition score
flog < 20 per method
Cyclomatic complexity saikuro < 10 per method (NIST)
Several tools point to difficulties than get your attention
![Page 75: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/75.jpg)
Ano Bissexto & Quantitativo• ABC contou 23
(>20 então é um problema))
• Complexidade do código 4 (≤ 10 então não é um problema)
75
class TimeSetter def convert(d) y = 1980 while (d > 365) do if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) if (d > 366) d -‐= 366 y += 1 end else d -‐= 365 y += 1 end end return y end end
![Page 76: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/76.jpg)
Ano Bissexto Revisado & Métricasprivate def self.leap_year?(year) year % 400 == 0 || (year % 4 == 0 && year % 100 != 0) endend
• Reek: No Warnings • Flog (ABC):
• TimeSetter.convert = 11 • TimeSetter.leap_year? = 9
• Saikuro (Code Complexity) = 5
76
class TimeSetter def self.convert(day) year = 1980 while (day > 365) do if leap_year?(year) if (day >= 366) day -= 366 end else day -= 365 end year += 1 end return year end
![Page 77: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/77.jpg)
Comentários devem descrever coisas que NÃO são óbvias a partir do código "por quê", não "o quê"
77
* This means 2 things for writing comments: * Don't just repeat what's obvious from the code * Do think about what's not obvious (low level and high level): * The units for variables, invariants * Design issues that went through your mind while you were writing the code: why the code is written this way. * Subtle problems that required a particular implementation * Abstractions: * Goal is to write classes and other code that hides complexity: easier to use than to write * Abstractions won't be obvious from implementation; comments should describe these (should be simple). * For example, what do I need to know to invoke a procedure? I shouldn't have to read the code of a procedure before calling
![Page 78: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/78.jpg)
Bad Comments
78
// Add one to i. i++;
// Lock to protect against concurrent access.SpinLock mutex;
// This function swaps the panels. void swap_panels(Panel* p1, Panel* p2) {...}
* Most software is poorly documented * A lot of code has no comments at all * Many open source projects set a very bad example * When present, comments often not helpful * Many people think comments are a bad idea * Not useful * Out of date * Clutter the code * "Just let me read the code!"
![Page 79: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/79.jpg)
Comments (cont)• Comentários devem ter um nível de abstração maior do que o código
79
# Scan the array to see if the symbol exists
not
# Loop through every array index, get the# third value of the list in the content to# determine if it has the symbol we are looking# for. Set the result to the symbol if we# find it.
* The biggest problem is that most people don't know how to write comments.* "My code is self-documenting" (one of the great lies) There are many other facets of writing good documentation, but this one rule will get you most of the way.
Armando agrees with Why?* Alas, can’t scale
![Page 80: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/80.jpg)
Introdução a Behavior-Driven Design & User Stories
80
Next ChapterBeen preparing for building SaaS apps; now ready to build
![Page 81: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/81.jpg)
Por que projetos de SW falham?• Não atendem a necessidade dos clientes
• Não é o que eles pediram/querem • Ou os projetos estão atrasados/atrasam • Ou estão acima do orçamento (custo) • Ou são difíceis de manter e evoluir • Ou todas as alternativas acima • Como o Metodologias Ágeis tentar evitar este fracasso?
81
![Page 82: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/82.jpg)
Ciclo de Vida Ágil :: Revisão• Trabalhar em estreita colaboração, de forma contínua com as partes interessadas na
elaboração de requisitos, testes • Usuários, clientes, desenvolvedores, programadores de manutenção, operadores,
gestores de projectos... • Manter um protótipo de trabalho (funcional) durante a implantação de novos recursos a
cada iteração • Tipicamente a cada 1 ou 2 semanas • Em vez de cinco fases principais, meses de duração
• Verifique com as partes interessadas sobre o que está próximo, para garantir a construção da coisa certa (vs. verificar)
82
![Page 83: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/83.jpg)
Behavior-Driven Design (BDD)• BDD faz perguntas sobre o comportamento da app antes e durante o
desenvolvimento, para reduzir falhas de comunicação • Validação vs. Verificação
• Requisitos escritos como histórias de usuário • Leves descrições de como a app é utilizada
• BDD concentra-se no comportamento de execução da aplicação ao invés da sua implementação • Test-Driven Design ou TDD (em breve) testa a implementação
83
![Page 84: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/84.jpg)
User Stories• 1-3 sentenças em linguagem natural (cotidiana)
• Se encaixa em um cartão 3"x5" • Escrito por/com cliente
• Formato "connextra": • nome do recurso/característica (feature) • Como um [tipo de stakeholder], • Para que [eu possa alcançar algum objetivo], • Eu quero [fazer alguma tarefa] • As 3 frases devem estar lá, podem estar em qualquer ordem
• Ideia: histórias de usuário podem ser formuladas como testes de aceitação antes que o código seja escrito
84
Dave Patterson created this imageFrom HCI community
![Page 85: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/85.jpg)
Por que cartão 3x5?• (a partir da comunidade de User Interface) • Nonthreatening => todos os stakeholders participam do brainstorming • Fácil de reorganizar => todos os stakeholders participam na definição
de prioridades • Como histórias devem ser curtas, fica fácil de mudar durante o
desenvolvimento • Muitas vezes temos novos insights durante o desenvolvimento
85
![Page 86: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/86.jpg)
Diferentes stakeholders podem descrever o mesmo comportamento de formas diferentes
• Veja quais dos meus amigos estão indo para um show • Como admirador de show • Para que eu possa apreciar o show com meus amigos • Eu quero ver qual dos meus amigos do Facebook estão indo a um determinado show
• Mostrar patrono de amigos do Facebook • Como gerente de bilheteria • Para que eu possa induzir um patrono para comprar um bilhete • Eu quero mostrar-lhe qual de seus amigos do Facebook está indo para um
determinado show
86
![Page 87: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/87.jpg)
Product Backlog• Sistemas reais tem 100s de histórias de usuário • Backlog: histórias de usuário ainda não concluídas • Priorizar os itens mais valiosos • Organizar para que eles correspondam ao SW liberado ao
longo do tempo
87
![Page 88: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/88.jpg)
Problemas Relacionados (Related Issue)
• Spike • Investigação corriqueira em uma técnica ou problema • e.g. spike on recommendation algorithms
• Após a spike concluída, o código deve ser descartado • "Agora que sei o que utilizar, vou fazer certo!"
88
![Page 89: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/89.jpg)
Points, Velocity, and Pivotal Tracker89
![Page 90: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/90.jpg)
Produtividade e Ferramentas• Queremos evitar grande esforço de planejamento nas
Metodologias Ágeis? Se sim, como estimar o tempo sem um plano?
• Histórias do Usuário podem ser usadas para medir o progresso no projeto?
• O que uma ferramenta deve fazer para ajudar a medição de progresso para Metodologias Ágeis?
90
![Page 91: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/91.jpg)
Medindo Produtividade• Uma medida de produtividade da equipe: calcular a média de
histórias/semana? • Mas algumas histórias são muito mais difíceis do que outras
• Avalie cada história de usuário com antecedência em uma escala numérica simples • 1 para histórias simples, 2 para histórias médias, 3 para histórias
muito complexas • Velocidade: número médio de pontos/semana
91
Start with this 3 point scale
Why good idea?See what you actually accomplish in points per week vs. what you guess as optimistic programmersTeams learns to get estimate difficulty of user story (gave a story 1 point but took 2 weeks; why was it hard? Learn from mistakes)
![Page 92: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/92.jpg)
Mais sobre Pontos• Depois de ganhar a experiência, a escala Fibonnaci é uma boa sugestão: 1, 2, 3, 5,
8 • (Cada novo número é a soma dos dois anteriores) • Na Ustore, 8 é extremamente rara
• Equipes atribuem valor: voto, mantendo-se os dedos simultaneamente, tirar média • Se uma grande discordância aparece (2 e 5), tem que discutir mais sobre a
história
92
How decide points – rock, paper, scissors – everyone says how many points a story is, and see if agreeGroup says average and record so can see how well you did - rather
![Page 93: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/93.jpg)
Mais sobre Pontos• ≥ 5 => divida a história em histórias mais simples
• backlog não muito exigente • Não importa se a velocidade é 5 ou 10 pontos por iteração
• Desde que seja consistente • A ideia é melhorar a auto-avaliação e sugerir um número de
iterações para um dado conjunto de features
93
At Ustore, break into multiple storiesEvery time there is a SW concept, some builds a tool to implement idea to make it easy to do
![Page 94: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/94.jpg)
Pivotal Tracker• Calcula a velocidade para o time e gerencia as HU: Current, Backlog, Icebox
94
Pivotal Labs brought us Pivotal TrackerBookkeeping for user stories, as long as doing that, might as well calculate velocityUpper right corner is team velocity (10)
Very easy to useCurrentDoneBacklog (not shown) – what work on nextIcebox – invent more stories than will ever implement (frozen)Pivotal will move things from backlog to current automatically and assign people to the tasks
Top to bottom is prioritized order (except in icebox, it is random)
![Page 95: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/95.jpg)
Pivotal Tracker• Priorizar histórias de usuários pela localização: Current, Backlog, Icebox • Quando concluído, mova para o painel Done • Pode adicionar pontos de release lógicos, assim podemos descobrir
quando um release realmente vai acontecer • pontos pendentes / velocidade
• Epic (com o próprio painel) • Combine as histórias de usuário relacionadas • Ordenadas independente das histórias do usuário no Backlog
95
Epic: give software engineers the big picture of where the application is in the development process with regard to big feature
Will put into backlog with Release Point
Tracker will estimate when Release Point looks to be
Tell customer as go along
![Page 96: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/96.jpg)
Rastreie papéis• Desenvolvedores não decidem quando a história foi completada
• Clique no botão Finish, que a envia ao "Product Owner" (como em uma equipe Scrum)
• PO avalia a história do usuário e então decide • Aceitar, que marca história de usuário como feita, ou • Rejeitar, que marca história com a necessidade de ser
reiniciada pelo desenvolvedor96
Follow scrum roles, Product owner signs offWe use it for the book
![Page 97: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/97.jpg)
Pivotal Tracker: Features vs. Chores• Features
• Histórias de usuários que fornecem valor de negócio verificável para o cliente • "Adicionar checkbox de concordo à página" • Pontos valiosos e, portanto, deve ser estimado
• Chores • HU que são necessárias, mas não fornecem nenhum valor óbvio diretamente ao
cliente • "Descubra porque a suíte de testes é tão lenta" • Não há pontos
97
![Page 98: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/98.jpg)
Team Cyberspace Whiteboard• Tracker permite anexar documentos às HUs (e.g., LoFi UI) • Wiki no repositório Github • Google Drive: criação colaborativa e visualização de diagramas,
apresentações, planilhas e documentos de texto • Campfire: web-based service for password-protected online chat
rooms (http://campfirenow.com) • Telegram (http://telegram.org); Slack (http://slack.com); Google
Hangout…98
![Page 99: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/99.jpg)
SMART User Stories 99
![Page 100: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/100.jpg)
Criando Histórias do Usuário
• Como você sabe se você tem uma história do usuário boa ou ruim? • Tamanho certo? • Não é muito difícil? • Vale a pena?
100
![Page 101: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/101.jpg)
SMART HU• Specific • Measurable • Achievable (idealmente, implementado em 1 iteração) • Relevant (“os 5 porque's”) • Timeboxed (saber quando desistir)
101
![Page 102: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/102.jpg)
Specific & Measurable• Cada cenário deve ser testável
• Implica em conhecer boas entradas e existir os resultados esperados
• Anti-exemplo: "UI deve ser user-friendly" • Exemplo: Given/When/Then.
1. Dada alguma condição de partida específica(s), 2. Quando eu faço X, 3. Em seguida, uma ou mais coisas devem acontecer
102
![Page 103: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/103.jpg)
Achievable• Completar em 1 iteração • Se não puder entregar recurso na 1 iteração, entregar
subconjunto de histórias • Sempre apontar para o código de trabalho @ final de iteração • Se <1 história por iteração, precisamos melhorar estimativa
pontual por história
103
![Page 104: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/104.jpg)
Relevant: “business value”• Descubra o valor de negócio, ou mate a HU:
• Proteger as receitas • Aumentar a receita • Gerenciar o custo • Aumentar o valor da marca • Tornar o produto notável/reconhecido • Fornecer mais valor agregado aos seus clientes
• Um bom exemplo: http://wiki.github.com/aslakhellesoy/cucumber
104
![Page 105: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/105.jpg)
5 "Porquê’s" para encontrar relevância• Show patron’s Facebook friends
• As a box office manager • So that I can induce a patron to buy a ticket • I want to show her which Facebook friends are going to a given show
1. Why? 2. Why? 3. Why? 4. Why? 5. Why?
105
Why add the Facebook feature? As box office manager, I think more people will go with friends and enjoy the show more.Why does it matter if they enjoy the show more? I think we will sell more tickets.Why do you want to sell more tickets? Because then the theater makes more money.Why does theater want to make more money? We want to make more money so that we don’t go out of business.Why does it matter that theater is in business next year? If not, I have no job.
![Page 106: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/106.jpg)
5 Porquê’s para encontrar relevância1. Why add the Facebook feature? As box office manager, I think more people
will go with friends and enjoy the show more. 2. Why does it matter if they enjoy the show more? I think we will sell more
tickets. 3. Why do you want to sell more tickets? Because then the theater makes more
money. 4. Why does theater want to make more money? We want to make more money
so that we don’t go out of business. 5. Why does it matter that theater is in business next year? If not, I have no job.
106
![Page 107: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/107.jpg)
Timeboxed• Pare a HU quando ultrapassar orçamento tempo
• Desista, divida em histórias menores ou reagende o que for deixado de lado
• Para evitar subestimar o tamanho do projeto • Pivotal Tracker rastreia a velocidade, o que ajuda a evitar
esta subestimação
107
![Page 108: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/108.jpg)
Lo-Fi UI Sketches and Storyboards108
![Page 109: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/109.jpg)
Construindo UI com sucesso• Apps SaaS vezes atrapalham usuários • As histórias de usuário precisam de Interfaces de Usuário (UI - User
Interface) • Como conseguir clientes para participar de projetos de UI que se
sintam felizes quando finalizado o projeto? • Evite WISBNWIW* em UI? • Versão UI de cartões 3x5?
• Como mostrar a interatividade sem a construção de protótipo?109
* What-I-Said-But-Not-What-I-Want
![Page 110: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/110.jpg)
Projeto de UI em SaaS
• Sketches UI: lápis e papel para desenhar ou “Lo-Fi UI”
110
Lo-Fi: low fidelity
![Page 111: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/111.jpg)
Exemplo de Lo-Fi UI
111
(Figure 4.3, Engineering Long Lasting Software by Armando Fox and David Patterson, Alpha edition,
2012.)
![Page 112: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/112.jpg)
Storyboards
• Necessitam mostrar como a UI muda a partir de ações dos usuários
• IHC (HCI) => “storyboards” • Como cenas em um filme • Mas sem ser "linear"
112
HCI, Human-Computer Interaction
![Page 113: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/113.jpg)
Exemplo de Storyboard para Software
113
(Figure 4.4, Engineering Long Lasting Software by Armando Fox and David Patterson, Alpha edition,
2012.)
![Page 114: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/114.jpg)
Lo-Fi para HTML• É entediante construir sketches & storyboards,
porém mais fácil do que construir HTML! • Além disso, menos intimidador para stakeholders não-técnicos =>
incentivador à sugestão de modificações de UI se não houver código por trás
• Uma maior probabilidade de sucesso com a UI final • Próximos passos: CSS (Cascading Style Sheets)
• Melhorar a aparência depois de funcionando
114
![Page 115: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/115.jpg)
Estimativa de Custo Ágil115
(Engineering Software as a Service §7.4)
![Page 116: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/116.jpg)
Estimativa de Custo Ágil
• O mundo real precisa estimar o custo antes de assinar qualquer termo de compromisso de um projeto
• Se não houver um planejamento nas Metodologias Ágeis, como eu posso estimar o custo de um projeto?
116
![Page 117: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/117.jpg)
Modelo da Ustore• A Ustore ensina Metodologias Ágeis aos clientes • Utilizando Metodologias Ágeis, a Ustore, por exemplo, nunca se
compromete a entregar as features X, Y, and Z até a data D • Ao invés disso, são comprometidos recursos para trabalhar da forma mais
eficiente possível até a data D • Clientes trabalham com o time para definir as prioridades
continuamente até a data D • Ainda assim, necessitamos de estimativas para o projeto
117
![Page 118: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/118.jpg)
Estimativa Ágil da Ustore1. Telefonema de ~1 hora para explicar o método
• Esforço conjunto, compromisso do cliente, … 2. Visitas do cliente de ~1.5 horas para definição/entendimento do escopo
• Clientes leva designer, desenvolvedor, projetos • Qualquer coisa para clarificar o que precisa estar pronto
• Ustore leva 2 engenheiros para fazer perguntas • Identificar o que adiciona incerteza à estimativa
3. Engenheiros tomam ½ hora para estimar as semanas • Pequena vs. grande incerteza: 20-22 vs. 18-26 semanas
4. Custo da oferta como tempo e material para o cliente
118
![Page 119: Desenvolvimento de SaaS / Engenharia de Software como Serviço](https://reader031.vdocuments.net/reader031/viewer/2022020208/563dba5c550346aa9aa4f7a8/html5/thumbnails/119.jpg)
Alguns links para o futuro…• A biblioteca do Desenvolvedor de Software dos dias de hoje • Ensinando Engenharia de Software na Prática, Parte I • Ensinando Engenharia de Software na Prática, Parte II • Computers Are The Future, But Does Everyone Need To Code? • Conselhos de um velho programador antissocial e ranzinza • Evoluindo uma Arquitetura inteiramente sobre APIs: o caso da SoundCloud • Especial: 8 sites gratuitos para aprender programação por conta própria • 12 Sites That Will Teach You Coding for Free
119