Description
Engineering Maintainable Android Apps is a MOOC that demonstrates various methods for engineering maintainable Android apps, such as test-driven development methods and how to develop/run unit tests with JUnit and Robotium, as well as how to successfully apply common Java/Android software patterns to improve the extensibility and clarity of Android apps. Students will work on the appropriate automated unit quizzes based on the lecture videos' content. These lessons will demonstrate the advantages of good software engineering practises for writing maintainable code for mobile apps.
Syllabus :
1. Software Engineering & Testing
- Software Engineering as Search
- Why Test?
- Unit Testing
- Unit Testing with Android Studio
- The Importance of Test Automation
- Code Coverage
- Styles of Testing
- Functional & Non-functional Properties
- Refactoring
- Refactoring and Regression Testing
- Integration Testing
- Integration Testing with Android Studio
- Mock Objects with Android Studio
- UI Testing with Espresso in Android Studio
2. Security & Sustainability
- Security & Sustainability
- Economy of Mechanism
- Economy of Mechanism Example
- Least Privilege
- Least Privilege Example
- Complete Mediation
- Complete Mediation Example
- Secure Defaults
- Secure Defaults Example
- Traditional App Accounts
- Traditional vs. Mobile App Accounts
- App Account Mapping to Linux Users
- Apps Lie & Steal
- How Android Protects Apps
- What Android Does Not Protect
- The Challenges of Secure Coding
- Security Vulnerability Walkthrough
- The iRemember App Example
- Privilege Escalation