[SE] Software Process Models

강승구·2023년 3월 27일
0

Software process

Software process means a structured set of activities required to develop a software system.

There are many different software processes but all involves following 4 steps.

  • Specification (Requirements) : 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 (Maintanance) : 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.


Software process descriptions

Plan-driven and agile processes

  • Plan-driven processes : All of the process activities are planned in advance and progress is measured against this plan.
  • 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.


Process activities

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

The four basic process activities of specifiation, design and implementation, validation and evolution are organized differently in different development processes.

For example, in the waterfall model, they are organized in sequence, whereas in incremental development, they are interleaved.

1. Software specification

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

2. Software design and implementation

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

The activities of design and implementation are closely related and may be inter-leaved.

Software design

Design a software structure that realies the specification.

  • Architectural design : you can identify the overall structure of the system, the principal components (subsystem or modules), their relationships and how they are distributed.
  • Database design : you can design the system data structures and how these are to be represented in a database.
  • Interface design : you can define the interfaces between system components.
  • Component selection and design : you can search for reusable commponents. If unavailable, you design how it will operate.

Implementation

Translate this structure into an executable system.

Software validation

This process involves checking and reviewing 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.

Software testing is the most commonly used V&V(verification and validation) activity.

Verification and validation is intended to show that a system conforms to its specification and meets the requirements of the system customer.

  • verification : Is software implemented correctly?
  • validation : Does it satisfy customers?

Testing stages

  • Component 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.
  • User testing (Acceptance testing)
    • Testing with customer data to check that the system meets the customer's needs.

Software evolution

Software is inherently flexible and can change.
As requirements change through changing business circumstances, the software that supports the bussiness must also evolve and change.

Although there has been a demarcation between development and evolution, this is increasingly irrelevant as fewer and fewer systems are completely new.


Software Process Models

The waterfall model

In waterfall model, in principle, a phase has to be complete before moving onto the next phase.

Each phase produces outputs such as documents which will be used as inputs for next phase.

But there is problem of waterfall model.

In first, 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 wil be fairly limited during the design process.

But few bussiness systems have stable requirements.

So the waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.

In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.


Incremental development

Incremental development benefits

  • Reduced cost for accommodating customer requirements changes.
    • The amount of analysis and documentation that has to be redone is much less than that is required with the waterfall model.
  • Easy to get customer feedback.
    • Customers can comment on demonstrations of the software and see how much has been implemented.
  • More rapid delivery and deployment to the customer.
    • Customers are able to use and gain value from the software earlier than is possible with a waterfall process.

Incremental development problems

  • The process is not visible. So managers need regular deliverables to measure progress.
  • System structure tens 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.

Integration and configuration

Based on software reuse where systems are integrated from existing components or applicaiton systems.

profile
강승구

1개의 댓글

comment-user-thumbnail
2023년 10월 30일

Hey Kang! Your breakdown of SE Software Process Models is spot-on. Understanding these models is like having a roadmap for success in software development. If you're delving deeper into the process, Cleveroad's Discovery Phase (https://www.cleveroad.com/services/discovery-phase-process/) could be a game-changer for refining and customizing your approach.

답글 달기