Recently I did some document diving to find out more about different styles of software design. When it comes to building software, I’m someone who is more familiar with getting things to work, and I haven’t focused too much attention on discussing my approaches. So in an effort to become more eloquent about the way I describe my work, I thought I’d share an overview on software design styles and the cycle of software design:
Service-oriented architecture (SOA): a style of software design where services are provided with application components through a communication protocol over a network. The elements of SOA include:
- Application frontend, service, service repository, service bus
- Contract, implementation, interface
- Business logic, data
A web service is an example of an SOA with a well-defined set of implementation choices.
Representational state transfer (RESTful): RESTful web services allow systems to access and manipulate web resources by using a predefined set of operations. RESTful includes the HTTP methods get, put, post, and delete. More information on what these mean include the following:
- Get: retrieves a representation of the collection
- Put: replaces the addressed item of a collection, or if it doesn’t exist, it creates it
- Post: create a new entry in the collection
- Delete: delete the item in a collection
Model-view-controller (MVC): a pattern for implementing user interfaces. It’s broken down into three components:
- Model: directly manages the data and logic of the application
- View: the output of the information, how the information is presented to the user
- Controller: uses input from the user to make changes to the model or view
Software development life cycle (SDLC): a structured sequence of stages in developing a software product. These steps include: communication, requirement gathering, feasibility study, system analysis, software design, coding, testing, integration, implementation, operations & maintenance, and disposition.