grokking techtalk #19: software development cycle in the international monetary fund (imf)
TRANSCRIPT
HOW SOFTWARE/APPLICATION IS MADE IN THE INTERNATIONAL
MONETARY FUND (IMF)Mic Nguyen – Chief Technology Officer, Med2Lab, Inc.
INTRODUCTION• Who is the International Monetary Fund?
• The IMF, also known as the Fund, was conceived at a UN conference in Bretton Woods, New Hampshire, United States, in July 1944.
• Membership: 189 countries• Headquarters: Washington, D.C.• Executive Board: 24 Directors each representing a single country or a group of countries• Staff: Approximately 2,700 + over 5000 contractors from 148 countries• Total quotas: US$668 billion (as of 9/13/16)• Additional pledged or committed resources: US$ 668 billion
• What does IMF do?• Promote international monetary cooperation• Facilitate the expansion and balanced growth of international trade• Promote exchange stability• Assist in the establishment of a multilateral system of payments, and make resources available
(with adequate safeguards) to members experiencing balance of payments difficulties.
Source: http://www.imf.org/en/About
INTRODUCTION (CONT)• How big is the IMF technology team?
• Chief Information Technology Officer: Susan Swart• IT Staff: over 250 employees with advanced technology skills and degrees, and serve
in 189 countries world wide• IT Spending: Around $136 million per year
• What are types of technology that the IMF use?• All IMF employees have issued Apple devices such as iPhone, iPad, Mac computers
with the internal enterprise app store to enhance security and data protection• Microsoft technology such as SharePoint, Microsoft Office Suite and Visual Studio are
standard for communication, productivity and development• Who is making software/application for the IMF?
• The knowledge management and innovative division• Outside vendors• Financial department development team
Source: https://www.imf.org/external/np/bio/eng/ss2.htmSource: http://www.imf.org/external/pubs/ft/ar/2015/eng/fin-budget-income.htm#budget
WHAT DOES THE IMF’S SOFTWARE DEVELOPMENT PROCESS LOOK LIKE?
OVERVIEW SOFTWARE DEVELOPMENT PROCESS IN THE IMF
Requirement Gather ing
Design
Implementation
TestingDocumentation
Secur ity Audit
Deployment
1) Requirement Gathering: Collect requirements from all stakeholders
2) Design: Design software architect and structure
3) Implementation: Develop the application based on the design
4) Testing: Perform testing processes to capture bugs and errors
5) Documentation: Document both business and technical manual
6) Security Audit: Perform security validation to make sure software is ready for deployment
7) Deployment: Push application into the end user environment
DEVELOPMENT ENVIRONMENT
Developer Sandbox Environment
Development Environment
Testing Environment
Staging Environment
Production Environment
1. Developer Sandbox Environment: Local development environment on each developer machine
2. Development Environment: Shared development environment where all developers put their code together
3. Testing Environment: Shared environment for testers to execute testing scripts4. Staging Environment: Replicate production environment to show project stakeholders5. Production Environment: Real environment where end-users use the software/application
TEAM COLLABORATION
Project/Product Owner
Business Analyst
Project Manager
System Architect
UI/UX Designer
Developer
Tester/QA Engineer
Technical Writer
Sample Test Users
Project/Product team size: 15-20 people per team
1. Project/Product Owner: The one has the idea for the product or the project (Idea owner)
2. Business Analyst: Analyze all information to create business requirements and validate the requirements throughout the development process
3. Project Manager: Manage the project scope, budget, resources and time.
4. System Architect: Create/design system structure and architect. Involve in technology selection for project.
5. UI/UX Designer: Design wire-frames and interface of the application
6. Developer: Develop and implement application7. Tester/QA Engineer: Create test plan, test cases and
implement automate testing for the system8. Technical Write: Document both business and technical
manual 9. Sample Test Users: Perform User Acceptance Testing
(UAT)
DO YOU KNOW WHAT TYPE OF THE SOFTWARE DEVELOPMENT METHODOLOGY
THAT THE IMF USES?
SCRUM METHODOLOGY
Source: https://www.scrumalliance.org/why-scrum/core-scrum-values-roles?gclid=CKWG-d_J09QCFdcRvQodNAwPwA
BUT… THE DIFFERENCE BETWEEN SCRUM IN THE IMF AND THE STANDARD IS….
IMF DOES NOT ALLOW ANY PRODUCTION DEPLOYMENT UNLESS THE PRODUCT IS 100% COMPLETED WITH SECURITY AUDIT. THIS IS AN IMPORTANT POLICY DUE TO
THE SENSITIVE INFORMATION PROTECTION RULE WITHN THE ORGANIZATION The standard SCRUM METHOD allows developers to roll out partial system
within the end of each Sprint.
WHAT ARE TOOLS AND TECHNOLOGIES THAT THE ORGANIZATION USES TO DEVELOP
ITS SOFTWARE/APPLICATION?
TOOLS AND TECHNOLOGIES
• IDE (Integrated Development Environment): Visual Studio, Xcode• Source Control and Task Tracking: Team Foundation Server with both TFS and
Git Repository• Team Collaboration: SharePoint and Office 365 Tools• iOS UAT Deployment: TestFlight• iOS Internal App Store Deployment: MobileIron• Cloud Platform and Infrastructure: Amazon Web Services, DevOps (Docker)• Web Technologies: .NET, PHP, Python, MEAN Stack• Native App Technologies: .NET, iOS (Swift)• Encryption Technology: Custom Endpoint Encryption with internal VPN
INTRODUCE TO YOU THE IMF BROWSER AND THE INTERNAL IMF APP ECO SYSTEM
THE IMF BROWSER
IMF Central Server Infrastructure with Advanced Security System
End users
End users
End users
ENDPOINT ENCRYPTION WITH VPN
The IMF Browser only works within IMF devices. It has• 2-endpoint 256 bit encryption with automatic VPN connection• Embedded permission and policy control• Advanced log system to detect abnormal activities• Instantly Report abnormal incident and auto lock down account
THE INTERNET
INTERNAL IMF APP ECO SYSTEM
IMF CORE FRAMEWORK
Financial Apps
Business Apps
Research Apps
Prototypes
• IMF Core Framework is a continuous development framework that is developed by the innovation division.
• IMF Core Framework is the IMF secret weapon that allows developers to build a simple app within 25 minutes
• IMF Core Framework is secured connect to all internal IMF resources including databases, documents, policy control, servers. It is a combination of many smaller frameworks that work together as a network
• IMF Core Framework is only used internally in the Internal IMF App Store call the Internal IMF App Eco System.
WHAT WOULD BE THE CHALLENGES WHEN DEVELOPING APPLICATION IN THE IMF?
WHAT ARE THE CHALLENGES?
• The team might not be physically located in the same place due to IMF is the international organization. Therefore, time differences could cause the project to slow down. Meetings could be a challenge as well due to different time zone.
• Due to the complexity of each project, the development time may be delayed significantly because of bugs and software design problems.
• The team has to follow strict security process for software design and implementation which could cause some limitation for software development
• Sometime, the IMF Core Framework could cause some limitation when developing new application and force developers to implement everything from scratch
SHOULD WE THINK OF APPLYING SOME OF DEVELOPMENT PROCESSES INTO OUR
CURRENT PROJECT?
WHY IS SDLC IMPORTANT?
• Software Development Life Cycle (SDLC) is a GOLD standard for software development which is widely used around the world, especially leader countries such as United States, Japan, European countries…etc
• Applying SDLC helps avoid software development mistakes and improve efficiency and effectiveness
WHAT DO WE LEARN FROM IMF?
We could APPLY:• Full Software Development Life Cycle and Scrum Methodology• Clean and Straightforward processes• Strictly follow all processes• Apply Security Measurement when developing a software• Develop Reusable(Framework) code for quicker future application
development
QUESTIONS?