Software development is the process of computer programming, documenting, testing, and bug fixing involved in creating and maintaining applications and frameworks resulting in a software product. Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products. Software can be developed for a variety of purposes, the three most common being to meet specific needs of a specific client/business (the case with custom software), to meet a perceived need of some set of potential users (the case with commercial and open source software), or for personal use.
At Felagi we allways do software development in an open and transparent process with the customer. As we go along, there will be several times where we need to discuss certain isues with our customer. Remember that this is your project, we are only doing it for you!
At Felagi we use only the resources necesarry for your project, and we only use them we need. By planning our resource use accross different customer projects we can give you as cost effective development as possible.
A development typically consist of:
Project Manager: Hen will be the overall responsible for your project. The project manager is allways an experienced developer and will be the one you as customer will have most dealing with. Unless your project are large and consists ov several development team, a project manager is rarely working full time on your project.Usually we calculate 1/3 part per team, meaning a project cointaining 3 teams will need a full time PM.
Team lead: Is the day to day chief developer which is allway an experienced senoir developer henself. The team lead is the reposnible for the follow up of the SDP (se below) and to report back to PM or Scrum master.
Senior developer: A developer with at least 5 years relevant experience. It could be the Team lead that perform this function, depending on the size of your project. A team must always have one senior developer.
Back-end Developer Responsible for the back end services of the SOA solution. Very often either filled by the team lead or the senior developer.
Front-end Developer Responsible for the things you "see". Working closely with both back-end and HTML developer.
QA engineer The QA engineer is responsible for the testing of different releases and follow them up with BUG reports to the developers. QA is allways the customers person in the team and are responsible for checking that custoer requirements are met. Our QA's are independent from the development department, and answers only to the PM. We allways welcome the customer to bring their own QA to the team, but all team must have a QA resource!
Additional team resources would be:
At Felagi we always acknowledge that the source code is the paying customers' property, and only his. We never reuse any code from other customers projects.
However, Felagi has developed several common SOA modules that mostly every project contains, like person, user and address handling. For the purpose of being as cost effective as possible for our customers we might include some of these modules in your solution.
We take pride in that every customer should have a fully working solution even if they decide to leave us and use another supplier instead. All code necesarry for your solution will be included, even the common modules we have developed outside your project. You have paid for a working solution, and that is what you will get no matter what!
We use Microsoft Team Services for our source code handling, which is a cloud based solution hosted by Microsoft Azure. We give our customers access to their source code when the project is paid for and during testing or for external audit. Some customers want us to use other systems as their in-house Team Foundation server which we will meet with a positive attitude.
Agile software development describes a set of values and principles for software development under which requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams. It advocates adaptive planning, evolutionary development, early delivery, and continuous improvement, and it encourages rapid and flexible response to change. The term agile (sometimes written Agile) was popularized by the Agile Manifesto, which defines those values and principles. Agile software development frameworks continue to evolve, two of the most widely used being Scrum and Kanban.
Felagi uses an agile approach to most of our projects, but we are not ideologists so we uses the principals of agile as it suits us and our customer.
Scrum is an iterative and incremental agile software development framework for managing product development. It defines "a flexible, holistic product development strategy where a development team works as a unit to reach a common goal", challenges assumptions of the "traditional, sequential approach" to product development, and enables teams to self-organize by encouraging physical co-location or close online collaboration of all team members, as well as daily face-to-face communication among all team members and disciplines involved.
In software development and product management, a user story is an informal, natural language description of one or more features of a software system. User stories are often written from the perspective of an end user or user of a system. They are often recorded on index cards, on Post-it notes, or in project management software. Depending on the project, user stories may be written by various stakeholders including clients, users, managers or development team members. User stories are a type of boundary object. They facilitate sensemaking and communication, that is, they help software teams organize their understanding of the system and its context. User stories are often confused with system requirements. A requirement is a formal description of need; a user story is an informal description of a feature.
At Felagi we encourage the customer to identify the user stories with us. We mostly use workshops for this purpose.
A service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. The basic principles of service-oriented architecture are independent of vendors, products and technologies. A service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online. A service has four properties according to one of many definitions of SOA: It logically represents a business activity with a specified outcome. It is self-contained. It is a black box for its consumers. It may consist of other underlying services. Different services can be used in conjunction to provide the functionality of a large software application. So far, the definition could be a definition of modular programming in the 1970s. Service-oriented architecture is less about how to modularize an application, and more about how to compose an application by integration of distributed, separately-maintained and deployed software components. It is enabled by technologies and standards that make it easier for components to communicate and cooperate over a network, especially an IP network.
At Felagi we use SOA principles for all our software design and development!
Before starting the actual programming we always produce the SDP as our development team guideline and work plan. Even though the SDP is considdered to be an development team internal plan, we give full disclousure of it to our customer.
The SDP has several parts:
Project Purpose, Scope, and Objectives
Assumptions and Constraints
Project Monitoring and Control
Schedule and Budget Control
Reporting and Measurement
.NET Framework is a software framework developed by Microsoft that runs primarily on Microsoft Windows. It includes a large class library named Framework Class Library (FCL) and provides language interoperability (each language can use code written in other languages) across several programming languages. Programs written for .NET Framework execute in a software environment (in contrast to a hardware environment) named Common Language Runtime (CLR), an application virtual machine that provides services such as security, memory management, and exception handling. (As such, computer code written using .NET Framework is called "managed code".) FCL and CLR together constitute .NET Framework.
HTML5 is a markup language used for structuring and presenting content on the World Wide Web. It is the fifth and current version of the HTML standard.It was published in October 2014 by the World Wide Web Consortium (W3C) to improve the language with support for the latest multimedia, while keeping it both easily readable by humans and consistently understood by computers and devices such as web browsers, parsers, etc. HTML5 is intended to subsume not only HTML 4, but also XHTML 1 and DOM Level 2 HTML. HTML5 includes detailed processing models to encourage more interoperable implementations; it extends, improves and rationalizes the markup available for documents, and introduces markup and application programming interfaces (APIs) for complex web applications. For the same reasons, HTML5 is also a candidate for cross-platform mobile applications, because it includes features designed with low-powered devices in mind.