Domain Analysis - bounswe/bounswe2024group6 GitHub Wiki

Web Application Development

  • Web application development is the creation of application programs that reside on remote servers and are delivered to the user’s device over the Internet. A web application does not need to be downloaded and is instead accessed through a network. An end user can access a web application through a web browser such as Google Chrome. A majority of web applications can be written in JavaScript, Cascading Style Sheets (CSS), and HTML5.
  • Web application development will typically have a short development life-cycle led by a small development team. Frontend development for web applications is accomplished through client-side programming. Client refers to a computer application such as a web browser. Client-side programming will typically utilize HTML, CSS and JavaScript. HTML programming will instruct a browser how to display the on-screen content of web pages, while CSS keeps displayed information in the correct format. JavaScript will run JavaScript code on a web page, making some of the content interactive.
  • Server-side programming (Backend Development) powers the client-side programming in terms of criterias like performance , reliability and is used to create the scripts that web applications use. Scripts can be written in multiple scripting languages such as Ruby,C#,Java and Python. Server-side scripting will create a custom interface for the end-user and will hide the source code that makes up the interface.This method keeps important information and how the app works safe on the server, where only certain people can see it.
  • In the context of web application development, a database serves as a structured repository for storing, managing, and retrieving data efficiently. It underpins the functionality of web applications by enabling dynamic content generation based on user requests and interactions. Databases ensure data integrity and security, facilitating seamless user experiences through swift access to relevant information. Consequently, they are indispensable for the robust operation of web applications, supporting a wide array of functionalities from user authentication to content management. MySql and MongoDb are some examples of Databases for different needs storing information. Mys

Links

Mobile Application Development

  • The definition of mobile application development is given as the process of making software for smartphones, tablets and digital assistants, most commonly for the Android and iOS operating systems by IBM.

  • If you look to ship the application to multiple mobile platforms (most probably Android and iOS), you might go for an all-native approach and create different codebases for different platforms and use OS-specific APIs and programming languages to build a powerful, performant application (using Swift for iOS app development would be a good example). Or you might want to adopt a write-once-use-anywhere approach to speed up the development process. Apps developed using this approach are called hybrid apps and they are usually built using platform independent languages such as JavaScript, HTML, and CSS.

  • Mobile app developers usually take advantage of powerful frameworks to increase their workflow. React Native, for example, is a popular UI framework.

  • The developers should also take into account that mobile devices come in every size and have varying technical specs and ensure that the app is fully-functional (both interactivity and performance-wise) in every possible mobile device.

  • The developers must also take into account that mobile devices, although having improved drastically within the years, are still being run on battery with scarce resources. Therefore, mobile applications must be as light as possible, putting as less pressure on the hardware as possible.

Linked Data and SPARQL Semantic Queries

Aim: Data needs to be accessible and available in a standardised format.

Linked Data: A set of design principles for publishing structured machine-readable data that allow to link it with other data.

Four Principles of Linked Data

There are several features of linked data that allow it to interlink with other data. The inventor of the World Wide Web, Tim Berners-Lee, outlined four principles to define them.

1. Use URIs as names for things

URI: Uniform Resource Identifier is a sequence of characters which can give a unique name to virtually anything – digital online content, a real object or an abstract concept.

  • URIs allow us to distinguish things and recognize things which are the same.
  • URIs must be persistent, permanently assigned to a particular resource.

2. Use HTTP URIs so that people can look up those names

HTTP: A set of rules for transferring data over the internet. It is the basis of communication between web servers and web browsers.

3. When someone looks up a URI, provide useful information using the RDF and SPARQL standards

  • We need a standard format to represent the data and to use standard query language to find its metadata (information about the data).

RDF: Resource description framework is a data model currently considered as a standard way to describe data. It defines relationships between data objects using ‘triples’, based on the subject–predicate–object structure which we know from our human language.

SPARQL: A standardised query language to retrieve and manipulate data stored in RDF format.

  • With SPARQL, you can search in multiple data sources in one go using SPARQL endpoints.
  • The results of SPARQL queries can be returned in multiple formats, including RDF.

4. Include links to other URIs to discover more things

  • Adding more links between pieces of data allows us to discover relationships, gives data more context and meaning and ultimately allows us to find more information.

Source: European Data

Additional Resources

Wikidata and Wikidata API Research

Wikidata is a free, collaborative, multilingual, secondary knowledge base, collecting structured data to provide support for Wikipedia, Wikimedia Commons, the other wikis of the Wikimedia movement, and to anyone in the world.

Being much stronger than its simple definition, Wikidata API gives access to all the data in Wikipedia and Wikimedia by simple queries.

Example GET Request

Modify the url parameter "search" as you wish.

curl 'https://www.wikidata.org/w/api.php?action=wbsearchentities&search=rabbits&format=json&language=en&uselang=en&type=item&limit=20'

Paste the response to this Online JSON Parser

Even though it can be tuned, below are the most useful url parameters.

  • search : The text to search for
  • type : Type of entity to search for - item (default), property etc.
  • limit : Number of entities to fetch
  • continue : Offset to search from (useful for paginating the response)

You can give it a try by just copying and modifying what you would like to search and examine the response.

Wikidata API Item Response

Let's examine an example request and its response for the most common endpoint:

Endpoint: https://wikidata.org/w/rest.php/wikibase/v0/entities/items/Q4964

Example Response-1

Get the property (P4212) from the response and use it in the following URL:

https://wikidata.org/w/rest.php/wikibase/v0/entities/properties/P4212/descriptions

Example Response-2

SPARQL

It also has an API called Sparql.

In very simple terms, one writes a query which is similar to an SQL query, specify some constraints and receives the results accordingly. Using Wikidata Query Service, it is also possible to visualize the result in a location-based manner on the map.

Resources to delve deeper into Sparql:

Note that you can find code versions of your Sparql queries in several programming languages like Python, Java, Javascript and so forth by clicking </>Code button in Wikidata Query Service after making a successful query.

Let's dive into an example for SPARQL, too:

This SPARQL query retrieves information about items that are instances of the "cat" (Q146) entity in Wikidata. Let's break down the query step by step:

SELECT ?item ?itemLabel
WHERE
{
  ?item wdt:P31 wd:Q146. # Must be a cat
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } # Helps get the label in your language, if not, then en language
}

SELECT ?item ?itemLabel: This line specifies the variables we want to retrieve in the query results. Here, we're interested in two variables: ?item, which represents the Wikidata item itself, and ?itemLabel, which represents the label or name of the item.

WHERE: The WHERE clause specifies the conditions that the data must meet to be included in the query results. ?item wdt:P31 wd:Q146: This line is a triple pattern that describes the conditions for selecting items. It specifies that the ?item variable must have a statement with property P31 (instance of) and value Q146 (the entity ID for "cat" in Wikidata). In other words, it selects items that are instances of the "cat" entity.

SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }: This line is a service call that retrieves the labels (names) of the selected items. It ensures that the labels are returned in the language specified by the user's preference (AUTO_LANGUAGE) or in English if the preferred language is not available. The retrieved labels are associated with the variable ?itemLabel.

So, overall, this SPARQL query selects Wikidata items that are instances of the "cat" entity and retrieves their labels in either the user's preferred language or English if the preferred language is not available. The results will include pairs of item IDs (?item) and their corresponding labels (?itemLabel).

A lot of more examples can be found in the following link:

https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples#Simple_queries

Responsibility Assignment Matrix(RAM) Research

What is a Responsibility Assignment Matrix?

The most important resource in a project coordination is human, so we need to maintain our labor correctly and make everything clear in project management. It is very important everyone to know what they are doing and what they are not doing. Here Responsibility Assignment Matrix comes in. It is a powerful tool in project management.

Here you can see a Responsibility Assignment Matrix Example (Source: StakeHolderMap)

Responsiblity Assignment Matrices are also known as RACI Matrix. Here RACI is the abbreviation of Responsible, Accountable, Consulted, Informed. It is basically used to clarify that who is working which part of the project in teams doing a whole task in distributed parts. Here it is very important to clearly express the borders of the subtasks.

  • R - Responsible: Responsible is the person or multiple persons who are in charge of execution of the task.
  • A - Accountable: Accountable is the authority who finally checks, controls and approves the task. It is recommended having a unique accountable for every single task.
  • C - Consulted: Consulted is the agent who is asked for opinions and progress of the task is discussed with.
  • I - Informed: Informed is the group who is informed about the whole process of the given task.

Above given distribution is of course not the single method to do it. There are numerous versions of doing this but this is the commonly used one. PARIS notation is one of those. To exemplify: P - Perform, A - Accountable, C - Control, S - Suggest, I - Informed.

It should be created in the beginning of project, not in the middle or not in the end.

Steps of creating Responsibility Assignment Matrix:

  1. Identify the team members that are going to work on the project.
  2. Identify the deliverables and define their borders extensively.
  3. Meet the team members and discuss who can assume responsibility on which tasks.
  4. Create Responsibility Assignment Matrix and share with team members.

Note That: There are online tools and websites that are helpful creating those tables.

Application Programming Interface (API) Use and Development

Overview

APIs, or Application Programming Interfaces, are a fundamental building block in modern software development. They act as the connective tissue between different software components, systems, or layers, allowing them to communicate and exchange data efficiently and securely.

Types of APIs

  • Web APIs: Interfaces for both web server and browser use, such as HTTP API, REST, JSON-RPC, XML-RPC, and SOAP.
  • Local APIs: These are used by software applications to communicate with the underlying operating system or with a library. Examples include POSIX, Windows API.
  • Program APIs: Defined at the source code level, these enable interaction with the runtime environment. Examples include Java APIs.

API Architectures

  • REST (Representational State Transfer): Uses standard HTTP methods and is considered highly scalable for web services.
  • SOAP (Simple Object Access Protocol): Prioritizes protocol and standards, ensuring a high level of security and transactional reliability.
  • GraphQL: Allows clients to request precisely what they need, making it efficient for complex systems with many entities.
  • WebSockets: Enables two-way interactive communication sessions between a user's browser and a server. API Development Best Practices
  • Security: Implement robust authentication and authorization, often via tokens (OAuth), to protect sensitive data.
  • Versioning: Maintain different API versions to ensure backward compatibility.
  • Rate Limiting: Control the number of requests to prevent abuse or overload of the API.
  • Documentation: Provide clear and comprehensive documentation for developers using your API, which can be facilitated by tools like Swagger.
  • Error Handling: Design error messages to be helpful and provide enough information for developers to understand and resolve issues quickly. API Management Tools
  • API Gateways: Manages requests and can enforce policies, provide analytics, and handle the authorization and authentication.
  • Monitoring Tools: Track API performance, usage, and errors. Examples include New Relic and Grafana. Future Trends in API Development
  • Serverless Architectures: APIs are moving towards serverless platforms which abstract the server management aspects.
  • Microservices: Designing applications as a collection of loosely coupled services.
  • AI and Machine Learning: APIs are increasingly used to provide access to AI services.

Conclusion API development is not just about creating interfaces; it's about building a bridge that allows different parts of a software ecosystem to work together seamlessly. As technology advances, so too does the complexity and capability of APIs, with the modern API economy demonstrating the sheer value they add to our digital world.