Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Imagine that you were recently appointed as a software engineer to a small compa

ID: 3820671 • Letter: I

Question

Imagine that you were recently appointed as a software engineer to a small company that has over the years used software development methods that rely on documented specifications and designs. a) Justify your approach that you would choose to develop the system, your team selection and mechanisms you all apply to deliver project success for this organisation Good answer should include the following: Introduction that defines rapid software development in terms of processes that are designed to produce software of immediate benefits to their users very quickly. Definition of agile approach and how it can help to achieve the goal of rapid software development to produce software of immediate benefits. The agile principles include: customer involvement, incremental delivery, developers engagement. Recommendation that outlines the benefits of applying XP and placing emphasis on people not process, team member skills are recognized and pair programming means that teams are highly motivated and more adept at spotting and eliminating defects.

Explanation / Answer

Introductions:

Rapid software development is the process life cycle designed to give much faster and higher quality systems than the traditional life cycle and designed to take advantage of powerful development software like CASE tools, prototyping tools and code generators, high speed, high quality and low cost are the key objectives of the this process.

It has people-centered and incremental development approach and active user involvement, collaboration and co-operation between all stakeholders are imperative. Testing included throughout the development life cycle so that the system tested and reviewed by both developers and users incrementally. It has an approach to building computer systems that combines computer-assisted software engineering tools and techniques, user-driven prototyping, and stringent project delivery time limits into a potent, tested, reliable formula for top-notch quality and productivity and it drastically raises the quality of finished systems as reducing the time it takes to build them.

It has a methodology that enables organizations to develop strategically important systems faster by reducing development costs and maintaining quality and it is achieved by using a series of proven application development techniques, within a well-defined methodology.

Deliverables easier to transfer as high-level abstractions, scripts, and intermediate codes, provides higher flexibility as redesign done according to the developer, results in reduction of manual coding due to code generators and code reuse, encourages user involvement and possibility of lesser defects due to prototyping in nature are the main advantages of the rapid software development.

Agile Approach:

The aim of agile methods is to reduce overheads in the software process by limiting documentation and to be able to respond quickly to changing requirements without excessive rework. In this methods focus on the code rather than the design, software development based on an iterative approach, intended to deliver working software quickly and evolve quickly to meet changing requirements.

Agile Principles:

The rapid software development utilizes the principles of agile and methods such as

Customer Involvement: customers should be closely involved throughout the development process and the role is provide and prioritize new system requirements and to evaluate the iterations of the system.

Incremental Delivery: The software developed in increments with the customer specifying the requirements to be included in each increment.

People not Process: The skills of the development team should be recognized and exploited and team members should be left to develop their own ways of working without prescriptive processes.

Embrace Change: Expect the system requirements to change and so design the system to accommodate these changes.

Maintain Simplicity: Focus on simplicity in both the software developed and development process and actively work to eliminate complexity from the system.

Extreme programming is the best known and most widely used agile method, it takes an EXTREME approach to iterative development, new versions may be built several times per day, increments delivered to customers every 2 weeks and all tests run for every build and the build accepted on tests run successfully.

Extreme Programming Practices:

Incremental Planning: Requirements recorded on story cards and the included in a release determined by the time available and relative priority and developers break these stories into development Tasks.

Small Releases: The minimal useful set of functionality that provides business value developed first and the frequent releases of the system and incrementally add functionality to the first release.

Simple Design: Enough design carried out to meet the current requirements and no more.

Test-first development: An automated unit test framework used to write tests for new piece of functionality before that functionality itself implemented.

Refactoring: All developers expected to refactor the code continuously as soon as possible code improvements found and this keeps the code simple and maintainable.

Pair Programming: Developers work in pairs, checking each other’s work and providing the support to always do a good job.

Collective Ownership: The pairs of developers work on all areas of the system, so that no islands of expertise develop and all the developers take responsibility for all of the code and anyone can change anything.

Continuous Integration: Immediately the work on a task complete, integrate into the whole system and integration all the unit tests in the system must pass.

Sustainable Pace: Large amounts of overtime not considered acceptable as the net effect often to reduce code quality and medium term productivity.

Onsite Customer: A representative of the end user of the system (the customer) should be available full time for the use of the XP team and in this process the customer a member of the development team and responsible for bringing system requirements to the team for implementation.

Pair Programming:

In extreme programming programmers work in pairs sitting together to develop code and this helps to develop common ownership of code and spreads knowledge across the team. It serves as an informal review process as each line of code looked at by more than 1 person and it encourages refactoring as the whole team can benefit and measurements suggest the development productivity with pair programming similar two people working independently.

In pair programming developers sit together at the same workstation to develop the software and pairs created dynamically so that all team members work with each other during the development process.

The sharing of knowledge that happens during pair programming very important as it reduces the overall risks to a project when team members leave and pair programming not necessarily inefficient and evidence that a pair working together more efficient than 2 programmers working separately.

Advantages of pair programming are it supports the idea of collective ownership and responsibility for the system. Individuals not held responsible for problems with the code instead the team has collective responsibility for resolving these problems. It acts as an informal review process because each line of code looked at by at least two people and it helps support refactoring process of software improvement.