CS 3398 CH 2 Software Processes

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

Testing Stages

- Component testing - System testing - Customer testing

Advantages and disadvantages

Reduced costs and risks as less software is developed from scratch Faster delivery and deployment of system But requirements compromises are inevitable so system may not meet real needs of users Loss of control over evolution of reused system elements

Prototype

is an inital version of a system used to demonstrate concepts and try out design options

System Prototyping

where a version of the system or part of the system is developed quickly to check the customer's requirements and the feasibility of design decisions.

Incremental Delivery

where system increments are delivered to the customer for comment and experimentation

Change tolerance

where the process is designed so that changes can be accommodated at relatively low cost.

Incremental software development could be very effectively used for customers who did not have a clear idea about the systems needed for their operations. Discuss

· Based on the idea of developing initial implementation, getting user feedback and evolving software through several versions. · Either plan driven, agile or mixture. · Customer can evaluate systems at a relatively early stage.

Process activites

Software processes are inter-leaved sequences of technical, collaborative and managerial activities with the overall goal of specifying, designing, implementing and testing a software system

incremental delivery

-Deploy an increment for use by end-users; -More realistic evaluation about practical use of software; -Difficult to implement for replacement systems as increments have less functionality than the system being replaced.

incremental development

-Develop the system in increments and evaluate each increment before proceeding to the development of the next increment; -Normal approach used in agile methods; -Evaluation done by user/customer proxy.

Process Improvment activities

-Process measurement -Porcess analysis -Process change

Waterfall Model Phases

-Requirements analysis and definition -System and software design -Implementation and unit testing -Integration and system testing -Operation and maintenance CON: difficulty of accommodating change after the process is underway. Inflexible Mostly used for large system engineering projects where a system is developed at several sites

Key Process Stages

-Requirements specification -Software discovery and evaluation -Requirements refinement -Application system configuration -Component adaptation and integration

Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process

1) User Requirements describe the system functions and features from the perspective of a user. These are usually abstract. System requirements provide a more detailed explanation of the procedure. 2) User requirements are written in plain and natural language. System requirements are more detailed with specific specifications that could be part of a contract. 3) User requirements start with gathering information, identifying important aspects, and understanding them. System Requirements can only be implemented after the user requirements are understood and finalised.

Software evolution

Software is inherently flexible and can change. as requirements change the software that supports the business must also evolve and change

Suggest two advantages and two disadvantages of the approach to process assessment and improvement that is embodied in the SEI's Capability Maturity framework

Adv: · Focused on software engineering processes and practices used · Led to significant improvements in capabilities Disadv: · Too much overhead in formal process improvement in small companies · Maturity estimation with agile processes is difficult

Design activites

Architectural design: Where you idenfify the overall structure of the system, the principle components, their relationships and how they are distributed Database Design: where you design teh system data structures and how these are to be represented in a database Interface design: where you define the interfaces between system components Components selction and design: where you search for reuseable components (if unavailable you design how it will operate)

Integration and configuration

Based on software resuse where systems are integrated from existing componenets or application systems Reused elements may be configured to adapt their behaviour and fucntionality to a users requirements Reuse is now the standard approach for building many types of business system

Using an example, explain why the design activities of architectural design, database design, interface design and component design are interdependent

Design of architecture: · System overall structure is defined. Design of Database: · Define structure of database as representation. Design of interface: · Interface defined here. · Ease of use Component design and selection · Reusable components matching requirements are defined here All design activities above should be followed and integrated. Therefore these work together and can be called interdependent

Benifits of software prototyping

Improved system usability A closer match to users real needs imporved design quality Improved maintainability Reduced development effort

Waterfall model

Plan-driven model. Separate and distinct phases of specification and development.

Approaches to process improvement

Process Maturity Approach: focuses on improving process and project management, and introducint good software engineering practice -levels of process maturity Agile approach: focuses on iterative development and the reduction of overhead in the software process

Software Processing descriptions

Products: which are the outcomes of a process activity Roles: which reflect the responsibilities of the people involved in the process Pre- and post- conditions: whcih are statements that are true before and after a process activity has been enacted or product produced

Imagine that a government wants a software program that helps to keep track of the utilization of the country's vast mineral resources. Although the requirements put forward by the government were not very clear, a software company was tasked with the development of a prototype. The government found the prototype impressive, and asked it be extended to be the actual system that would be used. Discuss the pros and cons of taking this approach

Pros: · Allows changes to prototype · Customer sees prototype and modifications made before design is created · Better implementation · Satisfied customer Cons: · Additional cost for prototype creation · Delays due to extra time creating prototypes

Explain why software testing should always be incremental, staged activity. Are programmers the best people to test the programs that they have developed?

Software testing: · Each program is tested for correct functionality · Complete program divided into small modules, tested individually. (UNIT TESTING) · Then whole system is tested with the programs tested above. (SYSTEM TESTING) · Beta version released and end user checks (CUSTOMER TESTING) Programmers are not the best persons · Hard to find own errors. · Best skills to develop but not to test.

incremental development

Specification, development and validation are interleaved. May be plan-driven or agile.

Many software systems involve

Specification: defining what a system should do Design and implementation: defining the organization of the system and implementing the system Validation: Checking that it does what the customer wants Evolution: changing the system in response to changing customer needs

Incremental development benefits

The cost of accommodating changing customer requirements is reduced. It is easier to get customer feedback on the development work that has been done. More rapid delivery and deployment of useful software to the customer is possible.

Incremental development problems

The process is not visible. System structure tends to degrade as new increments are added.

Software design and implementation

The process of converting the system specification into an executable system.

Software specification

The process of establishing what services are required and the constraints on the system's operation and development.

System implementation

The software is implemented either by developing a program(s) or by configuring an application system Design and implementation are interleaved actitivites for most types of software systems

Integration and configuration

The system is assembled from existing configurable components. May be plan-driven or agile.

Software validation

Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. Involves checking and review processes and system testing.

Change anticipation

Where the software process includes activities that can anticipate possible changes before significant rework is required

Suggest the most appropriate generic software process model that might be used as a basic for managing the development of the following system: [A]A system to control antilock braking in a car [B]A virtual reality system to support software mainenance [C]A university accounting system that replaces an existing system [D]An interactive travel planning system that helps users plan journeys with the lowest environmental impact

[A] -Safety Critical System -Plan Driven approach with requirements analysed carefully -Waterfall model most appropriate with formal transformations between different development stages [B] Cutting edge and UI dependent for usability -Incremental or Spiral with some UI prototyping -Agile process may be used [C] Requirements failry well known -Reuse based approach is appropriate [D] -Complex UI which is stable and reliable -Incremental development appraoch most appropriate -System requirements will change as user experiance is gained

Debugging

finding program faults and correcting these faults

Agile process

planning is incremental and it is easier to change the process to reflect changing customer requirements

Plan-driven processes

pocesses where all of the process activities are planned in advance and progress is measured against the plan

Consider the integration and configuration process model. Explain why it is essential to repeat the requirements engineering activity in the process.

· Firstly requirements spec involve proposing initial requirements for the system · Refinement stage, reusable components and applications discovered for refinement.

You have developed a prototype of a software system and your manager is very impressed by it. She proposes that it should be put into use as a production system, with new features added as required. This avoids the expense of system development and makes the systems immediately useful. Write a short report for your manager explaining why prototype systems should not normally be used as production systems

· Prototype anticipates changes required · Requirements engineering prototype helps with elicitation and validation · System design process: used to explore software solutions in UI development · Minimal UI and not intuitive · No error detection · Vague error messages · Not viewed as high quality product, only development aids.

Historically, the introduction of technology has caused profound changes in the labour market and, temporarily at least, displaced people from jobs. Discuss whether the introduction of extensive process automation is likely to have the same consequences for software engineers. IF you don't think it will, explain why not. If you think that it will reduce job opportunities, is it ethical for the engineers affected to passively or actively resist the introduction of this technology?

· Reduce human error in code creation · Potential to produce similar or better software than conventionally produced software · Cost reduction · Standardised components used, increasing software reliability and cost reduction in future maintenance · Automation assists software to address primary issues in the development process. (complexity, reliability, and productivity)

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.


Ensembles d'études connexes

Unit 2: One- and Two-Step Equations, Expressions, and Properties

View Set

sociology Inequality Summary Assessment

View Set

Chapter 9 Terminating Healthcare Employees

View Set