Projects and Software types

What an application is:

  • a model of the rules or “policies” that govern the business in order to make it easier for the users to interact with them.

Greenfield

  • new Projects

  • Can be the case that the project has not been deployed or in use

    • or just in early stages of being in use

Brownfield

Enterprise software

Common features

  • Can be accessed by users for business purpose

  • Integration with other apps

    • types

      • internal (Same department, other department)

      • external/3rd party

      • Human(user, support, devs, business), computer

    • via

      • HTTP (REST/Webservice/soap/graphql)

      • messaging services (jms/activemq)

      • Hessian

      • file exchange (ftp)

      • shared databases

      • email

  • Designed to be modified to meet needs of business

  • Reporting off data for business and functionality

    • Data most important and valuable resource that comes from the use of this application

    • Data warehousing

  • Auditing data

  • Improving efficiencies in the data, no repeated data

  • Can be integrated with current business services

  • Monitoring to diagnose issues and makes sure app is running and alerting if something is wrong or about to go wrong

    • via metrics, status pages and probes, logging

  • Availability & Resilancy

    • does not fall over or break easily

    • Can be fixed easily (the whole app or a specific action that failed)

    • run on many servers and/or in different locations

  • Can handle multiple users

  • Can handle user access for parts or whole of system

    • authorization - who can do what in app

    • authentication - who can access app

  • Can handle lots of actions, calls to the system (transactions)

    • Use of concurrency and parallel techniques

    • scalable application (ie increased replicas)

  • Can handle high intensive operations (calls to the systems) within agreed sla (service level agreements) timelimits

    • expensive calls to 3rd parties waiting for the response

    • calls to long processing services (internal or external)

    • Use of messaging protocols and patterns

      • aysnc integration

    • Use of concurrency and parallel techniques

  • Secure

    • encrypted passwords/usernames for database, version control, logs etc

    • certificates

    • Access to servers and database with necessary permissions

    • GDPR

    • Monitors traffic, access logs

  • Well tested

    • Automated

    • Manual

  • Automated tasks using a scheduler

  • Batch tasks to be done immediately or at specific times, done sync or async/concurrently

    • Use of a queue

  • Can be user facing (gui) or apis/services, which interact with each other.

  • Translation from one format to another, with validation and filtering, so that one part of the organisation can understand and use it.

  • Buisness rules applied

    • happy paths

    • sad paths

  • Does not break easily

    • handles exceptions gracefully

  • Deployment

    • deployed to various environments for testing and prod releases (canary release)

    • make sure the release passes through stringent controls

    • app meets deployment requirements

    • does not break systems when rolled out, can be roll backed

    • properties/config for different environments

    • database

    • Can be deoloyed with little to no down time

  • Well documented

  • Code modular, maintainable and extendable

    • Easy for the business to add or change features, fix bugs within an acceptable time frame instead of rewriting it

  • Decision on design, code, integration etc are made with

    • long term lifespan view,

    • policies of other departments in specifiying, making, testing, releasing and maintaining it, are followed,

    • Users of app needs are met

      • ie clients, business, laws and commissions

Consumer/application software

  • the day-to-day software we rely on to create documents, databases, spreadsheets, presentations, graphics, and more. We use application software, often shortened to applications or apps, to complete a function or even play a game. Enterprise application software falls into this category, as its function is to support the mission of a large enterprise.

  • normal software would be the software made with individuals in mind, i.e. retail software or web applications targeting the general populace. Its success depends on how well it is received by users who in most part are offered a ready-made, 'standard issue' product. The development is an investment and the revenue comes from individual product or ad space sales.

Individual user

  • Web apps, Microsoft office

  • Not crtical for running a business

    -

Business/organisation user

  • Enterprise applications

  • used by different parts or people of the business, ie support, reporting, processing

System software

  • the software programs that help the computer run, like the operating system. Without systems software, we would have to manually enter directions for each task we want a computer to complete. Examples of systems software include Microsoft Windows, Apple’s OS, and others.

Middleware

Front end

Back end

What they do?

  • API Design

  • API Development

  • Database

  • Infrastructure

  • Business Rules and Algorithms

  • Validation of data

  • Transformation of data

  • Communication with services

web services

  • A web service is a service that can be called by an application. These web services are separate programs that are independent from other applications and can be run on different machines.

  • A web service exposes an API (Application Programming Interface) to communicate over a network usually through HTTP (Hyper Text Transfer Protocol). HTTP is an application protocol often used for communication between a web-client and a web-server. A web service exposes a port that gives other programs access to its functionality.

web applications/ web sites

SOA - service oriented architecture

-https://medium.com/@SoftwareDevelopmentCommunity/what-is-service-oriented-architecture-fa894d11a7ec

SOAP

SaaS

  • SaaS is a popular option for users that need to take care of a very specific purpose. In this software model, users typically rent the software, never owning it. SaaS is often hosted in the cloud, requiring users be connected to the internet to use the software and access the data. (Because of this SaaS can also be known as cloud applications.) But, cloud hosting also means that users can access the software widely, from computers, tablets, and sometimes even smartphones. Popular examples of SaaS include Slack, Salesforce.com, Dropbox, and Zendesk

  • its drawbacks may include lack of customization and database maneuvering. The inability to customize this software means it often cannot be specific enough to large-scale, enterprise-wide missions

PaaS

FaaS

Mobile apps

desktop apps

Last updated