Upload
hawkman-academy
View
397
Download
0
Embed Size (px)
Citation preview
Intro to Software Development
Introduction
• Who are we?• What do we do?• Why do we do this?
Agenda
• Software Development Life Cycle• Discovering Software Requirements• Programming Languages• Choosing a Language• Software Development• Software Testing • What next?
SOFTWARE DEVELOPMENT LIFE CYCLE
Waterfall
Waterfall Development
Agile
Agile Development
DISCOVERING SOFTWARE REQUIREMENTS
Traditional Requirements Discovery
Use Cases
Agile Requirements Discovery
Traditional vs. Agile Requirements
SOFTWARE DESIGN
Software Design Process
PROGRAMMING LANGUAGES
Generations● Machine Language (1GL)
o Very low level, tedious and error-prone● Assembly Language (2GL)
o Usually specific to a particular processor family and environment
● High-level Languages (3GL)o Independent of a particular type of computer
hardware● Fourth Generation Languages (4GL)
o Provides a higher level of abstraction than 3GLs
o Closer to natural human languages ● Natural Language
o Ambiguous and hard for computer to understand
Choosing a Language
Useful Criteria● Best suited to the problem you
are trying to solve● Widely available● Widely used
● Problem Domainso Dynamic web sites and applications o Web Plugins and widgetso Web based gameso Automation of system admin taskso Popular choices for learning programming
● Communitieso http://phpcommunity.orgo https://www.python.org/community/o https://www.ruby-lang.org/en/community
/
o https://plus.google.com/communities/100875929141897651837
● Problem Domains
● Client/server applications and APIs
● Mobile applications and games● Communities
o http://www.meetup.com/Londonjavacommunity/
o http://www.csharpforums.net o http://androidcommunity.com
● Problem Domainso High performance applicationso Complex computations o Embedded systemso Computer and console gameso Mobile applications and games
● Communitieso C - http://www.cprogramming.como C++ -
https://plus.google.com/communities/116007775542700637383
o Objective-C - https://plus.google.com/communities/103997592872376747208
Questions?
SOFTWARE TESTING
Verification vs. Validation
Types of Software Testing
V-Model
Software Testing in the SDLC
Traditional vs. Agile Testing
Why Software Testing?
SUMMARY
In Summary...
● Learning Software Development involves a lot more than just learning a programming language…
Aim of this Community● Build a vibrant community of Software
Professionals● Help you Learn Software Development via
o Free Programming 101 Sessionso Low-cost Hands-on Workshopso Coaching & Mentoringo Virtual Internships?
Recommended Approach● Find an interesting problem to solve● Choose a language and learn the
fundamentals and language features● Practice, practice, practice…..● Have fun!
Other Learning Resources● Intensive Courses
o http://www.makersacademy.com o https://generalassemb.ly
● Online courseso https://www.coursera.org/ o https://www.udacity.com/ o https://developers.google.com/university/
● Online tutorialso https://www.khanacademy.org/ o http://www.codecademy.com
● Other online resourceso http://www.w3schools.com o http://learncodethehardway.org/
Questions?