1. Define and explain, in your own words, the primary challenge(s) of software development projects.

The primary challenges of software development projects are the following. First, there is the growing business complexity. The Web services, Internet, new software categories, multiple channels of distribution, and increasing device access such as laptops, cell phones and PDAs have changed the rules of the game and businesses depend on software to make their processes more reasonable.

Secondly, there are heightened competition and market pressures on software development. Software projects are subject to uncontrolled changes such as specification updates and design modifications required to meet the always changing market demands and ultimately the race to bring more functionality to market in less time too easily threatens quality.

In addition, increasing market demands for software applications. A range of sectors from consumer electronics and appliances to avionics, medical devices, defense, space, telecommunications and automotive depend on software development. Furthermore, size and complexity of implanted systems have increased and always requiring complete and multipurpose software applications. In the opinion of industry sources, the amount of implanted software doubles every eighteen months- which puts a premium on reliability and strength.

Fourthly, inability of software development tools to keep pace with the growth of software complexity has increased software development challenges. As the market for development tools develops at a rapid speed, a lot of tools are still considered fairly

primitive. A lot of tools- if they actually work- provide benefits in the late stages of the software development cycle when fixes bear high costs. Again, many of these tools involve human monitoring and intervention and quickly run into scaling problems. Such issue is provoked by a lack of quality metrics hence forcing managers to make critical resource allocation decisions based on scant and inaccurate data.

The uncertainty factor in business requirement affects the projects of software development. Another main challenge in software development is gathering accurate business requirements. If a project fails many IT managers blame the lack of accurate business requirements or the lack of communication from the business to inform changing requirements, IT managers should take responsibility for their projects and stop blaming and start acting on it.

Furthermore, Business users may think they are communicating their requirements clearly but once the software is built they discover that they asked for the wrong functionality and this happens often. One possible strategy to address this issue is to use an agile methodology that builds the system in increments and gets the business users to review each increment built. Like this, the requirement is not addressed as the users expect the issue can be dealt with before the system is live and this can save a lot of time and resources.

However, project management is needed for software development skills. A few development projects are being managed by individuals who do not possess the necessary project management skills to manage a project- let alone a software development project. At times good software developers that evolve into management positions fall into the situation

where they need to manage the projects, nevertheless, more often than not all that they do by creating a good looking project plan that once approved is never revisited.

In spite of the background of the person managing software development projects it is necessary that he/she owns real project management skills and a track record of successful delivery of real life projects. Another issue is on increasing security concerns. The arrival of the Internet has given rise to a great increase in operational risk. Problems of security such as cross-site scripting and SQL injections result from poor quality code- creating more opportunities for attackers to threaten privacy and steal data. Fast security is becoming a toppriority concern for companies all over the world. As claimed by IDC, enterprises will have spent more than $16 billion for software security products by the year 2008. Developers must create high-quality code with complex technical and business requirements and get to market quickly to maintain competitive benefits. As conventional efforts to deal with this complexity are being implemented across the industry, many industry analysts believe that the benefits of these process changes will take years to fully discover, if indeed they are successful.

2. Compare and contrast at least three (3) different software development methods.

A Programming process model is an abstract representation to describe the process from a particular perspective. There are numbers of general models for software processes, such as:

Evolutionary development, Waterfall model, Reuse based development and, Formal systems, and so on. These models are chosen because their features correspond to most software development programs.

Waterfall Model

According to research the earliest days of software development code, were written and then debugged. There was no formal design or analysis. The code and debug approach rapidly became less than optimal as complex software systems were needed. Because the approach to developing complex hardware systems was well comprehended, it provided a model for developing software.

Waterfall Model

According to research the earliest days of software development code was written and then debugged. There was no formal design or analysis. The code and debug approach rapidly became less than optimal as complex software systems were needed. Because the approach to developing complex hardware systems was well comprehended, it provided a model for developing software.

This model known as the waterfall is an approach to development that emphasizes completing a phase of the development before proceeding to the next phase. In connection with certain phase completions a baseline is established that "freezes" the products of the development at that point.

When a need is identified to change these products then a formal change process is followed to make the change and the graphic representation of these phases in software development resembles the downward flow of a waterfall.

Each box in Figure 1 represents a phase. Output from each phase includes documentation. The phases below the detailed design phase include software as part of their output. The transition from phase to phase is accomplished by holding a formal review that is attended by the contractor and appropriate government agencies. The reviews provide the government insight into the contractor's development. During the critical points on the waterfall model baselines are

established where the last of which is the product baseline, (Andean, 2014). This final baseline is accompanied by audits. There are differences between hardware and software that the waterfall model does not address, unlike hardware, software requires no fabrication.

Comparing the Waterfall Model

As illustrated in Figure 1, the waterfall model consists of phases that are completed sequentially before proceeding to the next phase. For comparison to other models the salient attributes of the waterfall model are that it is A formal method, type of top-down development, it is composed of independent phases to be done sequentially, it is used in varied ways and helps in steps combination and it has different starting and ending points

Where to Use the Waterfall Model

Because of the weaknesses shown, the application of the waterfall model should be limited to situations where the requirements and the implementation of those requirements are very well understood. For instance, when a company has experience in building accounting systems, Input or output controllers, or compilers, then building of another such product based on the existing designs is best managed with the waterfall model.

Incremental Model

The incremental model performs the waterfall in overlapping sections (see Figure 2) attempting to compensate for the length of waterfall model projects by producing usable functionality before. Such may involve a complete upfront set of requirements that are implemented in a series of small projects. As another possibility, any project using the incremental model may start with general objectives and then some portion of these objectives is defined as requirements and is implemented and followed by the next portion of the objectives until all objectives are implemented, yet the use of general objectives rather than complete requirements can be uncomfortable for management, (Andean, 2014). Since some modules will be completed long before the rest, accurately defined interfaces are required. Again, formal reviews and audits are more difficult to implement on increments than on a complete system. To

conclude, a tendency to push difficult problems to the future to demonstrate early success to management is possible. If it is too risky to develop the whole system at once then the incremental development should be considered.

Spiral Model

The incremental model can be seen as a spiral model. The spiral view illustrates one robustness of the incremental model- resources can be held constant but the system size grows.

The spiral size corresponds to system size while the distance between the coils of the spiral indicates resources. In Figure 3: the distance between the coils does not change- which indicates that the amount of the resources being used is not changing.

3. Explain why the testing of software products is of great importance.

Software testing is a process used to determine the quality of the software developed by a programmer or developer. It’s a methodological study aimed to evaluate the quality-related information of the product. Understanding of the important characteristics and advantages of software testing helps businesses in their daily activities. Since one may assume that his/her work may have mistakes, then they all need to check their own work. Nevertheless some mistakes come from assumptions and blind spots and so they might make the same mistakes when they check their own work as they made when they did it then they may not notice the flaws in the work they have done.

Preferably, one should get someone else to check their work because another person is more likely to notice the flaws. There are several reasons that clearly tell one is why software testing is important and what are the major things that one should consider while testing of any product.

Software testing is very important because of the following grounds:

Software testing is actually required to point out the defects and errors that were made during the development phases and process. Secondly, it is essential since it makes sure of the

customer’s reliability and their satisfaction in the product. Thirdly, it’s important to ensure the quality of the product, quality product delivered to customers helps in gaining their confidence and trust. Moreover, software testing is necessary in order to provide the facilities to the customers like the delivery of high quality product which requires lower maintenance cost hence resulting into more accurate, reliable and consistent results.

Again, testing is required for an effective performance of software product or application. It’s also important to ensure that the application should not result into any failures because it can be very expensive in the future development. It’s again required to stay in the business.

4. Identify potential ethical issues that may arise as a result of the company doing business across several different countries and cultures, and recommend ways to mitigate these challenges.

Globalization poses many benefits to the society. Consumers can be provided free trade and lower cost of products from the internationalization of the business. In addition employees can enjoy high wages due to the fast economic growth offered to the business. Management requires aligning its resources to promote high standards of living for employees who work abroad.

Human rights sensitizers can question the overall ethical issues affecting the advancement. The entry of the business to the international market or global market increases the requirement of ensuring the assessment of the ethical issues. Global business involves internationalizing of business operations. The ethical issues of globalization are affected by legal, economic, political, technological and socio-cultural challenges

First, Labor challenges erupt as the companies go international. There is the challenge of increased flow of skilled and non-skilled personnel in the developing nations. Labor markets

vary from one state to the next. The management has to analyze whether they will train employees or recruit their own employees to work in the new subsidiaries. Management will have to transfer skilled and willing personnel to work in subsidiary stations. The option could prove to be expensive, but profitable. Ethically the management could be seen to favor their home country and not the other country. One recommendation is on searching for employees within the country and training them on the organizational culture. Training the employees can help the organization to include the countries personnel in conducting help activities.

Secondly, production cost could be higher in the new market. Technological challenges in the new market can make it unfavorable for the company to produce in the country. Assessment and analysis of different production options can go a long way in ensuring productivity.

Logically the management can seek to gain from the market condition by dumping their products in the market. The dumping can erupt different laws unfavorable for the company. States or new market will fight to defend their native companies. Management can place their products at the same value of the product sold within the country. This will offer sustainable growth and development into the market. After careful evaluation of legal authorities policies, the organization can adjust the products as they deem fit.

Furthermore, some states refuse the free media or liberal culture expression. Socio-cultural challenges can be seen when the company enters a conservatisms's country. Introducing of a culture of liberalism in the subsidiary can lead to the reduction of company’s good will.

Management should look at ways of incorporating the markets culture into its operations.

Limiting the liberal state of employees and promoting integrity among the staff can aid the management to enter and perform within the new market. Religion can also affect the operations and activities done by the organization. Muslim states believe in praying different times during

the day. Having an organization that does not respect their customs can lead to labor strikes or increased bad will from the society.

On top of that, some countries value going green in the business operations. Environmental integrity has increased in agenda over many United Nations member states. Regulatory rules help to assure development of the business into going green. The use of heavy fuel guzzlers or increased dumping of useless products to the environment can attract heavy fines or lawsuits against the organization. Management can engage going green agendas in order to assure the providence of the best regulations. In the host country maybe corruption can be an acceptable issue but in the new market or state it’s a prohibited issue. Utilization of prudent operations and operating without favoritism to an individual can help customers to align themselves with the good state of the organization. The management will have to refrain from receiving gifts from influential people.

5. Compare and contrast at least three (3) testing approaches to software development.

Testing approaches begin at the component level and work outward toward the integration of the entire computer-based system. Different testing can be placed for the evaluation of the software development. Independent users can remove conflict of interest inherent when the software builders were testing their own products. There are different testing approaches that software developers can use.

The developer can use the functional testing approach. The functional testing approach is broken down into four parts. System functionality approach checks whether the recovery checks the system’s ability to recovery from failures. Security testing will be done to verify that the system protection mechanism prevents abnormal resource demands. Unit testing is an approach

that tests the individual software module or components that constitutes to the system or application. The tests are written by the developers of the modules in a test-driven development approach.

Second approach is Integration testing approach. This tests the different or varied tasks or activities done in the combination of automated functional tests. Manual tests depend on the ease of creating automated tests for specific integrated components. Spiral tests will be used to assess the management and storage of the different components and testing tools. Thirdly, system testing tests the entire system for bugs or errors. Interfacing the hardware and software components of the entire system will aid in evaluating the overall data and components required from the entire system.

Another approach is debugging approach. The approach requires the use of brute force.

Memory dumps or run-time traces are examined through clues to error causes. Furthermore, backtracking assures the source code is evaluated through looking backwards from symptoms to potential causes of errors. The approach helps in the elimination of errors through the use of binary partitioning. Simulators, monitors, analyzers and test data generators can be used in the debugging approach.


Andean, P (2014). The perils of ignoring software development. McKinney Quarterly, 2014, 4.)

Belasis, P. (2014). PBURC: a patterns-based, unsupervised requirements clustering framework for distributed agile software development. Requirements Engineering, 19, 2, 213-225.

Nathan, M. (2014). Making the Case for a ``Manufacturing Execution System'' for Software

Development Seeking to improve information integration throughout the manufacturing process. Communications- Acme, 57, 12, 33.

Nelson, R. (2014). Social Software Development. Eel: Evaluation Engineering, 53, 1.)