Fundamentals Of Software Development (Guide)


The world of software development is something that is limitless. Technology is a perfect blend of innovation and ideation that conceptualizes to form a platform, which is suitable for operating various software developments taking place. 

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 (e.g. a computer scientist may write software to automate a mundane task).

The need for better quality control of the software development process has given rise to the discipline of software engineering, which aims to apply the systematic approach exemplified in the engineering paradigm to the process of software development.

What Is Software Development?

It is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Although Software development itself is a process of writing and maintaining the source code, in a broader sense however, 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. There are many approaches to software project management, known as software development life cycle models, methodologies, processes or models. The waterfall model is a traditional version, contrasted with the more recent innovation of agile software development.

In fact, the methodology meant for software development is considered as a structure used for planning and controlling the procedure of creating a specialized information system. Certainly, these innovative methods are concerned with highlighting the process of software development, which does not involve the use of any technical aspect. The only matter considered is proper planning for the purpose of highly integrated software development.

(nextPage)

Agile Development Methodology

In 2001, seventeen software developers met at a resort in Snowbird, Utah to discuss these lightweight development methods, including among others Kent Beck, Ward Cunningham, Dave Thomas, Jeff Sutherland, Ken Schwaber, Jim Highsmith, Alistair Cockburn, and Bob Martin. Together they published the Manifesto for Agile Software Development. 

Agile methodology is often compared with the waterfall model in the software development industry. However, agile approach is considered to be better because of its Iterative and incremental development methods. These methods can be traced back as early as 1957, with evolutionary project management and adaptive software development emerging in the early 1970s.

During the 1990s, a number of lightweight software development methods evolved in reaction to the prevailing heavyweight methods that critics described as overly regulated, planned, and micro-managed. 

These included: rapid application development (RAD), from 1991; the unified process (UP) and dynamic systems development method (DSDM), both from 1994; Scrum, from 1995; Crystal Clear and extreme programming (XP), both from 1996; and feature-driven development, from 1997. Although all these originated before the publication of the Agile Manifesto, they are now collectively referred to as agile software development methods.

It uses an incremental approach where a sample prototype is discussed with the customer. The prototype helps in understanding the key aspects, including the requirements. The consecutive prototypes reflect the changes done in the previous prototypes. This keeps happening till the customer is satisfied, providing better end-product to the customer. 

The idea is to maintain product’s quality in the entire phase of development. In the year 2001, several agile principles were discussed and agreed upon under the Agile alliance. The principles were to be followed for agile software development. While comparing the Waterfall model and the agile methodology, Royce concluded that:
  • Each phase is a result of the process of previous steps;
  • The process should be repeatedly checked for consistency;
  • A single iteration would not give a clear picture of the process.

Why Agile?

Agile Methodologies have overcome the traditional methods of waterfall model by becoming flexible, fast, lean, responsive, and consistent;
Agile method focuses on people and is more communication-oriented;
Agile methods are tested in a dynamic environment and prove to be very flexible by adapting to the change happening in the business;
Agile methods include regular inspection in a disciplined manner, which consequently improves the leadership qualities to boost the teamwork;
Agile method follows best practices that help in getting high-quality software very quickly. Agile methodology is now being increasingly adopted by companies worldwide for software development, while the traditional waterfall methodology for software development is rapidly losing its popularity.

While Waterfall basically is a sequential model where software development is segregated into a sequence of pre -defined phases – including feasibility, planning, design, build, test, production, and support, Agile development methodology follows a linear sequential approach as well as providing flexibility for changing project requirements, as they occur.

(nextPage)

The Difference Between Agile And Waterfall Methodology

The software development process is divided into different phases in the Waterfall model while Agile methodology segregates the project development life cycle into sprints. Waterfall is a structured software development methodology, and often times can be quite rigid, whereas the Agile methodology is known for its flexibility.

According to the Waterfall model, software development is to be completed as one single project, which is then divided into different phases, with each phase appearing only once during the SDLC. However, the Agile methodology can be considered as a collection of many different projects, which are nothing but the iterations of the different phases focusing on improving the overall software quality with feedbacks from users or the QA team.

If you want to use the Waterfall model for software development, then you have to be clear with all the development requirements beforehand as there is no scope of changing the requirements once the project development starts. The Agile methodology, on the other hand, is quite flexible, and allows for changes to be made in the project development requirements even after the initial planning has been completed.

All the project development phases such as designing, development, testing, etc. are completed once in the Waterfall model while as part of the Agile methodology, they follow an iterative development approach. As a result, planning, development, prototyping and other software development phases can appear more than once during the entire SDLC.

One of the major differences between Agile and Waterfall development methodology is their individual approach towards quality and testing. In the Waterfall model, the “Testing” phase comes after the “Build” phase, but, in the Agile methodology, testing is typically performed concurrently with programming or at least in the same iteration as programming.

While Waterfall methodology is an internal process and does not require the participation of customers, the Agile software development approach focuses on customer satisfaction and thus, involves the participation of customers throughout the development phase.

The Waterfall model can be regarded as a stringently sequential process, however, the Agile methodology is a highly collaborative software development process, thereby leading to better team input and faster problem solving. Moreover, while the Waterfall model is best suited for projects which have clearly defined requirements and in which change is not expected at all, Agile development supports a process in which the requirements are expected to change and evolve. 

Thus, if you are planning to develop a software that would require frequent overhauls and has to keep up with the technology landscape and customer requirements, Agile is the best approach to follow.

The Waterfall model exhibits a project mindset and lays its focus strictly on the completion of project development, while Agile introduces a product mindset that focuses on ensuring that the developed product satisfies its end customers, and changes itself as the requisites of customers change.

(nextPage)

The Agile Manifesto is comprised of four foundational values and 12 supporting principles which lead the Agile approach to software development. Each Agile methodology applies the four values in different ways, but all of them rely on them to guide the development and delivery of high-quality, working software.

Individuals And Interactions Over Processes And Tools:

The first value in the Agile Manifesto is “Individuals and interactions over processes and tools.” Valuing people more highly than processes or tools is easy to understand because it is the people who respond to business needs and drive the development process. If the process or the tools drive development, the team is less responsive to change and less likely to meet customer needs. 

Communication is an example of the difference between valuing individuals versus process. In the case of individuals, communication is fluid and happens when a need arises. In the case of process, communication is scheduled and requires specific content.

Working Software Over Comprehensive Documentation:

Historically, enormous amounts of time were spent on documenting the product for development and ultimate delivery. Technical specifications, technical requirements, technical prospectus, interface design documents, test plans, documentation plans, and approvals required for each. The list was extensive and was a cause for the long delays in development.

Agile does not eliminate documentation, but it streamlines it in a form that gives the developer what is needed to do the work without getting bogged down in minutiae. Agile documents requirements as user stories, which are sufficient for a software developer to begin the task of building a new function. The Agile Manifesto values documentation, but it values working software more.

Customer Collaboration Over Contract Negotiation:

Negotiation is the period when the customer and the product manager work out the details of a delivery, with points along the way where the details may be renegotiated. Collaboration is a different creature entirely. With development models such as Waterfall, customers negotiate the requirements for the product, often in great detail, prior to any work starting.This meant the customer was involved in the process of development before development began and after it was completed, but not during the process.

The Agile Manifesto describes a customer who is engaged and collaborates throughout the development process. This makes it far easier for development to meet their needs of the customer. Agile methods may include the customer at intervals for periodic demos, but a project could just as easily have an end-user as a daily part of the team and attending all meetings, ensuring the product meets the business needs of the customer.

Responding To Change Over Following A Plan:

Traditional software development regarded change as an expense, so it was to be avoided. The intention was to develop detailed, elaborate plans, with a defined set of features and with everything, generally, having as high a priority as everything else, and with a large number of many dependencies on delivering in a certain order so that the team can work on the next piece of the puzzle.

With Agile, the shortness of an iteration means priorities can be shifted from iteration to iteration and new features can be added into the next iteration. Agile’s view is that changes always improve a project; changes provide additional value.

Perhaps nothing illustrates Agile’s positive approach to change better than the concept of Method Tailoring, defined in An Agile Information Systems Development Method in use as: “A process or capability in which human agents determine a system development approach for a specific project situation through responsive changes in, and dynamic interplays between contexts, intentions, and method fragments.” Agile methodologies allow the Agile team to modify the process and make it fit the team rather than the other way around.

On the other hand, the Twelve Principles are the guiding principles for the methodologies that are included under the title “The Agile Movement.” They describe a culture in which change is welcome, and the customer is the focus of the work. They also demonstrate the movement’s intent as described by Alistair Cockburn, one of the signatories to the Agile Manifesto, which is to bring development into alignment with business needs.

(nextPage)

The Twelve Principles Of Agile Development

Customer satisfaction through early and continuous software delivery – Customers are happier when they receive working software at regular intervals, rather than waiting extended periods of time between releases.

Accommodate changing requirements throughout the development process – The ability to avoid delays when a requirement or feature request changes.

Frequent delivery of working software – Scrum accommodates this principle since the team operates in software sprints or iterations that ensure regular delivery of working software.

Collaboration between the business stakeholders and developers throughout the project – Better decisions are made when the business and technical team are aligned.

Support, trust, and motivate the people involved – Motivated teams are more likely to deliver their best work than unhappy teams.

Enable face-to-face interactions – Communication is more successful when development teams are co-located.

Working software is the primary measure of progress – Delivering functional software to the customer is the ultimate factor that measures progress.

Agile processes to support a consistent development pace – Teams establish a repeatable and maintainable speed at which they can deliver working software, and they repeat it with each release.

Attention to technical detail and design enhances agility – The right skills and good design ensures the team can maintain the pace, constantly improve the product, and sustain change.

Simplicity – Develop just enough to get the job done for right now.

Self-organizing teams encourage great architectures, requirements, and designs – Skilled and motivated team members who have decision-making power, take ownership, communicate regularly with other team members, and share ideas that deliver quality products.

Regular reflections on how to become more effective – Self-improvement, process improvement, advancing skills, and techniques help team members work more efficiently.

The intention of Agile is to align development with business needs. People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.

(nextPage)

Emerging Methodologies In Information Systems Development

Designing and developing information systems involves carefully managing people, processes, tools and technology. It necessitates having a clear understanding of the role each entity plays, and overseeing the relationships between them. The intricacies of designing and developing systems vary, depending on the size of the systems in question.

Over the years, software and technology experts have adopted various methodologies that assist system architects and solution providers in the design and implementation process. These methodologies are continually evolving, seeking better ways of addressing common problems faced during the development life cycle of a system. One of these emerging methodologies is the use and adoption of agile methods in the design and development of systems.

Agile methods propose a different approach to developing software systems, by paying less attention to conventional methods of excessive planning, heavy documentation, and legal contracts, and focusing more on the light-weight methods such as quick response to changes, teamwork and effective communication, amongst others. Many arguments have been put forward to suggest that agile methods are applicable only in the development of small to medium sized systems, questioning their suitability in large systems.

A typical information systems development usually has three (3) stakeholders namely;

Users – Users are the ones who use the system after it has been developed to perform their day to day tasks.

Project Sponsors - This category of the stakeholders is responsible for the financial aspect of the project and ensuring that the project is completed.

Developers – This category is usually made up of systems analysts and programmers. The system analysts are responsible for collecting the user requirements and writing system requirements.

The programmers develop the required system based on the system requirements that is developed by the system analysts. The most important stakeholders in a project are users. For a project to be accepted as being completed, the users must accept it and use it. If the users do not accept the system, then the project is a failure.

System analysis is concerned with understanding the business objectives, goals and developing business processes. The end product of systems analysis is systems specifications. System design on the other hand, uses the output from system analysis as its input. The main objective of system design is to interpret the system requirements into architectural, logical and physical designs of how the information system will be implemented.

Using today's fast broadband connection, it's possible to stream sophisticated content to a computer anywhere in the world. This is an advantage for many people as the information can be received and read wherever and whenever it is convenient for them, which can be a crucial factor for a busy executive. A significant amount of interactive multimedia content is now delivered via the Internet.
Tags

#buttons=(Accept !) #days=(20)

Our website uses cookies from Google to enhance your experience. Our Privacy Policy
Accept !