The unified process has evolved thus revolutionizing development of software, improving productivity and eliminating errors that cause failure in projects. Success in agile methods has come from evolution of the unified process. Unified process was originally introduced as objector in 1988, and as rational objector process (ROP) in 1996. It finally emerged, as rational unified process (RUP) in 1998.The UP is a framework-providing infrastructure to execute projects, and involved in software development (Anwar, 2014). The lifecycle model involves collaborations, interactions, and context. Enterprise unified process (EUP) was introduced in 2002. RUP was agilized online and in print form in August 2002, where a plug in was developed to make it resemble XP in all aspects. RUP is a process product that is marketed and developed by rational software corporation, providing details needed to execute projects using the unified process. Guidelines, tool assistance, and templates are included. RUP is a commercial process product that provides details and UP framework content.
Rational unified process
Rational unified process is a framework formed by the corporation of rational software, which is a division of IBM. A software engineering process offers disciplined approach to assign tasks, responsibilities in development organization. It aims at producing software of high quality that will needs of users within predicted budgets and schedule (Anwar, 2014). It is a process product that works closely to customers, groups of rational product and partners. RUP enhances productivity in teams since it offers guidelines, templates, and mentor tools for every development activities that are critical. RUP maintains and creates models (Rational software Development Company, 2001). It guides users how to use unified modeling language effectively to communicate requirements clearly.
The process is supported by various tools that automate various parts of the process in creation of artifacts such as programming, testing, visual modeling, and software engineering. It is a configuration process. RUP framework is adaptable, and tailored by development organizations as well as project teams dealing with software. It is an implementation of the unified process. RUP has sample artifacts, descriptions, and details to conduct many activities. It allows process customization (Anwar, 2014). Its name rational emerged from it being a tailored process guided by development, automated tools during process application, and its adoption of accelerated services for tools and process.
Web-enabled searchable knowledge base provides teams with templates, guidelines, and mentor tools for development of critical activities. It has extensive guidelines for members and software lifecycle portions. Guidance is offered to high-level processes and day-to-day activities. Guidance is obtained in published HTML format in the desktop. Tool mentors provide guidance in each lifecycle process. They are published in HTML format for easy access on desktops (Rational software Development Company, 2001). Rational rose include templates that offer guidance on structuring information. soDA templates helps in software automation and documentation. Microsoft word templates assist to document workflows.
RUP makes use of disciplines such as requirements, test, business modelling, change management, and configuration. More disciplines added later on include rational and articulated disciplines, which concentrated on management of requirements, verification of quality, iterative development with risks, visual view of model software, and control of changes. RUP improves customer quality and predict software development. Moreover, it is used during performance testing, UI design and engineering of data.
RUP building blocks
RUP building blocks describe required skills, explanations step-by-step and production as well as goals for achievement. The main building blocks include roles, which are sets of skills, responsibilities, and competencies. Work block represent what product will come out from given tasks. These include models, documents produced while working. Tasks is the third block-describing units of work assigned to certain role providing better results (Rational software Development Company, 2001). Disciplines categorizing work include, business modeling, requirements, analysis and design, test, implementation, and deployment. Supporting disciplines include environment, project management, configuration and change management.
RUP project lifecycle phases
RUP project lifecycle has four phases including inception, elaboration, construction, and transition.
Inception phase validates initial costs and budgets. It establishes business context, market recognition, and financial forecast. The phase involves establishment of business case and delimitation of the scope of the project. All external entities are identified that will interact with the system and a high-level is used to design then nature of interaction. All use cases are identified while significant ones are described. Business case include risk assessment, success criteria, estimation of needed resources and phase plan indicating dates of major milestones (Rational software development company, 2001). The inception produces a vision document of key features, main constraints, and requirement of the project.
An initial use-case model, project glossary, risk assessment is included. Several prototypes are shown, together with business model and project plan having iteration and phases. Evaluation criteria used in the inception phase includes actual expenditures versus planned expenditures, depth and breadth of architectural prototypes, priority of risks and schedule estimates as well as requirement.
Elaboration phase analyzes the domain of the problem, establishes a sound foundation for architecture, develops plan for the project and eliminates risks in the project. The stage involves making of architectural decisions, identifying functional and nonfunctional requirements as well as performance requirements (Rational software Development Company, 2001). The stage involves built up of executable prototype in various iterations, according to the risk, scope, and size of the project. Elaboration phase produces use-case model while identifying actors. A software architecture description is produced, executable architectural prototype, revised list of risk ad business case and updated development case specifying process for use.
Construction phase involves development of components and features, which are later integrated to form product whose features are tested. It is a manufacturing process with emphasis on managing resources. Control operations optimize costs, quality, and schedules. The management transits through intellectual property development at inception and elaboration to the development of products for deployment during transition and construction phases (Rational software Development Company, 2001). The construction phase achieves user manuals, contains description of current release and integrated software product on appropriate platforms.
Transition phase delivers software product to the community. The phase conducts beta testing with an aim of validating new system versus various expectations of the user. Operational databases are converted, as users are trained and maintained. The products are rolled out to distribution, sales teams and marketing. The transition phase aims at gaining self-supportability of the user, achieving concurrence of the stakeholder consistent with the evaluation criteria (Rational software Development Company, 2001). It targets the baseline of final product and how to achieve it using cost effective methods.
Iterations phase is a loop that releases executable product. Iterative approach is advantageous compared to iterative approach in that it mitigates risks earlier, manages changes, reuse level is higher, and the overall quality is better (Rational software development company, 2001).
Agile unified process (AUP)
Agile unified process (AUP) has similar names with RUP although they are simplified and the two are architecture centric. Elaboration phases of the two ensures that all technical risks are addressed. RUP and Agile methods are commonly used software development methods, which are both iterative. RUP is a framework that offers adaptability to development of software without considering its size. RUP is implemented by organizations that aim at minimizing risks and efforts since it requires minimal customization. It results in complex processes that demand documentation artifacts. However, agile methods are lighter since they assign developers with the authority of the project (Christou, Ponis, and Palaiologou, 2010). Moreover, the two methods are not compatible.
AUP is easier to understand when developing software related to the business. RUP applies agile techniques such as modeling, test-driven design (TDD), and management of change and refactoring of database with an aim of improving productivity. Agile modeling is the basis for development and is a key concept introduced in AUP to model and document software. Thus, Agile methodology (AM) is a combination of values, practices and principles used to model software in a soft way.AM values simplicity, feedback, humility, courage and communication. It is simple and embraces the fact that systems and requirement will change in the project lifecycle (Christou, Ponis, and Palaiologou (2010. It accommodates various changes of requirements incrementally and gives rapid feedback from stakeholders of the project after release of software.
Agile unified process in banking
Agile unified process (AUP) is today used in banking because of its usage of monolithic and large legacy systems. Banks are forced to adapt the new service-oriented computing paradigms due to major advancements in development of software. Rational unified process could be used but it is not trivial in its customization. Agile unified process (AUP) remains the only fit method since it will deliver budgets on time, it will integrate heavy legacy using back-end application systems and has new client-user interface applications that are reengineered on modern service-oriented architecture (SOA) platform (Christou, Ponis, and Palaiologou, 2010).
Agile Unified process (AUP) is iterative and serial in nature. Christou, Ponis, and Palaiologou (2010), explains that AUP has four phases including inception, elaboration, construction, and transition in its lifecycle. It has seven disciplines that express its iterative nature, model, implementation, test, deployment, configuration management, project management, and environment. The AUP lifecycle is serial in the large and iterative in the small, delivering incremental releases over time.
Phases of agile Unified process
Inception stage begins with definition of the initial scope of the project, estimation of schedule and costs involved definition of risks, determination of project feasibility and preparation of the project environment. The project team defines the scope of the project as a stage where the user desktop hosts applications in private banking. Daily tasks are automated by the ID system through global handling of customers. The SOA-based parent project architecture is exploited while many concurrent customer sessions are managed (Christou, Ponis, and Palaiologou, 2010). Lastly, customer information is sourced by the ID system that intelligently shares it in different applications to minimize redundancy and reduce time used to complete projects.
During inception, the team uses AUP to identify at least ten use cases and other key requirements. Cost and schedule estimates are made for later phases, which involves accurate and detailed planning of tasks scheduled for completion. Projects risks are identified with highest risks driving scheduling of iterations. The team identifies difficulties such as communication of new benefits to architecture to various users and manages production of useful results. The scheduling requirements are met to match with the innovative approach of the project. User commitment and management is maintained in all phases (Christou, Ponis, and Palaiologou, 2010). Incompatibility of various requirements of the project, the culture of the bank and infrastructure are satisfied.
Elaboration stage identifies architecture of the lifecycle such as stability of the vision, stability of the architecture, acceptance of risk, planning of the project, compliance of the enterprise. Elaboration stage validates the lifecycle, evolves the environment of the project, and is involved in staffing the team for the project. Elaboration aims at ensuring that the team develops system that satisfies requirements as well as working skeleton referred as architectural prototype. Business analyst gather requirement as the development team prepare a mock-up demo having screenshots for functioning of defined software. User workshops are held, as comments are gathered, remarks recorded, and suggestions given. Correction requests are obtained in testing workshops designed for user acceptance. Changes are made while top management is signed off (Christou, Ponis, and Palaiologou, 2010).
Risks are identified and prioritized while significant ones are addressed. Architectural risks could be addressed in many forms such as researching similar systems, conducting stand-alone test suite and establishing a working prototype. A working prototype is useful in show casing of the architecture and the functionality of the user interface. Project management ensures mitigation of usability and architectural risks. The ID, management of the portfolio, hosts core banking and customer relationship, fraud is detected and reporting of suspicious activity takes place. A management information system for private banking is established. Processes such as creation of the flow of the process, sequence diagrams, and use-case are conducted (Christou, Ponis, and Palaiologou, 2010). Use cases are written in the elaboration phase where daily tasks are described in detail, which are then documented by the technical members. That becomes the start of a new construction iteration.
Construction stage is involved in modeling, building, and testing the system. It also develops supporting documentation. The system is developed for preproduction testing. The features of the system are implemented to form two time-boxed iterations that lasts for 24 to 46 working days. The iteration result in efficient software release.
Transition stage is involved in testing of systems, users, reworking the system and deployment of the system. It aims at delivering the system to production process where the system is deployed to its target users. Initial release feedback leads to extra refinement, which are incorporated within the two transition phases. Extensive beta testing occur with fine tuning of current applications that are hosted. Significant defects are addressed. The product release milestone is passed as users exit the transition phase (Christou, Ponis, and Palaiologou, 2010). They include acceptance from business stakeholder, operations, support, cost and estimate acceptance, as well as reasonable estimates done.
Objectives of the lifecycle
The lifecycle defines initial requirements needed, accepts risks and process, plans concurrence and its scope. It aims at planning the project, and identifying the feasibility of the project. AUP is architecture centric and ensures that users have addressed technical risks. It is driven by use-cases, it is simple in that its deliverables are few such as source code and regression test suite (Christou, Ponis, and Palaiologou, 2010), streamlining of phases reduces market time. AUP defines few roles.
Iterative disciplines used in AUP
Modeling discipline assists in understanding organizational business as well as main problem addressed in the project. Moreover, it identifies appropriate solution for use while addressing the domain in the problem. Implementation discipline aims at transforming models to form executable code and perform basic testing level such as unit testing. Testing discipline evaluates objectives to maintain quality.it identifies defects, validates proper working of the system, and ensures that requirements are met. Deployment discipline plans for the delivery of the system and executes plans that avails system to its end users. Configuration management principle manages access to the artifacts of the project such as tracking versions of the artifact over time as well as managing and controlling changes. Project management principle is involved in directing activities involved in the project such as risk management, direction of members of staff, people coordination, and systems outside of the scope of the project. The process ensures timely delivery and within budget limits (Christou, Ponis, and Palaiologou, 2010). Environmental principle supports team by availing guidance, tools, templates, and proper process.
UP-based development case addresses breadth and depth of UP framework. Basic Unified process (BUP) is a major subset of RUP material. Unified modelling language (UML) is applied broadly, having standardization of the industry and a general purpose evolutionary. The modelling techniques specify, document, visualize, and construct artifacts in the intensive process of systems. UML is applied in software and hardware systems, domains, processes, and methods. UML promotes use-case-driven, incremental, and interactive process as well as architecture-centric (Scott, 2006). Software process engineering meta-model (SPEM) is a standardized language in modelling used in industries to communicate processes and their frameworks. However, enactment of processes is not described.
Elements of the unified process (UP)
Elements of the unified process include collaborations, contexts, interactions, iterations, linear approaches, sequential approaches, and iterative approaches.
Collaboration is an interaction within contexts. It captures what persons are doing certain activities on various products, thus establishing project elements. Roles are teams with responsibilities of various artifacts and activities. It is a work unit comprising of steps. Artifacts are information elements. Unified process defines artifacts, activities, and roles (Scott, 2006).
Contexts emphasize static and structural elements of a collaboration and their spatial relationships. Contexts capture where activities are done and locations of production and consumption. Thus, unified process establishes contexts of a project. Sequential phases are included in the development cycle, which result in system generation. Phase is a major milestone comprising of a management decision point that concentrates on managing business risk. Phases include processes of solving problems (Mujumdar, Masiwal, Chawan, 2012). Iteration includes a minor milestone that is aimed at managing technical risk.
Phases in unified process
The unified process has inception phase that concentrates on establishing the scope of the project and its vision. It establishes the feasibility of the business and stabilizing the project objectives. Elaboration phase concludes with architecture milestone and concentrates on establishing the requirements of the system. It identifies the technical feasibility of effort put in and stabilizes the system architecture. The construction phase concludes with initial operational capability milestone and concentrates on system building (Scott, 2006). Transition phase ends with release of the product and concentrates on transitioning and system deployment to the community of the user. The inception phase concentrates much effort in business modelling and requirements discipline (Mujumdar, Masiwal, Chawan, 2012). The elaboration phase concentrates its effort on requirements, design, and analysis as well as implementation disciplines. The construction phase distributes much of its effort on analysis and design, test and implementation disciplines. The transition phase puts much on deployment and test disciplines.
Unified process supports configuration and change management discipline to manage system configuration and change requests. Project management discipline manages the project. Environmental discipline concentrates on tools and process of the project in the environment. Business modeling discipline assists to understand business automated by the system and captures the knowledge in the business model (Scott, 2006). Requirements discipline concentrates to understand system requirement automating business and captures the knowledge in use-case model. Analysis and design discipline analyzes requirements and design systems. Such knowledge is captured in the design model. Implementation discipline implements the system according to implementation model (Mujumdar, Masiwal, Chawan, 2012). Test discipline conducts tests on the system depending on test model needs. Deployment discipline aims at deploying the system on deployment model.
Interactions is a step and route to certain destination. It has an evaluation criteria resulting in demonstrable progress. An iteration is iterative in nature because it is repetitive involving working and reworking. It is incremental because it has additional activities and parallel where works gets concurrent within iteration (Mujumdar, Masiwal, Chawan, 2012). Unified process is case driven where iterations are evaluated and planned against functionality chunks.
Iterations show progress by evolving many chunks while managing the complexity and system integrity. They are subsystems for security, data storage, external communications, input and output as well as reporting. Unified process confronts risks from humans, technical, business. Human risks involve inexperienced, insufficient and untrained personnel. Technical risks include use of unproven technology and using technology that users are not certain of its results. As a result, iterations confront risk obtained from use cases and architecture by reconciling technical and business forces (Scott, 2006). Iteration approach offers explicit opportunities for use during partial deployment of the system
Application of the unified process
The process engineer should be aware of various guidelines before making decisions. They include addressing reasons for particular roles, artifacts and activities along with their application. Process engineers have to address results of utilizing artifacts (Scott, 2006). Engineers should balance roles, artifacts, iterations, extremist, and purist among team members.
In conclusion, the unified process is an evolution from Agile unified process and Rational unified process. The three have lifecycles stages, disciplines they follow and processes. Phases followed include inception, elaboration, construction, and transition. Disciplines followed include business modeling, requirements, analysis, design, implementation, test, configuration, and change management.