Planning a software project

Create a plan

Define your software development methodologies

Agile Methodologies with scrum framework

Scrum is not a standardized process where you methodically follow a series of sequential steps that are guaranteed to produce, on time and on budget, a high-quality product that delights customers. Instead, Scrum is a framework for organizing and managing work. The Scrum framework is based on a set of values, principles, and practices that provide the foundation to which your organization will add its unique implementation of relevant engineering practices and your specific approaches for realizing the Scrum practices. The result will be a version of Scrum that is uniquely yours.

Define the plan

  • Write a business plan
  • Write the user stories / requirements depending of the methodology
  • Goals for the app
  • What is the purpose of your app?
    • How will it help simplify the lives of its users?
    • How will it help solve the problems of its users?
    • How do you plan to market it to your target audience?
  • Identify your target audience
  • Brainstorm your idea

Design your idea

Wireframes

  • A low-fidelity way to present a product, can efficiently outline structures and layouts.
  • Wireframe is the basic and visual representation of the design.
  • Your wireframe design doesn’t need to focus too much on minutiae, but must express design ideas and should not miss any important parts.
  • A wireframe is like a channel that helps team member understand their projects better.

Mockup

  • A kind of high-fidelity static design diagram, should demonstrate information frames and statically present content and functions.
  • Unlike a wireframe, a mockup looks more like a finished product or prototype, but it is not interactive and not clickable.
  • It is rather a graphic representation.
  • This can be helpful, for example, to provide investors with a picture of how a finished product can be, and help team members review their project visually.

Prototype

  • Is already very close to the finished product.
  • Here, processes can be simulated and user interaction can be tested.
  • A prototype looks very similar to the finished product.
  • Early prototyping can save a lot of development costs and time so that the work of back-end product architecture will not be in vain because of unreasonable user interface design.
  • A prototype is an excellent tool to obtain user feedback and to test the product.

Plan your app architecture

App architecture sample

A software architecture pattern is a particular arrangement of the available elements into a solution for a recurring problem given a certain context. Given a particular architecture style, we can use the vocabulary of that style to express how we want to use the elements available in that style in a certain way. When this arrangement is a known solution to a common, recurring problem in a particular context, it is a software architecture pattern.

Layered architecture

In a layered architecture, the software application is divided into various horizontal layers, with each layer located on top of a lower layer. Each layer is dependent on one or more layers below it (depending on whether the layers are open or closed) but is independent of the layers above it.

Tiers versus layers

Layers are logical separations of a software application and tiers are physical ones.

When partitioning application logic, layers are a way to organize functionality and components. For example, in a three-layered architecture, the logic may be separated into presentation, business, and data layers. When a software architecture is organized into more than one layer, it is known as a multi-layer architecture. Different layers do not necessarily have to be located on different physical machines. It is possible to have multiple layers on the same machine.

Tiers concern themselves with the physical location of the functionality and components. A three-tiered architecture with presentation, business, and data tiers implies that those three tiers have been physically deployed to three separate machines and are each running on those separate machines. When a software architecture is partitioned into multiple tiers, it is known as a multi-tier architecture.

Client-server architecture (two-tier architecture)

In a distributed application that uses a client-server architecture, also known as a two-tier architecture, clients and servers communicate with each other directly. A client requests some resources or calls some service provided by a server and the server responds to the requests of clients. There can be multiple clients connected to a single server:

Presentation tier

The presentation tier provides functionality for the application’s UI. It should provide an appealing visual design as it is the part of the application that users interact with and see. Data is presented to the user and input is received from users in this tier.

This tier should contain logic to render the user interface, including the placement of data in the appropriate UI components, formatting the data that is presented appropriately, and hiding/showing UI components as required.

Business tier

The business tier, which is sometimes referred to as the application tier, provides the implementation for the business logic of the application, including such things as business rules, validations, and calculation logic. Business entities for the application’s domain are placed in this tier.

The business tier coordinates the application and executes logic. It can perform detailed processes and makes logical decisions. The business tier is the center of the application and serves as an intermediary between the presentation and data tiers. It provides the presentation tier with services, commands, and data that it can use, and it interacts with the data tier to retrieve and manipulate data.

Data tier

The data tier provides functionality to access and manage data. The data tier contains a data store for persistent storage, such as an RDBMS. It provides services and data for the business tier.

There are variations of n-tier architectures that go beyond just three tiers. For example, in some systems, there is data access or persistence layer in addition to a data or database layer. The persistence layer contains components for data access, such as an object-relational mapping (ORM) tool, and the database layer contains the actual data store, such as an RDBMS. One reason to separate these into two distinct layers is if you wanted the ability to switch out your data access or database technology for a different one.

Resurces