International Journal of Emerging Trends & Technology in Computer Science (IJETTCS)
Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com
Volume 3, Issue 3, May-June 2014 ISSN 2278-6856
Volume 3, Issue 3 May June 2014 Page 203
Abstract: The field of software engineering is related to the development of software. Large software needs systematic development. Simple Programs can be developed without following any systematic approach. From the last few years, the computer industry has undergone revolutionary changes in hardware as well as in software. Software management is a process that specifies the area of software development through the process models, which are known as software development life cycle. A brief overview about different models of software development and comparison between them was analyzed. This Paper categorizes and specifies a number of methods for describing or modeling how software systems are developed. It begins with background and definitions of traditional software life cycle models and current software development practices.
Keywords: Software design, software management process, software design, framework activities, software development life cycle.
1. INTRODUCTION The importance of computer is increasing day by day. Computer has become popular in different fields such as industry, medicine, commerce, education and even agriculture. Now a days, organizations become more dependent on computer in their works as a result of computer technology [4]. Computer is considered a timesaving device and its progress helps in executing complex, long, repeated processes in a very short time with a high speed. In addition to using computer for work, people use it for fun and entertainment. Noticeably, the number of companies that produce software programs for the purpose of facilitating works of offices, administrations, banks, etc, has increased recently which results in the difficulty of enumerating such companies. Today, software takes on a dual role. It is a product and, at the same time, the vehicle for delivering a product. Most of the people consider the program and software [12, 13] to be same. But software not only consists of programs but also the supporting documents. Software lifecycle models are used as tools for planning and monitoring software projects. Different models have been proposed. Each models effectiveness varies with project circumstances. It is widely acknowledged that no single model is effective in all situations. Because of this, an effective model must be selected for every project.
A software process model[14][5] is an abstract representation of a process. It presents a description of a process from some particular perspective as: Requirement Gathering: To develop software, first we have to gather all the requirements from customer or stakeholder. Planning: Basing on the requirements, budget, time has to be adjusted to develop the software. Analysis & Design: Complete Analysation is done on the requirements and planning. After complete analysation designing is started. For the design, different tools are used. Implementation: For the above design, code is generated with proper programming language. Testing and Maintenance: After completion of developing software, testing is performed. If the product is well tested then it will go for alpha and beta tests.
The above activities are called frame work activities. In any software life cycle models or software process models these five activities are performed and modified.
2. SOFTWARE APPLICATIONS Software may be applied in any situation for which a pre- specified set of procedural steps (i.e., an algorithm) has been defined (notable exceptions to this rule are expert system software and neural network software). Information content and determinacy are important factors in determining the nature of a software application[6]. Content refers to the meaning and form of incoming and outgoing information.
The following software areas indicate the breadth of potential applications[14]. System software.: System software is a collection of programs written to service other programs. Some system software (e.g., compilers, editors, and file management utilities) processes are complex, but determinate, information structures. Other systems applications (e.g., operating system components, drivers, telecommunications processors) process largely indeterminate data. In either case, the system software area is characterized by heavy interaction with computer hardware; heavy usage by multiple users; concurrent operation that requires scheduling, resource sharing, and sophisticated process management; complex data structures; and multiple external interfaces. Real-time software: Software that monitors/analyzes/controls real-world events as they occur is called real time. Elements of real-time software include a data gathering component that collects and formats information from an external environment, an Analysis of Software Process Models and Applications
K.Venkataramani 1
1 Sr.Asst.Professor, Dadi Institute of Engineering & Technology, NH-5,Anakapalli, Visakhapatnam 531002, INDIA International Journal of Emerging Trends & Technology in Computer Science (IJETTCS) Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com Volume 3, Issue 3, May-June 2014 ISSN 2278-6856
Volume 3, Issue 3 May June 2014 Page 204
analysis component that transforms information as required by the application, a control/output component that responds to the external environment, and a monitoring component that coordinates all other components so that real-time response can be maintained. Business software: Business information processing is the largest single software application area. Discrete "systems" (e.g., payroll, accounts receivable/payable, inventory) have evolved into management information system (MIS) software that accesses one or more large databases containing business information. Applications in this area restructure existing data in a way that facilitates business operations or management decision making. In addition to conventional data processing application, business software applications also encompass interactive computing (e.g., pointof- sale transaction processing). Engineering and scientific software: Engineering and scientific software have been characterized by "number crunching" algorithms. Applications range from astronomy to volcanology, from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing[7]. However, modern applications within the engineering/scientific area are moving away from conventional numerical algorithms. Computer-aided design, system simulation, and other interactive applications have begun to take on real-time and even system software characteristics. Embedded software.:Intelligent products have become commonplace in nearly every consumer and industrial market. Embedded software resides in read-only memory and is used to control products and systems for the consumer and industrial markets. Embedded software can perform very limited and esoteric functions (e.g., keypad control for a microwave oven) or provide significant function and control capability (e.g., digital functions in an automobile such as fuel control, dashboard displays, and braking systems). Personal computer software:The personal computer software market has burgeoned over the past two decades. Word processing, spreadsheets, computer graphics,multimedia, entertainment, database management, personal and business financial applications, external network, and database access are only a few of hundreds of applications. Web-based software:The Web pages retrieved by a browser are software that incorporates executable instructions (e.g., CGI, HTML, Perl, or Java), and data (e.g.,hypertext and a variety of visual and audio formats). In essence, the network becomes a massive computer providing an almost unlimited software resource that can be accessed by anyone with a modem.
Artificial intelligence software: Artificial intelligence (AI) software makes use of nonnumerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis[4]. Expert systems, also called knowledgebased systems, pattern recognition (image and voice), artificial neural networks, theorem proving, and game playing are representative of applications within this category.
3. PROCESS MODELS The classic software life cycle models [3][13] usually include some version or subset of the following activities: Communication: There must be proper communication between user and developer for better understanding of requirements. Planning : planning for the proper budget and deadline are prepared. Analysis & Design: Analyze all requirements and construct proper design using design techniques. Implementation: Code is written in understandable programming language. Deployment: Testing is performed and released to end users.
A software process model [8] is an abstract representation of a process. It presents a description of a process from some particular perspective as: 1. Specification. 2. Design. 3. Validation. 4. Evolution.
General Software Process Models[1] are: 1. Waterfall model: Separate and distinct phases of specification and development. 2. Prototype model. 3. Rapid application development model(RAD). 4. Evolutionary development: Specification, 5. Development and validation are interleaved. 6. Incremental model. 7. Iterative model. 8. Spiral model.
1. Water fall model: The waterfall model is the classical model of software engineering. This model is one of the oldest models and is widely used in government projects [2] and in many major companies. This model includes requirement gathering, planning, analysis & design, implementation, deployment.
International Journal of Emerging Trends & Technology in Computer Science (IJETTCS) Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com Volume 3, Issue 3, May-June 2014 ISSN 2278-6856
Volume 3, Issue 3 May June 2014 Page 205
As this model emphasizes planning in early stages, it ensures design flaws before they develop. The model begins with establishing system requirements and software requirements and continues with architectural design, detailed design, coding, testing, and maintenance. The waterfall model serves as a baseline for many other lifecycle models.
2.Prototype Model: The concept of prototyping is not new in various streams of engineering. A prototype is a partially developed product. Management define prototyping as a process [6] of developing working replica of a system. This activity of prototyping now forms the basis of prototype software development life cycle model. Most of the users do not exactly know what they want until they actually see the product. Prototyping is used for developing a mock-up of product and is used for -obtaining user feedback in order to refine it .
Rapid Throwaway Prototyping: This approach is used for developing the systems or part of the systems where the development team does not have the understanding of the system. The quick and dirty prototypes are built, verified with the customers and thrown away. This process continues till a satisfactory prototype [9] is built. At this stage now the full scale development of the product begins. Evolutionary Prototyping: This approach is used when there is some understanding of the requirements. The prototypes thus built are not thrown away but evolved with time. The concept of prototyping has also led to the Rapid prototyping model and the Spiral model.
3. Rapid application development model (RAD): The Rapid Application Development (RAD) model [9][10] was proposed by IBM in 1980s and later on was introduced to software community by James Martin through his book Rapid Application development. The RAD model consists of following phases:
1. Requirements Gathering focuses on collecting requirements using elicitation techniques [14] 2. User Description Requirements are detailed by taking users feedback by building prototype using development tools. 3. Construction The prototype is refined to build the product and released to the customer. 4. Cutover or testing involves acceptance testing by the user and their training. 5. Deployment: Maintenance of the product.
4.. Incremental model:
The Incremental Software Development Life Cycle Model Software like all other complex systems is bound to evolve due to changing business requirements or new requirements coming up [2]. Hence there is a need to have a model which can accommodate the changes in the product. The models discussed earlier do not take into consideration the evolutionary nature of the product. Evolutionary models are also iterative in nature.
The incremental software development life cycle model is one of the popular evolutionary software process model used by industry.In this model ,once the product is developed and wants to add new features later then incremental models are used.
International Journal of Emerging Trends & Technology in Computer Science (IJETTCS) Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com Volume 3, Issue 3, May-June 2014 ISSN 2278-6856
Volume 3, Issue 3 May June 2014 Page 206
5. Spiral model: The spiral model[14] is similar to the incremental model, with more emphases placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting[14] in the planning phase, requirements are gathered and risk is assessed. Each subsequent spiral builds on the baseline spiral. Requirements are gathered during the planning phase. In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase. Software is produced in the engineering phase, along with testing at the end of the phase. The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral. In the spiral model, the angular component represents progress, and the radius of the spiral represents cost[7][11].
Importance of model selection The selection for a software lifecycle model for a project is an important decision . It impacts on project success by affecting the following: The software lifecycles overall cost The distribution of cost over the software lifecycle Software development speed Software quality The ability to tracking and control the project The projects overhead The level of risk associated with the project Client relations
No single software lifecycle model is appropriate for all situations. This is due to the diversity in project, system and organisational characteristics[12]. This fact is reflected by the standards. Because of this, a software lifecycle model must to be selected to suit each projects characteristics.
4. CONCLUSION The Software life cycle models are the tools that help to manage software life cycle. They will provide common understanding about life cycles. This paper represents comparison of different software process models. These models specify process consistency and improvement. Each model has its own strengths and weaknesses. Some models are more appropriate in certain project circumstance than others. The selection of a software lifecycle model for a project is an important decision. The use of an inappropriate model can be detrimental to project success and software quality. This paper categorizes and examines a number of methods for describing or modeling how software systems are developed , what are the applications of software etc.. It begins with background and definitions of traditional software life cycle models and current software development practices.
References [1] Balzer, R., Transformational Implementation: An Example, IEEE Trans. Software Engineering, 7, 1, 3- 14,1981. [2] Kaiser, G., P. Feiler, and S. Popovich, Intelligent Assistance for Software Development and Maintenance, IEEE Software, 5, 3, 1988. [3] Zave, P., The Operational Versus the Conventional Approach to Software Development, Communications of the ACM, 27, 104-118, 1984. [4] Ian Sommerville, "Software Engineering", Addison Wesley, 7th edition, 2004. [5] Steve Easterbrook, "Software Lifecycles", University of Toronto Department of Computer Science, 2001. [6] Karlm, "Software Lifecycle Models', KTH,2006 . [7] CTG. MFA 003, "A Survey of System Development Process Models", Models for Action Project: Developing practical Approaches to Electronic Records management and Preservation, Center for Technology in Government university at Albany / Suny,1998 . [8] A.T. Bahill. and S. J. Henderson. Requirements Development, Verification and Validation Exhibited in Famous Failures. Wiley Periodicals, Inc, Systems Engineering, 8(1): 1-14,2005. [9] B.Nuseibeh and S.Easterbrook. Requirements engineering: a roadmap. In Proceedings of the Conference on the future of Software Engineering. Limerick, Ireland 2000. [10] Alexander, L, Davis, A, Criteria for Selecting Software Process Models, presented at COMPSAC 1991. [11] International Organisation for Standardization / International Electrotechnical Commission 2004. Software Engineering Guide to the Software Engineering Body of Knowledge (SWEBOK), ISO/IEC TR, 1975. [12] Comer, E, Alternative Software Life Cycle Models, presented at International Conference on Software Engineering 1997. [13] JJ Kuhl, "Project Lifecycle Models: How They Differ and When to Use Them",2002 www.businessesolutions.com International Journal of Emerging Trends & Technology in Computer Science (IJETTCS) Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com Volume 3, Issue 3, May-June 2014 ISSN 2278-6856
Volume 3, Issue 3 May June 2014 Page 207
[14] Software Engineering-Practitioners approach-Roger S Pressman
AUTHOR
Venkataramani Korupala is a Sr. Assistant Professor in the Department of Computer Science & Engineering, Dadi Institute of Engineering and Technology (Affiliated to JNTUK), Anakapalle, Visakhapatnam, Andhra Pradesh, India. She obtained his M.Tech in Computer Science and Engineering from JNTU, Kakinada. Her main research interests are Software Engineering, Mobile Computing, Computer Networks.