What is Software Development Models | Software development life cycle (SDLC)

When developing software you need to focus on various things. Writing code is not your only task though it is still vital. Basically, you should answer the following questions: what you’re going to do, how, using which methods, and why. To take it all into account and effectively organize the workflow, you need to choose a suitable software development model.

Software development models

To navigate through this complicated process you will require a more complex thing than a simple to-do list. Thus, you will definitely be in need of a development model, which describes in detail not only your steps in the right order but also the methods you use and the whole structure of a future product. There exist a lot of such models. In general, they are called SDLC, i.e. Software development life cycle. Below, we will discuss the most popular models, look into their essence, and compare their core features.

All SDLC models can be divided into several groups depending on the workflow organization, type of relationships within the teammates, and their communication with the customers.

The workflow may be linear or iterative, i.e. you either work on your product step by step or you can get back to the previous stages and change them. In terms of relationships and communication, you can either take the task from the customer and then simply show what you’ve got or you can consult with the customer at every stage.

Now let’s observe the specific models and consider their pros, cons, and application.

Waterfall

The process in this model moves in a linear cascade mode through all the development stages: analysis, design, coding, testing, deployment. The waterfall model means there’s no way back, so you cannot make any changes. Moreover, you cannot start the next step till the previous one is completed.

 

The final result will be seen and checked only at the very end of the development. It means that testing is often rushed, and errors may be costly to fix.

However, this model has some advantages. The waterfall allows to predict project costs and to introduce precise deadlines. This model suits for small projects with short deadlines and specific tasks and for those in which the tasks are to be completed no matter how much money it will take.

The waterfall model assumes that the client receives the finished product as soon as all functionality is ready, and not when all the individual features are done. This can be a problem if the client doesn’t like something and wants to make some changes. This problem is solved by the iterative model, where each feature can be demonstrated right after it is finished.

Iterative model

In reality, errors always arise during development and it’s better to solve them as soon as possible before everything crushes. Iterating model allows to check problems and thus fix the mistakes in time. Besides, you may need to make some changes if your customer decides to amend the task. Also, the external environment and market conditions may change, and the original version of the product might be no longer relevant and useful.

Among the advantages here we can single out a higher probability of getting what the customer wants. And in general, such a development is very flexible, since changes can be made at any stage. However, it is unknown how long the editing will take and how much money will have to be allocated for it. These can be considered the disadvantages of this model.

This SDLC model typically entails some customer involvement because it’s possible that small changes will be required during the development process. But human interaction is also a complex process. This means that it must be described in detail, the rules for this communication must be established in order to increase the productivity. For this, agile group models were invented.

Agile group

So far, we have noted that it is important to take errors into account, consider the costs, and act according to an algorithm. But we forgot the most important thing: the people who do all this. Agile was invented to fix this. Agile is a set of principles and rules that facilitate the development process and take into account the human factor. All principles are written in the Agile manifesto. We will analyze them in more detail in a separate topic. For now, it is important to know that the developers are more important than the development, and if they cannot agree on what they do and how they do it, there will be no good result. It is also important to follow the wishes and mood of the customer. After all, if he does not like it, then again, the result won’t be satisfactory.

So, Agile means working in close collaboration both within the team and with clients. At the end of each iteration, stakeholders review development progress and re-prioritize tasks for future iteration to improve return on investment and align with user needs and business goals.

Conclusion

So, we’ve briefly discussed why we need development models, what they are, their advantages and disadvantages. Now we also understand which models are useful in which specific cases. Further on we will deepen this knowledge with specific examples.

What is Azure Marketplace?

Azure Marketplace helps connect users with Microsoft partners, independent software vendors, and startups that are offering their solutions and services, which are optimized to run on Azure. Azure Marketplace customers can find, try, purchase, and provision applications and services from hundreds of leading service providers. All solutions and services are certified to run on Azure.

 

The solution catalog spans several industry categories such as open-source container platforms, virtual machine images, databases, application build and deployment software, developer tools, threat detection, and blockchain. Using Azure Marketplace, you can provision end-to-end solutions quickly and reliably, hosted in your own Azure environment. At the time of writing, there are more than 8,000 listings.

Azure Marketplace is designed for IT pros and cloud developers interested in commercial and IT software. Microsoft partners also use it as a launch point for all joint go-to-market activities.

How to create a pull request on GitHub

You’ve learned how to create a pull request when there’s guidance – either in a pull request template, or in a CONTRIBUTING file. But what if a project doesn’t (yet) offer that guidance and documentation on conventions?

Describe your changes

A best practice writing a commit message, and subsequently your pull request, is the following:

Your Git commit message subject line should complete the following sentence: If applied, this commit <will your subject line here>. It contains a succinct description of the change using the imperative, present tense: “add” not “added” nor “adds”. Limit your subject line to 50 characters, start with a capital letter, and don’t end with a period (.). You can use emoji in your subject line, and @-mention other GitHub users, although not everyone is a fan of such frivolity.

For the body of your message and pull request, continue to use present tense, and make sure to include the motivation for the change. Contrast this with the previous behavior. Use the real estate at your disposal to explain the what and why vs. the how.

Your commit message is only as to the point as the content that you’re about to submit. Commit / submit for review small, isolated sets of changes. This also increases the likelihood of your changes getting merged into the project.

 

Adding granularity

Before you submit your pull request, check the sidebar for ways to complete your PR. Select Reviewers and/or Assignees if you’re familiar with the project’s team structure. Add Labels when there’s guidance on using those in for instance the CONTRIBUTING.md file. You can use labels as a visual clue as to what you’re trying to accomplish. A maintainer may also add a label (or: multiple labels). Some of the labels we use in the repository for this Learn module for instance are:

  • (red colored label) bug: something isn’t working
  • (blue) documentation: improvements or additions to documentation
  • (grey) duplicate: this issue or pull request already exists
  • (teal) enhancement: new feature or request

Optionally you can link issues in the sidebar as well, where successfully merging a pull request may close the corresponding issue. And you can customize your subscription to notifications on the thread – some PRs receive a lot of comments, reviews, and CI/CD related notifications. You can choose between:

  • Not subscribed, and only receive notifications when you have participated or have been @mentioned.
  • Subscribed, and receive all notifications for this pull request.
  • Custom, and only be notified for the events you select

Exercise

Using the First Contributions  project practice forking, cloning, and ultimately submitting a pull request. The First Contributions project aims to “guide the way beginners make their first contribution”, and has guides for both using the command line, as well as several GUIs (Graphical User Interfaces). The project also has support for several languages, make sure to check their Translations folder.

With the lessons from the previous module and the above in mind, now go back to a pull request you opened recently (or: navigate to the pull requests tab of a project you’re watching), and find out how a good subject line can make all the difference. Consider updating a pull request accordingly. Put roughly as much time in writing your PR as you did making the change to the project, so to help the maintainer(s) to triage (categorize and prioritize) community contributions.

Bonus: check Microsoft’s Accessibility Guidelines and Requirements, and in particular the bit about “describing interactions with UI”, to avoid ableist language in your Docs contributions. Customers interact with products using different input methods: keyboard, mouse, touch, voice, and more. You will want to use generic verbs that work with any input method, for instance “select” instead of the input-specific “click” or “swipe”.