2021年5月5日 0 条评论 36 次阅读 1 人点赞


Refactoring 重构

  • A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.”

Consider: Make sure you have a solid suite of tests. first refactor to make it easy to add the feature, then add the feature. refactoring changes the programs in small steps, so if you make a mistake, it is easy to find where the bug is.

Prototype, Proof-of-Concept and Skeleton System 原型,概念验证和骨架系统

  • 原型是系统某些功能子集的临时实现,通常呈现给用户以供反馈和验证,然后在验证练习完成后丢弃。
  • 概念证明是一些用来证明所提议的体系结构的风险元素是可行的,并突出任何问题和陷阱的代码。

  • 框架实现了系统的主要架构结构,但只包含系统功能的最小子集。

L1 第一讲



  1. What is Software Engineering?

    “Software engineering is an engineering discipline that is concerned with all aspects of software production from initial conception to operation and maintenance.”

  2. What is Software Process?

    “The systematic approach that is used in software engineering is sometimes called a software process. A software process is a sequence of activities that leads to the production of a software product.”

  3. A simplified and abstracted representation of a software process is called a software process model.软件过程的简化和抽象表示称为软件过程模型。

  • A software process model is often called a Software Development Life Cycle (SDLC) model
  • software process models E.g., V-model, Spiral model, RAD (Rapid Application Development) model, Agile model, Waterfall model, Increment model, etc.

\ 软件工程[/caption]


  1. Process Paradigms :Each of them can be extended and adapted to create more specific software engineering processes. They can also be seen as process frameworks.
  2. The Importance of Software Engineering
    • To be able to produce reliable and trustworthy systems economically and quickly. 可以经济和快速地生产可靠可信的系统。
    • It is usually cheaper, in the long run, to use software engineering methods and techniques.从长远来看,使用软件工程方法和技术通常更便宜。

Software type 软件类型

  1. Stand-alone applications独立应用程序

Applications that run on personal computers, mobile devices or mainframes • For example, Adobe Photoshop, Windows Calculator, etc.

  1. Interactive transaction-based applications交互式应用程序

Applications that run on a remote computer, but accessed by users from their own computers • For example, Web applications, Taobao Apps, cloud-based services, etc

  1. Embedded control systems 嵌入式控制系统

Software that control and manage hardware devices such as refrigerator temperature control, microware cooking functions, oil pump control, etc.冰箱温度控制,微波炉烹饪功能,油泵控制等。

  1. Batch processing systems 批量处理系统
  • Application systems that process data in large batches
  • For example, cell phone billing systems, staff salary payment systems, bank transaction processing systems, etc.

  1. Entertainment systems 娱乐系统

• Most of these systems are games that can run on personal computers or special console hardware, e.g., Xbox, PS4, Nintendo Switch, etc.

  1. System for modeling and simulation 仿真与建模系统

Application systems developed for scientists and engineers to model and simulate physical processes, chemical reactions, protein folding, visualization, etc. 用于生物学,工程系等领域,模拟等

  1. Data collection and analysis systems 数据收集和分析系统
  • Software systems that collect data from their environment and send that data to other systems for processing
  • For example, data warehouse, data lake, big data analytics systems, sensor data processing systems, etc. 如数据仓库、数据湖、大数据分析系统、传感器数据处理系统等。

  1. Systems of systems 子系统/内置系统
  • Systems or subsystems used in the large-scale enterprise or organizations.大型企业或组织中使用的系统或子系统。

  • For example, Enterprise Resource Planning (ERP) system, or systems that are composed from other discrete systems.

Software Engineering Fundamentals 软件工程基本原则

  1. Process 过程

    Use managed and understood development process, this may depend on the type of software to be developed.

    Organize and plan the development process.

  2. Dependability 可靠性

    The software system should behave as expected, without failures

    The software system should be available有效的 when it it is required

    It should be safe and secure

  3. Requirements 需求

    Understand the expectations期望 from different stakeholders利益相关者

    Balance conflict矛盾的 requirements

    Deliver交付 the software system within the allocated budget and time 在分配的预算和时间内交付软件系统

  4. Management & Reuse 管理与复用

    Effective use of existing resources, this may include staffs, skills, available technologies and software

Concept Map 概念图

L2 第二讲


Fundamental Activities in General Process Models 通用流程模型中的基本活动

  1. Software Specification 软件规范
  2. Software Development 软件开发
  3. Software Validation 软件校验
  4. Software Evolution 软件进化


The Waterfall Model 瀑布模型


  • Embedded Systems

    Software needs to interface with hardware systems

    Usually, hardware is inflexible; it is often inconvenient to delay decisions on the software's functionality until it is being implemented

  • Critical Systems 关键系统

    There is need for extensive广泛 safety and security analysis of the software specification and design

    The software specification and the design documents must be complete

    Safety related problems are usually expensive to correct

  • Large Software Systems 大型软件系统

    Multiple partners jointly developing the software system, complete specifications may be needed to allow for the independent development of different subsystems.

V-Model V模型


  • It is simple and easy to manage due to the rigidity of the model. • It encourages verification and validation at all phases. • It gives equal weight to both development and testing.
  • It is not suitable where the requirements are at a moderate to high-risk of changing. • It is not suggested for long and complex object-oriented software projects.

Incremental Development 增量开发

With each increment the product evolves with enhancements being added every time until the final version is completed. Code is written and tested in smaller pieces, thus reduces risks associated with the process.


  • Reduced cost for implementing requirements changes.
  • Receiving feedback early

  • Early delivery of partially working product


  • The process is not visible
  • System structure tends to degrade退化 as new increment are added

The Spiral Model 螺旋模型


  1. Determine Objectives
  2. Identify and resolve risks
  3. Development and Test
  4. Plan the next iteration

期间不断审查与积累成本Cumulative Cost


  • Reducing the amount of software to be developed
  • Reducing the cost and risks
  • Faster delivery交付 of the software


  • The requirements compromises妥协 may drift the original idea of the system
  • Limited control over the system evolution对系统演化控制力有限

Applicability of Software Models 开发模型的实用性




Rational Unified Process 统一软件开发流程

  1. Inception 奠基

    Envision the product scope, vision, and business case.


  2. Elaboration 经营




  3. Construction and Transition 施工建设和过度

  • Construction 施工




  • Transition 过渡