Presentation is loading. Please wait.

Presentation is loading. Please wait.

CA228 Software Specification1 Software Process A structured set of activities required to develop a software system Specification Design Validation Evolution.

Similar presentations


Presentation on theme: "CA228 Software Specification1 Software Process A structured set of activities required to develop a software system Specification Design Validation Evolution."— Presentation transcript:

1 CA228 Software Specification1 Software Process A structured set of activities required to develop a software system Specification Design Validation Evolution A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.

2 CA228 Software Specification2 Software Process Models Waterfall models Separate and distinct phases of specification and development. Iterative models Spiral model Rational Unified Process (RUP) Agile models

3 CA228 Software Specification3 Lifecycle Phases Requirements Analysis System Design Coding Testing Maintenance

4 CA228 Software Specification4 Requirements Analysis “User requirements are statements, in a natural language plus diagrams, of what services the system is expected to provide and the constraints under which it must operate” (Sommerville) Requirements determination – one of the greatest challenges Requirements specification – using a formalism such as the Unified Modeling Language (UML) Computer Assisted Software Engineering (CASE) Requirements document – system services (what the system does) – system constraints (how the system is constrained) Software Quality Assurance (SQA) – walkthroughs and inspections

5 CA228 Software Specification5 System Design “A software design is a description of the structure of the software to be implemented, the data which is part of the system, the interfaces between system components and, sometimes, the algorithms used.” (Sommerville) In practice the distinction between analysis and design is blurred – lifecycle models are iterative with increments – the same modeling language (e.g. UML) is used for analysis and design Detailed design Architectural design

6 CA228 Software Specification6 Coding Translating a design into a program and removing errors from that program. Programming is a personal activity - there is no generic programming process. Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process.

7 CA228 Software Specification7 Testing Component or unit testing – Individual components are tested independently; – Components may be functions or objects or coherent groupings of these entities. System testing – Testing of the system as a whole. Testing of emergent properties is particularly important. Acceptance testing – Testing with customer data to check that the system meets the customer’s needs.

8 CA228 Software Specification8 Maintenance Operation signifies the lifecycle phase when the software product is used in day- to-day operations and the previous system (manual or automated) is phased out Operation coincides with the start of product maintenance – corrective (housekeeping) – adaptive – perfective

9 CA228 Software Specification9 Lifecycle Choice Software engineering experience, skills and knowledge of the development team Business experience and knowledge Application domain Business environment changes Internal business changes Project size

10 CA228 Software Specification10 Waterfall Model Output from one phase is fed as input to the next phase. One phase is completed, documented and signed-off before the next phase begins. Advantages Each phase is well documented. Maintenance easier. Disadvantages If there is a mismatch between what the client wanted and what is built this will not be known until the product is delivered Requirement Analysis System Design Coding Testing Maintenance

11 CA228 Software Specification11 Waterfall Strengths Easy to understand, easy to use Provides structure to inexperienced staff Milestones are well understood Sets requirements stability Good for management control (plan, staff, track) Works well when quality is more important than cost or schedule

12 CA228 Software Specification12 Waterfall Deficiencies All requirements must be known upfront Deliverables created for each phase are considered frozen – inhibits flexibility Can give a false impression of progress Does not reflect problem-solving nature of software development – iterations of phases Integration is one big bang at the end Little opportunity for customer to preview the system (until it may be too late)

13 CA228 Software Specification13 When to use the Waterfall Model Requirements are very well known Product definition is stable Technology is understood New version of an existing product Porting an existing product to a new platform.

14 CA228 Software Specification14 Develop system version n Validate system version n YES NO Design system version n System complete n = n+1 Iterative Models Deliver full system shell in the beginning Enhance functionality in new releases

15 CA228 Software Specification15 Iterative Lifecycle with Increments Iteration in software development is a repetition of some process with an objective to enrich the software product Iterative lifecycle assumes increments – an improved or extended version of the product at the end of each iteration Iterative lifecycle assumes builds – executable code that is a deliverable of an iteration. Iterative lifecycle assumes short iterations between increments, in weeks or days, not months. Models: – Spiral – Rational Unified Process (RUP) – Model Driven Architecture (MDA) – Agile lifecycle with short cycles

16 CA228 Software Specification16 Incremental Development Break system into small components Implement and deliver small components in sequence Every delivered component provides extra functionality to user designbuild install evaluate designbuild install evaluate designbuild install evaluate increment 1 increment 2 increment 3 first incremental delivery second incremental delivery third incremental delivery delivered system

17 CA228 Software Specification17 Incremental Delivery 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. Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

18 CA228 Software Specification18 Incremental Development Advantages Customer value can be delivered with each increment so system functionality is available earlier. 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.

19 CA228 Software Specification19 Incremental Development Strengths Develop high-risk or major functions first Each release delivers an operational product Customer can respond to each build Uses “divide and conquer” breakdown of tasks Lowers initial delivery cost Initial product delivery is faster Customers get important functionality early Risk of changing requirements is reduced

20 CA228 Software Specification20 Incremental Development Weaknesses Requires good planning and design Requires early definition of a complete and fully functional system to allow for the definition of increments Well-defined module interfaces are required (some will be developed long before others) Total cost of the complete system is not lower

21 CA228 Software Specification21 When to use Incremental Development Risk, funding, schedule, program complexity, or need for early realization of benefits. Most of the requirements are known up-front but are expected to evolve over time A need to get basic functionality to the market early On projects which have lengthy development schedules On a project with new technology

22 CA228 Software Specification22 Spiral Development 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. No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required. Risks are explicitly assessed and resolved throughout the process.

23 CA228 Software Specification23 Spiral Model Barry Boehm Evolutionary approach Iterative development combined with risk management Risk analysis results in “go, re-do, no-go” decision Four major activities Planning Risk analysis Engineering Evaluation

24 CA228 Software Specification24 Spiral Model Plan next phases Determine objectives, alternatives and constraints Evaluate alternatives; identify and resolve risks Develop and verify next-level product Requirements plan Development plan Integration and Test plan Concept of operation Risk analysis Prototype Software requirements Requirements validation System product design Design validation Acceptance test Integration and Test Unit testing Coding Detailed design

25 CA228 Software Specification25 Spiral Quadrants Determine objectives, alternatives and constraints Objectives: functionality, performance, hardware/software interface, critical success factors, etc. Alternatives: build, reuse, buy, sub- contract, etc. Constraints: cost, schedule, interface, etc. Evaluate alternatives, identify and resolve risks Study alternatives relative to objectives and constraints Identify risks (lack of experience, new technology, tight schedules, poor process, etc. Resolve risks (evaluate if money could be lost by continuing system development Develop next-level product Typical activites: Create a design Review design Develop code Inspect code Test product Plan next phase Typical activities Develop project plan Develop configuration management plan Develop a test plan Develop an installation plan

26 CA228 Software Specification26 Spiral Model Strengths Provides early indication of insurmountable risks, without much cost Users see the system early because of rapid prototyping tools Critical high-risk functions are developed first The design does not have to be perfect Users can be closely tied to all lifecycle steps Early and frequent feedback from users Cumulative costs assessed frequently

27 CA228 Software Specification27 Spiral Model Weaknesses Time spent for evaluating risks too large for small or low-risk projects Time spent planning, resetting objectives, doing risk analysis and prototyping may be excessive The model is complex Risk assessment expertise is required Spiral may continue indefinitely Developers must be reassigned during non-development phase activities May be hard to define objective, verifiable milestones that indicate readiness to proceed through the next iteration

28 CA228 Software Specification28 When to use Spiral Model When creation of a prototype is appropriate When costs and risk evaluation is important For medium to high-risk projects Long-term project commitment unwise because of potential changes to economic priorities Users are unsure of their needs Requirements are complex New product line Significant changes are expected (research and exploration)

29 CA228 Software Specification29 Rapid Software Development Because of rapidly changing business environments, businesses have to respond to new opportunities and competition. This requires software and rapid development and delivery is not often the most critical requirement for software systems. Businesses may be willing to accept lower quality software if rapid delivery of essential functionality is possible.

30 CA228 Software Specification30 Requirements Because of the changing environment, it is often impossible to arrive at a stable, consistent set of system requirements. Therefore a waterfall model of development is impractical and an approach to development based on iterative specification and delivery is the only way to deliver software quickly.

31 CA228 Software Specification31 Characteristics of RAD Processes The processes of specification, design and implementation are concurrent. There is no detailed specification and design documentation is minimised. The system is developed in a series of increments. End users evaluate each increment and make proposals for later increments. System user interfaces are usually developed using an interactive development system.

32 CA228 Software Specification32 Rapid Application Development Agile methods have received a lot of attention but other approaches to rapid application development have been used for many years. These are designed to develop data- intensive business applications and rely on programming and presenting information from a database.

33 CA228 Software Specification33 RAD Environment Tools Database programming language Interface generator Links to office applications Report generators

34 CA228 Software Specification34 A RAD Environment

35 CA228 Software Specification35 Interface Generation Many applications are based around complex forms and developing these forms manually is a time-consuming activity. RAD environments include support for screen generation including: – Interactive form definition using drag and drop techniques; – Form linking where the sequence of forms to be presented is specified; – Form verification where allowed ranges in form fields is defined.

36 CA228 Software Specification36 Visual Programming Scripting languages such as Visual Basic support visual programming where the prototype is developed by creating a user interface from standard items and associating components with these items A large library of components exists to support this type of development These may be tailored to suit the specific application requirements

37 CA228 Software Specification37 An Iterative Development Process

38 CA228 Software Specification38 Advantages of Incremental Development Accelerated delivery of customer services. Each increment delivers the highest priority functionality to the customer. User engagement with the system. Users have to be involved in the development which means the system is more likely to meet their requirements and the users are more committed to the system.

39 CA228 Software Specification39 Problems with Incremental Development Management problems – Progress can be hard to judge and problems hard to find because there is no documentation to demonstrate what has been done. Contractual problems – The normal contract may include a specification; without a specification, different forms of contract have to be used. Validation problems – Without a specification, what is the system being tested against? Maintenance problems – Continual change tends to corrupt software structure making it more expensive to change and evolve to meet new requirements.

40 CA228 Software Specification40 Prototyping For some large systems, incremental iterative development and delivery may be impractical; this is especially true when multiple teams are working on different sites. Prototyping, where an experimental system is developed as a basis for formulating the requirements may be used. This system is thrown away when the system specification has been agreed.

41 CA228 Software Specification41 Incremental Development and Prototyping

42 CA228 Software Specification42 Conflicting Objectives The objective of incremental development is to deliver a working system to end-users. The development starts with those requirements which are best understood. The objective of throw-away prototyping is to validate or derive the system requirements. The prototyping process starts with those requirements which are poorly understood.

43 CA228 Software Specification43 Software Prototyping A prototype is an initial version of a system used to demonstrate concepts and try out design options. A prototype can be used in: – The requirements engineering process to help with requirements elicitation and validation; – In design processes to explore options and develop a UI design; – In the testing process to run back-to-back tests.

44 CA228 Software Specification44 Benefits of Prototyping Improved system usability. A closer match to users’ real needs. Improved design quality. Improved maintainability. Reduced development effort.

45 CA228 Software Specification45 Back to Back Testing

46 CA228 Software Specification46 The Prototyping Process

47 CA228 Software Specification47 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; – The prototype probably will not meet normal organisational quality standards.

48 CA228 Software Specification48 Agile Methods Dissatisfaction with the overheads involved in design methods led to the creation of agile methods. These methods: – Focus on the code rather than the design; – Are based on an iterative approach to software development; – Are intended to deliver working software quickly and evolve this quickly to meet changing requirements. Agile methods are probably best suited to small/medium- sized business systems or PC products.

49 CA228 Software Specification49 Principles of Agile Methods

50 CA228 Software Specification50 Problems with Agile Methods It can be difficult to keep the interest of customers who are involved in the process. Team members may be unsuited to the intense involvement that characterises agile methods. Prioritising changes can be difficult where there are multiple stakeholders. Maintaining simplicity requires extra work. Contracts may be a problem as with other approaches to iterative development.

51 CA228 Software Specification51 Extreme Programming (XP) Perhaps the best-known and most widely used agile method. Extreme Programming (XP) takes an ‘extreme’ approach to iterative development. – New versions may be built several times per day; – Increments are delivered to customers every 2 weeks; – All tests must be run for every build and the build is only accepted if tests run successfully.

52 CA228 Software Specification52 The XP Release Cycle

53 CA228 Software Specification53 Extreme Programming Practices 1

54 CA228 Software Specification54 Extreme Programming Practices 2

55 CA228 Software Specification55 XP and Agile Principles Incremental development is supported through small, frequent system releases. Customer involvement means full-time customer engagement with the team. People not process through pair programming, collective ownership and a process that avoids long working hours. Change supported through regular system releases. Maintaining simplicity through constant refactoring of code.

56 CA228 Software Specification56 Requirements Scenarios In XP, user requirements are expressed as scenarios or user stories. These are written on cards and the development team break them down into implementation tasks. These tasks are the basis of schedule and cost estimates. The customer chooses the stories for inclusion in the next release based on their priorities and the schedule estimates.

57 CA228 Software Specification57 Story Card for Document Downloading

58 CA228 Software Specification58 XP and Change Conventional wisdom in software engineering is to design for change. It is worth spending time and effort anticipating changes as this reduces costs later in the life cycle. XP, however, maintains that this is not worthwhile as changes cannot be reliably anticipated. Rather, it proposes constant code improvement (refactoring) to make changes easier when they have to be implemented.

59 CA228 Software Specification59 Testing in XP Test-first development. Incremental test development from scenarios. User involvement in test development and validation. Automated test harnesses are used to run all component tests each time that a new release is built.

60 CA228 Software Specification60 Task Cards for Document Downloading

61 CA228 Software Specification61 Test Case Description

62 CA228 Software Specification62 Test-First Development Writing tests before code clarifies the requirements to be implemented. Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly. All previous and new tests are automatically run when new functionality is added. Thus checking that the new functionality has not introduced errors.

63 CA228 Software Specification63 Pair Programming In XP, programmers work in pairs, sitting together to develop code. This helps develop common ownership of code and spreads knowledge across the team. It serves as an informal review process as each line of code is looked at by more than 1 person. It encourages refactoring as the whole team can benefit from this. Measurements suggest that development productivity with pair programming is similar to that of two people working independently.


Download ppt "CA228 Software Specification1 Software Process A structured set of activities required to develop a software system Specification Design Validation Evolution."

Similar presentations


Ads by Google