Software Development Process Flashcards

1
Q

What is a software development process?

A

•A structured set of activities required to develop a software system
•Many different software processes but all involve:
–Specification–defining what the 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.
•A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What are some typical development process activities?

A
  • Requirements engineering
  • System analysis
  • High-level design/architecture
  • Low-level design
  • Coding
  • Integration
  • Design and code reviews
  • Testing
  • Maintenance
  • Project management
  • Configuration management
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is the plan-driven process and what is the agile process?

A
  • Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.
  • In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements.
  • In practice, most practical processes include elements of both plan-driven and agile approaches.
  • There are no right or wrong software processes.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are lifecycle models?

A
  • Combine the development processes and activities in different ways (different order, once or repeated …) to model the life cycle of a project
  • By making models of the life cycle of successful software projects can help us design better approaches to plan the life cycle of future projects
  • There are several ‘generic’ life cycle models that are often used or used as a basis for the design of custom lifecycle models
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are some generic software process models?

A

•The waterfall model
–Plan-driven model. Separate and distinct phases of specification and development.
•Incremental development (Evolutionary development)
–Specification, development and validation are interleaved. May be plan-driven or agile.
•Reuse-oriented software engineering (Component-based software engineering)
–The system is assembled from existing components.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What is a process pattern?

A

–describes a process-related problem that is encountered during software engineering work,
–identifies the environment in which the problem has been encountered, and
–suggests one or more proven solutions to the problem.
Stated in more general terms, a process pattern provides you with a template[Amb98]—a consistent method for describing problem solutions within the context of the software process.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are some process pattern types?

A
  • Stage patterns—defines a problem associated with a framework activity for the process.
  • Task patterns—defines a problem associated with a software engineering action or work task and relevant to successful software engineering practice
  • Phase patterns—define the sequence of framework activities that occur with the process, even when the overall flow of activities is iterative in nature.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are some process assessment and improvement techniques?

A
  • Standard CMMI Assessment Method for Process Improvement (SCAMPI) —provides a five step process assessment model that incorporates five phases: initiating, diagnosing, establishing, acting and learning.
  • CMM-Based Appraisal for Internal Process Improvement (CBA IPI)—provides a diagnostic technique for assessing the relative maturity of a software organization; uses the SEI CMM as the basis for the assessment [Dun01]
  • SPICE—TheSPICE (ISO/IEC15504) standard defines a set of requirements for software process assessment. The intent of the standard is to assist organizations in developing an objective evaluation of the efficacy of any defined software process. [ISO08]
  • ISO 9001:2000 for Software —a generic standard that applies to any organization that wants to improve the overall quality of the products, systems, or services that it provides. Therefore, the standard is directly applicable to software organizations and companies. [Ant06]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is software lifecycle?

A

•Sequence of processes completed as a software project moves from inception to retirement
•At beginning of project development, choose
–Software development paradigm
–Software development process model
•Define the order/manner in which software life cycle processes are performed
•Then you are ready to start software specification, design, implementation, validation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What process activities are there?

A
  • A) Software specification
  • B) Software design and implementation
  • C) Software validation
  • D) Software evolution
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is software specification?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are the steps in the requirement engineering process?

A

–Feasibility study
•Is it technically and financially feasible to build the system?
–Requirements elicitation and analysis
•What do the system stakeholders require or expect from the system?
–Requirements specification
•Defining the requirements in detail
–Requirements validation
•Checking the validity of the requirements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is software design and implementation?

A

•The process of converting the system specification into an executable system.
•Software design
–Design a software structure that realises the specification;
•Implementation
–Translate this structure into an executable program;
•The activities of design and implementation are closely related and may be inter-leaved.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is a structured method in designing a software system?

A
•Systematic approaches to developing a software design.
•The design is usually documented as a set of graphical models.
•Possible models
–Object model;
–Sequence model;
–State transition model;
–Structural model;
–Data-flow model.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is software validation?

A
  • 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.
  • System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system.
  • Testing is the most commonly used V & V activity.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are the testing stages?

A

•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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What is software evolution?

A
  • Software is inherently flexible and can change.
  • As requirements change through changing business circumstances, the software that supports the business must also evolve and change.
  • Although there has been a demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What are different system classifications?

A

•Technical computer-based systems
–Systems that include hardware and software but where the operators and operational processes are not normally considered to be part of the system.
•Socio-technical systems
–Systems that include technical systems but also operational processes and people who use and interact with the technical system. Socio-technical systems are governed by organizational policies and rules.

19
Q

What are emergent properties?

A
  • Properties of the system as a whole rather than properties that can be derived from the properties of components of a system
  • Emergent properties are a consequence of the relationships between system components
  • They can therefore only be assessed and measured once the components have been integrated into a system
20
Q

What is reliability?

A

“the ability of a system to deliver services as specified. Reliability can be specified quantitatively as a probability of failure on demand or as the rate of occurrence of failure.”

21
Q

What is systems engineering?

A

•Specifying, designing, implementing, validating, deploying and maintaining socio-technical systems.
•Concerned with the services provided by the system, constraints on its construction and operation and the ways in which it is used.
•Involves engineers from different disciplines who must work together
–Much scope for misunderstanding here. Different disciplines use a different vocabulary and much negotiation is required.

22
Q

What are system requirements problems?

A

•Complex systems are usually developed to address wicked problems
–Problems that are not fully understood;
–Changing as the system is being specified.
•Must anticipate hardware/communications developments over the lifetime of the system.
•Hard to define non-functional requirements (particularly) without knowing the component structure of the system

23
Q

What are the steps in the system design process?

A

•Partition requirements
–Organize requirements into related groups.
•Identify sub-systems
–Identify a set of sub-systems which collectively can meet the system requirements.
•Assign requirements to sub-systems
–Causes particular problems when COTS are integrated. (COTS to be looked at separately.)
•Specify sub-system functionality.
•Define sub-system interfaces
–Critical activity for parallel sub-system development

24
Q

What are integral processes?

A

Integral processes take place during all phases of development
–Verification and Validation:
–Software Configuration and Management
•Configuration Control, Revision management
•Tracking and control of changes
–Documentation development / distribution
–Training
•Plan, Develop, Validate, Implement training program

25
Q

What is a waterfall model?

A

•Waterfall model describes a process of stepwise refinement
–Based on hardware engineering models
–Widely used in defense and aerospace industries
•There are separate identified phases in the waterfall model:
1.Requirements analysis and definition
2.System and software design
3.Implementation and unit testing
4.Integration and system testing
5.Operation and maintenance

26
Q

What are the problems with the waterfall model?

A

•Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
–Therefore, 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.
–Unrealistic separation of specification from design
–Doesn’t accommodate prototyping, reuse, etc.

27
Q

What is the incremental development model?

A

Exploratory development
–Objective is to work with customers and to evolve a final system from an initial outline specification.
–Should start with well-understood requirements and add new features as proposed by the customer.
•Throw-away prototyping
–Objective is to understand the system requirements.
–Should start with poorly understood requirements to clarify what is really needed.

28
Q

What are the benefits of an incremental development?

A

The cost of accommodating changing customer requirements is reduced.
The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.
It is easier to get customer feedback on the development work that has been done.
Customers can comment on demonstrations of the software and see how much has been implemented.
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.

29
Q

What are the problems with incremental development?

A

•Problems
–Lack of process visibility;
–Systems are often poorly structured;
–Special skills (e.g. in languages for rapid prototyping) may be required.
Applicability
–For small or medium-size interactive systems;
–For parts of large systems (e.g. the user interface);
–For short-lifetime systems.

30
Q

What is reuse-oriented/component-based software engineering?

A
•Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems.
•Process stages
–Component analysis;
–Requirements modification;
–System design with reuse;
–Development and integration.
31
Q

What are advantages of reuse-oriented software engineering?

A
  • 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
32
Q

How to reduce the cost of rework?

A

Change anticipation, where the software process includes activities that can anticipate possible changes before significant rework is required.
–For example, a prototype system may be developed to show some key features of the system to customers.
•Change tolerance, where the process is designed so that changes can be accommodated at relatively low cost.
–This normally involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have be altered to incorporate the change.

33
Q

What is software prototyping?

A

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.

34
Q

What is prototype development?

A

•May be based on rapid prototyping languages or tools
•May involve leaving out functionality
–Prototype should focus on areas of the product that are not well-understood;
–Error checking and recovery may not be included in the prototype;
–Focus on functional rather than non-functional requirements such as reliability and security

35
Q

What are throw away protypes?

A

•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.

36
Q

What is Incremental delivery?

A
  • 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.
37
Q

What are the advantages of incremental delivery?

A
  • 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.
38
Q

What are problems with incremental delivery?

A

•Most systems require a set of basic facilities that are used by different parts of the system.
–As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments.
•The essence of iterative processes is that the specification is developed in conjunction with the software.
–However, this conflicts with the procurement model of many organizations, where the complete system specification is part of the system development contract.

39
Q

What is Boehm’s spiral?

A
  • 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.
40
Q

What are Boehm’s spiral sectors?

A

•Objective setting
–Specific objectives for the phase are identified.
•Risk assessment and reduction
–Risks are assessed and activities put in place to reduce the key risks.
•Development and validation
–A development model for the system is chosen which can be any of the generic models.
•Planning
–The project is reviewed and the next phase of the spiral is planned.

41
Q

What are the two approaches to process improvement?

A
  1. The process maturity approach,

2. The agile approach

42
Q

What are the steps the process maturity approach?

A

measure, change, analyze

43
Q

What is process measurment?

A

•Wherever possible, quantitative process data should be collected
–However, where organisations do not have clearly defined process standards this is very difficult as you don’t know what to measure. A process may have to be defined before any measurement is possible.
•Process measurements should be used to assess process improvements
–But this does not mean that measurements should drive the improvements. The improvement driver should be the organizational objectives.

44
Q

What is SEI’s capability maturity model?

A

1.Initial
–Essentially uncontrolled
2.Repeatable
–Product management procedures defined and used
3.Defined
–Process management procedures and strategies defined and used
4.Managed
–Quality management strategies defined and used
5.Optimising
–Process improvement strategies defined and used