Paper Example Undergraduate 4,860 words

Software Engineering Requires a Decent

Last reviewed: July 6, 2010 ~25 min read

¶ … software engineering requires a decent knowledge of software development approaches along with the related tools which make them work. This section presents a study of three software methodologies namely the waterfall model, the unified software development process using UML and prototyping. This includes a description of how they function and their major features which make some of them better than the other.

The waterfall model was among the earliest process models brought into use and applied at different areas of software engineering projects. It involves the breakdown of the overall development into distinct phases. Each of these stages flow into the next one as and when the objective of a particular stage is accomplished. The basic stages of the waterfall method are Requirement analysis and definition, System Design, Implementation & Unit Testing, Integration & system testing and Operations & Maintenance. (The Waterfall Model explained)

In most instances of software development life cycle models, the software development follows an organized pattern with stages such as planning, testing, documentation etc. Everything is expected to work as decided. Models such as the waterfall model follow this approach, which does have its good points. However they are directed mostly towards the developers rather than the consumers. It eliminates the option of introducing changes in the final product before releasing them into the market. Prototyping, as suggested by its name, works on creating a model or prototype of the actual system in operation. This model works based on how the end users respond to the product and developing prototypes one after the other until the final version comes out to be perfect. It starts from a concept and updates are incorporated into the software in real time. Users have the option to test the workability of the software and suggest further updates. This is unlike the waterfall method which allows an option to provide feedback only at the end. This usually leads to a waste of resources when the focus rolls back to the point where an issue might have shown up (What is Prototyping). There are several types of prototype models with their own set of characteristics. The Patch up prototype model has different developers working on different portions of the program assigned specifically to them. Their results are then combined creating a new result and saves time as well. The Non-operational prototype model is applied in a situation where only a section of the process might require changes. New functionalities can be tested using a prototype used as a dummy followed by their inclusion in the main program. The first of a series or beta version prototype model can be defined as the introduction of the entire application in its completed form, with the aim of gathering feedbacks. It is pretty efficient in checking out dysfunctional areas which of the software which need to be improved. The Selected features prototype model is a modified version of the beta model where the public get access to pre-specified portions of the software. It works just as well as the beta approach but is geared towards softwares which are a part of a larger family (SDLC-Prototype Model).

The existence of strong management and a defined approach are what differentiate the successful projects from the ones which fail. The unified software development process is one of the most effective models in existence which has resulted from several years of hard work. It is a general framework which is applicable over different kinds of systems, organizations and levels of proficiency. It is a component based approach which uses interfaces to join the components together. It uses the Unified Modeling Language or UML to design the software system. It is run by use cases with a focus on the architecture with increments and iterations involved in different stages. These are the main concepts which define the efficiency of the model. A use case is a system utility which provides the user with a discrete result or value. They aim at assimilating the functional requirements of the system and combine together to produce the use-case model. There are four main sections of the unified software development process using UML. The inception phase, which is usually short, justifies the purpose of the project and the limitations which it needs to adhere to. The elaboration phase points out the risk factors and identifies the parts of the architecture susceptible to those risks. It involves the design of use case diagrams and related architectural diagrams. The construction phase, which is the largest section of the project, uses the groundwork already established by the Elaboration system. Features are applied in an iterative manner, producing a workable version of the software. It uses a lot of UML in the form of Sequence diagrams, Activity diagrams and Collaboration diagrams. The last stage of the unified model is known as the transition phase where the system is finalized based on the responses received from the end users and then released officially for everyone to use (Jacobson & Rumbaugh 1999, pp. 3-13).

In most practical applications, a combination of the unified software development process using UML and prototyping is recommended over the waterfall model. The main reason being that it is impossible to complete a particular stage perfectly, prior to moving on to the next. There are quite a few complaints registered against this model. It demonstrates a lack of flexibility with regards to the software development process for the client. Clients would usually end up altering their previously stated requirements. This tends to make the initial stages of the waterfall model prove unrealistic. The stages need to be easy enough to adjust to changes in the requirements. Understanding the needs of each stage accurately requires highly experienced professionals. In most practical situations, it is hard to get the idea before spending a decent amount of time dealing with a particular stage. Execution of each stage requires developers to validate the workability of the stages. Hence the waterfall method requires each stage to go through multiple forms of testing, even though some argue how this might not be required with an organized approach. Assessment of the costs and time needed for each stage can prove to be pretty hard considering the variety of factors involved. There are no formally defined methods of controlling the project planning. The absence of inbuilt risk management techniques is a major flaw in the waterfall model. Breaking down the cycle into separate phases implies that the personnel assigned for the project have different areas of expertise. This would mean that a section of the workforce would not be active when the phase of their expertise is not in action. (What is the waterfall model)

Incorporating the features of the unified software development process using UML along with the prototyping model allows for their advantages to combined. Maintaining efficient time frame of software development is one of the main features of the prototyping model. It lays more stress on producing the final software instead of preparing the documentation. It eliminates the delays which could show up in creating the document and hastens the release of the complete product. The entire work of the prototype model can be distributed among the developers. The absence of a large number of stages cuts down inactivity and wastage of man hours. Everyone is involved in the main work at the same time. It allows developers to have the choice of interacting with each other with regards to the current standing of a particular functionality so that their opinions can be combined to introduce the necessary changes. The use of feedbacks in the prototype model is another significant advantage. It lets users to voice their opinions on what they think about a particular prototype of the software. The meaningful suggestions can be taken into consideration so that critical errors can be removed (Advantages of Prototyping).

Prototyping reduces the chances of over designing a model. Over design occurs when the additional functionalities of a software overrides the main purpose of the software. It focuses on what was originally expected from the software. It eliminates the reliance over what is mentioned in the documentation, which is a feature of most of the other software development lifecycle models. Direct communication with the customer reveals their practical needs. This results in more resources being allocated to them rather than on the theory mentioned in the document (Advantages of Prototyping).

This unified software development process, unlike the others pursues the workflow of the system obtained from use cases. The software architecture covers the major static and dynamic characteristics of the system. The architecture directs the development based on the needs of the organization, guided by those whose resources are at stake and the end users. Use cases (representing the form) relate to the architecture (representing the function) in order to produce the expected results. The unified software development process follows a practical method where the work is segregated into mini projects. Iterations consider specific use cases which define the current state of development of the product along with the risks involved. This approach brings down the costs involved, the chances of delay in product release and the gives the user an option to update their requirements in successive iterative steps (Jacobson & Rumbaugh 1999, pp. 3-13).

CHAPTER 2

Oracle and Microsoft SQL Server are among the most widely used databases with a large range of features with regards to their techniques of development and deployment. Both the Oracle 10g and SQL Server 2005 are equipped with a similar feature set with regards to how they aid in SOA (service Oriented Architecture) based application development. They vary in their simplicity of usage. SQL Server 2005 has its different features combined in the database server. Oracle has sections of its functionality distributed among its different products. The application server is not integrated with the database to the same extent as SQL Server. Most of its API's use Java-based services. Oracle does not have any of their editions offered for free as compared to SQL Server 2005 which has its Express edition available for free. Oracle Lite is the least expensive among all its editions but still not free. It does not offer any support for PL/SQL which is the main language for its database and is required to execute the procedures and triggers.

Blob (or Binary Large Object) data is a type of field which has the ability to contain a large quantity of data in each record. This can exist in either text or binary format. Using SQL Server to work on Blob data can have developers encounter with over 8k of data in one record. Many kinds of data types have been used to store blob data over the years. These have been static for a long time until the introduction of SQL Server 2005 where Microsoft came up with several new data types. In earlier versions of SQL Server, such as the 2000 and before, the only data types available were Image, Text and Ntext. The data type Text is meant to store blob data of the non-unicode type while Ntext is meant to store the Unicode type. The Image data type is used for the files in the binary format such as data in compressed form, images and general documents. These can be both in Unicode and non-unicode form. Varchar, Varbinary, NVarchar and Xml are some of the data types used for blob in SQL Server 2005. Most of these require the size of the maximum data which can be stored, to be specified. The maximum field size needs to be decided before blob data can be allocated to them. This can reach as high as 2 gigabytes for each record. This can be 2^31bytes in case the data is of binary or character type or 2^30 in case it is of Unicode type. The costs associated with the SQL Server blob storage can be lowered by using a kind of design known as tiered storage. This method allows the data which is regularly used to be saved on more expensive storage. The remaining inactive data can be saved on cheaper storage. Blob data is not used that frequently. Slower hard drives are utilized to create a Raid array. These Raid arrays developed from the cheaper hard drives are used for storing the second group of files. Considering the amount of data accumulated in the blob columns, tiered storage is the best option in terms of cost. In Tiered storage, the blob data is organized inside a file group created separately. This is done at the time of table creation with the help of the Textimage_On parameter. Each SQL Server table has its blob data stored discrete file group. If the blob data needs to be separated into more than one file, the table can be divided into 2 tables followed by assigning a file group to each.

Oracle has introduced features to support large objects as well. They help in dealing with files such as video, audio and pictures. In versions before Oracle 8, these kinds of media types were associated to Long Raw data types. However it had a several restrictions which made it easier for large object data to be stored outside the database and apply Oracle to link to those locations. Since the advent of Oracle 8, developers have had the option to choose from various new data types for large objects along with the related tools and techniques used to deal with them. Large object data types in oracle can be broadly classified into external and internal. The Binary large object or Blob, Character large object or Clob and the National character large object or Clob constitute the internal type. The external kind or Bfile can be defined as a locator which points to a file which exists outside. The internal data types can be saved in line with a limit of up to 4k bytes or externally up to 4 gigabytes (based on the size available).

Both Oracle 10g and SQL Server 2005 support the development of XML based applications. XML has come forth as an effective method of exchanging data with its applicability ranging over several applications. It is used in different areas of SOA and web services. These databases support XML based applications by storing XML-based documents for future updates and queries. Both SQL Server and Oracle have the option to authenticate XML documents according to an XML schema before being stored in the database. XQuery and Xpath can be used to query the XML documents which are saved.

Indexing is important to speed up the query processing. SQL server 2005 has the option of B*Tree indexing for the attributes of the XML field such as its paths and values. Apart from that, Path, Property and Value have their individual indexing options available. Oracle on the other hands has the option of text and functional indexing, none of which are directed towards XML. XQuery in its usual form has the option to obtain the XML content without caring about its updates in the database. Oracle uses two methods to face this issue. In a situation where the document is saved in the database as a text object, Oracle allows the complete document to be substituted by another one. Another approach causes the XML document to be broken down and saved in the database as an object-relational object so that traditional methods can be used to revise different sections of the XML document. Both have disadvantages as the former one does not work that well on larger documents where updates be carried out on all parts and the latter one need the developer to have an accurate understanding of how the XML document is related to the underlying objects. SQL server solves this issue by broadening the XQuery functionality by allowing functionalities for updating, adding and deleting values. SQL Server 2005 is capable of storing discrete XML documents in a single XML column. The SQL server XML schema collection confines the kinds of XML documents which can be stored in that column. Additional schema components can be attached onto the existing namespaces. Oracle lacks any equivalent feature. It has another schema where top level element needs to be changed to make room for the updated schema.

The SQL server 2005 and Oracle 10g can both serve as providers and consumers of web services. However some differences show up with regards to the .NET platform. Oracle needs another application known as the Oracle Application Server to act as a web service producer and consumer. This is available for purchase and not included in the Oracle package. This asks the users to devote extra time to learn how it works and lowers productivity. SQL server 2005 on the other hand does not need any such products. The web service functionality of Oracle 10g requires the users to be proficient in Java along with PL/SQL. These functionalities are not combined with Visual studio but instead require the use of the JDeveloper IDE provided by Oracle.

Asynchronous communication linking distributed segments of a program is an essential constituent of SOA based applications. Both SQL server 2005 and Oracle 10 g offer the basic functionalities in this regard. SQL server allows a greater abstraction by making the use of Service Broker easier for developers. Oracle on the other hand uses its advanced queuing method has API's which use enqueue and dequeue based on the Java Messaging Service interface.

SQL server 2005 allows developers to create applications which notify users about events and updates. It can be produced and delivered to the user every time the event associated to it occurs or in a scheduled format decided by the user. There is no exact equivalent feature available in Oracle. It can be organized when multiple technologies such as job scheduling, advanced queuing, triggering and its application server are brought together.

SQL server 2005 allows its queries to be equipped with the notification support system. Every time a command is directed to the SQL server, a notification is produced when that command executes. Oracle does not have any features similar to this. In order to produce the same result, Oracle needs to use products such as Web Cache8 and Java Object Cache9 to be used together.

CHAPTER 3

A comparison between Microsoft Visual studio 2005 to develop web applications using asp.net and visual basic and Netbeans to develop j2ee applications using java.

This section of the paper compares Microsoft Visual Studio 2005 as a tool to develop web applications using asp.net and visual basic and net beans as the means of developing j2ee applications using java. Each of them have their own set of features.

Visual Studio comes as a package with a set of tools integrated together to create asp.net web applications along with desktop & mobile applications and xml-based web services. It contains tools such visual basic combined with visual C++ and C#. They share the same IDE (integrated development environment) making it easier for them to distribute and reuse the complete set of resources. This aids in creating applications which might require multi-language support. The languages which form a part of the Visual studio package aid in the workability of the .NET framework which makes it easier to create asp web applications and xml-based web services. Visual studio has its own web page designer which has several options to create asp.net-based web pages from scratch and modify them as needed. Newer versions have shown improvement with the option to organize web pages in local folders or in external Sharepoint servers. Visual studio 2005 lets users have the option to create web pages using web forms which are attuned for display on the latest browsers. It brings in a lot of simplicity with its option to drag and drop webpage controls and linking the required code to that later. Visual Studio 2005 can be used to develop Xml web services which can be used to transfer xml-based requests. While they are not linked to any particular technology, visual studio has tools such as Visual C# and Jscript to create Xml web services fairly easily.

Netbeans, developed by Sun Microsystems is a framework directed at java based applications. It is presented as an IDE (integrated development environment) which can be applied to a wide variety of languages such as PHP, C, C++, Python and Ruby. It had been developed in Java and requires the Java Virtual Machine to be pre-installed on the operating system. Java development on Netbeans requires a java development kit as well. Sun Microsystems has devoted a lot of efforts in improving the Netbeans IDE. When teamed up with Sun's application server bundle, Netbeans can be pretty efficient. It can be considered as a fully equipped J2ee server ready to be used out of the box. All the basic steps needed to execute a web application such as loading the server, restarting the webapp and triggering the web browser with the proper URL is a simple as clicking a button. Developers can ignore the issues related to running the server and application deployment and direct their focus towards the code. They do not need to worry about file organization and devote more time to study new packages and JSP's. The use of Ant lets the project to be controlled outside the main IDE in a cleaner fashion. It comes with a preinstalled database called PointBase and improved JSTL support, both of which are pretty helpful in Java development. Inbuilt databases eliminate the necessity to be connected to external database servers such as MySQL, Oracle or SQL Server.

A comparative study reveals a lot of features which makes one of them more advantageous than the other in certain regards. Netbeans allows the user to compile their project as and when it is being coded. It has the source control connected with CVS, Mercurial and SVN, which eliminates the need for external add-ons. It has a great CPU profiler and memory to maintain local file history. It removes the use of the traditional error windows with the need to click on the individual errors to find out what they are. This is replaced by the error stripe. Netbeans can scan through source files located within the project without the need to reorganize the entire project. It has a rich database explorer with options such as MySQL, DB2, Derby, Postgres and Oracle among others. It has an enhanced support for multiple platforms, languages and technologies and the option to conduct extensive unit testing. Netbeans comes equipped with an auto fix feature. In a situation that the IDE encounters an error, it will check for ways in which that can be fixed. If it is successful in finding the solution, it will go through with the fix. For instance, a project might need to use a class which has not been introduced. Netbeans will present all the imports where it finds that a class might have been defined. The developer can simply select the right library to import instead of doing it manually.

There are other minor advantages of netbeans which are not that crucial but certainly helps out while coding. For example, typing in the starting bracket (curly brace or any other parenthesis) creates the ending bracket automatically. Visual studio requires us to type the closing brace, which might not be a big deal but can lead to a lot of hassle when it's forgotten. Netbeans eliminates any occurrence of this error. Netbeans highlights each instance of a variable or function every time an edit caret is marked over one. Visual studio requires the user to manually follow the occurrence of each variable while testing the code. This feature in Netbeans saves a lot of time. The Netbeans IDE has a sidebar which is a representation of the file currently in action. It displays the parts with the edit caret and pointers to the different characteristics of the file. Green marks represent modification of code while red ones stand for break points. Tan lines will indicate the presence of variables and functions as mentioned before. Clicking on any of these will direct the user towards the section of code represented by them. Creating a new class without adding its link to the source control, followed by continuing to work on the files dependent on that class is a common mistake done in Visual studio. Netbeans helps out here by linking newly added files directly to the source control. Thus any modifications done on those files will present itself to the rest of the project.

You’re 84% through this paper. Sign up to read the full paper.

Sign Up Now — Instant Access Already a member? Log in
130,000+ paper examples AI writing assistant Citation generator Cancel anytime
Cite This Paper
PaperDue. (2010). Software Engineering Requires a Decent. PaperDue. https://www.paperdue.com/essay/software-engineering-requires-a-decent-9557

Always verify citation format against your institution’s current style guide requirements.