Chapter 2 - Software Process Flashcards

1
Q

What is Software Process?

A

Software process is a set of activities, methods, practices, and transformations that people use to develop and maintain software and associated artifacts.

It encompasses all the activities involved in software development, from conception to delivery and maintenance.

The process might be different depending upon the nature of the company.

Of all software process, they all must include in some forms, the four fundamental software engineering activities.

Software specification, development, validation, evolution/ maintenance.

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

What is Software Process Models?

A

An abstract representation of a process.
Description of a process from some particular perspective.
The order in which the activities of software development will be undertaken.

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

Process Models

A

1 Waterfall Model
2 Incremental Model
3 Integration and Configuration model

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

Waterfall model

A

The waterfall model is a traditional software development process model that consists of a linear and sequential approach to software development. It is also known as the “linear sequential model” or the “traditional software life cycle.”
The resource explains that the waterfall model consists of the following phases:

Requirements gathering and analysis
System design
Implementation
Testing
Deployment
Maintenance

Each phase is completed before the next phase can begin, and the output of each phase is reviewed and approved before the project proceeds to the next phase.

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

Waterfall Model - Application

A

Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and external factors. Some situations where the use of Waterfall model is most appropriate are −

Requirements are very well documented, clear and fixed.

Product definition is stable.

Technology is understood and is not dynamic.

There are no ambiguous requirements.

Ample resources with required expertise are available to support the product.

The project is short.

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

Waterfall Model - Advantages

A

departmentalization and control

schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one

Some of the major advantages of the Waterfall Model are as follows −

Simple and easy to understand and use

Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.

Phases are processed and completed one at a time.

Works well for smaller projects where requirements are very well understood.

Clearly defined stages.

Well understood milestones.

Easy to arrange tasks.

Process and results are well documented.

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

Waterfall Model - Disadvantages

A

does not allow much reflection or revision.

Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.

The major disadvantages of the Waterfall Model are as follows −

No working software is produced until late during the life cycle.

High amounts of risk and uncertainty.

Not a good model for complex and object-oriented projects.

Poor model for long and ongoing projects.

Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model.

It is difficult to measure progress within stages.

Cannot accommodate changing requirements.

Adjusting scope during the life cycle can end a project.

Integration is done as a “big-bang. at the very end, which doesn’t allow identifying any technological or business bottleneck or challenges early.

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

INCREMENTAL MODEL/ Successive version model / Iterative

A

The incremental model is an iterative software development process model that emphasizes building a system through a series of smaller, more manageable increments.

In each increment, a small part of the system is designed, implemented, and tested, with additional functionality added in subsequent increments until the complete system is built.

The incremental model involves a series of iterative steps, each of which consists of requirements analysis, design, implementation, and testing.

Each increment builds on the previous one, and each increment is delivered to the customer for review and feedback.

The incremental model is often used in situations where the requirements are not fully understood or are likely to change, as it allows for greater flexibility and adaptability.

The incremental model provides early and frequent feedback to the customer, which can help ensure that the system meets their needs.

However, the incremental model can also have some disadvantages, such as an increased risk of integration issues and a potential for incomplete system functionality until all increments are completed.

Therefore, it is important to carefully plan and manage each increment to ensure that the overall system is cohesive and functions correctly.

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

When to use incremental model

A

When to use this:

  1. Funding Schedule, Risk, Program Complexity, or need for early realization of benefits.
  2. When Requirements are known up-front.
  3. When Projects have lengthy development schedules.
  4. Projects with new Technology.
  5. Requires good planning and design.
  6. The total cost is not lower.
  7. Well-defined module interfaces are required.

Error Reduction (core modules are used by the customer from the beginning of the phase and then these are tested thoroughly)
Uses divide and conquer for a breakdown of tasks.
Lowers initial delivery cost.
Incremental Resource Deployment.

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

Advantages of INCREMENTATL MODEL

A

Advantages of INCREMENTATL MODEL

PREPARES THE SOFTWARE FAST.

CLIENTS HAVE A CLEAR IDEA OF THE PROJECT.

CHANGES ARE EASY TO IMPLEMENT.

PROVIDES RISK HANDLING SUPPORT, BECAUSE OF ITS ITERATIONS.

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

Disadvantages OF INCREMENTAL MODEL

A

A good team and proper planned execution are required.
Because of its continuous iterations the cost increases.

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

INTEGRATION AND CONFIGURATION MODEL /
Reuse-oriented development model

A

The process of combining different software components or subsystems into a larger system.
Integration can be a complex process, as it involves ensuring that the different components work together correctly and that any interfaces between components are well-defined and consistent.

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

Fig: Reuse Oriented Model

A

Requirements Specification

Component Analysis

Requirements Modification

System Design with Reuse

Development and Integration

System Validation

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

Coping with change:

A

Only thing that is certain is change.

Change might be due to

  Business needs
  Competition in the market   
   Management change

With the change it adds up

      operating costs 
      maintenance costs
      re-work costs
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

How to cope with the change

A

Prototyping
Evolutionary Prototyping
Throw-away prototyping
Incremental Delivery

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

Only outline of system are passed to the developers on basis of which, prototype is created which contains only small portion of the system.

Prototype being created are refined and extended iteratively until the final specifications are met.

This approach is used when requirements are not clear or well-understood.

In this model client satisfaction is guaranteed

17
Q

Evolutionary Prototyping

A

Evolutionary prototyping : features are aggregated to the prototype to build the final product.

Evolutionary prototyping consists of building a prototype which is then refined based on the regular feedback from the stakeholders or potential users.

Maintainability of the code, style, design patterns or testing count from the beginning, which makes it possible to evolve the prototype into a fully featured, enterprise-grade product.

The earlier steps of the prototype contain only the core part of the future product, and then, features are added progressively.

Evolutionary prototyping is closer to Agile: often, you will be able to obtain early a working product with limited features and extend it until stakeholder have money.

18
Q

Throw-away prototyping

A

Throw-away prototyping is about creating, as fast as possible, a part of the future application to either ensure a feature is technically feasible or to show the feature to stakeholders or potential users in order to gather feedback from them.

The source code of this prototype is not reused later when developing the application itself, it makes it a throw-away prototype. Knowing that it’s a throw-away code helps focusing on the actual feature, while leaving aside aspects such as maintainability of the code, style, design patterns or testing. This makes it possible to finish the prototype very fast, without affecting negatively the technical debt of the final product.

Throw-away prototyping is different from sketching. Sketching is more graphical and oriented towards user interfaces and user experience, and doesn’t consist of writing programming code. Throw-away prototyping is usually used when sketching is not enough (for example when you need to show how a feature will perform on different smartphones or when you need to show the actual performance and responsiveness).

Throw-away prototyping and sketching : prototypes help gathering early feedback before starting developing the actual feature.

19
Q
  1. Incremental prototyping
A

Incremental prototyping consists of building several prototypes, each one representing a part of the future system, and then combine them.

Incremental prototyping, is better suited for large projects with many contributing teams, each team working on a separate prototype.

20
Q

Advantages of the prototyping model

A

Advantages of the prototyping model

Greater involvement of users in the product even before its implementation.

As a working prototype model is shown, users gain a better understanding of the software being developed.
Reduce time and costs since defects can be detected much earlier.
There are faster comments from users that lead to better solutions.
Missing features can be easily identified.
It is possible to identify confusing or difficult functions.

21
Q

Disadvantages of the prototype model

A

Risk of analysis of insufficient requirements due to too much dependence on the prototype.

Users can be confused with real prototypes and systems.

Practically, this methodology can increase the complexity of the system since the scope of the system can expand beyond the original plans.

Developers can try to reuse existing prototypes to build the real system, even when it is not technically feasible.

The effort invested in prototyping may be too much if it is not properly controlled.

22
Q

Process Improvement

A

Understanding existing underlying process

Addressing need of process change for
Increasing the product quality
Reduce Cost
Decrease the development time

23
Q

Different approaches to process improvement

A
  1. Process Maturity Approach
       Improving project management approach
       Introducing good software engineering practice
       Measuring the level of process maturity 
       Both on technical and managerial side improvement
  2. Agile Approach :
    Iterative development and the reduction of overheads in the software development process.
    Rapid development, rapid delivery of functionality and responsiveness to changing customer requirements.
24
Q

V-Shape Model

A

The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape.
It is also known as Verification and Validation model.
The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage.
Testing of the product is planned in parallel with a corresponding phase of development.

25
Q

When to use the V-Model ?

A

The V-Shaped model should be used for small to medium sized projects where requirements are clearly defined and fixed.

The V-Shaped model should be chosen when sample technical resources are available with needed technical expertise.

26
Q

Advantage of V-Shape Model

A

Simple and easy to use.

Testing activities like planning, test designing happens well before coding.

This saves a lot of time. Hence higher chance of success over the waterfall model.

Proactive defect tracking - that is defects are found at early stage.

Avoids the downward flow of the defects.

Works well for small projects where requirements are easily understood.

27
Q

Dis-Advantage of V-Model

A

Very rigid and least flexible.

Software is developed during the implementation phase, so no early prototypes of the software are produced.

If any changes happen in midway, then the test documents along with requirement documents has to be updated.

28
Q

Spiral Model / Meta Model

A

The Spiral Model is a software development life cycle (SDLC) model that provides a systematic and iterative approach to software development.

It combines aspects of the incremental build model, waterfall model and prototyping model.

Each iteration of the spiral representing a complete software development cycle, from requirements gathering and analysis to design, implementation, testing, and maintenance.

The Spiral Model is a risk-driven model, meaning that the focus is on managing risk through multiple iterations of the software development process.

29
Q

Phases in Spiral Model

A

Planning:
The first phase of the Spiral Model is the planning phase, where the scope of the project is determined and a plan is created for the next iteration of the spiral.

Risk Analysis:
In the risk analysis phase, the risks associated with the project are identified and evaluated.

Engineering:
In the engineering phase, the software is developed based on the requirements gathered in the previous iteration.

Evaluation:
In the evaluation phase, the software is evaluated to determine if it meets the customer’s requirements and if it is of high quality.

Planning:
The next iteration of the spiral begins with a new planning phase, based on the results of the evaluation.

The Spiral Model is often used for complex and large software development projects, as it allows for a more flexible and adaptable approach to software development. It is also well-suited to projects with significant uncertainty or high levels of risk. The Radius of the spiral at any point represents the expenses(cost) of the project so far, and the angular dimension represents the progress made so far in the current phase.

30
Q

Advantages of spiral model

A

Advantages

Flexibility -
Changes made to the requirements after development has started can be easily adopted and incorporated.

Risk handling -
The spiral model involves risk analysis and handling in every phase, improving security and the chances of avoiding attacks and breakages. The iterative development process also facilitates risk management.

Customer satisfaction -
The spiral model facilitates customer feedback. If the software is being designed for a customer, then the customer will be able to see and evaluate their product in every phase. This allows them to voice dissatisfactions or make changes before the product is fully built, saving the development team time and money.

31
Q

Disadvantages of sprial model

A

High cost -
The spiral model is expensive and, therefore, is not suitable for small projects.

Dependence on risk analysis -
Since successful completion of the project depends on effective risk handling, then it is necessary for involved personnel to have expertise in risk assessment.

Complexity -
The spiral model is more complex than other SDLC options. For it to operate efficiently, protocols must be followed closely. Furthermore, there is increased documentation since the model involves intermediate phases.

Hard to manage time -
Going into the project, the number of required phases is often unknown, making time management almost impossible. Therefore, there is always a risk for falling behind schedule or going over budget.

31
Q

Disadvantages of sprial model

A

High cost -
The spiral model is expensive and, therefore, is not suitable for small projects.

Dependence on risk analysis -
Since successful completion of the project depends on effective risk handling, then it is necessary for involved personnel to have expertise in risk assessment.

Complexity -
The spiral model is more complex than other SDLC options. For it to operate efficiently, protocols must be followed closely. Furthermore, there is increased documentation since the model involves intermediate phases.

Hard to manage time -
Going into the project, the number of required phases is often unknown, making time management almost impossible. Therefore, there is always a risk for falling behind schedule or going over budget.

32
Q

Component Based Software Engineering (CBSE)

A

Design and development of software with the help of existing reusable software components.

Also called reuse oriented model.

Integration and configuration model is re-use oriented model.

Software are not developed from the scratch, use of the existing components and design done.