Sunday, December 18, 2011

ModeL, MoDel, MoDeL - Assignment # 4

Identify and discuss at least 3 systems development models. Discuss each phases.
   
As of today, there are different system development models in system development in order to reach the desired result which match the requirements that are impose by the business or company and to give ease on the end users of the system. System development models varies on what kind of environment does the system will be deployed, can be the system delivered on the specific date mandated by the business or company, how could the system address solution to the end users problems, the resources that are available for the system development and also to the decision of the ones making the system. System development approach are divided into two, first is the predictive approach in which the proposed system is planned ahead of time and the second is the adaptive approach which is the propose system is adaptive to changes that may occur during the development phase of the propose system. But even though system development approach is divided into two they both have similar phases that the system should under go throughout its life cycle and there are four that mentioned by Ronald LeRoi Burback (1998).

The Analysis Phase
According to Ronald LeRoi Burback (1998), this phase defines the requirements that the system should meet disregarding the implementation details and provides a requirement document of the system. The requirement document contains both high and low level details of the requirement. One example that was stated by Ronald LeRoi Burback (1998) on low level details that would appear in the requirement document is a constraint on the image size of the application. And high level details are those that needs to be specific and should be exact, which it could need mathematical logic or engineering details. Ronald LeRoi Burback (1998) also said that requirement document describes the things in the system and the actions that can be done on those things. In a HR system for an example, an administrator could add new users, edit users information, view users information, delete users, activate or deactivate users account or limit users access on the system. The one of the things that is present in the example was the user and the actions that the user can have are add, edit, delete, activate or deactivate and limit access.
Ronald LeRoi Burback (1998) also tells that it is too unclear when requirements are describe in written human language and harder to describe it based in mathematical logic, so precise description is not attainable. But even so that a precise description is not attainable, system requirements must be better describe with the use of both written human language and mathematical logic in order to secure that the system will deliver its desired functions.
Ronald LeRoi Burback (1998) also tells that a requirement document should include states, events, typical scenarios of usage and atypical scenarios of usage where:

States - are defined as a sequence of settings and values which distinguishes one time-space slice of a system from another slice (Ronald LeRoi Burback 1998).
        Typical Scenario – what should the system would normally do.
Atypical Scenario – what should the system would do if there are errors. The system should be able to deal with errors and faults by using several established techniques, such as exception handlers, replications, process monitoring, and roll over (Ronald LeRoi Burback 1998).           
   
The Design Phase
In this phase, the system architecture is established. This architecture defines the system’s component, interfaces and behaviors according to Ronald LeRoi Burback (1998). In this phase, it discusses what kind of software and hardware tools are the developing team should use and what are the trade-offs upon using it into the system. Also, the graphical user interface of the system is created and designed in this phase, what could be the fields that should be needed, what are the buttons that should be put and how should be the data is presented. If it deals with the data storing and processing, the kind of database management system to use and the database design is designed in this phase.
Aside from the architecture document, this phase should also indicate critical priorities by having critical priority analysis (Ronald LeRoi Burback 1998). Critical priority analysis creates list of critical task which are categories into two, the first is associated with construction of the system and the second is the system once it is implemented (Ronald LeRoi Burback 1998). In the system’s construction, as an example given by Ronald LeRoi Burback (1998) was “a high-quality implementation of a critical section of code in the system”. While on the system once it is implemented is, for an example in an enrollment system, the system should calculate the new tuition of the student after the student’s add or drop a subject.

The Implementation Phase
The results of this phase are the codes that are group into modules that performs specific task in the system and satisfy what is requested and what is in the design document presented by design phase. But as to what Ronald LeRoi Burback (1998) said, even though the requirements are achieve, there should be space in the system for improvements and innovations. Also, in implementation phase critical points in the system is dealt and remove.

    The Testing Phase
        Quality, the system is useless even though it meets all the requirements aside from quality. In this phase, the developed system is being tested in order to check either it has bugs throughout its running state and be able to fix it before the actual release of the system. Testing techniques are bases on regression and then split into several major focuses namely internal, unit, application and stress (Ronald LeRoi Burback 1998).
Regression Testing – the system runs into multiple tests, bugs that are found on the test are corrected the tests conducted and its results are collected. Those valid results will become the standards of the system for the next test to conduct.
Internal Testing – it test the internal functions or components of the system.
Unit Testing – this test certain parts of the system which it contains multiple functions as one that interacts which each other.
Application Testing – Graphical User Interface based testing. In this test, it checks whether the buttons in graphical user interface of the system is working or the text field is editable.
Stress Testing – this test the system into the environment. The system is test with the workloads greater than it should have experience. How does the system can handle stress when it is deployed.

Through the needs and innovations that exist as of today in system development, different system development models arise in order to cope up with the needs of today’s world. It roots from the traditional system development lifecycle and it continues to grow. Some of those models are as follows:

Waterfall Model
    The waterfall model is one of the examples of system development model that belongs to the predictive approach in system development in which the development process of this model is from top to bottom just like a waterfall. Each phase in this model is passed sequentially throughout the system development and every phase that is finished provides results that are needed for the succeeding phases. Some of these phases that are mentioned in (waterfall-model.com) are as follows:
   
Definition Study / Analysis
This is the initial phase of the system development. In this phase, the problem is defined by gathering information or data that are relevant to the existence of the problem and then analyze those data in order to formulate solutions in the form of a system which address to the problem. Information gathering and analysis can be done by conducting formal or informal meetings and visits with the company or business and interview the end user of the system. It also much better to conduct brainstorming within the development team in order to come up even greater ideas that could profit not only to the end users but also will help them throughout the system development phases. Different solutions may come up during the problem analysis but it doesn’t mean that there can only be one planned solution to the problem, so it should be decided in this phase what kind of planned solution they should take in order to provide result into the next phase. It should be clear to the development team what the requirements are and specification of the clients with regards to the system for it may alter the system development if there are changes between the phases and will cause delays on the development team.

Basic Design
After a result is derived during analysis, the construction of the basic design of the solution is done in this phase. A general overview of the system or what can be seen after the system development is finished. What are the modules and graphical user interface that the system should have but it does not have the functionally yet. The design should be also based on the requirements that are passed from the analysis phase. It is also important to understand the requirements of the end user should be able to visualize what would be the system would like when it is finish for it will help in formulating the design.

Technical Design / Detailed Design
Once the basic design is layout, it is decided in this phase what are the functions and modules and how they will work in the system. The programming approach when it comes in writing the codes is also decided and tackled in this phase. The system can be programmed in procedural way in which codes are executed from top to bottom or it could be programmed in an object-oriented way. Procedural programming is good when the developer is writing short codes but it would be disastrous if the developer will write most of the code in one file, it is very time consuming for the developer look certain part of the code to change or modify it and it is error prone for its process may be connected to parts of the code within that file. While on the object oriented way of segregates each functions into different file which they are related and creates an object of it so when it is needed, the developer will just invoke the object in to use and access the functions related to it.

Construction
In this phase, the source code the system is written. Coding can be done by different levels of abstraction. The system can be modulated and then program each module based on what it should do for the system and later combine it together after all modules are finish in coding. The system can also be program in an object oriented manner, where functions are group by there relativity and can be access by its object.

Testing
After the system is finish and has its functionality, the system now will undergo through different types of tests in order to check whether it has bugs or miscalculations in order to correct it before handling it over to the end users. In this way, the development team insures the quality of the system and should meet needs and standards of the client.

Integration
In this phase, integration could mean that the system could be put into a hardware device, run the system together with other third party software or by just deploying it into the work area. Embedded systems, if the developed system is needed to be place within a hardware device well then this is the phase for it. If the system is made to aid existing software, the system integration is done after testing the new system in order to avoid bugs and errors that may exist when the integrated system runs. And if the system is not an embedded system or an aid to other software, this phase would be the deployment part of the system into the work area.

Management
Once the system is up, especially if it is web base system, it is important to manage the system by keeping it up and be able to access the system anytime. It is important to manage what comes in and out in the system for it could affect the performance of the system, the traffic that the system could handle during normal or busy internet hours.

Maintenance
After the system is deployed, it does not mean that it is completely perfect. Even though it does passed all the test conducted during its development phase, it does not guarantee that it will work as it is always be especially when the environment it has is different from its development then into in deployment. During the test, the developers cannot assume all the possible inputs and actions that could be entered and be done when it comes in the work environment. So it is important to maintenance and updates on the system in order to keep it working and to continue its service to the client.


Spiral Model
    Developed by Boehm in 1988, the spiral model iterations of prototype are represented as a cycle in the spiral [3]. This model is one of the examples of the models that use adaptive approach throughout its system development and the development grows bigger in every iteration or cycle the system development using this model finish. Spiral software development model is a risk-oriented and cost inefficient software development approach [3] for it requires expertise on the side on the development team and in order to cope up with the development, the system development should be aided by new technology such us CASE tools. This system development model is applicable to use in large scale projects and if the project provides difficult requirements in such short development time [3]. Its development phases was the same as the waterfall system development model but its development does not stop when it reach into the implementation and delivery phase, it will go back to the initial phase for any improvements and reconstruction on the previous iterations until it finally meets the requirements set by the end users. To be able to know better what does really happen on the spiral model on system development, onestoptesting.com mentioned steps in spiral development model [4] and they are as follows:
1.    The new system requirements are defined in as much detail as possible. This usually involves interviewing a number of users representing all the external or internal users and other aspects of the existing system [4]. The system development can’t move ahead if the system requirements are not sufficient enough in order to come up with the system that will address to the end users problems.
2.    A preliminary design is created for the new system [4]. This is the phase where the developer designs an initial prototype of the system given those requirements that the system should become after its completion.
3.    A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product [4]. The first prototype may not
4.    A second prototype is evolved by a fourfold procedure: (1) evaluating the first prototype in terms of its strengths, weaknesses, and risks; (2) defining the requirements of the second prototype; (3) planning and designing the second prototype; (4) constructing and testing the second prototype [4]. After the delivery and implementation of the first prototype, the development team will go back to analysis phase and then determine what adjustments the development team should do on the first prototype. Also,
5.    At the customer's option, the entire project can be aborted if the risk is deemed too great. Risk factors might involve development cost overruns, operating-cost miscalculation, or any other factor that could, in the customer's judgment, result in a less-than-satisfactory final product [4]. When using this kind of system development model in developing a system, it can’t be avoided that the system under development will be prone to risk due to fast and rapid pace of its development that some factors could pose potential threat not only to the development team but also to the client. So the client should have the call to stop the system development when it becomes too risky to take.
6.    The existing prototype is evaluated in the same manner as was the previous prototype, and, if necessary, another prototype is developed from it according to the fourfold procedure outlined above [4]. All other prototypes should undergo the process that the first prototype have undergone to insure not only the quality of the presiding prototypes but also to insure that the system will still address itself by being the solution to the problem.
7.    The preceding steps are iterated until the customer is satisfied that the refined prototype represents the final product desired [4]. As what comes in my mind after I have read this is that the system development completion with regards to the spiral model approach could depend on the customers satisfaction, so it could mean that the system can finish ahead of the target time or be delayed as much as the time you have started.
8.    The final system is constructed, based on the refined prototype [4]. Of course, the finish system should be derived from it previous prototypes and those changes that are made in order to function it is desired.
9.    The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime [4]. After the client is satisfied on the final system it is always comes fort the maintenance of the system in order for it to provide its purposes of existence and track and prevent possible bugs from crashing the system down.
       
Sashimi Waterfall Model
    The sashimi waterfall model was originally created by Peter DeGrace [5]. By permitting overlap between the phases of the sashimi, issues can be discovered in the earlier software development process which helps in minimization of re-work and a better final product [5]. So during the planning phase, system developers can discover problems that may occur during the design and implementation phase of the system and so as to the presiding phases as well and then formulate solution for it in advance. The sashimi waterfall model process consist of six phases, requirements, design and architecture, development and coding, quality assurance and software testing, implementation, and maintenance and support [5]. These phases are similar to any other system development model but some phases in this model do not wait for the other phase to finish, overlap occurs.
    Requirement Phase – Most commonly on every system development phases, system requirements are very important for it will the dictate the entire system development process.
    Design and Architecture – in design and architecture, it is the technical and/or functional definition of the project in which they defined [5].
    Development and Coding – Depending on how hard the project is, the development and coding of the project may begin even if the design and architecture is still on going or it may not and waits for the previous phase to finish its task and then start with and development. As to what is have understood, if the development and coding in finish and implemented ahead of time, early feedback can be derived from it and be able to come up with adjustments to the system [5].
    Quality Assurance and Software Testing – Testing occurs throughout the development process and by this, issues and bugs are determined. Developers are encouraged to test the software throughout the development of the software and also in deployment process [5]. Those tests includes Unit testing, Regression testing, Integration testing, Performance testing, Load testing, Compatibility testing, system testing, functional testing and human factors [5] that will affect the total run of the software in it is out.
    Implementation – This phase can also overlap with other phases depending on the nature of the project [5].
    Maintenance and support – Clients satisfaction should be insured and should be able to provide solutions to problems that may arise after the software’s implementation and deployment.

It should be taken into account what kind of system development model we should take by realizing all the factors that will influence the system's development like the client's requirements and the time it will take for the system to be finish and delivered to the client.

References:
1]. Waterfall Model
www.waterfall-model.com
2]. The Analysis Phase by Ronald LeRoi Burback (1998)
http://www.infolab.stanford.edu/~burback/watersluice/node4.html
3]. Spiral Lifecycle Model
    http://www.softdevteam.com/Spiral-lifecycle.asp
4]. Spiral Model
    http://www.onestoptesting.com/sdlc-models/spiral-model.asp
5]. Sashimi Waterfall Model
    http://www.waterfall-model.com/sashimi-waterfall-model/

No comments:

Post a Comment