文章目录
OverviewHistory of software technologyThe raise of Software EngineeringThe nature of softwarewhat is softwareincludeTradition programingOO ProgramingComponent orient ProgramingModern viewThe nature of softwareDevelopmentDeterioratecustom builtComplexCloud ComputationConcept of software engineeringSoft ware crisis & what happensSoftware ProcessWhy we need software processesSoftware lifecycleUmbrella/Framework activitiesSoftware process structureProcess patternsStage patterns2. Task patternsPhase patternCMMI(Capability Maturity Model Integration)CMMI stagesProcess Modelsprescriptive process modelThe waterfall model& the V modelThe waterfall modelFeaturesAdvantageDisadvantageThe V modelThe Evolutionary modelprototypingWhyPrototypeFeatureCatagoryadvantagedisadvantageThe spiraladvantagedisadvantagediagramConcurrentdiagramfeaturesfeaturesThe increment models1. definitiondiagramfeaturesadvantage(适用于)Other process ModelscatagoryThe unified ProcessprocessdiagramAgile developmentManifesto for agile software developmentvaluesAgility and the cost of changeAn agile processAgility priciplesExtreme programming/Scrum?KanbamExtreme programmingmain activitiesdiagramExtreme planningExtreme Designextreme codingextreme testingScrumdistinguishing featuresdiagram团队模型Scrum MasterProduct Owner团队Scrum 三种工件产品BacklogSprint Backlog产品增量Scrum 过程模型 (5个活动+1个合约)kanbamcategoryHuman Aspects of software engineeringUnderstanding requirementsSystem engineeringRequirements engineeringProcessInceptionDefinitionprocessElicitationdefinitionprinicipleThe goalwork productsElaborationNegotiationdefinitionprocessSpecificationdefinitionrelationcontentValidationdefinitionprocessRequirement managementrequiremetn monitionNon-functional requirementsDiagramsRequirement modelingDomain Analysis目标Scenario-based modelinguse caseactivity diagram even swimming lane diagramsClass-based modelingContentnouns and verbsMenifestation of analysis classespotentcial classesattriburtes and operationattributeoperationsourcecatagoryClass Responsibility Collaborator(CRC) modelsusagemodelingexampleBehavioral modelingDesign conceptsdesign and qaualitygoalquality guide linedesign principleFundamental conceptdesign modelOO Conceptsdesign classesinheritanceMessagesPolumorphismDesign methodsArchitecture DesignWhat is architectureArchitecture styleEncompasscatagoryArchitecture designAgility and architectureComponent level designWhat is a componentBasic design pricinpleThe open-closed principleThe Liskov subsititution principleDependency inversion principleThe interface segregation principleCohesion and CouplingCohesiondefinitionlevel of cohesionCouplingdefinitionlevel of couplingComponent-based software engineeringprincipleactivityUser interface designGolden rules for UI designUser intgerface design processinterface analysisDesign evaluation cycleSoftware qualityWhat is qualityMcCall’s triangle of qualityThe cost of qualityAchieving software qualityachievingassuranceTesting strategy and techniquesTesting conceptsV model and V&Vthe v modelthe v&v modelTesting Strategiesdiagramstrategyconventional softwarefor oo softwaretime lineTesting techniquestesting stepsdriverprovidetypical behaviorstubprovidetypical behaviorbottom-up strategysandwich testingregression testingsmoke testingOO testing strategySecurity engineering & SCMWhy security engineeringSCM conceptsBaselinesdefinitionSCISCM processdiagramProject managemetn concepts4PW5HHW^5HHW5HHProcess and project metricsWhy do we measureProcess measurement and metricsmeasurementprocess metricsProject metricstypical of metricsProject estimation & SchedulingScopedefinitiondescribemian techniquesWork Breakdown Structure (WBS)definitionint provides the basis forLine Of Code(LOC)advantagedisadvantageFunction Point (FP)advantagedisadvantageConstuctive Cost Modeling (COCOMO) estimationScheduling stepsTask networkGantt chartsMilestoneRisk analysisProject riskcatagoryReactive Risk ManagementProacctive risk managementOverview
History of software technology
The raise of Software Engineering
The nature of software
what is software
include
programdocumentdata structureTradition 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 performancedata structure that enable programs manipulate informationdocumentation that describe the operation and use of the programsThe nature of software
Development
Deteriorate
different failure rate curve
custom built
Complex
Cloud Computation
Cloud computing provides distribute data storage and processing resource to networked computing devicecompeting resources reside outside the cloud and have access to a variety of resources inside the cloudCloud computing require developing an architecture containgin both frontednd and backend inside the cloudfronteend service include the client devicesand application software to allow accessbackend servide include servers, data storage, and server-resident applicationcloud architecture can be segmetnted to restrict access to private dataConcept 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 controlrisk managementsoftware quality assurancetechnicla rebiewmeasurementsoftware configeration managemetnreusability managementwork product preparation and productionSoftware process structure
Process patterns
describes a process-related problem that is encounted during software engineering workidetifying the environment in which the problem has been encounteredsuggests one or more proven solutions to the problemsStage 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 intrestsCMMI stages
InitialManagementDefinedQuantitatively managedOptimizedProcess Models
process frameworkframework activity work taskwork productsmilestones and deliveriablesQA checkpoints umbrella activitiesprescriptive 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 changetight market deadline, only allow a limited versiononly core requirement are definedPrototype
软件原型是软件的最初版本,以最少的费用、最短的时间开发出的、反映最后软件特征的系统
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 protortypethe 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 satisfactionthe intend of evolutionary models is to develop high-quality software in an interactive or incremental mannerit’s possible to use an evolutionary process to emphasis flexibility, extensibility, and speed of developmentThe increment models
1. definition
增量模型又称产品改进模型从给定需求开始,通过构造一系列中间版本来实施开发活动,依次类推,直到系统完成。每一个中间版本都是需求分析、设计、编码和测试的过程。某些中间版本的开发可以并行进行。diagram
features
融合了线性顺序模型的基本成分和原型的迭代特征。是随着日程时间的进展而交错的线性序列。与原型不一样的地方是强调每个增量均发布一个可操作产品。最典型的应用是同一个产品的不同项目(合同、用户)版本advantage(适用于)
需求经常变化的软件开发市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术Other process Models
catagory
Component based development—the process to apply when reuse is a development objectiveFormal methods—emphasizes the mathematical specification of requirementsAOSD—provides a process and methodological approach for defining, specifying, designing, and constructing aspectsThe 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 toolsWorking software over comprehensive documentationCustomer collaboration over contract negotiationResponding to change over following a planAgility and the cost of change
An agile process
Is driven by customer descriptions of what is required (scenarios)Recognizes that plans are short-livedDevelops software iteratively with a heavy emphasis on construction activitiesDelivers multiple ‘software increments’Adapts as changes occurAgility priciples
我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。业务人员和开发人员必须相互合作,项目中的每一天都不例外。激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。可工作的软件是进度的首要度量标准。敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。以简洁为本,它是极力减少不必要工作量的艺术。最好的架构、需求和设计出自自组织团队。团队定期地反思如何能提高成效,并依此调整自身的举止表现。Extreme programming/Scrum?Kanbam
Extreme programming
main activities
XP planningXP designXP codingXP testingdiagram
Extreme planning
Begins with the creation of user storiesAgile team assesses each story and assigns a costStories are grouped to for a deliverable incrementA commitment is made on delivery dateAfter the first increment project velocity (速度) is used to help define subsequent delivery dates for other incrementsExtreme Design
Follows the KIS principle(Keep It Simple)Encourage the use of CRC cardsFor difficult design problems, suggests the creation of spike solutions — a design prototypeEncourages refactoring — an iterative refinement of the internal program designextreme 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 constructedWork occurs in “sprints” and is derived from a “backlog” of existing requirementsMeetings are very short and sometimes conducted without chairs“demos” are delivered to the customer with the time-box allocateddiagram
团队模型
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 problemthe people who want a solutionthe nature of the solution that is designthe effectness of preliminary communication and collaboration between the customer and the developer
process
identify stakeholderrecognize multiple point of view
work toward collaboraton
the first question
who is behind tehe request for this workwho will use the solutiohnwhat will be the economic benefit of successful solutionis 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 customerrules for preparation and participatation are establishedan agenda is suggesteda facilitator controlsthe meetinga “definition mechanism” (can be work sheets, flip charts, or wall stckers or an electronic bulletin board,caht room or virtual forum) is usedThe goal
to identify the problempropose elements of the solutionnegotiate different approachesapecify a preliminaryu set of solution requirementwork products
a statement of need adn feasibilitya bounded statement of scope for the system or the producta list of customers, users, adn other stakeholders who participated in requirement elicitationa desvription of the system’s technical environmenta list of requirement adn the domain constains taht apply to eachan prototype developed to better define requirementsElaboration
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 negotiationdetermine each of the stakeholders “win condition”: win condition are not always obviousnegotiate: work toward a set of requirements taht lead to “win-win”Specification
definition
can be any one of the followering
a written documenta set of modelsa formal mathematicala collection of user scenariosa prototype
relation
content
引言:陈述目标软件,在基于计算机的系统语境内进行描述信息描述:给出软件必须解决问题的详细描述,记录信息内容和关系、流、结构行为描述:描述作为外部事件和内部产生的控制特征的软件操作检验标准:描述检验系统成功的标志。即对系统进行什么样的测试,测到什么样的结果,就表示系统已经成功实现了,他是“确认测试”的基础。参考书目:包含了对所有和该软件相关的文档的引用,其中包括其他的软件工程文档、技术参考文献、厂商文献及标准附录:包含了规约的补充信息,表格数据,算法的详细描述,图表以及其他材料Validation
definition
a review mechanism that look for
errors in content or interpretationareas where clarification may be requiredmissing informationinconsistenciesConflicting or unrealistic requirement
process
is each requirement sonsistent with the overall objective for the system/producthave 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 stageis the requiremetn really necessary or does it represent an add-on feature that may not be essential to the objective of teh systemis each requirement bounded and unambiguousdoes each requirement have attibution: taht is, is a source noted for each requirementdo any requirement conflict with other requirementis wach requirement achieveable in the technical rnvironment that will house the system or productis each requirement testable, once implementeddoes the requirements model proprely reflect the information, funciton and behavior of the system to be builthas the requirements model been “partitioned” in a way that exposes progressively more detailed information about the systemhave requirement patterns been used to simmplify teh requiremens model. habe all patterns been properly balidated: are all patterns consistent withe customer requirementRequirement management
requiremetn monition
distributed debugged: uncover errors and determines their causerun-time verfication: determines whether software meets user goalruntime validation: assesses whether evolving software meets their goalbusiness activity monitoring: evaluate wheterh a system satisfies goalsevolution and co-design: provide information to stakeholders as the system evolvesNon-functional requirements
Diagrams
Requirement modeling
Domain Analysis
目标
描述客户需要什么为软件设计奠定基础定义在软件完成后可以被确认的一组需求Scenario-based modeling
use case
scenario that describe a “thread of usage” for a systemactors represent roles perple or devices play as teh system functionusers can play a number of different roles for a given scenarioactivity diagram even swimming lane diagrams
Class-based modeling
Content
nouns and verbs
classes are determined by noun or nouns phraseMenifestation of analysis classes
external entitiesthingsoccurences or eventsrolesorganization unitsplacesstructurespotentcial classes
retaineed informationneeded serbicesmultiple attriburecommon attributecommon operationsessential requirementsattriburtes 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 verbscatagory
manipulate dataperform a computationinquire about the state of an objectmonitor an object for the occurence of controlling eventClass 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 classesthe cards are divided into three sections: class name, responsibility, collaboratorexample
Behavioral modeling
mainly include state diagram and sequence diagram
Design concepts
design and qauality
goal
teh design must implement all of the explicit requirementthe design mustt be readable, understandable guidethe design should provide a complete picture of softwarequality guide line
design should exhibit an architecture that has been created using recognizable architectureal styles or patternsis composed of components that exhibit good design characteristicscan be implement in an evolutionary fashion A desin should be modulara design should contain distinct representationa design should lead to data structure that are appropriate for the classes to be implemented and are drawn from recognizable data patternsa design should lead to components that exhibit independent functional characteristicsa design should lead to interfaces that reduce the complexity of connections between components and with the external ecvironmenta design should be derived using a repeatable method that is derived by information obrtained during software requirements analysisa design should be represented usingt a notation that effectively communicated its meaningdesign principle
lazy
Fundamental concept
abstraction: data procedure, controlarchitecture: the overall structure of the softwarepatterns: convey the essence of a proven design solutionseparation of concerns: any complex problem can be more easilymodularity: compartmentalization of data and functionhiding: controlled interfacesfunctional independence: single minded function and low couplingrefinement: elaboration of detail for all abstractionaspects: a mechanism for understanding how global requirements affect designrefactoring: a reorganization technique that simplifies the desinOO desing concepts:desing classes: provide design detail that will enable analysis classes to be implementeddesign model
OO Concepts
design classes
entity classes : refined from analysis classboundary classes: developed during desing to create the interfacecontroller classes:are desing to manage the creation or update of entity objectsthe instantiation of boundary objects as they obtain information from entity objectscomplex communication between set of objectsvalidation of data communicated between objects or between the user adn teh appplicationinheritance
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 ssytema set of connector that enablecommunication coordination and cooperation among componentsconstraints that define how components can be integrated to form the systemsemantic models that enable a desiner to understand teh overall properties of a system by analyzing the known properties of its constituent partscatagory
data-centered ar5chitecturesdata flow architecturecall and return architectureobject oriented architecturelayered architectureArchitecture design
the software myst be placed into contexta set of architectureal archetypes should be identifiedthe designer specifies the structure of the system by defining and refining softwareAgility and architecture
to avoid rework, user stories are used to create and evolve an architecrural model before codinghubrid models which alow sogtware arhchitects contributing users stories to the evolving storyboardwell run agil projects include delivery of work products during each springreview code emerging from the sprint can be a useful form of architecrural reviewComponent level design
What is a component
OO view: a set of collaborating classesprocess logic, the internal data structure and an interfaceBasic 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
functionallayercommunicationalsequentialproceduraltemporalutilityCoupling
definition
a qualitative measure of the degree to which classes are conneted to one another
level of coupling
contentcommoncontrolstampdataroutine calltype useinclusion or importexternalComponent-based software engineering
principle
a library of components must be avaialbecomponents should hava a consistent structureactivity
component qualificationcomponent adaptationcomponent compositioncomponoent updateUser 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 itMcCall’s triangle of quality
The cost of quality
Achieving software quality
achieving
sotware quality is the result of good project management and solid engineering practiceto 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 requirementeliminating architectural flaws during desing can improve qualityassurance
project management: project plan includes explicit techniques for quality and change managementquality control: series of inspections, reviews, and tests used to ensure conformance fo a work product ro its specificationquality assurance: consists of the auditing and reporting procedures used to provide management with data needed to make proactive decisionsTesting strategy and techniques
Testing concepts
verification: refer to the set of tasks that ensure thath software correctly implements a specific functionvalidation: refer to a different set fof tasks that ensure that the software that has been built is traceable to customer reuqirementV model and V&V
the v model
the v&v model
Testing Strategies
diagram
strategy
conventional software
teh module is our initial focusintegration of modules followsfor 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 testdecide 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 useddevelop teh test casedetermine the expected results of the testexecute the test casesccompare teh test results to the expected resultdriver
provide
setting input parameters, and the environmentexecuting the unitreading the output parameterstypical behavior
suply a constant input or a random inputsupply a ‘canned’ inputrecord interim results and tracesstub
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 unittypical 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 testedthe state behaviro of teh calss is examinedthread-base testinguse-based testingcluster testingSecurity engineering & SCM
Why security engineering
security is a perquisite to system integrity, availability, reliablity and safetysecurity provides teh mechanism that enable a system to protect its assets from attackassets are system resources that have value to its stakeholdersattacks take advatage of bulnerability that allow unauthorized system accessit is different to make a system more secure by responding to buging reports, security must be designed in from the beginning testing appropriateSCM 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 projectproduct: teh software to be beiltprocess:teh set fo framework activities and software engineering tasks to get tehjob doneproject: all work required to make teh product a realityW5HHW^5HHW5HH
why is teh system being developedwhat will be donewhen will it be accomplishedwho is responsiblewhere are they organizationlly locatedhow will teh job be done technically and manageriallyhow much of each resurce will be neededProcess and project metrics
Why do we measure
assess teh status of an ongoing projecttrack potential risksuncober problem areas beform they go critialadjust work flow or tasksevaluate the project team’s ability to control quality of software work productsProcess measurement and metrics
measurement
outcomeprocess metrics
quality relatedproductivity-relatedstatistical SQA datadefect remocal efficiencyreuse dataProject metrics
input:measures of teh resources required to do the workoutput: meawsures of teh deliverable or work prodducts ctreated during teh softwre engineering proceessresults: measures that inducated teh effectiveness of the deliverabletypical of metrics
error per unitdefect per unitpages of document per uniterrors per person-montherrors per review person-monthProject 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-usersthe data that are intput adn outputthe “content” that is presented to users as a consequence of using teh softwareteh performance, constrains, interface, and reliablity that bound the system
mian techniques
a narrative description of software socpe is developed ager commnucation with all stakeholdersA set of use-case is developed by end-userWork 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 changesrisk analysisorganizaitonal structuremeasurementLine Of Code(LOC)
advantage
simple to measureeasy to automatedisadvantage
only defined for code, not teh designbad desing may cause excessive LOCLanguage dependentDoes not account for functionality or complexityFunction Point (FP)
advantage
usable in teh earliest requirements phasesindependent of programming language, product desing, or development styleuser’s view rather than miplementation viewcan be used to measure thenon-coding activitiesThere exists a large body of historical dataa well documented methoddisadvantage
cannot directly count an existing product’s FP contentHard to automateFP do not reflect language, desing, or style differencesFP are desinged for estimating commercial data processing applicationssubjective countingConstuctive Cost Modeling (COCOMO) estimation
use experience to estimate
Scheduling steps
defining task setssequencing activitiesdrawing project network diagramscrutical path analysisusing Gantt chats for schedulingshcedule trackingTask network
Gantt charts
Milestone
you know what is milstome right?