Professional Software Development, Practices and Ethics
-
date post
19-Oct-2014 -
Category
Technology
-
view
5.972 -
download
16
description
Transcript of Professional Software Development, Practices and Ethics
L E M İ O R H A N E R G İ NL E M İ O R H A N E R G İ N
PROFESSIONAL SOFTWARE DEVELOPMENT, PRACTICES AND ETHICS
S e n i o r S o f t w a r e E n g i n e e r @ S e n i o r S o f t w a r e E n g i n e e r @ G i t t i g i d i y o r / e B a yG i t t i g i d i y o r / e B a y
nmap run completed -- 1 IP address (1 host up) scanneds% sshnuke 10.2.2.2 -rootpw-"Z1ON0101"Connecting to 10.2.2.2:ssh ... successful.Attempting to exploit SSHv1 CRC32 ... successful.Reseting root password to "Z1ON0101".System open: Access Level (9)% ssh 10.2.2.2 -l [email protected]'s password:
RTF-CONTROL> disable grid nodes 21 - 48Warning: Disabling nodes 21-48 will disconnect sector 11 (27 nodes)
ARE YOU SURE ? (y/n)
Grid Node 21 offline...Grid Node 22 offline...Grid Node 23 offline...Grid Node 24 offline...Grid Node 25 offline...Grid Node 26 offline...Grid Node 27 offline...Grid Node 28 offline...Grid Node 29 offline...Grid Node 30 offline...Grid Node 31 offline...Grid Node 32 offline...Grid Node 33 offline...Grid Node 34 offline...Grid Node 35 offline...Grid Node 36 offline...Grid Node 37 offline...Grid Node 38 offline...
How To Become An Ethical Software Professional @ May 2012
Expert Software Engineer, Technical CoordinatorLead DEVELOper, Scrum Master
Senior Software Engineer
https://twitter.com/#!/lemiorhanhttp://www.linkedin.com/in/lemiorhan
B.Sc. Marmara University, CSE, 1997 – 2002M.Sc. Marmara University, CSE, 2002 – 2005
Lemİ Orhan Ergİn
@ GittiGidiyor, eBay
@ SONY EUROPE
@ Bilgisayarla yönetim ve mühendislik
@ Marmara University, Faculty of engineering
Software Engineer
How To Become An Ethical Software Professional @ May 2012
AUTHORS EXPERIENCE● Developing software since 2002● Technical lead on development teams since 2005● Certified Scrum Master since 2009 (trained by Jim Coplien)● Played scrum master role for more than 1 year● Participated Scrum teams for more than 50 sprints
How To Become An Ethical Software Professional @ May 2012
SOFTWARES ARE BORN TO FAIL
How To Become An Ethical Software Professional @ May 2012
PROJECTS ARE FAILING!SATISH GROUP INVESTIGATES
If building engineers built buildings with the same care as software engineers build systems, the first woodpecker to come along would be the end of civilization as we know it.
“Top 10 Reasons Why Systems Projects Fail”Dr. Paul Dorsey
How To Become An Ethical Software Professional @ May 2012
60BIL LIO N D OL LAR S
Equals to US millitary spending in Iraq and Afghanistan wars
Annual cost to USA economy of poor quality software
How To Become An Ethical Software Professional @ May 2012
The basic problem is
LOW QUALITY SOFTWARE
WHAT'S THE PROBLEM WITH SOFTWARE?
● Lack of User Involvement● Lack of Transparency● Long or Unrealistic Time Scales● Poor or No Requirements● Bad Scope Management● Poor Development Quality● Poor Testing & Quality Assurance● Inaduequate Development Methodology● Poor Technical Knowledge and Experience 7th November 1940. Tacoma Narrows suspension bridge,
in Puget Sound, Washington, USA http://www.answers.com/topic/galloping-gertie-large-image#ixzz1q2uRmnLK
How To Become An Ethical Software Professional @ May 2012
CIA Gives the Soviets Gas
COST: Millions of dollarsSignificant damage to Soviet economy
(1982)
Control software produced intense pressure in the Trans-Siberian gas pipelineResulted in the largest man-made non-nuclear explosion in Earth’s history
CIA operatives allegedly planted a bug in a Canadian computer system purchased by the Soviets
The CIA sabotaged the software so that it would pass Soviet inspection
but fail in operation
How To Become An Ethical Software Professional @ May 2012
World War III… Almost (1983)
Cost
● Almost all of humanity
Disaster
● Soviet early warning system indicated the U.S. had launched 5 ICBMs
● The human operator thankfully interpreted this as an error
Cause
● A bug in the software failed to filter out false missile detections caused by sunlight reflecting off cloud-tops
How To Become An Ethical Software Professional @ May 2012
Wall Street Crash (1987)
Cost
$500,000,000,000 in one day
Disaster
“Black Monday”, October 19, 1987Dow Jones lost 22.6% of its value S&P 500 dropped 20.4%
Cause
Trading programs generated a flood of sell orders, overwhelming the marketSystems crashed and left investors effectively blind
How To Become An Ethical Software Professional @ May 2012
Mars Polar Lander… err, Crasher (1998)
Cost : $125,000,000
Disaster : After a 286-day journey from Earth, the Mars Climate Orbiter fell too far into Mars’s atmosphere, causing it to crash
Cause : The software that controlled the Orbiter thrusters used imperial units (pounds of force), rather than metric units (Newtons) as specified by NASA
How To Become An Ethical Software Professional @ May 2012
Sony lost 70 million user's details (2011)
Cost :Reputation & Approx. 3.2 billion of dollars LOST, Re-branding PSN to SEN
Disaster:PlayStation Network hacked and 70 million credentials, billing and user information may have been stolenHacked TWICE! in a row
Cause:External intrusion by a security breach
How To Become An Ethical Software Professional @ May 2012
Half day off in İMKB (2012)
How To Become An Ethical Software Professional @ May 2012
Can you develop bug free code? NO WAY!Like no one is perfect, no code can be bug free!
code should have high quality standardsHowever...
How To Become An Ethical Software Professional @ May 2012
"The worst outcome is not failure — it’s mediocrity. Failure lets you move on, mediocrity stalls you and keeps you from
reaching your potential. Pursue something so important that even if you fail, the world is better off with you having tried."
Drew Houston (founder/CEO of Dropbox)
How To Become An Ethical Software Professional @ May 2012
Good software is developed by good developers
High quality software can only be developed by
Professional SOFTWAREDEVELOPERS
How To Become An Ethical Software Professional @ May 2012
waterfallAgile developmentsoftware craftsmanshıppractıces to knowethıcs ın software engıneerıngethıcs ın development
AGENDA
How To Become An Ethical Software Professional @ May 2012
The Horizon of Predictability
Uncertainty is part of every innovative and creative development process
How To Become An Ethical Software Professional @ May 2012
WaterfallAproach
How To Become An Ethical Software Professional @ May 2012
Features of a Waterfall Model
Easy to follow For any size project Every stage has to be done separately at
the right time so you cannot jump stages. Documentation is produced at every
stage allowing people to understand what has been done.
Testing is done at every stage.
How To Become An Ethical Software Professional @ May 2012
Realities of Waterfall Model If requirements may change, the Waterfall model cannot
work. It is impossible to make one stage of the projects life cycle
perfect. Difficult to estimate time and cost for each stage of the
development process. Constant testing of the design is needed.
How To Become An Ethical Software Professional @ May 2012
Original Paper of Waterfall Model
MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS
Dr. Winston W. Royce, 1970
The implementation is risky and invites failure
How To Become An Ethical Software Professional @ May 2012
SIMPLICITY of Waterfall Model
How To Become An Ethical Software Professional @ May 2012
The Agile Paradigm emraces change, unpredictability and unforseen complexity as inescapable constants in all product development
Traditional
Customer knows what he wants Engineer knows how to build it Nothing changes along the way
Agile
Customer discovers what he wants Engineer discovers how to build it Things change along the way
How To Become An Ethical Software Professional @ May 2012
waterfallAgile developmentsoftware craftsmanshıppractıces to knowethıcs ın software engıneerıngethıcs ın development
AGENDA
How To Become An Ethical Software Professional @ May 2012
The Agile Manifesto
www.agilemanifesto.org
Individuals and interactions PROCESS AND TOOLS
WORKING SOFTWARE COMPREHENSIVE DOCUMENTATION
CUSTOMER COLLABORATION CONTRACT NEGOTIATION
RESPONDING TO CHANGE FOLLOWING A PLAN
OVER
OVER
OVER
OVER
How To Become An Ethical Software Professional @ May 2012
Agile Principles - I
● Our highest priority is to satisfy the customer through early and continuous delivery of valuable software
● Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
● Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
● Business people and developers must work together daily throughout the project.
● Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
● The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
How To Become An Ethical Software Professional @ May 2012
Agile Principles - II
● Working software is the primary measure of progress.
● Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
● Continuous attention to technical excellence and good design enhances agility.
● Simplicity -the art of maximizing the amount of work not done- is essential.
● The best architectures, requirements, and designs emerge from self-organizing teams.
● At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
How To Become An Ethical Software Professional @ May 2012
The Agile Practices Family
● Extreme Programming (XP)
● Crystal
● Dynamic Systems Development Method (DSDM)
● Test Driven Development (TDD)
● Feature Driven Development (FDD)
● Essential Unified Process
● Scrum
● Kanban
● Lean
How To Become An Ethical Software Professional @ May 2012
Time-boxed Activities
Task are broken down intosmall increments (2-4 weeks),
in which the team works througha full development lifecycle
Minimizes the overall project riskPlanning is easier with frequent release
Allows project to adapt to changes quickly
How To Become An Ethical Software Professional @ May 2012
People ınvolved are People ınvolved are replaceable resourcesreplaceable resources
Agile Teams are small (7 ± 2)Agile Teams are small (7 ± 2)EMPOWEREDEMPOWERED
Cross-functional & Self-OrganizingCross-functional & Self-Organizing
How To Become An Ethical Software Professional @ May 2012
KAIZENINSPECT AND ADAPTContinuous ımprovement
How To Become An Ethical Software Professional @ May 2012
Focus on End-User and Customer
We tend to build the wrong things
Source: Standish Group Study Report
How To Become An Ethical Software Professional @ May 2012
Communication Temperature
Increasing communication temperatureis an important goal of the Agile approach
How To Become An Ethical Software Professional @ May 2012
Why Agile?
How To Become An Ethical Software Professional @ May 2012
Agile Software Development
Agile is an iterative and adaptive approach to software development,
performed in a highly collaborative mannerby self-organizing teams,
with just enough ceremony that produces high quality softwarein a cost effective and timely manner,
which meets the changing needs of its stakeholders.
How To Become An Ethical Software Professional @ May 2012
How To Become An Ethical Software Professional @ May 2012
How To Become An Ethical Software Professional @ May 2012
If you want to move your project forward, the only reliable way to do that is to cultivate a deep sense of software craftsmanship and professionalism around it.
Control is ultimately illusory ON Software development projects
People who show up every day eager to improve their craft will ultimately succeed
TOM
DEM
ARKO
How To Become An Ethical Software Professional @ May 2012
IT is an DISCIPLINE in software development that emphasizes the coding skills of the software developers themselves. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over code quality.
Software Craftsmanship
How To Become An Ethical Software Professional @ May 2012
Software craftsmanshıp Manifesto
manıfesto.softwarecraftsmanshıp.org
Individuals andinteractions
Community ofprofessıonals
WORKINGSOFTWARE
WELL craftedsoftware
CUSTOMERCOLLABORATION
Productıvepartnershıp
RESPONDINGTO CHANGE
Stadılyaddıng value
OVER
OVER
OVER
OVER
PROCESSAND TOOLS
COMPREHENSIVEDOCUMENTATION
CONTRACTNEGOTIATION
FOLLOWINGA PLAN
OVER
OVER
OVER
OVER
How To Become An Ethical Software Professional @ May 2012
waterfallAgile developmentsoftware craftsmanshıppractıces to knowethıcs ın software engıneerıngethıcs ın development
AGENDA
How To Become An Ethical Software Professional @ May 2012
PROGRAMMING LANGUAGE
SCALA
PHP
RUBY
JAVAGROOVY
clojur e
PHY TO N
C
C++
How To Become An Ethical Software Professional @ May 2012
IDE
Intellıj ıdea
eclıpsenetbeans
rubymıne
How To Become An Ethical Software Professional @ May 2012
VERSION Control Systems
CVS
StartTeam
Subversion
GitMercurial
IBM Te am
Co ncert Baz aa r
How To Become An Ethical Software Professional @ May 2012
Branchıng model
How To Become An Ethical Software Professional @ May 2012
Code Hosting
BitBucket
GitHubUn
fudd
le
In-House
How To Become An Ethical Software Professional @ May 2012
Code Buılder
Gradlemaven ıvy
ant
How To Become An Ethical Software Professional @ May 2012
Agile Coach at Googlewhere he is responsible for coaching Googlers
to maintain the high level of automated testing culture
http://misko.hevery.com/
“The secret of testing is writing
testable code”Miško Hevery
How To Become An Ethical Software Professional @ May 2012
TEST DRIVEN DEVELOPMENTADD Test – run test and faıl – wrıte code – run automated test and pass – refactor code – repeat
How To Become An Ethical Software Professional @ May 2012
tes tı ngUnıt INTEGratıon functıonal acceptance regressıon uat Performance
Junıtcucumber
mockıtopowermock
gmocksellenıum
jmeter
MANUAL
How To Become An Ethical Software Professional @ May 2012
It's not worth
writing tests
Unlessyou have
CONTINUOUS INTEGRATION
How To Become An Ethical Software Professional @ May 2012
Continuous ıntegratıon
Jetbraıns teamcıty
Atlassıan bamboo
Hudson/jenkınsanthı llpro
Cruı se c ont rol
How To Become An Ethical Software Professional @ May 2012
Enterprise Environments
Developer
Developer
Developer
SVC CI
Notification Services (email, messaging)
DEV TQA STG PRD
Super User Super User Super User
How To Become An Ethical Software Professional @ May 2012
PRAC
TICE
S Coding standards and guidelinesDatabase standars and guidelinestechnology standardsPair programing and code reviewsCode coverage monitoringOS-IDE-Tool free codingTest Driven Development (TDD)Multi level testing (Unit, Integration, Functional, Performance, Manual)
Enterprice architecture (Development, TestQA, Staging, Production)
Clean code & software craftsmanship principles
How To Become An Ethical Software Professional @ May 2012
waterfallAgile developmentsoftware craftsmanshıppractıces to knowethıcs ın software engıneerıngethıcs ın software development
AGENDA
How To Become An Ethical Software Professional @ May 2012
ACM Code of Ethics and Professional Conducthttp://www.acm.org/constitution/code.html
Bitish Computer Society Code of Conducthttp://www1.bcs.org.uk/DocsRepository/03200/3224/default.htm
IEEE-CS/ACM Software Engineering Code of EthicsAnd Professional Practicehttp://www.computer.org/tab/seprof/code.htm
Versıons of Code of ethıcs
How To Become An Ethical Software Professional @ May 2012
Joint IEEE-CS/ACM Code of Ethics and Professional Practice
● Built on 8 principles Public Interest Client and Employer Product Judgement Management Profession Colleagues Self
● The principle of Public Interest is central to the code.
How To Become An Ethical Software Professional @ May 2012
Publ
ic In
tere
st
Software engineers shall act consistently with the public interest.
Approve software only if they have a well-founded belief that it is safe, meets standards, passes tests and does not diminsh quality of life, privacy or harm the environment.
Disclose any actual or potential danger to the user. Be fair and avoid deception in all statements concerning
software.
How To Become An Ethical Software Professional @ May 2012
Software engineers shall act in a manner that is in the best interests of their client and employer, consistent with the public interest.
Be honest about any limitation of their experience and education.
Keep private any confidential information consistent with the public interest and the law.
Not knowingly use software that is obtained or retained either illegally or unethically.
Clie
nt a
nd em
ploy
er
How To Become An Ethical Software Professional @ May 2012
Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
Strive for high quality, acceptable cost, and a reasonable schedule, ensuring significant tradeoffs are clear.
Ensure adequate testing, debugging, and review of software and related documents on which they work.
Treat all forms of software maintenance with the same professionalism as new development.
prod
uct
How To Become An Ethical Software Professional @ May 2012
Software engineers shall maintain integrity and independence in their professional judgment.
Not engage in deceptive financial practices. Disclose to all concerned parties those conflicts
of interest that cannot reasonably be avoided or escaped.
judg
emen
t
How To Become An Ethical Software Professional @ May 2012
Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
Ensure that software engineers are informed of standards before being held to them.
Offer fair and just remuneration. Not punish anyone for expressing ethical concerns
about a project. man
agem
ent
How To Become An Ethical Software Professional @ May 2012
Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
Promote public knowledge of software engineering. Be accurate in stating the characteristics of software on
which they work. Take responsibility for detecting, correcting, and
reporting errors in software and associated documents on which they work. pr
ofes
sıon
How To Become An Ethical Software Professional @ May 2012
Software engineers shall be fair to and supportive of their colleagues.
Credit fully the work of others and refrain from taking undue credit.
Give a fair hearing to the opinions, concerns, or complaints of a colleague.
In situations outside of their own areas of competence, call upon the opinions of other professionals who have competence in that area. co
llea
gues
How To Become An Ethical Software Professional @ May 2012
Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.
Further their knowledge Improve their ability to create safe, reliable, and useful
quality software Improve their ability to produce accurate, informative, and
well-written documentation.
self
How To Become An Ethical Software Professional @ May 2012
waterfallAgile developmentsoftware craftsmanshıppractıces to knowethıcs ın software engıneerıngethıcs ın software development
AGENDA
How To Become An Ethical Software Professional @ May 2012
Ethı
cs In
Soft
war
e dev
elop
men
tBE THRUSTable, Open & honestdon't blame othersdon't try to be software godshare your knowledgeUse the fırst rule of cooperatıon: help others fırst!Learn and obey copyright lıcenses (GLP, CC, MPL, etc.)resolve patent conflıctsBe careful on copy & pasteDo not steal code Reference to the orıgınal authordo not change references to the orıginal author
How To Become An Ethical Software Professional @ May 2012
Ethı
cs In
Soft
war
e dev
elop
men
tDo not use cracked softwareDo not snıff network to catch credentıalsDo not sell commercial code without permissionDo not write backdoors or bugs on purposeAlways encrypt passwords and credıt card dataDo not sell or share users' dataReport any bugs, any issues noticedDo not close a task until it is really done
How To Become An Ethical Software Professional @ May 2012
Emaıl:lemiorhan@gmaıl.com
Twitter:https://twitter.com/#!/lemiorhan
Linkedin:http://www.linkedin.com/in/lemiorhan
Blog:http://www.flyingtomoon.com
Lemi orhan [email protected]
My Office, Barbaros Mah. Çiğdem Sk. No: 1/14, 34746
Ataşehir / İstanbul
How To Become An Ethical Software Professional @ May 2012
Thank youVery much