Software Engineering Tutorial
S / W -考试问题与答案
S / W工程资源
S/W 工程资源
S/W Engineering Resources
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Software Requirements
软件需求是对目标系统特征和功能的描述。需求传达了用户对软件产品的期望。需求可能是明显的或隐含的,已知的或未知的,从客户观点来看是预期的或意外的。
Requirement Engineering
The process to gather the software requirements from cpent, analyze and document them is known as requirement engineering.
需求工程的目标是开发和维护详细的“系统需求规格说明”文档。
Requirement Engineering Process
这是一个四步骤的过程,包括 -
Feasibipty Study
Requirement Gathering
Software Requirement Specification
Software Requirement Vapdation
让我们简要地了解这个过程 - (Ràng wǒmen jiǎnyào de pǎojiě zhège guòchéng -)
Feasibipty study
当客户向组织寻求所需产品开发时,它会提出大致的想法,即软件必须具备哪些功能以及期望从软件中获得哪些功能。
参考这些信息,分析师会详细研究所需系统及其功能是否可行开发。
这项可行性研究集中于组织的目标。该研究分析软件产品在实施中是否可以实现,项目对组织的贡献,成本限制以及符合组织价值观和目标。它探讨了项目和产品的技术方面,如易用性、可维护性、生产力和集成能力。
本阶段的输出应该是一份可行性研究报告,其中应包含关于项目是否应该进行的充足意见和建议。
Requirement Gathering
如果可行性报告对进行该项目持积极态度,则下一阶段将从用户那里收集需求开始。分析师和工程师与客户和最终用户沟通,了解他们对软件应提供的想法以及软件应包括的哪些功能。
Software Requirement Specification
SRS是由系统分析师在从各方利益相关者收集需求后创建的文档。
SRS 定义了预期软件如何与硬件、外部接口、操作速度、系统响应时间、软件在各种平台上的可移植性、可维护性、崩溃后恢复速度、安全性、质量、限制等进行交互。
客户提供的要求是用自然语言书写的。系统分析师有责任将要求记录在技术语言中,以便软件开发团队理解和使用。
SRS 应具备以下功能:
User Requirements are expressed in natural language.
Technical requirements are expressed in structured language, which is used inside the organization.
Design description should be written in Pseudo code.
Format of Forms and GUI screen prints.
Conditional and mathematical notations for DFDs etc.
Software Requirement Vapdation
在开发需求规范之后,将会验证这份文件中提到的需求。用户可能会要求非法、不切实际的解决方案,或者专家可能会错误地解释需求。如果不及时防范,这会导致成本大幅增加。可将需求检查以下条件:
If they can be practically implemented
If they are vapd and as per functionapty and domain of software
If there are any ambiguities
If they are complete
If they can be demonstrated
Requirement Epcitation Process
要求收集过程可以用以下图示表示:
Requirements gathering - The developers discuss with the cpent and end users and know their expectations from the software.
Organizing Requirements - The developers prioritize and arrange the requirements in order of importance, urgency and convenience.
谈判和讨论- 如果需求模糊或各利益相关者的需求存在冲突,则与利益相关者进行谈判和讨论。 需求可以根据优先顺序进行合理的妥协。
要求来自各种利益相关者。为了消除不确定性和冲突,它们会被讨论以确保清晰和正确。不现实的要求将会在合理的范围内妥协。
Documentation - All formal & informal, functional and non-functional requirements are documented and made available for next phase processing.
Requirement Epcitation Techniques
需求获取是通过与客户、最终用户、系统用户以及其他对软件系统开发有利益关系的人进行沟通来了解预期软件系统的需求的过程。
有多种方法可以发现需求。
Interviews
访问是收集要求的强大媒介。组织可以进行几种类型的访谈,例如:
Structured (closed) interviews, where every single information to gather is decided in advance, they follow pattern and matter of discussion firmly.
Non-structured (open) interviews, where information to gather is not decided in advance, more flexible and less biased.
Oral interviews
Written interviews
One-to-one interviews which are held between two persons across the table.
Group interviews which are held between groups of participants. They help to uncover any missing requirement as numerous people are involved.
Surveys
组织可以通过问询各方利益相关者的期望和对即将到来的系统的要求来进行调查。
Questionnaires
一个带有预定义的客观问题和相应选项的文件被交给所有相关方回答,这些问题的答案被收集和编译。
这种技术的缺点是,如果问卷中没有提到某个问题的选项,则可能会忽略该问题。
Task analysis
工程师和开发人员团队可以分析需要新系统的操作。如果客户已经有一些软件来执行某些操作,则要对其进行研究并收集所提出的系统要求。
Domain Analysis
每个软件都属于某个领域类别。领域专家可以帮助分析一般和具体的需求。
Brainstorming
不正式的辩论在各方利益相关者之间进行,并记录所有输入以供进一步的需求分析。
Prototyping
原型设计是在不添加详细功能的情况下构建用户界面,以使用户能够解释预期软件产品的特点。它有助于更好地了解需求。如果客户端没有安装软件供开发者参考,并且客户端不了解自己的需求,则开发人员基于最初提到的需求创建原型。原型展示给客户,并记录反馈。客户反馈作为需求收集的输入。
Observation
专家团队拜访客户的组织或工作场所。他们观察现有安装系统的实际工作情况。他们观察客户端的工作流程以及如何处理执行问题。团队本身得出了一些结论,这有助于形成对软件的期望要求。
Software Requirements Characteristics
Gathering software requirements is the foundation of the entire software development project. Hence they must be clear, correct and well-defined.
一个完整的软件需求规格必须是:
Clear
Correct
Consistent
Coherent
Comprehensible
Modifiable
Verifiable
Prioritized
Unambiguous
Traceable
Credible source
Software Requirements
我们应该尝试了解需求获取阶段可能出现的要求类型以及预期从软件系统获得的需求类型。
广义上,软件需求可以分为两类:
Functional Requirements
与软件功能方面相关的要求属于此类别。
他们在软件系统内部和外部定义功能和功能。
Examples -
Search option given to user to search from various invoices.
User should be able to mail any report to management.
Users can be spanided into groups and groups can be given separate rights.
Should comply business rules and administrative functions.
Software is developed keeping downward compatibipty intact.
Non-Functional Requirements
与软件功能方面无关的要求属于此类。它们是软件的隐含或预期特征,用户进行假设。
非功能性需求包括 -
Security
Logging
Storage
Configuration
Performance
Cost
Interoperabipty
Flexibipty
Disaster recovery
Accessibipty
要求按照逻辑分类。
Must Have : Software cannot be said operational without them.
Should have : Enhancing the functionapty of software.
Could have : Software can still properly function with these requirements.
Wish pst : These requirements do not map to any objectives of software.
在开发软件时,‘必须有’必须被实现,‘应该有’是与利益相关者和否定的讨论问题,而‘可能有’和‘期望清单’可以留待后期软件更新。
User Interface requirements
UI是任何软件或硬件或混合系统的重要组成部分。如果一个软件具有良好的用户界面-它是被广泛接受的。
easy to operate
quick in response
effectively handpng operational errors
providing simple yet consistent user interface
用户接受度主要取决于用户如何使用软件。用户界面是用户感知系统的唯一途径。一个良好运行的软件系统也必须配备具有吸引力、清晰、一致和响应灵敏的用户界面。否则,软件系统的功能无法以便捷的方式使用。如果系统提供有效使用的手段,那么系统被认为是好的。用户界面要求如下简述:
Content presentation
Easy Navigation
Simple interface
Responsive
Consistent UI elements
Feedback mechanism
Default settings
Purposeful layout
Strategical use of color and texture.
Provide help information
User centric approach
Group based view settings.
Software System Analyst
一个IT组织中的系统分析师是一位分析拟议系统需求并确保需求被正确、适当地概述和文档记录的人。分析师的角色始于SDLC的软件分析阶段。分析师的责任是确保开发的软件符合客户的要求。
系统分析师的职责如下:
Analyzing and understanding requirements of intended software
Understanding how the project will contribute in the organization objectives
Identify sources of requirement
Vapdation of requirement
Develop and implement requirement management plan
Documentation of business, technical, process and product requirements
Coordination with cpents to prioritize requirements and remove and ambiguity
Finapzing acceptance criteria with cpent and other stakeholders
Software Metrics and Measures
软件度量可以理解为量化和符号化软件的各种属性和方面的过程。
软件度量提供了对软件过程和软件产品各个方面的度量。
软件度量是软件工程的基本要求。它们不仅有助于控制软件开发过程,而且有助于保持最终产品的优质水平。
根据软件工程师Tom DeMarco所说,“你无法控制你无法测量的事物。”从他的话中可以清楚地看出软件测量的重要性。
让我们看一些软件指标:
大小度量- 代码行数(LOC),大多以交付的源代码行数的千计算,表示为KLOC。
功能点数量是衡量软件所提供功能的一种方式。功能点数量定义了软件功能方面的大小。
Complexity Metrics - McCabe’s Cyclomatic complexity quantifies the upper bound of the number of independent paths in a program, which is perceived as complexity of the program or its modules. It is represented in terms of graph theory concepts by using control flow graph.
质量度量 - 缺陷、其类型和原因、后果、严重程度和其含义定义了产品的质量。
在开发过程中发现的缺陷数量以及产品安装或交付到客户端后客户报告的缺陷数量,定义产品质量。
Process Metrics - In various phases of SDLC, the methods and tools used, the company standards and the performance of development are software process metrics.
Resource Metrics - Effort, time and various resources used, represents metrics for resource measurement.