计算机代考 CSIT314 Software Development Methodologies

CSIT314 Software Development Methodologies
Software process models and ethics

This lecture …

Copyright By PowCoder代写 加微信 powcoder

 Software process models  Waterfall model
 Prototyping model
 Iterative/incremental model  Spiral model
 Rational Unified Process  Agile methods
Acknowledgement: some materials are adapted from Chapter 2 – (2010), Software Engineering, 9th Edition, Addison-Wesley.

The software process
 A structured set of activities required to develop a software system
 Many different processes but they all involve:
 Requirements specification- defining what the system should do;
 Design & Implementation – defining the organization of the system and implementing the system
 Verification & Validation (V & V) – checking that it conforms to the specification and does what the customer wants
 Maintenance and Evolution – changing the system in response to changing customer needs.
 A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective

Waterfall model
Image source: http://en.wikipedia.org/wiki/Waterfall_model

Waterfall model (cont.)
 The waterfall model is a sequential software development process.
 a phase has to be complete and absolutely correct before moving onto the next phase.
 Progress flows from the top to the bottom, like a waterfall.
 Has its origins in the manufacturing and construction industries and adapted for software development since 1970s.
 First described for software development by . Royce in 1970

Waterfall model limitations
 The difficulty of responding to changing customer requirements.
 Designers will have to fully predict problem areas of the system and produce a correct design before implementation is started
 This model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.
 Few business systems have stable requirements.

The Rise and Fall of Waterfall

Prototyping model
 gather requirements
 quick design focusing on what will be visible to user – input
& output formats
 build a prototype, i.e. a working version of the system
 prototype evaluated and requirements refined
 process iterated until customer & developer satisfied
 then throw away prototype and rebuild system to high quality
Listen to Customers
Build/Revise Mock up
Customer test-drives mock -up

Throw-away prototypes
 Prototypes should be discarded after development as they are not a good basis for a production system:
 It may be impossible to tune the system to meet non-functional requirements;
 Prototypes are normally undocumented;
 The prototype structure is usually degraded through rapid change;

Prototyping model Benefits
 Users are actively involved in the development  Reduced time and costs
 aworkingmodelofthesystemisprovided,theusers get a better understanding of the system being developed.
 Prototypingcanimprovethequalityofrequirements and specifications provided to developers.
 Quickeruserfeedbackisavailableleadingtobetter solutions.
 Best projects to use prototyping  Human-ComputerInterface

Prototyping model
Limitations
 User confusion of prototype and completed system
 Users can begin to think that a prototype, intended to be thrown away, is actually a final system that merely needs to be finished or polished.
 Developer attachment to prototype:
 Developers can also become attached to prototypes they have spent a great deal of effort producing; this can lead to problems like attempting to convert a limited prototype into a final system when it does not have an appropriate underlying architecture
 Excessive development time of the prototype:
 A key property to prototyping is the fact that it is supposed to be done quickly. If the developers lose sight of this fact, they very well may try to develop a prototype that is too complex
 Expense of implementing prototyping:
 the start up costs for building a development team focused on
prototyping may be high
Source: http://en.wikipedia.org/wiki/Software_prototyping

Incremental and Iterative model

Incremental and Iterative model
 Develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
 Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.
 User requirements are prioritised and the highest priority requirements are included in early increments.
 At each iteration, design modifications are made and new functional capabilities are added.
The software system
increment 4
increment 1
increment 2
increment 3

Incremental approach:benefits
 Feedback from early stages used in developing latter stages
 The cost of accommodating changing customer requirements is reduced.
 More rapid delivery and deployment of useful software to the customer is possible.
 Customers are able to use and gain value from the software earlier than is possible with a waterfall process
 Early increments act as a prototype to help elicit requirements for later increments.
 Lower risk of overall project failure.
 The highest priority system services tend to receive the most testing.

Possible disadvantages of incremental delivery
 Loss of economy of scale  some costs will be repeated
 System structure tends to degrade as new increments are added.
 Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.
 Incorporating further software changes becomes increasingly difficult and costly.

The Spiral Model

The Spiral Model
 A combination of prototyping with iterative model
 Process is represented as a spiral rather than as a sequence of activities with backtracking.
 Each loop in the spiral represents a phase in the process.
 Risks are explicitly assessed and resolved throughout the process.

Spiral model usage
 Spiral model has been very influential in helping people think about iteration in software processes and introducing the risk-driven approach to development.
 The spiral model is mostly used in large projects.
 Game development is a main area where the spiral model is used and needed
 Military projects, e.g. Future Combat Systems program.
 it had a 2 year iteration (spiral).

The Rational Unified Process
Note: We will later explore Unified Process in depth.

Agile methods
 In the 1990s, the IT industry faces substantial frustration:
 Most project followed the waterfall model
 Big time gap between business requirements and the delivery of software that answered those needs => cancelling many projects.
 Business environments and requirements quickly changed and the final product did not meet the then current needs.
 The waterfall model did not take advantage of how quickly software could be altered.

Agile methods (cont.)
 Agile refers to a set of methods and practices under which:
 Requirements and solutions evolve through the collaborative effort of self-organizing cross-functional teams and their customers and users.
 adaptive planning, evolutionary development, early delivery, and continuous improvement are advocated.
 Rapid and flexible response to change is encouraged  Agile methodologies are mostly based on the values and
principles expressed in the Agile Manifesto.
Check out this video https://www.youtube.com/watch?v=oHBs4wxiSpQ

Agile principles
1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Source: www.agilemanifesto.org

Agile principles (cont.)
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Source: www.agilemanifesto.org

Agile principles (cont.)
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
Source: www.agilemanifesto.org

Agile principles (cont.)
10.Simplicity–the art of maximizing the amount of work not done–is essential.
11. The best architectures, requirements, and designs emerge from self- organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behaviour accordingly.
Source: www.agilemanifesto.org

Agile software development methods
 Extreme Programming
 Dynamic Systems Development Methods  Kanban
 Lean software development

Potentially shippable product increment
Sprint goal
RCeatnucrenl
Sprint backlog
t Product backlog

 Scrum projects make progress in a series of “sprints” (i.e. iterations)
 Typical duration is 2–4 weeks or a calendar month at most
 Product is designed, coded, and tested during the sprint

Product backlog
 A typical Scrum backlog comprises the following different types of items:
 Features
 Technical work (e.g. “Upgrade all developers’ workstations to Windows 7”)
 Knowledge acquisition (e.g. “researching various JavaScript libraries and making a selection.”
 Prioritized by the product owner
 Reprioritized at the start of each sprint
This is the product backlog

User stories
 User stories are short, simple descriptions of a feature told from the perspective of a user or customer of the system who desires the new capability.
 User stories typically follow a simple template:
 Asa,IwantsothatCS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com