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 Domains o Dynamic web sites and applications o Web Plugins and widgets o Web based games o Automation of system admin tasks o Popular choices for learning programming ● Communities o http://phpcommunity.org o https://www.python.org/community/ o https://www.ruby- lang.org/en/community/ o https://plus.google.com/communities/100 875929141897651837
● Problem Domains ● Client/server applications and APIs ● Mobile applications and games ● Communities o http://www.meetup.com/Londonjavaco mmunity/ o http://www.csharpforums.net o http://androidcommunity.com
● Problem Domains o High performance applications o Complex computations o Embedded systems o Computer and console games o Mobile applications and games ● Communities o C - http://www.cprogramming.com o C++ - https://plus.google.com/communities/11 6007775542700637383 o Objective-C - https://plus.google.com/communities/10 3997592872376747208
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 Sessions o Low-cost Hands-on Workshops o Coaching & Mentoring o 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 courses o https://www.coursera.org/ o https://www.udacity.com/ o https://developers.google.com/university/ ● Online tutorials o https://www.khanacademy.org/ o http://www.codecademy.com ● Other online resources o http://www.w3schools.com o http://learncodethehardway.org/
Questions?

Intro to software development

Editor's Notes

  • #16 https://www.linkedin.com/pulse/defining-requirement-types-traditional-vs-use-cases-galal-pmp-itil
  • #20 http://www.slideshare.net/OliverStadie/software-architecture-and-design-an-overview-44135795
  • #22 http://dasunhegoda.com/software-design-patterns/158/
  • #23 http://www.slideshare.net/OliverStadie/software-architecture-and-design-an-overview-44135795
  • #24 Natural Language Examples Kids Make Nutritious Snacks Red Tape Holds Up New Bridge Police Squad Helps Dog Bite Victim Local High School Dropouts Cut in Half [ real news paper headlines, compiled by Rich Pattis ]
  • #29 Python - great first language for beginners available on multiple platforms Ruby - “...focus on simplicity and productivity with an elegant syntax that is natural to read and easy to write” - www.ruby-lang.org PHP - Usually for web programming and “hackers” language of choice
  • #31 http://arihant427.blogspot.co.uk/2014/12/overview-of-c-language.html
  • #33 http://www.slideshare.net/OliverStadie/software-architecture-and-design-an-overview-44135795
  • #46 http://www.mooc-list.com/course/programming-everybody-coursera https://www.coursera.org/course/pythonlearn