Introduction to Software Engineering(zh,en) Flashcards

(44 cards)

1
Q

软件工程的定义(Definition of software engineering)

A

软件工程是将科学原理应用于软件设计和创建的过程(Software engineering is the application of scientific principles to the design and creation of software.)

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

软件工程的发展阶段(Evolution stages of software engineering)

A

早期阶段(1950s末),形成期(1960s初),软件危机(1960s中-1970s),解决阶段(1980s中),现代软件工程(1990s至今)。(Early stage (late 1950s), formation (early 1960s), software crisis (mid-1960s to 1970s), solution stage (mid-1980s), modern software engineering (since 1990s).)

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

CASE工具是什么(What is CASE tool?)

A

CASE即Computer-Aided Software Engineering,指计算机辅助软件工程的各种工具。(CASE stands for Computer-Aided Software Engineering, referring to various tools assisting software engineering.)

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

SDLC的六个关键阶段(Six key stages of SDLC)

A

需求收集、系统设计、编码开发、测试验证、发布上线、编写文档。(Requirements gathering, system design, coding/development, testing/validation, release/deployment, documentation.)

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

SDLC的好处(Benefits of SDLC)

A

提高开发效率,降低项目风险,明确各方角色和分工,促进沟通和协作。(Improves development efficiency, reduces risks, clarifies roles and responsibilities, promotes communication and collaboration.)

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

常见的软件开发生命周期模型(Common SDLC models)

A

瀑布模型(Waterfall)、V型模型(V-Shape)、敏捷开发(Agile)。(Waterfall, V-Shape, Agile.)

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

语义化版本号的组成(Components of semantic versioning)

A

主版本号(重大变更)、次版本号(小改进)、补丁号(修复)、可选的构建号/日期。(Major version (breaking changes), minor version (feature improvements), patch version (bug fixes), optional build/date.)

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

软件测试三大类型(Three main types of software testing)

A

功能测试(黑盒)、非功能测试(性能/安全等)、回归测试(检查改动是否影响原功能)。(Functional (black box), non-functional (performance, security, etc.), regression (check changes don’t break old features).)

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

软件测试的四个层级(Four levels of software testing)

A

单元测试、集成测试、系统测试、验收测试。(Unit test, integration test, system test, acceptance test.)

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

软件文档的两大类(Two types of software documentation)

A

产品文档(描述功能和特性)、流程文档(指导流程和操作)。(Product documentation (features), process documentation (procedures).)

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

常见软件工程团队角色(Common roles in a software engineering team)

A

项目经理/SM、利益相关者、架构师、UX设计师、开发者、测试/QA、SRE/运维、产品经理、技术文档撰写者。(Project manager/Scrum Master, stakeholder, architect, UX designer, developer, tester/QA, SRE/Ops, product manager, technical writer.)

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

前端开发三大技术(Three core technologies for front-end development)

A

HTML(结构)、CSS(样式)、JavaScript(交互)。(HTML (structure), CSS (style), JavaScript (interaction).)

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

常见JavaScript框架(Common JavaScript frameworks)

A

Angular、React.js、Vue.js。(Angular, React.js, Vue.js.)

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

后端常用语言/框架(Common backend languages/frameworks)

A

JavaScript(Node.js/Express)、Python(Django/Flask)。(JavaScript (Node.js/Express), Python (Django/Flask).)

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

API的作用(Purpose of API)

A

API用于前后端或系统间的数据读写,常用JSON或XML格式,拥有固定结构和规则。(APIs are used for reading/writing data between frontend and backend or between systems, often using JSON or XML format.)

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

什么是路由(Route)(What is a route?)

A

用户访问页面/网站的路径,接收输入并返回结果。(A route is the URL path a user visits; it receives input and returns results.)

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

端点(Endpoint)的定义(Definition of endpoint)

A

处理特定请求的API或路径。(An endpoint is an API or path that handles a specific request.)

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

常见协作编程方式(Common collaborative programming styles)

A

Pairing(Driver/Navigator)、Ping-Pong(TDD结合)、Strong Style(新手为Driver,经验者为Navigator)。(Pair programming (Driver/Navigator), Ping-Pong (with TDD), Strong Style (experienced navigator, novice driver).)

19
Q

Library与Framework区别(Difference between library and framework)

A

Library可按需调用、灵活,Framework决定项目结构和流程、控制反转(IoC)。(A library is called as needed and is flexible; a framework defines project structure/flow and inverts control (IoC).)

20
Q

CI/CD的作用(Purpose of CI/CD)

A

持续集成和持续部署,提高开发自动化效率,减少人为操作。(Continuous integration and deployment improves automation efficiency and reduces manual work.)

21
Q

什么是Package Manager(What is a package manager?)

A

包管理器如Homebrew、RubyGems等,用于统一安装、管理依赖包。(Tools like Homebrew or RubyGems for installing/managing dependencies.)

22
Q

软件技术栈三层结构(Three layers of a software technology stack)

A

展示层(前端)、业务逻辑层、数据层。(Presentation (frontend), business logic, and data layer.)

23
Q

编译型与解释型语言区别(Difference between compiled and interpreted languages)

A

编译型需先编译再运行,解释型可直接运行。Swift有REPL模式,Python自动编译但更偏解释型。(Compiled: code is built before running; interpreted: runs directly. Swift has REPL; Python is auto-compiled but acts interpreted.)

24
Q

程序的本质(Essence of a program)

A

程序=指令+数据,布尔逻辑和变量是基础。(Program = instructions + data; Boolean logic and variables are the foundation.)

25
常见控制结构(Common control structures)
分支:if/else/switch;循环:while/for/do-while。(Branching: if/else/switch; looping: while/for/do-while.)
26
什么是标识符(identifier)(What is an identifier?)
变量、常量、函数、类、方法等名称统称标识符。(Name for variables, constants, functions, classes, methods, etc.)
27
容器类型(container)(What is a container type?)
如array、vector,存储多个元素的数据结构。(Data structures like arrays or vectors that store multiple elements.)
28
模块化编程思想(Concept of modular programming)
通过function将代码拆解为多个模块化组件,每个完成特定任务。(Break code into functional modules, each handling a specific task.)
29
内建函数与自定义函数区别(Difference between built-in and user-defined functions)
内建函数由语言提供,自定义函数由开发者定义。(Built-in functions are provided by the language; user-defined are written by developers.)
30
OOP和面向过程编程最大区别(Main difference between OOP and procedural programming)
面向过程编程注重函数,OOP将数据和行为打包为对象。(Procedural: focuses on functions; OOP: packages data and behavior as objects.)
31
对象的状态和行为(Object's state and behavior)
属性(变量)描述状态,方法(函数)描述行为。(State: described by attributes; behavior: defined by methods.)
32
类与对象的关系(Relationship between class and object)
类是对象的蓝图/模板,对象是类的实例。(Class is the blueprint/template; object is an instance.)
33
软件架构的本质(Essence of software architecture)
软件架构本质是代码的组织方式(Organization)。(It’s how code is organized (organization).)
34
高内聚与低耦合(High cohesion & low coupling)
高内聚:相关功能组合在一起;低耦合:模块间依赖最小化。(High cohesion: related functions grouped; low coupling: minimal inter-module dependency.)
35
UML用途(Purpose of UML)
UML用于用可视化方式表达系统结构与行为,如类图、时序图、状态图。(UML visually describes system structure/behavior, e.g., class, sequence, and state diagrams.)
36
类与对象关系(Class-object relationship)
类是对象的蓝图,对象是类的实例。类可继承,形成层级关系。(Class is blueprint, object is instance; classes can inherit, forming hierarchies.)
37
组件和服务的区别(Difference between component and service)
服务是组件的特例,通常为唯一、持续运行的实例,组件可以组成服务。(Service is a special component, usually unique and always running; components can make up a service.)
38
架构模式(Architectural patterns)
如客户端-服务器、三层架构、点对点、事件驱动等。(Client-server, three-tier, peer-to-peer, event-driven, etc.)
39
分布式系统的优点(Benefits of distributed systems)
提升系统可扩展性和可用性,支持横向扩展。(Increases scalability, availability, and supports horizontal scaling.)
40
适合软件工程师的特质(Traits suitable for software engineers)
善于解决问题,具备分析型思维。(Good at problem-solving, analytical thinker.)
41
软件工程师的主要工作内容(Main responsibilities of software engineers)
业务逻辑开发和用户界面开发。(Business logic and UI development.)
42
senior和junior软件工程师的区别(Difference between senior and junior software engineers)
高级工程师能独立做好规划与设计,初级多参与具体开发实现。(Seniors plan/design independently; juniors mainly participate in implementation.)
43
软件工程师所需技能(Skills required for software engineers)
编程、架构设计、团队协作、持续学习等。(Coding, architecture, teamwork, continuous learning, etc.)
44
软件工程师就业前景(Job outlook for software engineers)
行业需求大,发展空间广阔,适合有技术兴趣者长期发展。(High demand, broad prospects; suitable for long-term technical careers.)