Specialized process model is the use of one or more prescriptive model to enhance the efficiency of software development. There are several types of specialized process models which are the component-based development, formal methods, aspect-oriented software development, and unified process. Further explanations will be discussed in this article.
Component-based development is a software development model that uses the idea of reusing previously developed software. Pre-existing components are being reused [1]. This model is used to develop a large system by cutting down costs and an effective way of improving development productivity and quality of software components. The advantages of using this development model are:
1. Less cost due to the usage of reusable components
2. Highly productive teams
3. Having a head start of applicable components in starting a new project
On the other hand, the disadvantages of this development model are:
1. Requires time and effort to implement reusable components in a newly introduced requirement systems of the project
2. Sensitivity and reusability of components might be a problem to an up-to-date system
3. Maintenance cost of reusable components
![](https://static.wixstatic.com/media/7e8362_da4188ab3eda41088da5a7bd39a2ec53~mv2.png/v1/fill/w_441,h_441,al_c,q_85,enc_auto/7e8362_da4188ab3eda41088da5a7bd39a2ec53~mv2.png)
The next model is formal methods. Formal methods are mathematical-based techniques for the specification, development, and verification of software and hardware systems [2]. This model is used to reduce the effect of human errors in developing software. The effort of this model is by employing discrete mathematics to describe the function and architecture of a hardware or software system, and various forms of logic to reason about requirements, their interactions, and validity [3]. Its ability to reduce ambiguity of specifications, ensure the satisfaction of requirement specifications, and keep the security, reliability, and correctness of a system are the goals of this model [4].
![](https://static.wixstatic.com/media/7e8362_1c3418a1be224b21b1802fae37822d88~mv2.png/v1/fill/w_541,h_361,al_c,q_85,enc_auto/7e8362_1c3418a1be224b21b1802fae37822d88~mv2.png)
The advantages of using this model are:
1. Precise and accurate measurement of a system
2. Early detection of defects and errors
3. Easily understood by developers in developing a system
4. Effective in testing cases and credibility
Meanwhile, the disadvantages of this model are:
1. Rigid in specifying requirements due to its formality and might differ from clients’ needs
2. Having the inability to deal with complex structures and features
3. Requires time to check the accuracy and credibility of specifications using multiple methods
Proceeding to the aspect-oriented software development, it is a process and methodological approach for defining, specifying, designing and constructing aspect.
![](https://static.wixstatic.com/media/7e8362_5ac4dc12a79b47e19982a52880109ee5~mv2.png/v1/fill/w_921,h_682,al_c,q_90,enc_auto/7e8362_5ac4dc12a79b47e19982a52880109ee5~mv2.png)
The aspect-oriented software development is conducted by concerning and specifying the properties as well as areas of interest of a system and describe their relationships, followed by the creation of a coherent program [5]. The advantages of the aspect-oriented model are:
1. Aspects are specified modules so that it can be reused in further developments, either the same or different projects
2. Increase of understanding codes by taking advantage of aspects’ modularization
3. Ability of reconstruction through modules of different aspects
On the other hand, the disadvantages:
1. Requires effort in maintaining symmetry of each aspect of code to create a working program
2. Requires effort in documentation
3. Code bloating, a form of inefficient use of codes, often occurs due to the maintenance of software development
Following the previous model, the unified process will be discussed. The unified process model is defined as a use-case driven, architecture-centric, and iterative and incremental. The unified process model is applicable in any scale of systems, either a small or large-scale project. It can also be applied in different complexity levels and areas. This model has a modified process flow, combining the generic process flow into a new version.
![](https://static.wixstatic.com/media/7e8362_ba7dd19fe7814559ae3c031049592fd6~mv2.png/v1/fill/w_501,h_271,al_c,q_85,enc_auto/7e8362_ba7dd19fe7814559ae3c031049592fd6~mv2.png)
Therefore, the advantages of this model are:
1. Integration of generic process flow, creating an effective and efficient environment
2. Improvement in risk management
3. Availability of features incrementation
Meanwhile, the disadvantages of this model are:
1. Complex implementation
2. Requires skilled individuals in implementing this model
3. Considered as a heavyweight process
Based on the explanations above, the unified process is a complex model that is implemented with the integration of the generic process model. It enhances the traditional prescriptive models but requires skilled individuals in implementing it so that it can run effectively and efficiently.
Agile method is defined as a type of method in software development in which individuals work in a team in facing clients to fulfill their needs. It emphasizes feedback and rapid changes [6]. Each cycle is called sprint due to its quick-work projects. The agile method consists of prescriptive models that have a combination of iterative and incremental models. Based on the authors of “Manifesto for Agile Software Development” [7], below are the requirements needed by teams in using this method are:
1. Individuals and interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan
![](https://static.wixstatic.com/media/7e8362_701579ae724148109abb86644b37b23f~mv2.png/v1/fill/w_980,h_410,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/7e8362_701579ae724148109abb86644b37b23f~mv2.png)
Based on the requirements above, there are several advantages that agile method provides which are as the followings:
1. Teamwork
Individuals can collaborate in each stage of development. Teamwork allows individuals to accomplish quick-work projects
2. Communication
High frequency of communication between clients and developers create a clear environment in developing the software. Developers can create high quality software and clients’ expectations are met. Transparency and flexibility are the main keys in this method.
3. Productivity
The ability of self-organized individuals working in teams increase their productivity. Projects can be finished in a shorter timescale. The production cost can also be minimized.
Even if it has advantages as explained above, below are several disadvantages that make agile method may not be suitable in certain characteristics of projects:
1. Unfamiliar technology
Individuals in the team need to be skilled in the technology which are going to be used developing the software that is demanded by the client. That is because the software is a short-term project. Learning new technology in this case is not highly recommended.
2. Individualistic habits
This method requires individuals who are self-organized but are able to work in teams. Networking and collaboration are the keys to a successful team.
3. Spontaneous changes
Individuals and or teams who are not used to spontaneous actions would say that this method is hardly applicable. Clients would mostly need new updates or even go out of the plan.
The next one is Scrum. Scrum is a part of the agile method as a framework of it. As a part of agile method, it uses the term “sprint” to define a quick cycle in this framework. This framework requires 1 to 4 weeks to finish a sprint. It provides simplicity in managing complex tasks in developing software.
![](https://static.wixstatic.com/media/7e8362_f1e9cd906f204c8a80f40ebde716d09b~mv2.png/v1/fill/w_810,h_381,al_c,q_85,enc_auto/7e8362_f1e9cd906f204c8a80f40ebde716d09b~mv2.png)
The advantages from the usage of this framework are:
1. Shorter timescale with the implementation of sprints
2. Easy estimation of work projects
3. Fast, quick, and adapt to changes easily
The disadvantages of this framework are:
1. Least documentation
2. Require highly committed individuals with dedication
3. Require highly cooperative individuals
In conclusion, each model is applicable depending on the projects’ scale, number of individuals being involved in the development, and the cost as well as time availability. Effectiveness and efficiency are the keys to a steady project development. Teamwork and self-organization are also necessary skills for further development.
References
[1] I. Crnkovic, S. Larsson and M. Chaudron, "Component-based Development Process and Component Lifecycle", Journal of Computing and InformationTechnology, vol. 13, no. 4, pp. 321-327, 2005 [Online]. Available: https://www.researchgate.net/publication/4163655_Component-based_development_process_and_component_lifecycle. [Accessed: 16- Sep- 2019]
[2] M. Hinchey, M. Jackson, P. Cousot, B. Cook, J. Bowen and T. Margaria, "Software engineering and formal methods", vol. 51, no. 9, pp. 54-59, 2008 [Online]. Available: https://www.researchgate.net/publication/234788356_Software_engineering_and_formal_methods. [Accessed: 16- Sep- 2019]
[3] A. Tucker, Computer Science Handbook, 2nd ed. Boca Raton: CRC Press, 2004 [Online]. Available: https://books.google.co.id/books?id=hNLKBQAAQBAJ&pg=SA99-PA236&lpg=SA99- PA236&dq=system+and+component+dimension+client+server+system&source=bl&ots=5pbEq08wQl&sig=ACfU3U28JqnLiYrQG_VfW6fa59KCUfZWuA&hl=ban&sa=X&ved=2ahUKEwjf0JSL4M7kAhWOiHAKHTKgA94Q6AEwC3oECAkQAQ#v=onepage&q=system%20and%20component%20dimension%20client%20server%20system&f=false. [Accessed: 13- Sep- 2019]
[4] M. Batra, A. Malik and M. Dave, "Formal Methods: Benefits, Challenges and Future Direction", Journal of Global Research in Computer Scienc, vol. 4, no. 5, pp. 21-25, 2013 [Online]. Available: https://pdfs.semanticscholar.org/9d85/7d876d49a1e317bd935219e269acab3c6201.pdf. [Accessed: 16- Sep- 2019]
[5] T. Elrad, R. Filman and A. Bader, "Aspect-oriented programming - Introduction", vol. 44, no. 10, 2001 [Online]. Available: https://www.researchgate.net/publication/220422164_Aspect-oriented_programming_-_Introduction. [Accessed: 16- Sep- 2019]
[6] L. Williams and A. Cockburn, "Agile Software Development: It's About Feedback and Change", IEEE, vol. 36, no. 6, pp. 39-43, 2003 [Online]. Available: https://ieeexplore.ieee.org/document/1204373/references#references. [Accessed: 14- Sep- 2019]
[7] K. Beck, M. Beedle, A. Bennekum, W. Cunningham, A. Cockburn, M. Fowler, J. Grenning, J. Highsmith, A. Hunt, R. Jeffries, J. Kern, B. Marick, R. Martin, S. Mellor, K. Schwaber, J. Sutherland and D. Thomas, "Manifesto for Agile Software Development", Manifesto for Agile Software Development, 2001. [Online]. Available: https://agilemanifesto.org/. [Accessed: 14- Sep- 2019]
Comentários