How to Make a Desktop Application: A Guide to Development Project Organization
ScienceSoft has been developing desktop applications for multiple platforms since 1989.
The key points of desktop application development
Desktop application development is aimed at building software that is installed on a personal computer so as to provide enhanced data security and enable the full use of PC processing power for response time-sensitive tasks. Desktop applications can also be created to complement a mobile app or provide an offline-alternative to a web app with the intention of ensuring stable performance that isn’t affected by the presence or quality of Internet connection.
Deliverables: Project charter.
You should outline your business needs and, in case you’re developing a desktop software product, analyze the market. Then, you (alone or together with the vendor you work with) describe the functional scope of the future desktop app, including user roles, content, and permission matrix. As a result, high-level project requirements are formulated and documented along with the information and decisions on:
- App’s value or the problems it helps to solve.
- Target app audience.
- Disadvantages of similar existing solutions.
- App’s advantages over competitors (in case of a product app).
- Development risks and constraints (and ways to address them).
- Success metrics (KPIs to measure project success).
- Selected desktop platform(s) and reasons for targeting them.
The discovery phase helps avoid unnecessary expenses at the development stage by providing a foundation for budgetary and time estimations for the project.
Deliverables: Project management plan.
After you’ve outlined your desktop development scope and objectives, you need a project management plan – a document that suggests the necessary design and development efforts while considering business risks and constraints, outlined during the discovery step. All the efforts should be approximately but realistically estimated time-wise and assigned to participant roles. Once you verify this high-level plan, the project moves on to the next phase.
Software design and planning
Deliverables: Software requirements specification, solution roadmap, quality management plan, risk management plan, change procedures, responsibility assignment matrix, final schedule (updated project management plan).
The goal of this step is to create the final documentation that thoroughly lays out the details of the future development process. The key deliverable – a software requirements specification – should contain a desktop app’s purpose, overall description, use cases for different user roles, functional and non-functional requirements, as well as key modules and their interaction in the form of an architecture diagram. The SRS also defines the technology stack (development tools, programming language, key libraries and APIs) and highlights integration details.
Moreover, this final planning step involves documenting the:
- app evolution plan,
- project quality standards and control metrics,
- ways of addressing most possible risks to the success KPIs,
- a matrix that assigns participant roles to certain team members,
- a schedule of assigned tasks,
- methods of handling changes to the schedule.
Use the acquired documents to control the project progress on all further stages.
UX and UI design
Deliverables: UX wireframes, UI mockups.
The app’s functional requirements are first translated into minimalistic wireframes that should give a crude but clear idea of how a user will interact with software. Together, the wireframes constitute a prototype of the app, which is often created with interactive digital tools (Axure RP, Balsamiq, etc.). Once the prototype passes user testing, it is transformed into full-color graphic interface mockups and then handed over to development.
Development and testing
Deliverables: Desktop app, source code, user’s installation guide, system manual for administrators.
Testing is to be performed in parallel with development since code issues are cheaper and easier to fix as early as possible. If uncovered late, such issues can affect the entire code and cause significant delays in the release schedule. The processes of code delivery and testing should be automated when possible using a CI/CD pipeline. If necessary, the QA and development teams can also collaborate to create a user’s installation guide and administrator’s system manual.
Launch and evolution
Depending on whether the app is an internal solution or a commercial product, it is either deployed and integrated with the required corporate infrastructure or released to the public. The second option implies that the app has an installer and is distributed as a .exe/.pkg file on the product website or published on Windows Apps Store or Mac App Store.
If your app is published in an official web store, the store itself takes care of notifying users about updates. But for apps published on other Internet/intranet resources available through HTTP/FTP of file sharing, you’ll need a built-in app logic for an automated update check. Make sure to think of your distribution method ahead.
Analyzes business needs, describes the project scope, composes high-level desktop app requirements, takes part in creating a project management plan.
Creates a project management plan, composes ‘software planning and design’ documentation, keeps track of the development deliverables and deadlines, manages the project team.
Contributes to composing ‘software planning and design’ documentation, provides architectural and engineering oversight of a desktop app development project.
Performs UX research, drafts UX wireframes, and adjusts them during UX testing.
Transforms final UX wireframes into UI design mockups, fixes mockups until final approval.
Delivers code for the desktop app, performs code review, fixes issues on QA’s notices.
Responsible for the automation of a desktop app development and delivery.
Converts requirements into a set of testing cases and scripts, conducts the necessary tests to ensure application consistency with the project quality standards and SRS, logs testing outcomes.
You have full control over the development project but may encounter issues related to a lack of experienced resources.
All processes are in-house, but development is partially outsourced to lower production time. Implies high confidence in the in-house resources’ management and tech skills.
All functions except for project management are outsourced. Requires experienced PM talents in-house but raises questions about their post-project use.
You outsource business analysis, project management, and development but have to allocate efforts for properly managing your vendor.
- Widget toolkit for developing cross-platform desktop apps for Windows, macOS, and Linux.
- Over 1 million users worldwide in 70+ industries.
- Used by BMW, LG, Panasonic, Microsoft, Walt Disney Animation Studios, etc.
- Helped develop such desktop apps as Autodesk 3ds Max, Autodesk Maya, AMD Radeon Graphics.
- C++ programming.
- Framework for building desktop (Windows, macOS, Linux), web, mobile, and IoT apps.
- Open-source with 60,000 developers and 3,700 companies contributing to tool’s improvement.
- Extensively used by Microsoft, General Electric Aviation, Siemens, Academy of Motion Picture Arts and Sciences.
- C#, C++ and Python programming.
The costs of desktop application development vary greatly depending on the app functional scope: from $40,000 for apps with very simple functionality to the $200,000-$400,000 margin and higher for average/high complexity apps.
Below are some of the major factors that define the final price of the project:
General cost drivers
- Type of app development (native vs. cross-platform) and a number of targeted desktop platforms.
- Number and complexity of application features.
- Location and structure of the project team.
- Vendor’s pricing model (in case of cooperation with a vendor).
- Use of any paid development tools.
- UX and UI design efforts.
- Application deployment/distribution costs.
- Application maintenance costs.
Consulting on desktop app development
- Desktop app functional scope definition.
- Project success metrics for stakeholders.
- Long-term app evolution plan.
- Risk management plan.
- Assistance with tech stack definition and methodology choice.
Desktop app development services
- Eliciting business requirements and describing the app scope.
- Formulating functional software requirements.
- Desktop app architecture design.
- UX and UI design.
- Desktop app development and QA.
- Support and evolution.
ScienceSoft is an IT consultancy and software development company based in McKinney, Texas, US. We design and create desktop software for multiple platforms as well as advise our customers on the organization specifics for desktop app development projects.