Software Engineering 软件工程 - Block 1 Day 1
仅作个人复习与学习交流使用
-
- 2.1. Software
- 2.1.1. Definition 定义
- 2.1.2. Components 组成
- 2.1.3. Types 类型
- 2.1.4. Application types 应用类型
- 2.1.5. Good software features
- 2.2. Software engineering
- 2.3. Software failure
- 2.4. Software issues 影响软件开发的问题
- 2.1. Software
1. Assessments 评分占比
5% Individual lab exercise + 30% Group-based project + 65% Final Examination
2. Day 1 - Introduction
2.1. Software
2.1.1. Definition 定义
- Software is a collection of programs and data that tell a computer how to perform specific tasks. 软件是告诉计算机如何执行特定任务的程序和数据的集合。
- In computer science and software engineering, computer software is all information processed by computer systems, programs and data. 计算机软件是由计算机系统、程序和数据处理的所有信息。
2.1.2. Components 组成
- 程序Programs
- 库Libraries(已写好,供调用的程序)
- 数据(不可执行)Data
- 文本text
- 媒体digital media
- 文档Documentation
- 系统文档
- 用户文档(使用手册)
- 要求(最小储存,最低CPU性能等)Requirements
- 设计模型Design Models
2.1.3. Types 类型
- System software 系统软件(与硬件交互)
- Operating systems操作系统: Windows. MacOS, Linux
- Device drivers设备驱动: USB driver, Printer driver
- Utilities实用软件:指最基础的系统工具软件,如文件管理器、磁盘管理器、任务管理器、防火墙软件等。
- …
- Application software 应用软件(与用户交互)
- Word processing: Ms Word
- Image processing: Photoshop
- Social network: WeChat
- …
2.1.4. Application types 应用类型
- By purpose/task 用途
- Productivity(IDE), Communication, Web Browsers, Media and Entertainment, Social Media, Utility, Education, Health and Fitness, Navigation, Finance, Travel, Weather, …
- By device it runs on 设备
- Desktop, Mobile, Web, Embedded Software, Server Software, Cloud Software, Embedded Systems Software, Gaming Software, VR&AR, IoT
- By architecture 架构
- Monolithic Applications
- Microservices Applications
- Client-Server Applications
- Service-Oriented Architecture (SOA)
- Event-Driven Architecture
- Serverless Applications
- Distributed Applications
- By how it is developed 开发方式
- Generic (off -the-shelf)通用
- Developed for a general market, common needs
- To be sold to a range of different customers
- Example : Microsoft Office, Adobe Photoshop
- Owned and controlled by the development organisation
- Custom (bespoke or tailor -made)定制
- Developed for a particular customer, for specific needs
- Examples : software used in banks, airlines, embedded systems
- Owned and controlled by the customer organisation
- More and more, software companies are starting with a generic system and customising it to the needs of a particular customer. 越来越多的软件公司从通用系统开始,并根据特定客户的需求对其进行定制。
- Generic (off -the-shelf)通用
2.1.5. Good software features
- Functionality: 功能齐全
- perform its intended functions
- Reliability: 可靠(结果准确,始终如一)
- consistently produces accurate results
- Usability: 可用,直观,界面友好
- intuitive and user-friendly UI.
- Scalability: 大小可变(处理增加的负载和需求)
- handle increased loads and user demands
- Performance: 表现出色
- responsive and performs tasks in a timely manner
- Security: 安全性
- protect against potential threats
- Maintainability: 可维护
- easy to maintain and update
- Compatibility: 兼容性
- compatible with various platforms, OS, and devices
- Flexibility: 适应性(适应不断变化的需求)
- adapt to changing requirements and business needs
- Documentation: 文档(清晰明了的文档)
- comprehensive and clear documentation
- Interoperability: 互操作性(与其它系统、应用无缝协作)
- work seamlessly with other systems or applications
- Error Handling: 错误处理(优雅地处理错误)
- handle errors gracefully
- Compliance: 合规(符合业界规范)
- adherence to industry standards, regulations, and best practices.
- Feedback Mechanism: 反馈机制(收集用户反馈,持续改进)
- gathering user feedback for continuous improvement
2.2. Software engineering
“An engineering discipline that is concerned with all aspects of software production.” 软件工程准则与软件开发的方方面面都有关。
Goal: develop high-quality software 目标/重点是开发高质量软件
Software engineering is a layered technology
- Commitment to quality 关注质量
- Process: foundation layer 过程:根基层面
- Methods: technical layer 方法:技术层面
- Tools: support layer 工具:支持层面
- Methods: technical layer 方法:技术层面
- Process: foundation layer 过程:根基层面
2.3. Software failure
- Large scale software development failure 大规模失败
- failed or seriously delayed 开发失败,严重超时
- fail to deliver full functionality within time and budget 无法在预算或预期内交付
- disasters 灾难
- Small scale software development failure 小规模失败(略)
- Cause of failure 失败原因
- Missing Focus丧失重点:不明确的目标,缺失商业关注重点
- Content Issues内容问题:变换要求,技术复杂
- Skill Issues技能问题:团队不和,技能不够
- Execution Issues执行问题:计划不现实,临时变动计划
2.4. Software issues 影响软件开发的问题
- Heterogeneity 异质性(不同系统、开发语言、开发环境)
- Business and social change 商业和社会变革(新业态、新技术)
- Security and trust 安全性
- Scale 规模(软件必须适应非常大的规模区间)