软件开发过程及几个常见的开发模型(软件工程学习笔记)

时间:2022-09-10 10:19:45

本文为《Software Engineering: A Practitioner's Approach》(sixth Edition)一书的阅读笔记。


Q0: What is Software Engineering?

Software engineering encompasses a process, methods, and tools.

Any engineering approach(including software engineering) must rest on an organizational commitment to quality. 

The bedrock that supports software engineering is a quality focus.  The foundation is software process layer, and the software process forms the basis for management control of software

projects and establishes the context in which technical methods are applied.

 


Q1: What is software process?

A quick answer:

"When you work to build a product or system. it's important to go through a series of predictable steps -- a road map that helps you to create a timely, high-quality result.

The road map that you follow is called a software process".


Q2: What are the generic framework activities that are present in every software process?

  • communication
  • planning
  • modeling 
  • construction
  • deployment
for more details:

 the modeling activity is composed of two software engineering actions: analysis and design. Analysis action includes a set of work tasks,they work together to make the analysis model, so does the design models.


Q3: What is the so called "Umbrella activities"?


Umbrella activities occur throughout the software process and focus primarily on project management, tracking , and control.

Including the following activities:

  1. Software project tracking and control
  2. Risk management
  3. Software quality assurance
  4. Formal technical reviews
  5. Measurement
  6. Software configuration management.
  7. Reusability management.
  8. Work product preparation and production.

Q4: How do process models differ from one another:

  1. The overall flow of activities and tasks and the inter-dependencies among activities and tasks.
  2. The degree to which work tasks are defined within each framework activity.
  3. The degree to which work products are identified and required.
  4. The manner which quality assurance activities are applied.
  5. The manner in which project tracking and control activities are applied.
  6. The overall degree of detail and rigor with which the process is described.
  7. The degree to which customer and other stakeholders are involved with the project.
  8. The level of autonomy given to the software project team.
  9. The degree to which team organization and roles are prescribed.
Q5: What is the so called CMMI (Capability Maturity Model Integration) (Need more supporting materials)?

The CMMI presents a process meta-model in two different ways:
1)  as a continuous model.
2) as a staged model

The CMMI defines each process area in terms of "Specific goals" and the "Specific practices" required to achieve these goals.
The primary difference between the staged CMMI model and the continuous model is that the staged model defines five maturity levels, rather than five capability levels.


Q6: What is a process pattern?

A process pattern provides us with a template -- a consistent method for describing an important characteristic of the software process.
By  combining patterns ,a software team can construct a process that best meet the needs of a project, a process pattern mostly includes:

  1. Pattern name
  2. Intent
  3. Type
  4. Initial Context
  5. Problem
  6. Solution
  7. Resulting Context
  8. Related patterns
  9. Know uses/Examples

Q7:  The prescriptive process models V.S. agile process models:

1.  Prescriptive process models define a distinct set of activities, actions, tasks, milestones, and work products that are required to engineering high-quality software.
2. An agile process must be adaptable.It is characterized in a manner that addresses three key assumptions about the majority of software projects:
   1)  it is difficult to predict in advance which software requirements will persist and which will change
   2)  For many types of software, design and construction are interleaned
   3)  Analysis, design, construction and testing are not as predictable as we might like.


Q8: The typical prescriptive models

1.  The waterfall Model(also called "Classic life cycle")

Communication → Planning → Modeling → Construction → Deployment

2.  Incremental Process Models

The incremental model applies linear sequences in a staggered fashion as calendar time progresses. Each linear sequence produces deliverable "increments" of the software.
(just like this: Increment #1, Increment #2, ~~~ Increment #n)

3. RAD: Rapid Application Development
Emphasizes a short development cycle.During the planning phase, it is arranged for multiple software teams work in parallel on different system functions
(yet they share the same communication and planning phases)
Modeling phase: encompasses three major phases: business modeling ,data modeling ,process modeling
Construction phase: emphasizes the use of pre-existing software components and the application of automatic code generation.

4. Evolutionary Process Models
4.1 Prototype Model

iterate development.

4.2 Spiral Model
Boehm on Spiral Model:
   The spiral development model is a risk-driven process model generator that is used to guide multiple stakeholder concurrent engineering of software intensive systems.
It has two features: one is a cycle approach for incrementally growing a system's degree of definition and implementation while decreasing its degree of risk.
The other is a set of anchor point millstones for ensuring stakeholder commitment to feasible and matually satisfactory system solutions.

It demands considerable risk assessment expertise and relies on this expertise for success.

4.3 The Concurrent Development Model (Concurrent Engineering)

It can be represented schematically as a series of framework activities.Software engineering actions and tasks , and their associated states.

5. Specialized Process Models
5.1 Component-Based Development

5.2 The Formal Methods Model

the formal methods model encompasses a st of activities that leads to formal mathematical specification of computer software. 
When formal methods are used during development, they provide a mechanism for eliminating many of the problems that are difficult to overcome using other software engineering paradigms.

5.3 Aspect-Oriented Software Development AOSD or Aspect-Oriented Programming AOP


Provides a process and methodological approach for defining, specifying, designing, and constructing aspects.


6. The Unified Process(need to be supplied with more detailed materials)

Including:

Increption phase:

Elaboration phase

Construction phase

Transition phase

Production Phase

The unified process is a "Use-case driven, architecture-centric, interactive and cremental "software process designed as a framework for UML and tools.