文章目录
- Overview
- Software process structure
- Agile development
- Human Aspects of software engineering
- Understanding requirements
- Requirement modeling
- Design concepts
- Design methods
- User interface design
- Software quality
- Testing strategy and techniques
- Security engineering & SCM
- Project managemetn concepts
- Process and project metrics
- Risk analysis
Overview
History of software technology
The raise of Software Engineering
The nature of software
what is software
include
- program
- document
- data structure
Tradition programing
software = algorithm + data structure
OO Programing
software = object + message
Component orient Programing
Software = component + architecture
Modern view
- instruction that when executed provide desired feature function and performance
- data structure that enable programs manipulate information
- documentation that describe the operation and use of the programs
The nature of software
Development
Hardware | Software |
---|---|
once built difficult to modify | routinely modify and upgraded |
more people allowing accomplish more work | doesn’t hold true in software engineering |
Concentrate in production | concentrate in design |
Deteriorate
different failure rate curve
custom built
Hardware | Software |
---|---|
Component base | Custom built |
typically employed many standardlized design component | continus to be custome built and may move to component based |
One deliver | Software as a service |
Complex
Cloud Computation
- Cloud computing provides distribute data storage and processing resource to networked computing device
- competing resources reside outside the cloud and have access to a variety of resources inside the cloud
- Cloud computing require developing an architecture containgin both frontednd and backend inside the cloud
- fronteend service include the client devicesand application software to allow access
- backend servide include servers, data storage, and server-resident application
- cloud architecture can be segmetnted to restrict access to private data
Concept of software engineering
Soft ware crisis & what happens
Software Process
A process degines who is doing what, when, and how to reach a certain goal.
Why we need software processes
Software lifecycle
Umbrella/Framework activities
- software project tracking and control
- risk management
- software quality assurance
- technicla rebiew
- measurement
- software configeration managemetn
- reusability management
- work product preparation and production
Software process structure
Process patterns
- describes a process-related problem that is encounted during software engineering work
- idetifying the environment in which the problem has been encountered
- suggests one or more proven solutions to the problems
Stage patterns
defines a problem associated with a frame work activity for the process
2. Task patterns
define a problem associating with a software engineering action or work task relevant to successful software practice
Phase pattern
define the sequenceof framework activities that occure with the process,even hte overall flow is iterative in nature
CMMI(Capability Maturity Model Integration)
- A proposed by the SEI(Software Engineering Institution)
- CMMI is a collection of best practices that meet the needs of organization in different areas of intrests
CMMI stages
- Initial
- Management
- Defined
- Quantitatively managed
- Optimized
Process Models
- process framework
- framework activity
-
- work task
- work products
- milestones and deliveriables
- QA checkpoints
- umbrella activities
prescriptive process model
The waterfall model& the V model
The waterfall model
Features
- 从上一项活动中接受该项活动的工作成果,作为输入
- 利用这一输入实施该项活动应完成的内容
- 给出该项活动的工作成果,作为输出传给下一项
- 对该项活动实施的工作进行评审,若其工作得到确认则继续进行下一项活动
Advantage
- 强调开发的阶段性
- 强调早起计划及需求调查
- 强调产品测试
Disadvantage
- 瀑布模型过于依赖早起进行的唯一一次需求调查,不能适应需求的变化
- 瀑布模型是单一流程,开发中的经验教训不能反馈应用与本产品的过程
The V model
The Evolutionary model
prototyping
Why
- business requirement often change
- tight market deadline, only allow a limited version
- only core requirement are defined
Prototype
软件原型是软件的最初版本,以最少的费用、最短的时间开发出的、反映最后软件特征的系统
Feature
- 是一个可实际运行的系统
- 没有固定的生存期,可能被扔掉或作为最终产品的一部分
- 从需求分析到最终产品都可作为原型,即可为不同目标作原型
- 必须是快速、廉价
- 他是迭代过程的集成部分,即每次经用户评价后修改、运行,不断重复双方认可
Catagory
- 探索性:其目的是要弄清系统的要求,确定所希望的特性,并探讨多种方案的可行性
- 实验型:其目的是验证方案或算法的合理性,它是在大规模开发和实现前,用于考核方案是否合适,规格说明是否可靠
- 演化性其目的是将原型作为目标系统的一部分,通过对原型的多次改进,逐步将原型演化成最终的目标系统、
advantage
- 一开始就能弄清楚所有产品的需求,或者至少可以帮助应导出高质量的产品需求。
- 可在项目早期就获取项目的相关数据,尽早进行项目的风险管理和配置管理
- 心理上:开发人员早日见到产品的雏形,是一种鼓舞
- 使用户在新的一批功能开发测试后,立即参加验证,以提供非常有价值的反馈
- 可使销售工作可能提前进行,因为可以在产品开发的中后期取得包含了主要功能的产品原型向客户展示和使用
disadvantage
- 若缺乏管理的话,这个生命周期模型很可能退化成”试-错-改“的循环模式
- 心理上,可能产生一种影响尽最大努力的想法,认为可能不能完成全部功能,但还是造出了有部分功能的产品。
- 如果不加控制地让用户接触开发中尚未测试稳定的功能,很可能对开发人和用户造成负面影响
The spiral
- Using the spiral model, software is developed in a series of evolutionary releaes
- the early release might be a paper model or a protortype
- the latter release can be more complete version
- unlike other model that end when software is delivered, the spiral model can be adapted to apply throughout the life of the software
- 在螺旋模型中,维护只是螺旋模型的另一个周期,在维护和开发之间并没有本质上的区别,从而解决做太多测试和未做足够测试所带来的风险
advantage
- 强调严格的全过程风险管理
- 强调各阶段开发质量
- 提供机会检讨项目是否有价值继续下去
disadvantage
- 必须映入非常严格的风险识别,风险分析和风险控制
- 对风险管理技能水平高要求
- 需要大量的人员、资金、时间投入
diagram
Concurrent
diagram
features
- Concurrent development model (Concurrent Engineering)
- It defines a series of events that will trigger transitions from state to state for each of the software engineering activities, actions, or tasks.
features
- modern computer software is characterized by continual change, by very tight timelines, and by an emphatic need for customer/use satisfaction
- the intend of evolutionary models is to develop high-quality software in an interactive or incremental manner
- it’s possible to use an evolutionary process to emphasis flexibility, extensibility, and speed of development
The increment models
1. definition
- 增量模型又称产品改进模型
- 从给定需求开始,通过构造一系列中间版本来实施开发活动,依次类推,直到系统完成。
- 每一个中间版本都是需求分析、设计、编码和测试的过程。
- 某些中间版本的开发可以并行进行。
diagram
features
- 融合了线性顺序模型的基本成分和原型的迭代特征。
- 是随着日程时间的进展而交错的线性序列。
- 与原型不一样的地方是强调每个增量均发布一个可操作产品。
- 最典型的应用是同一个产品的不同项目(合同、用户)版本
advantage(适用于)
- 需求经常变化的软件开发
- 市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发
- 增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术
Other process Models
catagory
- Component based development—the process to apply when reuse is a development objective
- Formal methods—emphasizes the mathematical specification of requirements
- AOSD—provides a process and methodological approach for defining, specifying, designing, and constructing aspects
- The Unified Process (UP)
The unified Process
process
- 初始阶段(Inception)为系统建立业务案例并确定项目的边界。
- 细化阶段(Elaboration)分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
- 构造阶段(Construction)所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。
- 交付阶段(Transition)确保软件对最终用户是可用的。
diagram
Agile development
Manifesto for agile software development
values
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agility and the cost of change
An agile process
- Is driven by customer descriptions of what is required (scenarios)
- Recognizes that plans are short-lived
- Develops software iteratively with a heavy emphasis on construction activities
- Delivers multiple ‘software increments’
- Adapts as changes occur
Agility priciples
- 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 可工作的软件是进度的首要度量标准。
- 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 以简洁为本,它是极力减少不必要工作量的艺术。
- 最好的架构、需求和设计出自自组织团队。
- 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
Extreme programming/Scrum?Kanbam
Extreme programming
main activities
- XP planning
- XP design
- XP coding
- XP testing
diagram
Extreme planning
- Begins with the creation of user stories
- Agile team assesses each story and assigns a cost
- Stories are grouped to for a deliverable increment
- A commitment is made on delivery date
- After the first increment project velocity (速度) is used to help define subsequent delivery dates for other increments
Extreme Design
- Follows the KIS principle(Keep It Simple)
- Encourage the use of CRC cards
- For difficult design problems, suggests the creation of spike solutions — a design prototype
- Encourages refactoring — an iterative refinement of the internal program design
extreme coding
- Recommends the construction of a unit test for a story before coding commences (测试驱动编程)
- Encourages pair programming(结对编程)
extreme testing
- All unit tests are executed daily(强调Daily Building,冒烟测试)
- Acceptance tests are defined by the customer and executed to assess customer visible functionality(强调验收测试,回归测试)
Scrum
distinguishing features
- Development work is partitioned into “packets”
- Testing and documentation are on-going as the product is constructed
- Work occurs in “sprints” and is derived from a “backlog” of existing requirements
- Meetings are very short and sometimes conducted without chairs
- “demos” are delivered to the customer with the time-box allocated
diagram
团队模型
Scrum Master
- 保证Scrum团队可以遵守;Scrum的价值,实践和规范
- 帮助Scrum团队和组织采用Scrum模式进行项目流程组织;
- 指导并带领团队变得更加高效,实现更高质量;
- 保护团队不要受到外界因素的干扰;
- 保证各个不同角色之间的良好写作,消除障碍;
- 帮助PO更好地利用团队的能力;
- 不要管理团队。
Product Owner
- PO 是一个人并只能由一个人来担任;
- 负责管理产品待办事项表(Product Backlog)并保证其对于客户和团队保持透明度;
- 对产品代办事项表进行优先级排序;
- 与团队一起来进行工作量估算;
- 对于项目的成功负责并保证投资回报率 (ROI)。
团队
- 最佳团队大小:5-9 人;
- 多功能团队:程序员,测试人员,设计师,数据库管理员和架构师;
- 保证团队成员全职参与开发
- 自我管理,没有头衔之分,不组建子团队;
- 成员更替只能在迭代之间进行,最佳方式是在发布之间进行。
Scrum 三种工件
产品Backlog
- 产品需求变动的唯一来源
- 动态,永不完整, 持续更新
- 有序,排序越高越清晰具体; 排序越低, 细节越少
- 每个产品一个, 与团队数量无关
- 产品负责人负责管理其内容, 可用性和排序
Sprint Backlog
- 包含产品待办事项列表中当前 Sprint 的子集
- 包含完成 Sprint 目标所需的任务细节
- 开发团队可视情况增加或移除任务
产品增量
- 当前 Sprint 完成的产品待办事项列表, 以及之前所产生增量的总和
- 必须达到"完成"的标准
- 无论是否发布, 必须是可用的
Scrum 过程模型 (5个活动+1个合约)
kanbam
基于产品研发等不同视角的价值流,看板可以划分为多层视图,更好的管理产品的价值的流动。
category
- 产品级看板:基于产品视角看到的研发价值流,这是每个项目开展精益看板时,首先要分析和建立的看板系统。管理产品特性的流动。
- 团队级看板:基于设计团队、开发团队、SIT测试团队的价值流视图,这是团队开展和改进的视图。精细化管理需求在设计阶段、Story开发、需求测试的流动。
Human Aspects of software engineering
no important
Understanding requirements
System engineering
- 通过处理信息来完成某些预定义目标而组织在一起的元素的组合
- 对于用户而言有意义的事可以达到预期目标的系统而不是单一的软件
- 组成基于计算机的系统有:软件、硬件、人员、数据库、文档、规程
Requirements engineering
Process
Inception
Definition
A set of question that establish
- basic understanding of problem
- the people who want a solution
- the nature of the solution that is design
- the effectness of preliminary communication and collaboration between the customer and the developer
process
- identify stakeholder
-
recognize multiple point of view
-
work toward collaboraton
-
the first question
- who is behind tehe request for this work
- who will use the solutiohn
- what will be the economic benefit of successful solution
- is there any sorce for the solutrion tath you need
Elicitation
definition
elicit requirement from all skaeholder
priniciple
- meeting are coducted and attended by both software engineering and customer
- rules for preparation and participatation are established
- an agenda is suggested
- a facilitator controlsthe meeting
- a “definition mechanism” (can be work sheets, flip charts, or wall stckers or an electronic bulletin board,caht room or virtual forum) is used
The goal
- to identify the problem
- propose elements of the solution
- negotiate different approaches
- apecify a preliminaryu set of solution requirement
work products
- a statement of need adn feasibility
- a bounded statement of scope for the system or the product
- a list of customers, users, adn other stakeholders who participated in requirement elicitation
- a desvription of the system’s technical environment
- a list of requirement adn the domain constains taht apply to each
- an prototype developed to better define requirements
Elaboration
creat a analysis model that identifies data, function and behavioral requirement
Negotiation
definition
agree on a feliverable system that is realistic for developer and customer
process
- identify the key stakeholder: theser are the prople who will be involved in the negotiation
- determine each of the stakeholders “win condition”: win condition are not always obvious
- negotiate: work toward a set of requirements taht lead to “win-win”
Specification
definition
can be any one of the followering
- a written document
- a set of models
- a formal mathematical
- a collection of user scenarios
- a prototype
relation
content
- 引言:陈述目标软件,在基于计算机的系统语境内进行描述
- 信息描述:给出软件必须解决问题的详细描述,记录信息内容和关系、流、结构
- 行为描述:描述作为外部事件和内部产生的控制特征的软件操作
- 检验标准:描述检验系统成功的标志。即对系统进行什么样的测试,测到什么样的结果,就表示系统已经成功实现了,他是“确认测试”的基础。
- 参考书目:包含了对所有和该软件相关的文档的引用,其中包括其他的软件工程文档、技术参考文献、厂商文献及标准
- 附录:包含了规约的补充信息,表格数据,算法的详细描述,图表以及其他材料
Validation
definition
a review mechanism that look for
- errors in content or interpretation
- areas where clarification may be required
- missing information
- inconsistencies
- Conflicting or unrealistic requirement
process
- is each requirement sonsistent with the overall objective for the system/product
- have all requiremtnt been specified at the proper level of abstraction? that is , do some requirements provide a level technical detail taht is inappropriate at this stage
- is the requiremetn really necessary or does it represent an add-on feature that may not be essential to the objective of teh system
- is each requirement bounded and unambiguous
- does each requirement have attibution: taht is, is a source noted for each requirement
- do any requirement conflict with other requirement
- is wach requirement achieveable in the technical rnvironment that will house the system or product
- is each requirement testable, once implemented
- does the requirements model proprely reflect the information, funciton and behavior of the system to be built
- has the requirements model been “partitioned” in a way that exposes progressively more detailed information about the system
- have requirement patterns been used to simmplify teh requiremens model. habe all patterns been properly balidated: are all patterns consistent withe customer requirement
Requirement management
requiremetn monition
- distributed debugged: uncover errors and determines their cause
- run-time verfication: determines whether software meets user goal
- runtime validation: assesses whether evolving software meets their goal
- business activity monitoring: evaluate wheterh a system satisfies goals
- evolution and co-design: provide information to stakeholders as the system evolves
Non-functional requirements
Diagrams
Requirement modeling
Domain Analysis
目标
- 描述客户需要什么
- 为软件设计奠定基础
- 定义在软件完成后可以被确认的一组需求
Scenario-based modeling
use case
- scenario that describe a “thread of usage” for a system
- actors represent roles perple or devices play as teh system function
- users can play a number of different roles for a given scenario
activity diagram even swimming lane diagrams
Class-based modeling
Content
nouns and verbs
- classes are determined by noun or nouns phrase
Menifestation of analysis classes
- external entities
- things
- occurences or events
- roles
- organization units
- places
- structures
potentcial classes
- retaineed information
- needed serbices
- multiple attribure
- common attribute
- common operations
- essential requirements
attriburtes and operation
attribute
attribure describe a class that has been selected for inclusion in the analysis model
operation
source
- do a grammatical parse of a processing narrative and look at the verbs
catagory
- manipulate data
- perform a computation
- inquire about the state of an object
- monitor an object for the occurence of controlling event
Class Responsibility Collaborator(CRC) models
usage
provides a simple means for identifying and organizing the classes that are relevant to system or production requirements
modeling
- A CRC model is really a collection of standard index cards that represent classes
- the cards are divided into three sections: class name, responsibility, collaborator
example
Behavioral modeling
mainly include state diagram and sequence diagram
Design concepts
design and qauality
goal
- teh design must implement all of the explicit requirement
- the design mustt be readable, understandable guide
- the design should provide a complete picture of software
quality guide line
- design should exhibit an architecture that
- has been created using recognizable architectureal styles or patterns
- is composed of components that exhibit good design characteristics
- can be implement in an evolutionary fashion
- A desin should be modular
- a design should contain distinct representation
- a design should lead to data structure that are appropriate for the classes to be implemented and are drawn from recognizable data patterns
- a design should lead to components that exhibit independent functional characteristics
- a design should lead to interfaces that reduce the complexity of connections between components and with the external ecvironment
- a design should be derived using a repeatable method that is derived by information obrtained during software requirements analysis
- a design should be represented usingt a notation that effectively communicated its meaning
design principle
lazy
Fundamental concept
- abstraction: data procedure, control
- architecture: the overall structure of the software
- patterns: convey the essence of a proven design solution
- separation of concerns: any complex problem can be more easily
- modularity: compartmentalization of data and function
- hiding: controlled interfaces
- functional independence: single minded function and low coupling
- refinement: elaboration of detail for all abstraction
- aspects: a mechanism for understanding how global requirements affect design
- refactoring: a reorganization technique that simplifies the desin
- OO desing concepts:
- desing classes: provide design detail that will enable analysis classes to be implemented
design model
OO Concepts
design classes
- entity classes : refined from analysis class
- boundary classes: developed during desing to create the interface
- controller classes:are desing to manage
- the creation or update of entity objects
- the instantiation of boundary objects as they obtain information from entity objects
- complex communication between set of objects
- validation of data communicated between objects or between the user adn teh appplication
inheritance
all responsibilities of a superclass is immediately inherited by all subclasses
Messages
stimulate some behavior to occur in the receiving object
Polumorphism
a characteristic that greatly reduces the effort required to extend the design
Design methods
Architecture Design
What is architecture
the software architecrure of a program or comprting system is the sruucture or structures of teh system, which comprise the software components, teh externally visible properties of those components, and the relationships among them
Architecture style
Encompass
- a set of components that perform a funciton required by a ssytem
- a set of connector that enablecommunication coordination and cooperation among components
- constraints that define how components can be integrated to form the system
- semantic models that enable a desiner to understand teh overall properties of a system by analyzing the known properties of its constituent parts
catagory
- data-centered ar5chitectures
- data flow architecture
- call and return architecture
- object oriented architecture
- layered architecture
Architecture design
- the software myst be placed into context
- a set of architectureal archetypes should be identified
- the designer specifies the structure of the system by defining and refining software
Agility and architecture
- to avoid rework, user stories are used to create and evolve an architecrural model before coding
- hubrid models which alow sogtware arhchitects contributing users stories to the evolving storyboard
- well run agil projects include delivery of work products during each spring
- review code emerging from the sprint can be a useful form of architecrural review
Component level design
What is a component
- OO view: a set of collaborating classes
- process logic, the internal data structure and an interface
Basic design pricinple
The open-closed principle
open for extension and clossed for modification
The Liskov subsititution principle
subclasses should be substitudable for their base classes
Dependency inversion principle
depend on abastaction rather than concretion
The interface segregation principle
many client-specific interfaces are better than one general purpose interface
Cohesion and Coupling
Cohesion
definition
cohesion implies that a component or class encapsulate only attribures and operations that are closely related to one another and to the class or component itself
level of cohesion
- functional
- layer
- communicational
- sequential
- procedural
- temporal
- utility
Coupling
definition
a qualitative measure of the degree to which classes are conneted to one another
level of coupling
- content
- common
- control
- stamp
- data
- routine call
- type use
- inclusion or import
- external
Component-based software engineering
principle
- a library of components must be avaialbe
- components should hava a consistent structure
activity
- component qualification
- component adaptation
- component composition
- componoent update
User interface design
Golden rules for UI design
User intgerface design process
interface analysis
Design evaluation cycle
Software quality
What is quality
- an effective sotwware process applie in a manner that cteates a userful product that provides measurable valuse for those who produce it and those who use it
McCall’s triangle of quality
The cost of quality
Achieving software quality
achieving
- sotware quality is the result of good project management and solid engineering practice
- to build high quality software you must understand the proble to be solved and be capable of creating a quality design the conforms to the problem requirement
- eliminating architectural flaws during desing can improve quality
assurance
- project management: project plan includes explicit techniques for quality and change management
- quality control: series of inspections, reviews, and tests used to ensure conformance fo a work product ro its specification
- quality assurance: consists of the auditing and reporting procedures used to provide management with data needed to make proactive decisions
Testing strategy and techniques
Testing concepts
- verification: refer to the set of tasks that ensure thath software correctly implements a specific function
- validation: refer to a different set fof tasks that ensure that the software that has been built is traceable to customer reuqirement
V model and V&V
the v model
the v&v model
Testing Strategies
diagram
strategy
conventional software
- teh module is our initial focus
- integration of modules follows
for oo software
our focus when “testing in small” changes form an individual module to an OO class that encompass attributes and operations and implies commnunication and collaboration
time line
Testing techniques
testing steps
- before developing a test, we should identifu the foals of the test
- decide how to carry out a relevant test. We have to decide which test is teh most suitable and what sort of test items need to be used
- develop teh test case
- determine the expected results of the test
- execute the test cases
- ccompare teh test results to the expected result
driver
provide
- setting input parameters, and the environment
- executing the unit
- reading the output parameters
typical behavior
- suply a constant input or a random input
- supply a ‘canned’ input
- record interim results and traces
stub
provide
- the unit under test may depend on another component that may not have been completed yet or would introduce undesirable into the test. Stub simulate part of the program called by the unit
typical behavior
-
exit immediately
-
return a constant ouput or a random output
-
return a value from the user
-
print ‘module x entered’
bottom-up strategy
sandwich testing
regression testing
re-execution of some subset fo tests that have already been conducted to ensure that changes have not propagated unintended side effects
smoke testing
a common aproach for creating “daily builds” for product software
OO testing strategy
- operation within the class are tested
- the state behaviro of teh calss is examined
- thread-base testing
- use-based testing
- cluster testing
Security engineering & SCM
Why security engineering
- security is a perquisite to system integrity, availability, reliablity and safety
- security provides teh mechanism that enable a system to protect its assets from attack
- assets are system resources that have value to its stakeholders
- attacks take advatage of bulnerability that allow unauthorized system access
- it is different to make a system more secure by responding to buging reports, security must be designed in from the beginning testing appropriate
SCM concepts
Baselines
definition
a specification or product that has been formaly reviewed and agreed upon, that thereafter serves as teh vbasis for futher development, and that can be changed only through formal change control procedures
SCI
SCM process
diagram
Project managemetn concepts
4P
- people: the most important element of a sucessful project
- product: teh software to be beilt
- process:teh set fo framework activities and software engineering tasks to get tehjob done
- project: all work required to make teh product a reality
W 5 H H W^5HH W5HH
- why is teh system being developed
- what will be done
- when will it be accomplished
- who is responsible
- where are they organizationlly located
- how will teh job be done technically and managerially
- how much of each resurce will be needed
Process and project metrics
Why do we measure
- assess teh status of an ongoing project
- track potential risks
- uncober problem areas beform they go critial
- adjust work flow or tasks
- evaluate the project team’s ability to control quality of software work products
Process measurement and metrics
measurement
- outcome
process metrics
- quality related
- productivity-related
- statistical SQA data
- defect remocal efficiency
- reuse data
Project metrics
- input:measures of teh resources required to do the work
- output: meawsures of teh deliverable or work prodducts ctreated during teh softwre engineering proceess
- results: measures that inducated teh effectiveness of the deliverable
typical of metrics
- error per unit
- defect per unit
- pages of document per unit
- errors per person-month
- errors per review person-month
Project estimation & Scheduling
Scope
definition
scopes refer to all teh work involved in creating teh products of the project and teh processes used to cteated them
describe
the software socpe describes
- the funcitons adn features that are to be delivered to end-users
- the data that are intput adn output
- the “content” that is presented to users as a consequence of using teh software
- teh performance, constrains, interface, and reliablity that bound the system
mian techniques
- a narrative description of software socpe is developed ager commnucation with all stakeholders
- A set of use-case is developed by end-user
Work Breakdown Structure (WBS)
definition
a work breakdown structure is a deliverabl-oriented grouping of the work involved im a project that defines teh total scope of the project
int provides the basis for
- planning and managing project schedules, costs, and changes
- risk analysis
- organizaitonal structure
- measurement
Line Of Code(LOC)
advantage
- simple to measure
- easy to automate
disadvantage
- only defined for code, not teh design
- bad desing may cause excessive LOC
- Language dependent
- Does not account for functionality or complexity
Function Point (FP)
advantage
- usable in teh earliest requirements phases
- independent of programming language, product desing, or development style
- user’s view rather than miplementation view
- can be used to measure thenon-coding activities
- There exists a large body of historical data
- a well documented method
disadvantage
- cannot directly count an existing product’s FP content
- Hard to automate
- FP do not reflect language, desing, or style differences
- FP are desinged for estimating commercial data processing applications
- subjective counting
Constuctive Cost Modeling (COCOMO) estimation
use experience to estimate
Scheduling steps
- defining task sets
- sequencing activities
- drawing project network diagrams
- crutical path analysis
- using Gantt chats for scheduling
- shcedule tracking
Task network
Gantt charts
Milestone
you know what is milstome right?
Risk analysis
Project risk
catagory
- Project risk
- technical risk
- business risk
- marketing risk
- strtegic risk
- management risk
- budget risk
Reactive Risk Management
- mitigation: plan for additional resources in anticipation of fire fighting
- fix on failure: resource are found and applied when the risk strikes
- crisis management: failure does not respond to applied resources and project is in jeopardy
Proacctive risk management
- formal risk analyssi is performed
- organization correct the root cause of risk
- TQM concepts and statistical SQA
- examining risk sources that lie beyond the bounds of the software
- developing the skill to manage change