SlideShare a Scribd company logo
Recent and Future Trends
Continuous
Integration
Introduction
• Continuous Integration was first introduced in the year 2000 with the software known as
Cruise Control.
• Over the years, Continuous Integration has become a key practice in any software
organization.
• This is a development practice that calls upon development teams to ensure that a build
and subsequent testing is conducted for every code change made to a software program.
This concept was meant to remove the problem of finding late occurrences of issues in the
build lifecycle.
• Instead of the developers working in isolation and not integrating enough, Continuous
Integration was introduced to ensure that the code changes and builds were never done in
isolation.
Recent and-future-trends spm
Why Continuous Integration?
• The continuous Integration process helps to answer the following questions for the
software development team.
• Do all the software components work together as they should? – Sometimes systems
can become so complex that there are multiple interfaces for each component. In
such cases, it’s always critical to ensure that all the software components work
seamlessly with each other.
• Is the code too complex for integration purposes? – If the continuous integration
process keeps on failing, there could be a possibility that the code is just too
complex. And this could be a signal to apply proper design patterns to make the code
lesser complex and more maintainable.
Continue
• Does the code adhere to the established coding standards? – Most of the test cases will
always check that the code is adhering to the proper coding standards. By doing an
automated test after the automated build, this is a good point to check if the code meets
all the desired coding standards.
• How much code is covered by automated tests? – There is no point in testing code if the
test cases don’t cover the required functionality of the code. So it’s always a good
practice to ensure that the test cases written should cover all the key scenarios of the
application.
• Were all the tests successful after the latest change? – If a test fails, then there is no
point in proceeding with the deployment of the code, so this is a good point to check if
the code is ready to move to the deployment stage or not.
Workflow
Continuous Integrations Tools
• Jenkins (Hudson)
• TravisCI
• Cruise Control
• TeamCity
• BuildBot
• Bamboo
• Team foundation server
• Gerrit
Early Risk Resolution
Introduction To Risk
• Risk is the possibility of suffering loss.
• In a development project, the loss describes the impact to the project which could
be in the form of diminished quality of the end product, increased costs, delayed
completion, or failure.
Introduction to Early Risk Resolution
• The engineering stage of the life cycle (inception and elaboration phases) focuses on
confronting the risks and resolving them before the big resource commitments of the
production stage.
• Conventional projects usually do the easy stuff first, thereby demonstrating early
progress. A modern process attacks the important 20% of the requirements, use
cases, components, and risks.
Continue
• The effect of the overall life-cycle philosophy on the 80/20 lesson provides a useful
risk management perspective.
• 80% of the engineering is consumed by 20% of the requirements.
• 80% of the software cost is consumed by 20% of the components.
• 80% of the errors are caused by 20% of the components.
• 80% of the progress is made by 20% of people.
Why Do we need Early Risk Resolution
• Assess continuously what can go wrong (risks identification and assessment).
• Determine what risks are important to deal with (risk prioritization).
• Implement strategies to deal with those risk (risk resolution).
• Ensure that high priority risks are aggressively managed and that all risks are
cost-effectively managed throughout the project.
Evolutionary
Requirements
• Requirements are capabilities and conditions to which the system—and more broadly, the
project—must conform.
• A prime challenge of requirements work is to find, communicate, and remember.
• The UP promotes a set of best practices, one of which is manage requirements.
• This does not refer to the waterfall attitude of attempting to fully define and stabilize the
requirements in the first phase of a project, but rather— in the context of inevitably
changing and unclear stakeholder’s wishes– “a systematic approach to finding,
documenting, organizing, and tracking the changing requirements of a system”.
Introduction
Evolutionary Vs Waterfall Requirements
• Notice the word changing in the definition of what it means to manage requirements.
• The UP embraces change in requirements as a fundamental driver on projects.
• That’s incredibly important and at the heart of waterfall versus iterative and
evolutionary thinking.
Skillful Means to Find Requirements
• Besides changing, the word finding is important; that is, the UP encourages skillful
elicitation via techniques
• such as writing use cases with customers, requirements workshops that include both
developers and customers, focus groups with proxy customers, and a demo of the
results of each iteration to the customers, to solicit feedback
Types and Categories of Requirements
• Functional—features, capabilities, security.
• Usability—human factors, help, documentation.
• Reliability—frequency of failure, recoverability, predictability.
• Performance—response times, throughput, accuracy, availability, resource usage.
• Supportability—adaptability, maintainability, internationalization, configurability.
The “+” in FURPS +Indicates ancillary and sub
factors such as
• Implementation—resource limitations, languages and tools, hardware,…
• Interface—constraints imposed by interfacing with external systems.
• Operations—system management in its operational setting.
• Packaging—for example, a physical box.
• Legal—licensing and so forth.
Continue
• It is helpful to use FURPS+ categories as a checklist for requirements coverage, to
reduce the risk of not considering some important facet of the system.
• In common usage, requirements are categorized as functional or nonfunctional
• Some dislike this broad generalization, but it is very widely used
Functional Requirements
• Functional requirements are explored and recorded in the Use-Case Model, In the
system features list of the Vision artifact.
• Other requirements can be recorded in the use cases they relate to, or in the
Supplementary Specifications artifact.
Teamwork among
Stakeholders
Stakeholder and Teamwork's
• Stakeholder is any individual or an organization that is actively involved in a
project, or whose interest might be affected (positively or negatively) as a result of
project execution or completion.
• Teamwork is working in partnership with others toward a common goal, a
combined action of various individuals, or even just efficient and effective
combination with other people.
However, just because people working with one another doesn’t mean that they’re
participating into a successful teamwork.
Four steps of Stakeholders Management to
complete task of project
• Step 1: Identify Your Stakeholders
• Step 2: Determine a Stakeholder’s Influence
• Step 3: Develop a Communication Management Plan
• Step 4: Engage With Your Stakeholders
Stake Holder Roles
• User:- Define the system’s functionality and ultimately make use of it.
• Tester:- Test the system to ensure that it is suitable for use.
• Developer:- construct and deploy the system from specification.
• Other Roles:-
• Quick and easy problem solving.
• Strong staff relationships.
• Healthy competition.
Benefits of Teamwork
• Saves time.
• Generate more brilliant and creative idea.
• Encourage healthy risk-taking.
• Attention to Results
• Confront of Accountability
• Fearless In Conflict’s
• Presence of Trust
Effectively Managing Stakeholders
Top 10 Software Management
Principles
1: Base the process on an architecture first
approach:
• To start the software development, the developer first thoroughly identifies the
requirements then chooses the significant design decision.
• Before starting with the lifecycle (development) process check the selected
resources are sufficient for complete software development.
2:Establish iterative lifecycle process
that face risk early:
• Today the organizations not follow to define the entire problem at once, design the
entire solution, build the software, then test and deploy in sequence.
• The organizations adopt follows iterative development approach which facilitates,
problem understanding, effective solution, and an effective plan over several
iterations.
• It also balances the stockholder’s objectives. The main advantage of iterative
approach is risks are identified early to avoid software scrap and rework.
3:Transition design methods to highlight
Component based development:
• The developers should transits from line-of-code mentality to component based
mentality to reduce the amount of human generated code and custom development.
• A component based model is unified set of interface and behavior. Pre-existing
line of code either in source or executable format, with a defined
4: Establish change management
environment:
• The dynamics of iterative development, concurrent workflows require the
controlled baselines.
5: Enhance change freedom through tools
that support round trip engineering
(iterative):
• The iterative development process supports automate and synchronize engineering
information in different formats.
• Without substantial automation, change management, documentation, and testing
it is difficult to reduce project development time.
• Change freedom is necessity in iterative process at the same time the role of
environment is crucial.
6: Capture design artifacts in rigorous,
model based notion:
• Generally model based approach supports rich graphical and textual design
notions.
• Visual modeling and formal machine processable language provides good
measures than traditional design approach.
7: Instrument the process for objective quality
control and progress assessment:
• Project development progress and the quality should be assessed in the middle of
the development lifecycle.
• The best assessment mechanisms are derived directly from the engineering
artifacts and able to integrate all the activities in the development process.
8: Use demonstration based approach to
assess intermediate artifacts:
• Transit from current development artifacts to executable one to early elimination
of architectural defects.
9:Plan intermediate releases in groups of
usage situations with evolving levels of
detail:
• It is necessary that the software management process has continuous
demonstrations within the operational context.
• The evolution of project increments and generations must be equal with current
level of understanding of requirements and architecture.
10: Establish configurable process that is
economically scalable:
• No single process is suitable for software development. A practical process
framework must be organizing a broad spectrum of applications.
• The software development process must integrate economy of scale, development
automation, architecture patterns and components.
Software Management Best
Practices
• Software Engineering Process
• A disciplined approach to assigning and managing tasks and responsibilities in
a development organization
• goal is to produce a software that is:
• Within a predictable schedule and budget
• High-quality
• Correspondent to the needs of its end users
• People involved in software development:
• Project managers
• Developers •Qualities engineers
• Process engineers
• Method specialists
• System engineers Analysts
Symptoms of Software Development Failure
• Inaccurate understanding of end-user needs
• Inability to deal with changing requirements
• Modules that don't fit together
• Software that's hard to maintain or extend
• Late discovery of serious project flaws
• Poor software quality
• Unacceptable software performance
• Team members in each other's way, making it impossible to reconstruct who
changed what, when, where, and why
• An untrustworthy build-and-release process.
Root Causes of Software Development
Problems
• Ad hoc requirements management
• Ambiguous and imprecise communication
• Brittle architectures
• Overwhelming complexity
• Undetected inconsistencies in requirements, designs, and implementations
• Insufficient testing
• Subjective assessment of project status
• Failure to attack risk
• Uncontrolled change propagation
• Insufficient automation
Software Best Practices
• Treat root causes of problems to eliminate symptoms.
• To develop and maintain quality software in a repeatable and predictable fashion
Successful organizations use best practice as follows:
• Develop software iteratively
• Manage requirements
• Visually model software
• Continuously verify software quality
• Control changes to software
Develop Software Iteratively
• It offers solutions to the root causes of the software development problem
• Serious misunderstandings are made evident early in the lifecycle (when it’s
possible to react to them).
• It enables and encourages user feedback so as to elicit the system’s real
requirements.
• The development team is forced to focus on those issues that are most critical to
the project and are shielded from those issues that distract them from the project's
real risks.
Manage Requirements
• A requirement is a condition or capability a system must have.
• The challenge of managing the requirements is how to deal with the change of
requirements during the life of a software process.
• It is hard to completely and exhaustively state a system's requirements before the
start of development.
• As a new or evolving system changes, a user's understanding of the system's
requirements also changes.
Visually Model Software
• A model is a simplification of reality that completely describes a system from a
particular perspective.
• Model helps development team visualize, specify, construct, and document the
structure and behavior of a system's architecture.
• Visual modeling also helps to maintain consistency among a system's artifacts: its
requirements, designs, and implementations.
• Modeling software visually offers solutions to the root causes of the software
development problems.
Continuously Verify Software Quality
• Software problems are 100 to 1,000 times more expensive to find and repair after
deployment than beforehand.
• It's important to assess continuously the quality of a system with respect to its:
functionality, reliability, application performance, and system performance.
• Verifying a system's functionality involves creating tests for each key scenario,
each of which represents some aspect of the system's desired behavior. As
software is developed iteratively, tests are performed at every iteration.
Control Changes to Software
• A key challenge to developing software-intensive systems is to cope with
developers organized into teams. In the absence of disciplined control, the
development process rapidly degenerates into chaos.
• Coordinating activities and artifacts of developers and teams involves establishing
repeatable workflows for managing changes to software.
• Coordination allows a better allocation of resources based on the project's
priorities and risks.
Next Generation Cost
Models
Introduction
• A next generation software cost model should explicitly separate architectural
engineering from application production, just as an architecture-first process does.
• The cost of designing, producing, testing, and maintaining the architecture
baseline is a function of scale, quantity ,quality, technology, process and team skill
• Software experts hold widely varying opinions about software economics and its
manifestation in software cost estimation models:
• Source lines of code versus function points.
• Economy of scale versus diseconomy of scale.
Effort = F( TArch, SArch ,QArch,PArch ) + F(TApp,SApp,QApp,PApp)
Time = F( PArch, EffortArch) + F( PApp ,EffortApp )
Where,
T = technology parameter
S = scale parameter
Q = quality parameter
P = Process parameter
Engineering Stage
• Risk resolution, low-fidelity plain,
schedule/technology-driven, risk sharing
contracts
• Team Size:
• Architecture: Small team of software
engineers Application: Small team of
domain engineers Small and expert as
possible
• Product: Executable architecture,
Production plans, Requirements
• Focus: Design and integration, host
development environment
• Phases: Inception and elaboration
Production Stage
• Low risk, high-fidelity plan, cost-driven
Fixed-price contracts/funding
• Team Size:
• Architecture: Small team of software
engineers Application: As many as
needed Large and diverse as possible
• Product: Deliverable, useful function,
tested baselines, warranted quality
• Focus: Implement, test and maintain ,
Target technology
• Phases: Construction and transition
Modern Software Economics, Cultural
Impact and Denouement
Modern Software Economics
• Finding and fixing a software problem after delivery costs 100 times more than
finding and fixing the problem in early design phases.
• You can compress software development schedules 25% of nominal, but no more.
• For every $1 you spend on development, you will spend $2 on maintenance.
• Software development and maintenance costs are primarily a function of the
number of source line of code.
• Variations among people account for the biggest difference in software
productivity.
• Only about 15% of software development effort is devoted to programming.
• Software systems and product typically cost times as much per SLOC as
individual software programs. Software-system product- an economy of scale is
achievable.
• Walkthroughs catch 60% of the errors.
• 80% of the contribution comes from 20 % of the contributors.
• The overall ratio of software to hardware costs is still growing. In 1955, it was
15:85; in 1985, 85:15.
Culture Shifts
• Lower level and mid-level manager are performers.
• Requirements ad designs are fluid and tangible.
• Ambitious demonstrations are encouraged.
• Good and bad project performance is much more obvious earlier in the cycle.
• Early increment will be immature.
• Artifacts are less important early, more important later.
• Real issues are surfaced and resolved systematically.
• Quality assurance is everyone’s job, not a separate discipline.
• Performance issues arise early in the life cycle.
• Investments in automation are necessary.
• Good software organization should be more profitable.
Denouement
• Sequentially transitioning from requirement to design to code to rest.
• Achieving 100% completeness of each artefact at each life-cycle stage.
• Treating all requirements, artifacts, components, and so forth, as equals.
• Achieving high-fidelity traceability among all artifacts at each stage in the life
cycle.
Modern Iterative development process Framework
• Continuous round-trip engineering from requirements to test at evolving levels of abstraction.
• Achieving high-fidelity understanding of the drivers(the 20%) as early as practical
• Evolving the artifacts in breadth and depth based on risk management priorities.
• Postponing completeness and consistency analyses until later in the life cycle.
• A better way to transition to a more mature iterative development process that supports automation
technologies and modern architectures is to take the following shots:-
• Ready - Do your homework.
• Aim – Select a critical project.
• Fire – Execute with vigor and follow-through.

More Related Content

PDF
Operating Systems and Utility Programs
PPTX
phases of compiler-analysis phase
PPT
Basic hardware concept
PPT
Tutorial 1 - Browser Basics
 
PDF
Embedded Systems: Lecture 2: Introduction to Embedded Systems
PPTX
Multimedia file formats
PPTX
Data center operation
PPT
Application software
Operating Systems and Utility Programs
phases of compiler-analysis phase
Basic hardware concept
Tutorial 1 - Browser Basics
 
Embedded Systems: Lecture 2: Introduction to Embedded Systems
Multimedia file formats
Data center operation
Application software

Similar to Recent and-future-trends spm (20)

PPTX
Introduction To Software Concepts Unit 1 & 2
DOCX
process models- software engineering
PPTX
unit 1 introudction of the file and sepm
PPTX
Lesson 1 - System Development LifeCycles_48b8340c0dd570b721da1199655b765e.pptx
PPT
Intoduction to software engineering part 2
PPTX
software engineering basics and .definition
PPTX
UNIT1-Introduction to Software and Software Engineering.pptx
PPT
what-is-devops.ppt
PPTX
UNIT V - 1 SPM.pptx
PPT
SE Lecture 2.ppt
PPTX
Software Engineering Unit 1 PowerPoint presentation For AKTU University
PPTX
Lect5 improving software economics
PPTX
Software engineering ppt it will be useful for the people
PPT
Unified process
PPTX
Agile-Software-Development in SAP ERP.pptx
PDF
CISSP Domain 08 Software Development Security.pdf
PPSX
Software Development
PPTX
Introduction to Software engineering ch03
PPTX
Introduction to Software Development Life Cycle.pptx
PPTX
Software Development Life Cycle (SDLC )
Introduction To Software Concepts Unit 1 & 2
process models- software engineering
unit 1 introudction of the file and sepm
Lesson 1 - System Development LifeCycles_48b8340c0dd570b721da1199655b765e.pptx
Intoduction to software engineering part 2
software engineering basics and .definition
UNIT1-Introduction to Software and Software Engineering.pptx
what-is-devops.ppt
UNIT V - 1 SPM.pptx
SE Lecture 2.ppt
Software Engineering Unit 1 PowerPoint presentation For AKTU University
Lect5 improving software economics
Software engineering ppt it will be useful for the people
Unified process
Agile-Software-Development in SAP ERP.pptx
CISSP Domain 08 Software Development Security.pdf
Software Development
Introduction to Software engineering ch03
Introduction to Software Development Life Cycle.pptx
Software Development Life Cycle (SDLC )
Ad

More from Prakash Poudel (20)

PPTX
Web applications vulnerabilities and threats
PPTX
Earliest Due Date Algorithm for Task scheduling for cloud computing
DOCX
Locking base concurrency control
PPTX
Cocomo ( cot constrictive model) and capability maturity model
PDF
Microprocessor
DOCX
Maximum power transfer theorem
DOCX
Linux technology
PDF
Java PU solution
PPTX
System administration
PPTX
Telephone call-simulation
PPTX
General Online Health Information System Proposed Application
PPTX
Nepal Doorsanchar Company Limited Internship Experience
DOCX
SQL & PLSQL
DOCX
Software engineering
DOCX
Multimedia Technology in computer
PPTX
File permission in linux
DOC
organization Management
DOC
Organization Management Concept
PPTX
Java Programming concept
PPTX
Web applications vulnerabilities and threats
Earliest Due Date Algorithm for Task scheduling for cloud computing
Locking base concurrency control
Cocomo ( cot constrictive model) and capability maturity model
Microprocessor
Maximum power transfer theorem
Linux technology
Java PU solution
System administration
Telephone call-simulation
General Online Health Information System Proposed Application
Nepal Doorsanchar Company Limited Internship Experience
SQL & PLSQL
Software engineering
Multimedia Technology in computer
File permission in linux
organization Management
Organization Management Concept
Java Programming concept
Ad

Recently uploaded (20)

PDF
System and Network Administration Chapter 2
PPTX
Introduction to Artificial Intelligence
PDF
Understanding Forklifts - TECH EHS Solution
PPTX
Transform Your Business with a Software ERP System
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Online Work Permit System for Fast Permit Processing
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Digital Strategies for Manufacturing Companies
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
ai tools demonstartion for schools and inter college
PDF
System and Network Administraation Chapter 3
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
AI in Product Development-omnex systems
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPT
Introduction Database Management System for Course Database
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
PTS Company Brochure 2025 (1).pdf.......
System and Network Administration Chapter 2
Introduction to Artificial Intelligence
Understanding Forklifts - TECH EHS Solution
Transform Your Business with a Software ERP System
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Online Work Permit System for Fast Permit Processing
2025 Textile ERP Trends: SAP, Odoo & Oracle
Digital Strategies for Manufacturing Companies
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
ai tools demonstartion for schools and inter college
System and Network Administraation Chapter 3
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
AI in Product Development-omnex systems
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Introduction Database Management System for Course Database
Softaken Excel to vCard Converter Software.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
PTS Company Brochure 2025 (1).pdf.......

Recent and-future-trends spm

  • 3. Introduction • Continuous Integration was first introduced in the year 2000 with the software known as Cruise Control. • Over the years, Continuous Integration has become a key practice in any software organization. • This is a development practice that calls upon development teams to ensure that a build and subsequent testing is conducted for every code change made to a software program. This concept was meant to remove the problem of finding late occurrences of issues in the build lifecycle. • Instead of the developers working in isolation and not integrating enough, Continuous Integration was introduced to ensure that the code changes and builds were never done in isolation.
  • 5. Why Continuous Integration? • The continuous Integration process helps to answer the following questions for the software development team. • Do all the software components work together as they should? – Sometimes systems can become so complex that there are multiple interfaces for each component. In such cases, it’s always critical to ensure that all the software components work seamlessly with each other. • Is the code too complex for integration purposes? – If the continuous integration process keeps on failing, there could be a possibility that the code is just too complex. And this could be a signal to apply proper design patterns to make the code lesser complex and more maintainable.
  • 6. Continue • Does the code adhere to the established coding standards? – Most of the test cases will always check that the code is adhering to the proper coding standards. By doing an automated test after the automated build, this is a good point to check if the code meets all the desired coding standards. • How much code is covered by automated tests? – There is no point in testing code if the test cases don’t cover the required functionality of the code. So it’s always a good practice to ensure that the test cases written should cover all the key scenarios of the application. • Were all the tests successful after the latest change? – If a test fails, then there is no point in proceeding with the deployment of the code, so this is a good point to check if the code is ready to move to the deployment stage or not.
  • 8. Continuous Integrations Tools • Jenkins (Hudson) • TravisCI • Cruise Control • TeamCity • BuildBot • Bamboo • Team foundation server • Gerrit
  • 10. Introduction To Risk • Risk is the possibility of suffering loss. • In a development project, the loss describes the impact to the project which could be in the form of diminished quality of the end product, increased costs, delayed completion, or failure.
  • 11. Introduction to Early Risk Resolution • The engineering stage of the life cycle (inception and elaboration phases) focuses on confronting the risks and resolving them before the big resource commitments of the production stage. • Conventional projects usually do the easy stuff first, thereby demonstrating early progress. A modern process attacks the important 20% of the requirements, use cases, components, and risks.
  • 12. Continue • The effect of the overall life-cycle philosophy on the 80/20 lesson provides a useful risk management perspective. • 80% of the engineering is consumed by 20% of the requirements. • 80% of the software cost is consumed by 20% of the components. • 80% of the errors are caused by 20% of the components. • 80% of the progress is made by 20% of people.
  • 13. Why Do we need Early Risk Resolution • Assess continuously what can go wrong (risks identification and assessment). • Determine what risks are important to deal with (risk prioritization). • Implement strategies to deal with those risk (risk resolution). • Ensure that high priority risks are aggressively managed and that all risks are cost-effectively managed throughout the project.
  • 15. • Requirements are capabilities and conditions to which the system—and more broadly, the project—must conform. • A prime challenge of requirements work is to find, communicate, and remember. • The UP promotes a set of best practices, one of which is manage requirements. • This does not refer to the waterfall attitude of attempting to fully define and stabilize the requirements in the first phase of a project, but rather— in the context of inevitably changing and unclear stakeholder’s wishes– “a systematic approach to finding, documenting, organizing, and tracking the changing requirements of a system”. Introduction
  • 16. Evolutionary Vs Waterfall Requirements • Notice the word changing in the definition of what it means to manage requirements. • The UP embraces change in requirements as a fundamental driver on projects. • That’s incredibly important and at the heart of waterfall versus iterative and evolutionary thinking.
  • 17. Skillful Means to Find Requirements • Besides changing, the word finding is important; that is, the UP encourages skillful elicitation via techniques • such as writing use cases with customers, requirements workshops that include both developers and customers, focus groups with proxy customers, and a demo of the results of each iteration to the customers, to solicit feedback
  • 18. Types and Categories of Requirements • Functional—features, capabilities, security. • Usability—human factors, help, documentation. • Reliability—frequency of failure, recoverability, predictability. • Performance—response times, throughput, accuracy, availability, resource usage. • Supportability—adaptability, maintainability, internationalization, configurability.
  • 19. The “+” in FURPS +Indicates ancillary and sub factors such as • Implementation—resource limitations, languages and tools, hardware,… • Interface—constraints imposed by interfacing with external systems. • Operations—system management in its operational setting. • Packaging—for example, a physical box. • Legal—licensing and so forth.
  • 20. Continue • It is helpful to use FURPS+ categories as a checklist for requirements coverage, to reduce the risk of not considering some important facet of the system. • In common usage, requirements are categorized as functional or nonfunctional • Some dislike this broad generalization, but it is very widely used
  • 21. Functional Requirements • Functional requirements are explored and recorded in the Use-Case Model, In the system features list of the Vision artifact. • Other requirements can be recorded in the use cases they relate to, or in the Supplementary Specifications artifact.
  • 23. Stakeholder and Teamwork's • Stakeholder is any individual or an organization that is actively involved in a project, or whose interest might be affected (positively or negatively) as a result of project execution or completion. • Teamwork is working in partnership with others toward a common goal, a combined action of various individuals, or even just efficient and effective combination with other people. However, just because people working with one another doesn’t mean that they’re participating into a successful teamwork.
  • 24. Four steps of Stakeholders Management to complete task of project • Step 1: Identify Your Stakeholders • Step 2: Determine a Stakeholder’s Influence • Step 3: Develop a Communication Management Plan • Step 4: Engage With Your Stakeholders
  • 25. Stake Holder Roles • User:- Define the system’s functionality and ultimately make use of it. • Tester:- Test the system to ensure that it is suitable for use. • Developer:- construct and deploy the system from specification. • Other Roles:- • Quick and easy problem solving. • Strong staff relationships. • Healthy competition.
  • 26. Benefits of Teamwork • Saves time. • Generate more brilliant and creative idea. • Encourage healthy risk-taking. • Attention to Results • Confront of Accountability • Fearless In Conflict’s • Presence of Trust
  • 28. Top 10 Software Management Principles
  • 29. 1: Base the process on an architecture first approach: • To start the software development, the developer first thoroughly identifies the requirements then chooses the significant design decision. • Before starting with the lifecycle (development) process check the selected resources are sufficient for complete software development.
  • 30. 2:Establish iterative lifecycle process that face risk early: • Today the organizations not follow to define the entire problem at once, design the entire solution, build the software, then test and deploy in sequence. • The organizations adopt follows iterative development approach which facilitates, problem understanding, effective solution, and an effective plan over several iterations. • It also balances the stockholder’s objectives. The main advantage of iterative approach is risks are identified early to avoid software scrap and rework.
  • 31. 3:Transition design methods to highlight Component based development: • The developers should transits from line-of-code mentality to component based mentality to reduce the amount of human generated code and custom development. • A component based model is unified set of interface and behavior. Pre-existing line of code either in source or executable format, with a defined
  • 32. 4: Establish change management environment: • The dynamics of iterative development, concurrent workflows require the controlled baselines.
  • 33. 5: Enhance change freedom through tools that support round trip engineering (iterative): • The iterative development process supports automate and synchronize engineering information in different formats. • Without substantial automation, change management, documentation, and testing it is difficult to reduce project development time. • Change freedom is necessity in iterative process at the same time the role of environment is crucial.
  • 34. 6: Capture design artifacts in rigorous, model based notion: • Generally model based approach supports rich graphical and textual design notions. • Visual modeling and formal machine processable language provides good measures than traditional design approach.
  • 35. 7: Instrument the process for objective quality control and progress assessment: • Project development progress and the quality should be assessed in the middle of the development lifecycle. • The best assessment mechanisms are derived directly from the engineering artifacts and able to integrate all the activities in the development process.
  • 36. 8: Use demonstration based approach to assess intermediate artifacts: • Transit from current development artifacts to executable one to early elimination of architectural defects.
  • 37. 9:Plan intermediate releases in groups of usage situations with evolving levels of detail: • It is necessary that the software management process has continuous demonstrations within the operational context. • The evolution of project increments and generations must be equal with current level of understanding of requirements and architecture.
  • 38. 10: Establish configurable process that is economically scalable: • No single process is suitable for software development. A practical process framework must be organizing a broad spectrum of applications. • The software development process must integrate economy of scale, development automation, architecture patterns and components.
  • 40. • Software Engineering Process • A disciplined approach to assigning and managing tasks and responsibilities in a development organization • goal is to produce a software that is: • Within a predictable schedule and budget • High-quality • Correspondent to the needs of its end users • People involved in software development: • Project managers • Developers •Qualities engineers • Process engineers • Method specialists • System engineers Analysts
  • 41. Symptoms of Software Development Failure • Inaccurate understanding of end-user needs • Inability to deal with changing requirements • Modules that don't fit together • Software that's hard to maintain or extend • Late discovery of serious project flaws • Poor software quality • Unacceptable software performance • Team members in each other's way, making it impossible to reconstruct who changed what, when, where, and why • An untrustworthy build-and-release process.
  • 42. Root Causes of Software Development Problems • Ad hoc requirements management • Ambiguous and imprecise communication • Brittle architectures • Overwhelming complexity • Undetected inconsistencies in requirements, designs, and implementations • Insufficient testing • Subjective assessment of project status • Failure to attack risk • Uncontrolled change propagation • Insufficient automation
  • 43. Software Best Practices • Treat root causes of problems to eliminate symptoms. • To develop and maintain quality software in a repeatable and predictable fashion Successful organizations use best practice as follows: • Develop software iteratively • Manage requirements • Visually model software • Continuously verify software quality • Control changes to software
  • 44. Develop Software Iteratively • It offers solutions to the root causes of the software development problem • Serious misunderstandings are made evident early in the lifecycle (when it’s possible to react to them). • It enables and encourages user feedback so as to elicit the system’s real requirements. • The development team is forced to focus on those issues that are most critical to the project and are shielded from those issues that distract them from the project's real risks.
  • 45. Manage Requirements • A requirement is a condition or capability a system must have. • The challenge of managing the requirements is how to deal with the change of requirements during the life of a software process. • It is hard to completely and exhaustively state a system's requirements before the start of development. • As a new or evolving system changes, a user's understanding of the system's requirements also changes.
  • 46. Visually Model Software • A model is a simplification of reality that completely describes a system from a particular perspective. • Model helps development team visualize, specify, construct, and document the structure and behavior of a system's architecture. • Visual modeling also helps to maintain consistency among a system's artifacts: its requirements, designs, and implementations. • Modeling software visually offers solutions to the root causes of the software development problems.
  • 47. Continuously Verify Software Quality • Software problems are 100 to 1,000 times more expensive to find and repair after deployment than beforehand. • It's important to assess continuously the quality of a system with respect to its: functionality, reliability, application performance, and system performance. • Verifying a system's functionality involves creating tests for each key scenario, each of which represents some aspect of the system's desired behavior. As software is developed iteratively, tests are performed at every iteration.
  • 48. Control Changes to Software • A key challenge to developing software-intensive systems is to cope with developers organized into teams. In the absence of disciplined control, the development process rapidly degenerates into chaos. • Coordinating activities and artifacts of developers and teams involves establishing repeatable workflows for managing changes to software. • Coordination allows a better allocation of resources based on the project's priorities and risks.
  • 50. Introduction • A next generation software cost model should explicitly separate architectural engineering from application production, just as an architecture-first process does. • The cost of designing, producing, testing, and maintaining the architecture baseline is a function of scale, quantity ,quality, technology, process and team skill • Software experts hold widely varying opinions about software economics and its manifestation in software cost estimation models: • Source lines of code versus function points. • Economy of scale versus diseconomy of scale.
  • 51. Effort = F( TArch, SArch ,QArch,PArch ) + F(TApp,SApp,QApp,PApp) Time = F( PArch, EffortArch) + F( PApp ,EffortApp ) Where, T = technology parameter S = scale parameter Q = quality parameter P = Process parameter
  • 52. Engineering Stage • Risk resolution, low-fidelity plain, schedule/technology-driven, risk sharing contracts • Team Size: • Architecture: Small team of software engineers Application: Small team of domain engineers Small and expert as possible • Product: Executable architecture, Production plans, Requirements • Focus: Design and integration, host development environment • Phases: Inception and elaboration Production Stage • Low risk, high-fidelity plan, cost-driven Fixed-price contracts/funding • Team Size: • Architecture: Small team of software engineers Application: As many as needed Large and diverse as possible • Product: Deliverable, useful function, tested baselines, warranted quality • Focus: Implement, test and maintain , Target technology • Phases: Construction and transition
  • 53. Modern Software Economics, Cultural Impact and Denouement
  • 54. Modern Software Economics • Finding and fixing a software problem after delivery costs 100 times more than finding and fixing the problem in early design phases. • You can compress software development schedules 25% of nominal, but no more. • For every $1 you spend on development, you will spend $2 on maintenance. • Software development and maintenance costs are primarily a function of the number of source line of code. • Variations among people account for the biggest difference in software productivity.
  • 55. • Only about 15% of software development effort is devoted to programming. • Software systems and product typically cost times as much per SLOC as individual software programs. Software-system product- an economy of scale is achievable. • Walkthroughs catch 60% of the errors. • 80% of the contribution comes from 20 % of the contributors. • The overall ratio of software to hardware costs is still growing. In 1955, it was 15:85; in 1985, 85:15.
  • 56. Culture Shifts • Lower level and mid-level manager are performers. • Requirements ad designs are fluid and tangible. • Ambitious demonstrations are encouraged. • Good and bad project performance is much more obvious earlier in the cycle. • Early increment will be immature. • Artifacts are less important early, more important later. • Real issues are surfaced and resolved systematically. • Quality assurance is everyone’s job, not a separate discipline. • Performance issues arise early in the life cycle. • Investments in automation are necessary. • Good software organization should be more profitable.
  • 57. Denouement • Sequentially transitioning from requirement to design to code to rest. • Achieving 100% completeness of each artefact at each life-cycle stage. • Treating all requirements, artifacts, components, and so forth, as equals. • Achieving high-fidelity traceability among all artifacts at each stage in the life cycle.
  • 58. Modern Iterative development process Framework • Continuous round-trip engineering from requirements to test at evolving levels of abstraction. • Achieving high-fidelity understanding of the drivers(the 20%) as early as practical • Evolving the artifacts in breadth and depth based on risk management priorities. • Postponing completeness and consistency analyses until later in the life cycle. • A better way to transition to a more mature iterative development process that supports automation technologies and modern architectures is to take the following shots:- • Ready - Do your homework. • Aim – Select a critical project. • Fire – Execute with vigor and follow-through.