Human-Centric Software Engineering COSC 494/594, Spring 2019, Dr. Austin Henley
Today… My experience with SE What is SE? What is human-centric SE? What topics will we cover? What will you get out of this? Course structure
Today… My experience with SE What is SE? What is human-centric SE? What topics will we cover? What will you get out of this? Course structure
My SE experience In undergrad, I made $$$ by making games
My SE experience In grad school, I did 5 internships
My research Tools to make software engineers more productive
My research Tools to make software engineers more productive If you’re interested, I’m hiring PhD students…
Survey! What are your experiences? Internships? Full-time jobs lined up? Have you made $$$ off anything you’ve built?
Today… My experience with SE What is SE? What is human-centric SE? What topics will we cover? What will you get out of this? Course structure
What is Software Engineering? Software engineering is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software. IEEE’s definition
What does SE consist of? Requirements Design Implementation Verification Maintenance
What does SE consist of? Requirements Analysis Design Implementation Planning Requirements Analysis Design Implementation Deployment Testing Evaluation Initial Planning
Software failures cost $1.1 trillion in 2016 Human error Software failures cost $1.1 trillion in 2016 [Tricentis ’17] This not only affects businesses, but everyday people as well…
The “Software Crisis” Since the 1960s (More like a depression) (Standish Group) Of 28,000 projects completed in 2000… (Cutter Consortium) 2002 Study: 78% of orgs landed in court
Although stats improving, challenges remain… More headlines (Oct 2013–Aug 2014) Tech Problems Plague First Day Of Health Exchange Rollout Health Exchange Tech Problems Point To A Thornier Issue It's Easy To Blame The Canadians For HealthCare.gov Problems Sebelius: Hold Me Accountable For HealthCare.gov Debacle Add Security To The List Of HealthCare.gov Tech Issues Oregon's State Exchange May Be Worse Than HealthCare.gov Could A Tech Giant Build A Better Health Exchange? Maybe Not Official In Charge Of Creating HealthCare.gov Steps Down Giving Up On Its Obamacare Exchange No Cure For Oregon's Ills Oregon Sues Oracle For "Abysmal" Healthcare Website ( ) ( )
You can help save the world! Anecdotal experience: New grad? West coast tech will pay $150k salary/stock Masters degree? Expect around $200k
Human-Centric Software Engineering Devs are people! All bugs are caused by people. Flawed requirements Flawed design Flawed implementation So… how do we solve humans? SE includes writing code, design patterns, program analysis, unit testing, code reviewing, etc… Devs write the code. Design patterns help devs. Program analysis points out problems caused by a dev so that the dev can fix it. Human design, implement, and test the software, and often use it too. Too often the human side of things is completely ignored.
Today… My experience with SE What is SE? What topics will we cover? What will you get out of this? Course structure
Broadly… Understanding developer behavior Tools to make developers more productive Evaluating tools
Example topics Productivity Code editors Debugging Program comprehension Version control Continuous integration Documentation API usability Code reviewing Collaboration Software testing Software metrics Refactoring Program analysis Usability of tools End-user programming Visual languages We will look into a subset of these…
Today… My experience with SE What is SE? What topics will we cover? What will you get out of this? Course structure
Real-world knowledge State of the practice on dev tools State of the research on human aspects of dev Goal: make you a better developer & get that job http://flic.kr/p/9DTDXi
Today… My experience with SE What is SE? What topics will we cover? What will you get out of this? Course structure
Course Structure Presentations Participation Project No exams Few lectures How to evaluate dev tools? How to comprehend a large codebase?
Participation Class time is based around discussions Everyone should contribute You’ll be graded on it! Discussions will be led a student Occasional in-class activities Competition: fix a small bug as fast as possible Give feedback on each other’s project May require some effort outside of class (install a tool)
Presentations Everyone will regularly present 10-15 minutes Demo a tool or present a paper Each week will have a theme You have some choice in what you present Based on how many people enrolled… 1 paper presentation and 2 tool demos If you aren’t presenting… at least skim the papers!
Who and what gets presented? Each Friday you can volunteer to present next week I’ll decide the topic and papers You can decide which tools to demo for the topic I’ll provide templates
Example weeks Monday: 2 paper presentations and discussions Wed: 3 tool demos and discussions Fri: 2 tool demos & decide who will present next week Monday: lecture and activity
Project Design, implement, and evaluate a dev tool More details to come…
This course is your oyster Have an interest in a topic? Want to try an activity in-class? Prepping for the job market? Let me know! I might fit it in. This class is meant to benefit you.
Let’s tour the course web page https://tiny.utk.edu/cosc494