Software Development Models
Software development models are an abstract representation of a particular way. It doesn’t represent how software should be developed but rather a common approach. It can be modified and adapted according to the needs of the software in the development process. 1 There are several models to outline the development process, each of which has pros and cons. The project should choose the most appropriate for its needs. Sometimes a combination of several models may be right. There are three paradigms of software development models :
- Traditional Paradigm :
It is one of the oldest paradigms; it was invented during the creation of the structure method. If a project is chosen, the technique varies in stages. 2 Like any model; there are pros and cons when using this paradigm:
If this paradigm is appalling, one of the main problems is that the stages carried out are not autonomous from the following ones, creating a structural dependency. In the case of an error, it would delay the entire project. You have to have well-defined guidelines and that modifications are not incurring because it would imply that the software does not comply with its life cycle. Take into account that the client is not affected by impatience. 3
- Object-Oriented Paradigm: These models are based on Object-Oriented Programming; thus, it refers to the class concept, requirements analysis, and design. The object-oriented model or paradigm has two main characteristics, which are:
- Allows the re-use of software.
- It facilitates the development of software development support tools, which are simple when implemented in an object-oriented notation called UML . 4
- Agile Development Paradigm: It is a paradigm of Development Methodologies based on agile processes. These try to avoid the tedious paths of traditional methodologies by focusing on people and results.
The waterfall model defines the following stages that must be fulfill in succession:
- Requirements Specification
- software design
- Software Construction or Implementation
- Testing (or validation )
- Deployment (or installation )
Following the waterfall model strictly, the other begins only when one phase is finish. Sometimes a review is done before starting the next phase, allowing for the possibility of changes (which may include a formal change control process). Studies are also use to ensure that the previous step has been fully complete; the criteria for achieving a phase are often referred to by the English term “gate”. This model advises against revisiting and revising degrees that have already been complete. This lack of flexibility in a pure waterfall model has been a source of criticism from advocates of more flexible models.
The main characteristic of the spiral model is risk management periodically in the development cycle. This model was create in 1988 by Barry Boehm, combining some critical aspects of the waterfall model and rapid application development methodologies but emphasizing an area that, for many, did not play the role that other models require: an iterative analysis. And conscientious of the risks, especially in the case of large-scale complex systems.
The spiral is visualize as a process that goes through some interactions with the diagram of the four representative quadrants of the following activities:
- create plans to identify the objectives of the software, selected to implement the program and clarify the constraints on the development of the software;
- Risk analysis: an analytical evaluation of selected programs to assess how to identify and eliminate the risk;
- the implementation of the project: implementation of the software development and its pertinent verification;
A spiral model with an emphasis on risks, emphasizing the conditions of the options and limitations to facilitate software re-use, software quality can help as a goal of its own in integrating product development. However, the spiral model has some limitations, among which are:
- The emphasis is on risk analysis and therefore requires clients to accept this analysis and act accordingly. This requires trust in the developers and the willingness to spend more to solve the issues, which is why this model is frequently use in large-scale internal software development.
- If the implementation of the analysis risk will fundamentally affect the project’s benefits, this model should not be use.
- Software developers firstly have to look for risks and thoroughly analyze them for this model to work.
Iterative and Incremental Development
Main article: Iterative and incremental development
Iterative development recommends the construction of small sections of software that will increase in size, thus facilitating the detection of fundamental problems before it is too late. Iterative processes can help unlock design goals for clients who don’t know how to define what they want. 5
Leading Roles in the Software Development process
A Role is define as a “Function that someone or something fulfils” (Abstracta Academy, 2016).
therefore Each of the roles will contribute to the group part of the total necessary to succeed in development. The functions must cover all the specifications required to fulfil a process since not all of us have the same qualities and experiences. In addition, when assigning roles, objectives and activities are define for each one; the preceding avoiding that some action is not set or that two people carry out the same work.
Description of roles in the Software Development Process
The software is built as a team, and there are many different methodologies. Roles are assign according to each person’s for example capabilities and specialization, experience, and interest. The most common parts are:
Its function is to present reports on risk litigation, enforce deadlines and control costs. He also organizes the team, plans, and estimates the activities’ time. In conclusion, it solves problems.
It is in charge of revealing the essential requirements for the development of the software and the documentation of the conditions. So that the rest of the team can consult it. Must be a person with the capacity for abstraction and analysis.
A software developer or programmer
Firstly In charge of conception and design, he writes the code and tests what he builds and is to maintain the code.
Design and execute the tests; it is necessary to know the product to be test, study its functionality, and develop the tests that reveal critical incidents. Reports incidents and provides information on the quality of the system.
Moreover, It determines the structures of the application and the technologies with which the application will built. He is IN charge of quality assurance and continuously improving the architecture. Manages non-functional requirements and assumes technical direction to ensure that all aspects of the architecture are being develop correctly.
This is to say, Must be a person with an innate sense of leadership, willing to train team members. And willing to receive and apply recommendations from the team openly.