StudentShare
Contact Us
Sign In / Sign Up for FREE
Search
Go to advanced search...
Free

Software Engineering: Methods & Methodologies - Essay Example

Cite this document
Summary
From the paper "Software Engineering: Methods & Methodologies" it is clear that generally, various software development methods/methodologies such as the Waterfall model, Spiral model, RAD model, Prototyping model, and Incremental model are discussed…
Download full paper File format: .doc, available for editing
GRAB THE BEST PAPER96.5% of users find it useful
Software Engineering: Methods & Methodologies
Read Text Preview

Extract of sample "Software Engineering: Methods & Methodologies"

Software Engineering: Methods & Methodologies Faculty Table of Contents I. Introduction II. Software Development Methods/Methodologies III. Conclusion IV. Bibliography I. Introduction Today, one can not think any system without software. Every system which one sees is controlled by software. The computer used for writing this paper uses Microsoft word (software), which also runs on another type of software (operating system). For various research the internet is used, which is also a combination of different types of software, such as databases, WebPages, network, etc. Now with the use of software it is possible to automate any system so that it can work more efficiently. Therefore, software plays an important part in everyday life. There are different types of models and methodologies which are used for development of software. Some of them are Waterfall model, Spiral Model, Rapid Application Development (RAD) model, Prototyping model, Incremental Model, Concurrent Development Model, Component-based model, Formal Methods model and Fourth Generation Techniques. All these models describe different processes that are used for development of software. Generally for new types of applications, Waterfall model, Spiral Model, Rapid Application Development (RAD) model and Prototyping model are not yet so standardised. For these types of application new models such as Incremental Model, Concurrent Development Model, Component-based model, Formal Methods model and Fourth Generation Techniques is commonly used with the combination with previous mentioned methodologies. These all methods provide the technical specifications for building software. They encompass a broad group of tasks that include requirements analysis, design, program construction (coding), testing, and support. These all tasks are performed for development of software. Next section will cover some commonly used software development methods with advantages/ disadvantages, and where it can be used for development of software (or applications). II. Software Development Methods/Methodologies The Waterfall Model: It is also called as Software Development Life Cycle (SDLC) or Linear Sequential Model. It is the oldest and the most widely used paradigm for software engineering. The waterfall method attempts to pin down the requirements early in the project life cycle. After gathering requirements, software design is performed in full. Once the design is complete, the software is implemented. The Waterfall model suggests a systematic, sequential approach to software development that begins at the system level and progresses through analysis, design, coding, testing, and support. [Pressmen 2001] Figure 1: Waterfall Model (Source: Pressmen 2001) Software is integral part of a larger system or business; therefore initially requirements for all the system elements are established. While doing this various things such as hardware, people and databases are considered from which the developed software will interact. Some of the important steps are described below: Requirements Analysis: This is the initial phase of any model in which the information domain for the software, as well as required function, behavior, performance, and interface related information are collected for the system and the software, documented and reviewed with the customer. Design: It is a multiple step process that focuses on four distinct attributes of a program: data structure, software architecture, interface representations, and procedural (algorithmic) detail. The requirement analysis done in previous steps is translated into design, which is documented with the help of modelling languages that later used in coding step. Code Generation: In this phase the design is translated into a machine readable form. A high-quality requirement analysis and design gives a way for superior code generation. Testing: After completion of coding phase, software testing phase begins, which focus on the logical internals of the software. Testing ensures that all statements have been tested to uncover errors and defined input will produce actual results that agree with required results. For testing two types of approaches; Black-box and White-box testing is used. Support and Maintenances: This is the phase, which starts after the software is delivered to the customer. This phase is required because of errors that have been encountered or because the customer requires functional/performance enhancements. This phase reapplies each of the earlier phases to an existing program. This model is basis for the all model that is used for software developments because it provides a template into which methods for analysis, design, coding, testing, and support can be placed. These days, rarely any projects follows waterfall model for development of software. The problem with this method is that if a change in requirements occurs, the impact can be devastating. In actual practice it is often difficult for customer to state all the requirements for the software projects initially. In addition, this model requires patience from customer because a working version of the software will not be available until late in the project time-span. The Prototyping Model: A prototype is a working model that is functionally equivalent to a component of the product. In many instances, the client only has a general view of what is expected from the software product. In such a scenario, where there is an absence of detailed information regarding the input to the system, the processing needs and the output requirements, the prototyping model may be employed. This model reflects an attempt to increase the flexibility of the development process by allowing the client to interact and experiment with a working representation of the product. The developmental process only continues once the client is satisfied with the functioning of the prototype. At that stage, the developer determines the specifications of the client’s real needs. [Pressman 2001] Advantages of Prototyping: Faster development and easier for end users to learn/use. In addition, development costs less. Fewer changes needed after implementation and development backlog decreases. End-user involvement and users know what to expect at implementation. Because of user/analyst communication requirements easier to determine. Figure 2: Prototyping Cycle Source (modified): www.cs.pitt.edu/~chang/153/c02process/s32.gif Disadvantages of prototyping: Often clients expect that a few minor changes to the prototype will more than suffice their needs. They fail to realize that no consideration was given to the overall quality of the software in the rush to develop the prototype. The developers may lose focus on the real purpose of the prototype and compromise the quality of the product. A prototype will hardly be acceptable in court in the event that the client does not agree that the developer has discharged his/her obligations. How the Prototyping Cycle Works: The prototype model is used as a means of quickly determining the needs of the client and it is discarded once the specifications have been agreed on. The emphasis of the prototype model is on representing those aspects of the software that will be visible to the client/user; therefore, it does not matter if the prototype hardly works. In addition, if the first version of the prototype does not meet the customer’s needs, then it must be rapidly converted into a second version. The RAD Model: Rapid application development (RAD) is an incremental software development process model. RAD emphasizes an extremely short development cycle. The RAD model is a “high-speed” adaptation of the waterfall model in which rapid development is achieved by using component-based construction. If requirements are well understood and project scope is constrained, the RAD process enables a development team to create a “fully functional system” within very short time periods [Pressman 2001]. This model requires different phases that are given below: Business Modeling: The following questions related to business functions are answered: What information drives the business process? What information is generated? Who generates it? Where does the information go? Who processes it? Figure 3: Rapid Application Development Model (Source: Pressmen 2001) Data Modeling: The various questions answered in business modeling phase is refined into data objects that are needed to support the business. The attributes and relationship of each object are identified and defined. Process Modeling: The data objects defined in last phase are transformed to achieve the information flow necessary to implement a business function. In addition, processing descriptions are created for adding, modifying, deleting, or retrieving a data object. Application Generation: RAD uses the fourth generation techniques and reuses existing program components or creates reusable components. In this phase, automated tools are used to facilitate construction of the software. Testing and Turnover: RAD model reuses many components that are already tested, therefore only those components are tested, which are newly created. Because of this, it requires less testing time. This model is used for business application that can be modularized in a way that enables each function to be completed in short period of time. In these models, separate team creates each business function and later it is integrated so that it can form a whole business application. RAD requires sufficient human resources to create different RAD teams for large scalable projects. It also requires commitment from developers and customers for rapid-fire activities. Otherwise, it will fail. This model is not appropriate when technical risks are high. The Incremental Model: The incremental model combines the approaches of Waterfall model and Prototyping model. Figure 4 shows the incremental model over a period. Initially in first increment, the core software is developed, which addresses only basic requirements. Customer evaluates this software and a plan is developed for next increment that addresses the modification of the core product to better meet the needs of the customer and the delivery of additional features and functionality. This process is repeated until a final product is delivered. The main difference between incremental model and prototyping model is that incremental model focus on the delivery of an operational product with each increment. Figure 4: The Incremental Model (Source: Pressmen 2001) This model is useful when staffing is unavailable for a complete implementation by the business deadline, therefore, early increments can be implemented with fewer people and if the core software is well received, then additional staff can be added to implement the next increment. The Spiral Model (Boehm): The Spiral model is originally proposed by Boehm and is also called as Boehm Model. It is an evolutionary model that couples the iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model. With the use of it rapid development of incremental versions of the software can be done. Initially the incremental release might be a paper model or prototype and during later iterations, more complete versions of the software are produced. The incremental model is divided into number of framework activities, which are shown as regions in Figure 5. Figure 5: The Spiral Model (Source: Pressmen 2001) Beginning at the center, the software engineering team moves around the spiral in a clockwise direction and the first circuit result in the development of a product specification. Later subsequent passes around the spiral are used to develop a prototype and then progressively more sophisticated versions of the software. This model is used for development of large-scale projects systems and software. In this model both developer and customer better understands and reacts to risks at each evolutionary level. The spiral model enables the developer to apply the prototyping approach at any stage in the evolution of the software and maintains the systematic stepwise approach suggested by the classic life cycle but incorporates it into an iterative framework that more realistically reflects the real world. The major problem with this model is that the evolutionary approaches are sometimes uncontrollable. Component-based Development Model: This model uses object-oriented features and many characteristics of the spiral model for development of software. In object-oriented paradigm, emphasis is given on the creation of classes that encapsulate both data and the algorithms used to manipulate the data. Object-oriented classes are reusable across different applications and computer-based system architectures, when they are properly designed and maintained. Figure 6: The Component-based Development Model (Source: Pressmen 2001) Various classes that are built for the past projects are stored in class library and for development of new projects these libraries are searched and classes that are matched with identified class of the new projects are reused. Otherwise it is developed. This model provides the benefits of reusability because of which the development cost and time are reduced. The Formal Methods Model: This model encompasses a set of activities that leads to formal mathematical specification software and enables a software engineer to specify, develop, and verify a computer-based system by applying a rigorous, mathematical notation. A formal method eliminates many of the problems such as Ambiguity, incompleteness, and inconsistency through the application of mathematical analysis that are difficult to overcome using other software engineering models. During design, formal methods serve as a basis for program verification and therefore enable the software engineer to discover and correct errors that might go undetected. This model offers the promise of defect-free software. The major concerns is that it is time consuming and expensive. In addition, extensive training is required for software developers to apply formal methods. Various safety critical software such as aircraft avionics and medical devices are developed with the use of this models Fourth Generation Techniques (4GT): 4GT encompasses a broad array of software tools that enables to specify some characteristics of software at a high level. These tools can generate source code based on the specification provided. 4GT methods includes some or all of the following tools: nonprocedural languages for database query, report generation, data manipulation, screen interaction and definition, code generation; high-level graphics capability; spreadsheet capability, and automated generation of HTML and similar languages used for Web-site creation using advanced software tools. 4GT offers a credible solution to many software problems. Time required for producing small software is greatly reduces with the use of 4GT. III. Conclusions There are various methodologies that can be used for development of software. Depending upon the software projects, these methodologies are used. In this paper, various software development methods/methodologies such as Waterfall model, Spiral model, RAD model, Prototyping model and Incremental model are discussed. All these methodologies encompass basic steps such as Requirement analysis, design, coding, testing and support. These steps can be done with iteration and sequence in every model for producing software. In conclusion, it can be said that careful selection of software method is very important for development of any software projects along with constant monitoring that these method is followed properly or not. IV. References Pressman, R.S. 2001. Software Engineering: A practitioner’s Approach, McGraw Hill, New York. P. 23-47. Booch, G., Rumbaugh, J. & Jacobson, I. 2001. The Unified Modeling Language User Guide, Addison Wesley, USA. Hamilton, K. & Miles, R. 2006. Learning UML 2.0, OReilly Media, Inc, USA. http://www.martinfowler.com/articles/newMethodology.html accessed on 14 March 2007. http://en.wikipedia.org/wiki/Methodology_(software_engineering) accessed on 14 March 2007. http://www.cs.pitt.edu/~chang/153/c02process/s32.gif accessed on 15 March 2007. http://scitec.uwichill.edu.bb/cmp/online/cs22l/waterfall_model.htm accessed on 15 March 2007. http://www.credata.com/research/rad.html accessed on 15 March 2007. www.mrtc.mdh.se/publications/0953.pdf accessed on 15 March 2007. http://en.wikipedia.org/wiki/Fourth-generation_programming_language accessed on 15 March 2007. Read More
Cite this document
  • APA
  • MLA
  • CHICAGO
(“Software Engineering Essay Example | Topics and Well Written Essays - 2500 words”, n.d.)
Software Engineering Essay Example | Topics and Well Written Essays - 2500 words. Retrieved from https://studentshare.org/miscellaneous/1539762-software-engineering
(Software Engineering Essay Example | Topics and Well Written Essays - 2500 Words)
Software Engineering Essay Example | Topics and Well Written Essays - 2500 Words. https://studentshare.org/miscellaneous/1539762-software-engineering.
“Software Engineering Essay Example | Topics and Well Written Essays - 2500 Words”, n.d. https://studentshare.org/miscellaneous/1539762-software-engineering.
  • Cited: 0 times

CHECK THESE SAMPLES OF Software Engineering: Methods & Methodologies

Agile Software Development Methodologies

This paper presents an overview of the agile software development methodologies.... he basic purpose of this research is to show that 'agile software development methodologies' are a superior design method that is why Scrum and XP rapidly emerging frameworks .... This paper presents an overview of the agile software development methodologies.... The basic purpose of this research is to show that 'agile software development methodologies' are a superior design method that is why Scrum and XP rapidly emerging frameworks as methodologies....
3 Pages (750 words) Essay

Software Development Methodologies

gile software development methods are object-oriented, making it possible to practice component-based software engineering.... This paper ''Software Development methodologies'' tells us that the success of any software development project depends on many factors, one of which is how changes to project scope are managed.... Whereas these models were widely accepted, several deficiencies have been realized in their effectiveness over time; the methodologies assume that project requirements can all be identified at the beginning of the project....
2 Pages (500 words) Assignment

Agile Software Engineering

The initiation of 'agile software engineering methodologies' was another response to a number of software development problems those have reasoned an intense debate amongst software engineering developers from the beginning of 2000, like that 'Spiral' or 'Waterfall' model has established a high value of agile software engineering methodologies.... In addition, the agile software engineering methodology has demonstrated to be an accepted addition to the software engineering toolbox, which is capable of considerable progress in excellence for small project development teams....
8 Pages (2000 words) Research Paper

IT210 Software Engineering : Software Process Models

software engineering is a discipline where different techniques or methods are used to improve the quality of software development and the targeted company for the software development is a large oil company.... The growth of the software engineering field has led to the use of the.... Numerous software development methodologies are available; IT210 software engineering: – Software Process Models IT210 software engineering: – Software Process Models software engineering is a discipline where different techniques or methods are used to improve the quality of software development and the targeted company for the software development is a large oil company....
2 Pages (500 words) Essay

Scrum Methods in Software Development

2003; Kavitha & Thomas, 2011):Without a doubt, agile software development methodologies have been developed to deal with the issues of delivering high-quality software promptly under a quickly and continuously changing business environment and requirements.... In fact, agile software development methodologies have an excellent reputation in the IT and software sectors.... The research has shown than more than 69% of IT firms are adapting one or more agile methodologies for use in common project management as well as organizational development (Lucia and Qusef)....
11 Pages (2750 words) Coursework

Software Engineering Principles for Forensic Integrity of Digital Forensics

The proposal "software engineering Principles for Forensic Integrity of Digital Forensics" focuses on the critical analysis of conducting a review of the software engineering methodologies and principles to evaluate the most suitable methodology and principle in digital forensic software development.... software engineering methodologies and principles have evolved over the last 50 years.... software engineering is part of software development....
4 Pages (1000 words) Research Proposal

Software Engineering Techniques for Service-Based Development

The author discusses the most popular software engineering techniques that have been used by the industry over past decades.... Also, the simpler steps inherent in the model do not provide much clarity and often lead to confusion in its interpretation The primary objective of software engineering is to realize all the above-mentioned objectives by ensuring the delivery of qualitative software that conforms to all user requirements and which are developed on schedule within the allocated budget....
8 Pages (2000 words) Research Paper

Software Engineering Principles in Ensuring the Forensic Integrity of Digital Forensics

This paper "software engineering Principles in Ensuring the Forensic Integrity of Digital Forensics" discusses a software engineers that have a task of ensuring that software is secure.... software engineering works through the incorporation of distinct phases and activities, which focus on the improvement of planning and management of a development project.... Methodologies and principles used in software engineering include deliverables and artifacts that are created and completed during the process of developing an application....
20 Pages (5000 words) Research Paper
sponsored ads
We use cookies to create the best experience for you. Keep on browsing if you are OK with that, or find out how to manage cookies.
Contact Us