The concept of the software life cycle began when the software development community has recognized the need for to-tech industrial production of programs. As it usually happens in such situations, the programmers have tried to transfer the experience from other industries in their scope (Ince and Andrews 4). In particular, they borrowed the concept of the life cycle. The software life cycle is a series of events that occur, while the system is in the process of its creation and further use (Langer 1). In other words, it is a time from the initial inception of any software until the end of its development and implementation.
The software’s life cycle can be described in the form of models. The software development life cycle model is a structure that comprises processes, actions, and tasks that are carried out in the course of development, use, and maintenance of the software product. The analogy of the software life cycle of technical systems has deeper roots than it may seem at a first glance. Programs are not deterioration subjects, but in the course of their exploitation, some errors may be detected (faults, bugs), and those errors have to be corrected. Errors also arise from changes in the conditions of the program use.
The need to make changes to the existing programs due to detected errors, and requirements evolution leads to the fact that software development continues after its transfer to the user and for the entire lifetime of the program. Activities related to the solution of numerous problems of such ongoing development are called software maintenance (support).
The focus of this work is to describe and analyze the rarely mentioned object-oriented software development lifecycles (OOSDL) and their models.
In terms of technology, the relation to the iterative development of a project fundamentally distinguishes the object-oriented approach to all of the successive methodologies. In traditional approaches, iteration is a correction of an error, which is a process that is difficult to standardize and regulate in terms of technology (Heath 21). On the contrary, in the object-oriented approach, iterations never cancel the results of each other, but always supplement and develop them (Mala and Geetha16).
The Principles of Object-Oriented Design. Principal moments in which an object-oriented approach to project development must be compared to traditional sequential methodologies are as follows:
Iterative Development. Since the phase of analysis and until the completion, the process of object-oriented design, as opposed to the progressive development, is built as a series of iterations, which may precede a certain period of consecutive subject study area and tasks of the project, as a whole (the steps of determining the requirements and initial planning).
Functionality Increase Due to the Scenarios. Functionality build-up of designed product is presented as a development of scenarios that fit the descriptions (diagrams) of the objects’ interactions and reflect the individual aspects of functionality. These descriptions require the development at the stage of programming of the project’s operating base. It is generated from the scenarios of design level (construction). Full functionality includes the functionality of all scenarios. Thus, this strategy is found to be very close to the classical method of step-by-step detail, the use of which increases functionality by clarifying low-level modules. However, unlike this method, iterative build-up requires for the product to be completely functional, and implemented by the planned scenario as a result of each iteration. Subsequent iterations add other functionality that is planned for another scenario.
Nothing Is Done Only Once. The successive approach assumes that the analysis is completed before the construction, completion of which precedes the programming process. Overlapping of stages weakens this assumption but does not fundamentally change the situation. In most object-oriented projects, the analysis is never completed during the project development period, and construction process accompanies the development in the whole course of its lifecycle (Heath 20).
Handling on Breeding Phases. As at the beginning of design, the analysis precedes the construction for subsequent iterations, followed by programming, testing, and other activities.
In object-oriented design, traditional steps are usually performed in the course of an iterative build-up (Singh and Malhotra 51):
Requirement Determination or Iteration Planning. What must be done is recorded within this iteration in a form of the domain description for which it is planned to develop the functionality of this iteration, and what is necessary to complete this task (Langer 21). This stage includes a selection of scenarios that must be implemented on this iteration.
Analysis. On this step, there is an examination of the implementation conditions for the planned requirements, and verification of the completeness of selected scenarios in terms of the implementation of the required functionality.
Modeling the User Interface. As soon as the iteration provides functionally complete implementation, model defines the user view of the objects behavior of a given iteration.
Construction. It is a decomposition of the project. Construction involves set-up or build-up of a class system hierarchy, event description and definition of reactions to them, etc. During the construction, the objects are determined, which are going to be implemented or extended on the current iteration. A set of functions (methods of objects), which provide a solution to the problem of the iteration is also determined at this phase (Bowen and Hinchey 242).
Implementation (Programming). It is a software embodiment of decisions that were approved for this iteration. The necessary realization component is considered to be an autonomous verification of compiled modules and their corresponding specifications.
Testing. The phase of checking results obtained in this iteration.
Iteration Evaluation. It is a phase that includes all of the activities related to the consideration of the results in the context of the overall project. In particular, it should be clarified what project objectives can be achieved, taking into account the results of iteration, which previously asked questions were answered, and what kinds of questions arise in a new environment.
You may find this article Tips on Writing an Effective Essay interesting
Modification of the Phase Function Model. Traditional stages of the object-oriented development of the project in a single iteration allow setting the task of modeling iterative build-up process, as a modification of the existing models of the life cycle. In this section, such modification is carried out for the advanced phase function model.
As compared to traditional model, the phase measurement of the life cycle remains almost unchanged. There is only one additional step, namely “Modeling the user interface,” which can be viewed as a part of the analysis or construction in the old scheme. However, it is a very significant addition that characterizes the approach, in general. The motive of modeling the explicit consideration in OODLC is mainly associated with the following two features:
Distribution of Implemented Requirements by Iterations. The set of scenarios to be implemented in the next iteration and a set of previously implemented scenarios always form a complete, albeit an incomplete version of the system, which is offered to the user. For various reasons, including avoiding ambiguity in the understanding, it is important to view planned actions for implementation in the form of models, which match the user’s view of the system by the users with the point of view of developers. These models appear in the analysis stage, which is reflected in its name – model of the analytic level.
The Special Style of System Opportunities and Development Building-up. A presentation of the system, as a set of related classes, is the basis of project decomposition within an object-oriented approach. Each iteration expands this set by adding new classes, which have a certain relationship with the previously constructed class system. It is almost impossible to run such extension correctly without abstracting from the details of the implementation of existing and without the same abstract representation of the added class. In other words, there is a requirement to build the construction level models that specify the implementation representation of the designed system.
The list of the stages of the life cycle mentioned above had clearly allocated the analysis level modeling, which leads to the construction of the scenarios’ model representation; however, it is only one aspect of the project modeling. As it was just indicated, another equally important aspect of the simulation shows himself at the construction phase (Singh and Malhotra 20). Finally, there is a third modeling aspect, which is mainly associated with the presentation of each version of software product to the user. Thus, if a manager follows traditional life cycle description style, it is wise to allocate the technological model function that surrounds the whole process of project development, instead of a simulation stage.
In the new scheme of the lifecycle, there is a strictly regulated cleavage, which is singular for the entire work sequence (Fig. 9). However, this route reflects not the adjustments of wrongly accepted decisions, but the planned acts, which fixate product features, escalating in the course of the iteration. For obvious reasons, the object-oriented design causes a somewhat different content of stages, as it is reflected in the number and names of the events below.
While discussing the life cycle model with an object-oriented development of the project, it is necessary to point out the objectives that go beyond the standardized iterative process. This is the initial phase of the project, which is performed at the start of research and analysis of the feasibility; and completion phase, with the implementation of which the work on the project (or iteration) ends.
The meaning of initial phase objectives is the overall planning of the project development. In addition to the traditional content that is attached to the steps of determining requirements for the project as a whole, they should become a development basis in two respects:
1. It is necessary to determine the immediate task and future objectives of the project. First one is the task of the first iteration when the first working product is prepared and presented to the customer. From the development point of view, a solution to the nearest tasks must provide the feasibility for later iterative system opportunity build-up. Project’s fate, as a whole, depends on the quality of these two results.
2. It is required to choose the criteria for assessing the results of the iteration. These criteria may vary, depending on the direction of the project, the application area, and some other factors.
The completion phase of the project (iteration) covers a part of the life cycle, which reflects on the development activities related to the work products of iteration after the results. It is similar to the traditional phase of operation and maintenance, but there are some differences due to the fact that the object-oriented project typically has to deal with version hierarchies of the system, reflecting capacity build-up. This phase overlaps with the assessment stage.
Traditional Shutdown Phase includes:
· Supply or packaging of products for the consumer (point 9 in Figure 9)
· Software support
· Work completion stage. The notification of the termination of support and activities supporting the current version (points 11, 12)
As it was already mentioned, the work related to the reuse of the working products is essential for the object-oriented design. Prior to the completion phase, reuse is usually considered for the current project (environment replenishment stage). After the application (iteration product) is used for some time and is considered to be ready, the part of this phase is carried out:
· Allocation of common (unattached to the project) reused components (usually associated with the event of the system spread – point 10).
One of the essential aspects of object-oriented design is a refusal of the traditional postulate that all system requirements are formulated in advance. Hence, lifecycle modeling, in general, needs to consider the external processing flow requirements at all stages. The requirements at the completion phase of the forthcoming iteration are deemed to refer to the next iterations, i.e. the following versions of the system. In this case, the end of the iteration means software product support, and the ending of operations within this version. Suggestions for the development of the project during this period are accounted for as requirements for subsequent iterations. The project completion is considered as a refusal to support all versions of the system. In comparison to the object-oriented approach, when taking into account the requests to a system during its exploitation means the organization of a new project with possible new requirements.
As shown above, it is appropriate to expand the list of technological functions through modeling. Accordingly, it is necessary to define intensity line for this function in the Traditional matrix. The distribution of the intensity of the life cycle of the modified model can be set in such a way, as it is done in Fig. 10, which shows a new view of the model.
Represented distribution of intensities cannot be an absolute. It would be naive to assume the stability of the intensities of the technological functions within iterations. Consequently, the two-dimensional representation of a modified traditional model will not be able to represent the entire project development cycle in the matrix. It may not show the changes in the intensities of technological functions in the transition from current iteration to the next one. For this reason, it is better to consider the intensity distribution of technological functions, as a trend that is integrally average to iterations. The practical usefulness of the functional review of the measurement is not in a specific intensity distribution of technological functions in real projects, but in that it makes project managers think about the balance of forces in the development team and correct allocation of human resources of the project (Ince and Andrews 14).
Invite your friends and get bonus from each order they
Parallel Execution of Iterations. Any software project that deserves to attract management to support development is a collectively developed process. Therefore, it is appropriate to raise the question about display of staff activity simultaneity in the life cycle. It is one of the reasons for the models’ development.
In the model, which follows traditional phases-function scheme, a quality of software product development process is reflected by a functional dimension that shows which technology functions are performed simultaneously. As a part of the object-oriented approach, another kind of technological parallelism exists, which is the simultaneous development of several iterations by different groups of performers.
Technological parallelism means fundamental feasibility of the simultaneous development of several iterations. However, it does not deny the permission of their mechanical merge because iterations are dependent on each other. For example, a build-up of not yet built class system, use of a function with unknown conditions of its correct execution is impossible. It is necessary to be aware of these and other types of relations. The following areas should be distinguished:
Unacceptable Alignment Area. The execution of operation is directly dependent on the results of other operation.
Possible Alignment Area. The dependence is weakened by the fact that the expected results of the previous operation were well described. For example, models of construction stages are built and tested, although programming is not yet completed.
Rational Combination Area. The dependence of the operations is actually shielded. For example, a previous operation is complete, although perhaps is not fully validated, and interaction protocol is compiled and checked.
Fig. 11 (c) shows the areas of unacceptable, possible and rational alignments, as well as the area of sequential execution of two iterations. The inadmissibility of alignment means that there is no sufficient information to plan the next iteration, and, as a result, it cannot be done effectively. During the construction process, such information may appear, therefore, an opportunity appears to activate the work on a new iteration. Defining the area of rational alignment of two iterations reflects the fact that it would be unwise to begin a new iteration of the programming stage when the product of the previous iteration was not tested. An area of sequential execution indicates the time that corresponds to the beginning of the next iteration after the completion of the previous one.
Definition of these areas increases the flexibility of timing of the project. However, while planning the objectives, it is best not to rely on overlapping iterations and to leave this option, as a reserve of project’s temporary resource. Thus, it appears that iterative of object-oriented design has more resistance to the risks of failure of the project tasks.
Modeling an Iterative System Capacity Build-up. In previous OOSDLC models, an important aspect of the approach was not clearly highlighted. To reflect its representation, there is the lifecycle of the helix, as shown in Fig.12.
Horizontal segments with notes, having the same meaning, as in the previous model – they are iterations. They are placed in the area of system features that are provided depending on the time. Lines, which are parallel to the time axis, display user opportunity levels that are implemented within iterations (Roman numerals). Transition arrows between iterations display combining work conditions. This model highlights the fact of object-oriented development that the opportunities, which are offered by the regular iteration, never override the previously achieved iteration level.
The gradual build-up of opportunities in the course development of the system is often depicted as spiral, as shown in Fig. 13. In accordance with this coarse model, the development project is described as a progressive expansion of the increasingly expanding area. In essence, this model focuses on the fact that the object-oriented development leads to a gradual expansion of the application range for which constructed working products are used.
Object-oriented project development is often considered to imply unending traditional stages of the software system life cycle. The spiral model illustrates the significance of this thesis.
This model can provide another aspect of software systems design – a standard scheme of the development team, which, from its first project, gradually fills accumulated baggage of reused components in different systems.
Unlike previous models, both spiral models do not reflect the fact that the project has the completion phase. As a consequence, they suggest that all modifications of any version of the software system that is required after the release will be related to one of the following versions. In practice, this provision is often violated: it is necessary to maintain (and, in particular, modify) several versions of the system.
Struggling with your essay?
Ask professionals to help you!
Historically, the development of lifecycle concepts was always connected to the search of adequate models. The lifecycle model is an abstraction of the real process, in which details that are irrelevant from the point of view of its purpose are omitted. The differences of models’ purposes determine their diversity. The main reason to study the questions of software life cycle modeling can be summarized as follows:
This knowledge, even for a non-professional programmer, can help to understand what can be expected when ordering or purchasing a software product and what is unrealistic to expect from it. In particular, the uncomfortable program features, its errors, and defects are usually eliminated in the course of continuing development, and there is a reason to expect that the next version will be improved. However, a dramatic change of the program concepts is a problem of another project, which may not be better in all respects than the current system.
The life cycle model is the knowledge basis for programming technologies and tools that support them. The programmer always uses tools in his work, but a skilled programmer knows where, when, and how to apply them. The concept of life cycle modeling may help in such cases because any technology is based on a certain understanding of the lifecycle and builds its techniques and instruments based on the phases and stages of the life cycle.
Third, general knowledge of software project development provides the most reliable guidelines for its planning, helps to conserve resources and achieve a better quality of control. All these requirements relate to the field of professional duties of a software project manager.
An object-oriented approach to modeling of mentioned processes gives a more detailed picture of the project development (Bowen and Hinchey 286). Its use involves a number of secondary factors that can improve the quality of performance of design works, as each successive iteration solves (and, in particular, detects) a growing number of development issues (Mala and Geetha17). In spite of this fact, the use of this methodology is extremely rare because of the difficulty of the organization process (proper formation of a massive array of iterations is a complex task).