This document discusses improving software economics through a balanced approach of reducing application size and complexity, improving development processes, using skilled personnel, creating better environments, and focusing on quality. It focuses on reducing size, particularly through using higher-level programming languages, object-oriented methods and visual modeling, reuse, and commercial components. It also discusses improving software processes by making each step more efficient, eliminating unnecessary steps, and employing concurrency where possible.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
Black box testing refers to testing software without knowledge of its internal implementation by focusing on inputs and outputs. There are several techniques including boundary value analysis, equivalence partitioning, state transition testing, and graph-based testing. Black box testing is useful for testing functionality, behavior, and non-functional aspects from the end user's perspective.
Algorithms and flowcharts ppt (seminar presentation)..Nagendra N
The document discusses algorithms and flowcharts. It defines an algorithm as an ordered sequence of steps to solve a problem and notes they are developed during the problem solving phase of programming. Flowcharts are used to visualize the logic and flow of an algorithm by showing the individual steps and connections. Several examples are provided of writing pseudocode algorithms and drawing corresponding flowcharts to solve problems involving calculations, comparisons, and conditional logic. Decision structures like if-then-else and nested ifs are also explained.
Software design is a process through which requirements are translated into a ― blueprint for constructing the software.
Initially, the blueprint shows how the software will look and what kind of data or components will be required to in making it.
The software is divided into separately named components, often called ‘MODULES’, that are used to detect problems at ease.
This follows the "DIVIDE AND CONQUER" conclusion. It's easier to solve a complex problem when you break it into manageable pieces.
This document discusses several software cost estimation techniques:
1. Top-down and bottom-up approaches - Top-down estimates system-level costs while bottom-up estimates costs of each module and combines them.
2. Expert judgment - Widely used technique where experts estimate costs based on past similar projects. It utilizes experience but can be biased.
3. Delphi estimation - Estimators anonymously provide estimates in rounds to reach consensus without group dynamics influencing individuals.
4. Work breakdown structure - Hierarchical breakdown of either the product components or work activities to aid bottom-up estimation.
The document discusses the process of requirements engineering. It begins by defining requirements engineering as the process of defining, documenting, and maintaining requirements. It then outlines the key tasks in requirements engineering: inception, elicitation, elaboration, negotiation, specification, validation, and management. For each task, it provides details on the goals and steps involved. Overall, the document provides a comprehensive overview of requirements engineering and the various activities that comprise the process.
The Delphi technique was developed to gain expert consensus on estimates without group influence. It can be adapted for software cost estimation by having estimators provide anonymous estimates in rounds. A coordinator summarizes estimates between rounds and asks outliers to justify differences, iterating until consensus. A variation allows group discussion with the coordinator but maintains anonymous estimating to focus on variances. Additional information may be needed if consensus is not reached.
This Presentation contains all the topics in design concept of software engineering. This is much more helpful in designing new product. You have to consider some of the design concepts that are given in the ppt
Black box testing refers to testing software without knowledge of its internal implementation by focusing on inputs and outputs. There are several techniques including boundary value analysis, equivalence partitioning, state transition testing, and graph-based testing. Black box testing is useful for testing functionality, behavior, and non-functional aspects from the end user's perspective.
Algorithms and flowcharts ppt (seminar presentation)..Nagendra N
The document discusses algorithms and flowcharts. It defines an algorithm as an ordered sequence of steps to solve a problem and notes they are developed during the problem solving phase of programming. Flowcharts are used to visualize the logic and flow of an algorithm by showing the individual steps and connections. Several examples are provided of writing pseudocode algorithms and drawing corresponding flowcharts to solve problems involving calculations, comparisons, and conditional logic. Decision structures like if-then-else and nested ifs are also explained.
Software design is a process through which requirements are translated into a ― blueprint for constructing the software.
Initially, the blueprint shows how the software will look and what kind of data or components will be required to in making it.
The software is divided into separately named components, often called ‘MODULES’, that are used to detect problems at ease.
This follows the "DIVIDE AND CONQUER" conclusion. It's easier to solve a complex problem when you break it into manageable pieces.
This document discusses several software cost estimation techniques:
1. Top-down and bottom-up approaches - Top-down estimates system-level costs while bottom-up estimates costs of each module and combines them.
2. Expert judgment - Widely used technique where experts estimate costs based on past similar projects. It utilizes experience but can be biased.
3. Delphi estimation - Estimators anonymously provide estimates in rounds to reach consensus without group dynamics influencing individuals.
4. Work breakdown structure - Hierarchical breakdown of either the product components or work activities to aid bottom-up estimation.
The document discusses the process of requirements engineering. It begins by defining requirements engineering as the process of defining, documenting, and maintaining requirements. It then outlines the key tasks in requirements engineering: inception, elicitation, elaboration, negotiation, specification, validation, and management. For each task, it provides details on the goals and steps involved. Overall, the document provides a comprehensive overview of requirements engineering and the various activities that comprise the process.
The Delphi technique was developed to gain expert consensus on estimates without group influence. It can be adapted for software cost estimation by having estimators provide anonymous estimates in rounds. A coordinator summarizes estimates between rounds and asks outliers to justify differences, iterating until consensus. A variation allows group discussion with the coordinator but maintains anonymous estimating to focus on variances. Additional information may be needed if consensus is not reached.
COCOMO II is a software cost estimation model that is an extension of the original COCOMO model from 1981. It consists of three submodels that provide increased accuracy in cost, effort, and schedule estimates as a project progresses from planning to design. COCOMO II can be used for project budgeting and scheduling, evaluating tradeoffs between cost and other factors, and making decisions around software development, reuse, and maintenance.
1. The document discusses software quality and reliability in engineering. It defines quality as software being bug-free, on time, meeting requirements, and maintainable. Reliability is the probability of failure-free operation over time in a given environment.
2. Ensuring quality involves preventing and detecting faults during all phases of the software development life cycle from requirements to testing. The V-model helps achieve quality by involving testers early on.
3. Reliability focuses on avoiding faults during design and detecting problems during all phases through techniques like fault tolerance, forecasting, and measuring metrics like MTBF.
This document compares principles of conventional and modern software management. It outlines 30 principles of conventional management including making quality a priority, giving products to customers early, and inspecting code. It then lists 10 principles of modern management such as using an iterative life-cycle process, establishing change management, and demonstrating intermediate artifacts. Finally, it discusses parameters for transitioning to an iterative process like prioritizing architecture, establishing process flexibility, and enabling team cohesion.
List of Software Development Model and MethodsRiant Soft
RiantSoft a Software Development Company derived the most useful and different types of Software Development Model for the users who want to know the development process. RiantSoft is specialized in custom software development with latest cutting edge technologies.
This document discusses software coding standards and testing. It includes four lessons:
Lesson One discusses coding standards, which define programming style through rules for formatting source code. Coding standards help make code more readable, maintainable, and reduce costs. Common aspects of coding standards include naming conventions and formatting.
Lesson Two discusses software testing strategies and principles. Testing strategies provide a plan for defining the testing approach. Common strategies include analytic, model-based, and methodical testing. Key principles of testing include showing presence of defects, early testing, and that exhaustive testing is impossible.
Lesson Three discusses software testing approaches and types but does not provide details.
Lesson Four discusses alpha and beta testing as
System testing evaluates a complete integrated system to determine if it meets specified requirements. It tests both functional and non-functional requirements. Functional requirements include business rules, transactions, authentication, and external interfaces. Non-functional requirements include performance, reliability, security, and usability. There are different types of system testing, including black box testing which tests functionality without knowledge of internal structure, white box testing which tests internal structures, and gray box testing which is a combination. Input, installation, graphical user interface, and regression testing are examples of different types of system testing.
Risk management involves identifying potential problems, assessing their likelihood and impacts, and developing strategies to address them. There are two main risk strategies - reactive, which addresses risks after issues arise, and proactive, which plans ahead. Key steps in proactive risk management include identifying risks through checklists, estimating their probability and impacts, developing mitigation plans, monitoring risks and mitigation effectiveness, and adjusting plans as needed. Common risk categories include project risks, technical risks, and business risks.
Black-box testing is a method of software testing that examines the functionality of an application based on the specifications.
White box testing is a testing technique, that examines the program structure and derives test data from the program logic/code
This document discusses 15 factors that influence quality and productivity in software development processes: individual ability, team communication, product complexity, appropriate notations, systematic approaches, change control, level of technology, level of reliability, problem understanding, available time, required skills, facilities and resources, adequacy of training, management skills, and appropriate goals. Each factor is described in 1-3 paragraphs on how it can impact quality and productivity.
The document provides an overview of software cost estimation, outlining various methods used including algorithmic models like COCOMO, expert judgement, top-down and bottom-up approaches, and estimation by analogy. It discusses COCOMO in detail, including the original COCOMO 81 model and updated COCOMO II model, and emphasizes the importance of calibration for accurate estimates.
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
Static analysis is a technique for analyzing source code structure without executing the program. It constructs symbol tables and control flow graphs to determine properties like variable initialization, usage, and flows. Symbolic execution assigns symbolic values to inputs instead of concrete values, propagating the symbols through computations to represent all outcomes with expressions over the symbols. It can derive path conditions for branches as functions of inputs to find input values that execute particular paths when the conditions are linear. Both techniques help validate programs by finding errors, anomalies, and deviations from standards.
The incremental model is a process where software development is divided into standalone modules, with each module going through requirements, design, implementation, and testing phases. Each subsequent release of a module adds additional functionality until the complete system is achieved. The key phases are requirement analysis to identify needed functionality, design and development of system functions, testing each existing and new function, and implementation through coding and upgrading the working product. The incremental model is best for projects with lengthy timelines, less skilled teams, or customers wanting early access to prioritized features.
The data design action translates data objects into data structures at the software component level.
Data Design is the first and most important design activity. Here the main issue is to select the appropriate data structure i.e. the data design focuses on the definition of data structures.
Data design is a process of gradual refinement, from the coarse "What data does your application require?" to the precise data structures and processes that provide it. With a good data design, your application's data access is fast, easily maintained, and can gracefully accept future data enhancements.
The document discusses software development lifecycles and strategies. It describes:
1) Common lifecycle activities like planning, development, testing and maintenance. Different models can be used depending on the product.
2) Solution strategies are developed to determine the nature of possible solutions and provide a framework for design and implementation. The best strategies are developed by trained groups using techniques like brainstorming.
3) The phased lifecycle model involves a series of defined activities with inputs, processes, and outputs at each phase. Resources are required to complete each defined phase.
The document discusses different types of software metrics that can be used to measure various aspects of software development. Process metrics measure attributes of the development process, while product metrics measure attributes of the software product. Project metrics are used to monitor and control software projects. Metrics need to be normalized to allow for comparison between different projects or teams. This can be done using size-oriented metrics that relate measures to the size of the software, or function-oriented metrics that relate measures to the functionality delivered.
This document provides an overview of advanced software engineering and software process improvement (SPI). It discusses SPI frameworks like the Capability Maturity Model (CMM) and defines what SPI entails. The document outlines the five activities in the SPI process: assessment and gap analysis, education and training, selection and justification, installation/migration, and evaluation. It also discusses SPI risks, success factors, maturity models, and returns on investment. Finally, it covers the People CMM and trends toward more agile SPI approaches.
This document provides an introduction to a unit on software testing and quality assurance. It outlines the core objectives and outcomes of the unit, which are to introduce concepts of software testing, understand different testing techniques, learn about automation testing and tools, and understand the importance of software quality assurance. It also discusses definitions of software testing and quality, the importance of software testing, testing objectives, stages of system testing including test strategy, plan, case design, and procedures. Finally, it covers topics related to quality management including definitions of quality, quality views, total quality management, quality control through statistical process control, and cultural changes for quality management.
SQA activities involve formulating quality plans, applying software engineering techniques, conducting reviews, implementing multi-tiered testing, enforcing process adherence, controlling changes, measuring change impact, performing audits, and keeping records. The key goals are to evaluate software quality, monitor adherence to standards and procedures throughout the development lifecycle, and ensure quality is maintained.
CASE tools and their effects on software qualityUtkarsh Agarwal
CASE tools can significantly improve software quality by automating tasks, reducing errors, and standardizing development processes. They provide functionality for data modeling, code generation, refactoring, documentation and more. While some aspects like requirements gathering require human input, overall CASE tools improve design, catch issues early, and allow developers to focus on other important work. Proper use of modeling languages and automation can dramatically enhance software quality across all stages of development.
COCOMO II is a software cost estimation model that is an extension of the original COCOMO model from 1981. It consists of three submodels that provide increased accuracy in cost, effort, and schedule estimates as a project progresses from planning to design. COCOMO II can be used for project budgeting and scheduling, evaluating tradeoffs between cost and other factors, and making decisions around software development, reuse, and maintenance.
1. The document discusses software quality and reliability in engineering. It defines quality as software being bug-free, on time, meeting requirements, and maintainable. Reliability is the probability of failure-free operation over time in a given environment.
2. Ensuring quality involves preventing and detecting faults during all phases of the software development life cycle from requirements to testing. The V-model helps achieve quality by involving testers early on.
3. Reliability focuses on avoiding faults during design and detecting problems during all phases through techniques like fault tolerance, forecasting, and measuring metrics like MTBF.
This document compares principles of conventional and modern software management. It outlines 30 principles of conventional management including making quality a priority, giving products to customers early, and inspecting code. It then lists 10 principles of modern management such as using an iterative life-cycle process, establishing change management, and demonstrating intermediate artifacts. Finally, it discusses parameters for transitioning to an iterative process like prioritizing architecture, establishing process flexibility, and enabling team cohesion.
List of Software Development Model and MethodsRiant Soft
RiantSoft a Software Development Company derived the most useful and different types of Software Development Model for the users who want to know the development process. RiantSoft is specialized in custom software development with latest cutting edge technologies.
This document discusses software coding standards and testing. It includes four lessons:
Lesson One discusses coding standards, which define programming style through rules for formatting source code. Coding standards help make code more readable, maintainable, and reduce costs. Common aspects of coding standards include naming conventions and formatting.
Lesson Two discusses software testing strategies and principles. Testing strategies provide a plan for defining the testing approach. Common strategies include analytic, model-based, and methodical testing. Key principles of testing include showing presence of defects, early testing, and that exhaustive testing is impossible.
Lesson Three discusses software testing approaches and types but does not provide details.
Lesson Four discusses alpha and beta testing as
System testing evaluates a complete integrated system to determine if it meets specified requirements. It tests both functional and non-functional requirements. Functional requirements include business rules, transactions, authentication, and external interfaces. Non-functional requirements include performance, reliability, security, and usability. There are different types of system testing, including black box testing which tests functionality without knowledge of internal structure, white box testing which tests internal structures, and gray box testing which is a combination. Input, installation, graphical user interface, and regression testing are examples of different types of system testing.
Risk management involves identifying potential problems, assessing their likelihood and impacts, and developing strategies to address them. There are two main risk strategies - reactive, which addresses risks after issues arise, and proactive, which plans ahead. Key steps in proactive risk management include identifying risks through checklists, estimating their probability and impacts, developing mitigation plans, monitoring risks and mitigation effectiveness, and adjusting plans as needed. Common risk categories include project risks, technical risks, and business risks.
Black-box testing is a method of software testing that examines the functionality of an application based on the specifications.
White box testing is a testing technique, that examines the program structure and derives test data from the program logic/code
This document discusses 15 factors that influence quality and productivity in software development processes: individual ability, team communication, product complexity, appropriate notations, systematic approaches, change control, level of technology, level of reliability, problem understanding, available time, required skills, facilities and resources, adequacy of training, management skills, and appropriate goals. Each factor is described in 1-3 paragraphs on how it can impact quality and productivity.
The document provides an overview of software cost estimation, outlining various methods used including algorithmic models like COCOMO, expert judgement, top-down and bottom-up approaches, and estimation by analogy. It discusses COCOMO in detail, including the original COCOMO 81 model and updated COCOMO II model, and emphasizes the importance of calibration for accurate estimates.
The document discusses software quality assurance (SQA) and defines key terms related to quality. It describes SQA as encompassing quality management, software engineering processes, formal reviews, testing strategies, documentation control, and compliance with standards. Specific SQA activities mentioned include developing an SQA plan, participating in process development, auditing work products, and ensuring deviations are addressed. The document also discusses software reviews, inspections, reliability, and the reliability specification process.
Static analysis is a technique for analyzing source code structure without executing the program. It constructs symbol tables and control flow graphs to determine properties like variable initialization, usage, and flows. Symbolic execution assigns symbolic values to inputs instead of concrete values, propagating the symbols through computations to represent all outcomes with expressions over the symbols. It can derive path conditions for branches as functions of inputs to find input values that execute particular paths when the conditions are linear. Both techniques help validate programs by finding errors, anomalies, and deviations from standards.
The incremental model is a process where software development is divided into standalone modules, with each module going through requirements, design, implementation, and testing phases. Each subsequent release of a module adds additional functionality until the complete system is achieved. The key phases are requirement analysis to identify needed functionality, design and development of system functions, testing each existing and new function, and implementation through coding and upgrading the working product. The incremental model is best for projects with lengthy timelines, less skilled teams, or customers wanting early access to prioritized features.
The data design action translates data objects into data structures at the software component level.
Data Design is the first and most important design activity. Here the main issue is to select the appropriate data structure i.e. the data design focuses on the definition of data structures.
Data design is a process of gradual refinement, from the coarse "What data does your application require?" to the precise data structures and processes that provide it. With a good data design, your application's data access is fast, easily maintained, and can gracefully accept future data enhancements.
The document discusses software development lifecycles and strategies. It describes:
1) Common lifecycle activities like planning, development, testing and maintenance. Different models can be used depending on the product.
2) Solution strategies are developed to determine the nature of possible solutions and provide a framework for design and implementation. The best strategies are developed by trained groups using techniques like brainstorming.
3) The phased lifecycle model involves a series of defined activities with inputs, processes, and outputs at each phase. Resources are required to complete each defined phase.
The document discusses different types of software metrics that can be used to measure various aspects of software development. Process metrics measure attributes of the development process, while product metrics measure attributes of the software product. Project metrics are used to monitor and control software projects. Metrics need to be normalized to allow for comparison between different projects or teams. This can be done using size-oriented metrics that relate measures to the size of the software, or function-oriented metrics that relate measures to the functionality delivered.
This document provides an overview of advanced software engineering and software process improvement (SPI). It discusses SPI frameworks like the Capability Maturity Model (CMM) and defines what SPI entails. The document outlines the five activities in the SPI process: assessment and gap analysis, education and training, selection and justification, installation/migration, and evaluation. It also discusses SPI risks, success factors, maturity models, and returns on investment. Finally, it covers the People CMM and trends toward more agile SPI approaches.
This document provides an introduction to a unit on software testing and quality assurance. It outlines the core objectives and outcomes of the unit, which are to introduce concepts of software testing, understand different testing techniques, learn about automation testing and tools, and understand the importance of software quality assurance. It also discusses definitions of software testing and quality, the importance of software testing, testing objectives, stages of system testing including test strategy, plan, case design, and procedures. Finally, it covers topics related to quality management including definitions of quality, quality views, total quality management, quality control through statistical process control, and cultural changes for quality management.
SQA activities involve formulating quality plans, applying software engineering techniques, conducting reviews, implementing multi-tiered testing, enforcing process adherence, controlling changes, measuring change impact, performing audits, and keeping records. The key goals are to evaluate software quality, monitor adherence to standards and procedures throughout the development lifecycle, and ensure quality is maintained.
CASE tools and their effects on software qualityUtkarsh Agarwal
CASE tools can significantly improve software quality by automating tasks, reducing errors, and standardizing development processes. They provide functionality for data modeling, code generation, refactoring, documentation and more. While some aspects like requirements gathering require human input, overall CASE tools improve design, catch issues early, and allow developers to focus on other important work. Proper use of modeling languages and automation can dramatically enhance software quality across all stages of development.
The document provides an introduction to software engineering and discusses the software development process, including project management. It describes various software development models like the waterfall model and iterative development. Key aspects of project management are also covered, such as feasibility studies, requirements definition, scheduling techniques, and the role of the project manager.
The document discusses design engineering in software development. It explains that design is the first technical activity required after requirements engineering to build a system. There are two phases of design - diversification to gather raw materials, and convergence to create the final product. The goal of design engineering is to produce a model that is bug-free, suitable for its intended uses, and easy to use. Key design concepts discussed include abstraction, architecture, modularity, information hiding, and refinement. The document also covers different design models and quality attributes to guide good design.
Agile Software Architecture
Containing a review of "Why?" software architecture exists as a discipline; a fleet discussion of Fairbanks' risk driven architecture approach; and 2 Top Techniques from Coplien & Bjørnvig's Partitioning Principles for Architecture for Agile Delivery.
Culminating in a Proposal for how an architecture can enable continuous agile delivery.
Also some Ways To Do It Wrong.
Featuring the amazing Conway's Law, and such Horrors as the 15 Layer Architecture.
This document discusses human-computer interaction (HCI) and usability engineering. It covers HCI in the software development process, including design rules, evaluation techniques, and universal design. Specific topics covered include the software life cycle, usability engineering, iterative design and prototyping, design rationale, and evaluation methods. Prototyping techniques like storyboards and simulations are also discussed. The goal of the document is to provide an overview of how usability and user experience is incorporated into the software engineering process.
This presentation defines software architecture, describes it's value for an organization producing software, and describes the characteristics of a successful software architect.
Science and Engineering
Discover
Relationships that exist but are not found
Formulas; chemical composition, d=r*t; calories in fats, carbohydrates, proteins; experimentation;
Astrophysics – origins of the universe
Build
Apply principles of science and mathematics to real needs, commodities, structures, products, etc.
Software Engineering; Software Development
The document provides information on various DevOps concepts through a question and answer format. It defines design patterns as solutions to common problems faced by developers that represent best practices. It describes continuous deployment as instrumenting important project life cycle steps when moving code to production. It distinguishes between functional testing which targets business goals and requirements, and non-functional testing which focuses on aspects like performance and security. It explains the differences between white box testing which uses internal knowledge and black box testing which does not. It provides examples of resilience test tools like Hystrix and Chaos Monkey. It describes extreme programming as an agile methodology focused on customer satisfaction and team collaboration. It defines pair programming as two programmers working together on the same code. Finally
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Mozaic Works
This document discusses software architecture and how it relates to code. It suggests that software architecture should be more accessible to developers and embodied in the code through architecturally evident coding styles. Components can be extracted from code if naming conventions, packaging, and other patterns are used. Both diagrams and code should reflect the architectural abstractions. Software architecture models can be maintained as code to keep them in sync with implementation changes.
"To be tested a system has to be designed to be tested"
Eberhardt Rechtin, The Art Of System Architecting
Testing is one of the main activities through which we gather data to assess the quality of our software; this makes testability an important attribute of software--not only for development, but also for maintenance and bug fixing.
Design for testability is a term that has its origin in hardware design, where the concept was introduced in order to make it easier testing circuits while reducing the costs of doing so.
In this talk I'll show how to translate this concept to the software domain along with the consequences on various aspects of the development activities, both from the technical point of view (e.g., design, code quality, choice of frameworks, etc.), and the product management point of view (e.g., management of team dependencies, delivery time, costs, etc.). I'll provide examples based on real world experience, both for the technical and the management aspects.
An introduction to Test-First Behavior-Driven Development, and acceptance testing with Gherkin, with some real-life Gherkin examples. Content created for C# code, but the principles do apply to other languages/environments.
This document provides an overview of object-oriented programming concepts including classes, objects, encapsulation, abstraction, inheritance, and polymorphism. It discusses different programming languages like Java and C++ that use the object-oriented paradigm. Specific concepts covered include defining classes with attributes and methods, creating object instances of classes, encapsulating data within classes, and abstract data types. Examples are provided to illustrate classes like Account and Circle and their corresponding objects.
Software Engineering with Objects (M363) Final Revision By Kuwait10Kuwait10
This document provides an overview of software engineering concepts covered in various course units. It begins with introductions to approaches to software development, requirements concepts, and modeling. Key topics covered include the software development life cycle, requirements elicitation and analysis techniques, types of requirements (functional and non-functional), modeling languages like UML, and risks and traceability in software projects. The document also lists contents for each of the 14 course units.
The document discusses HCI in the system software development lifecycle. It describes several key stages in the lifecycle including requirements specification, architectural design, detailed design, verification and validation. It also discusses usability engineering, iterative design and prototyping techniques, design rationale documentation approaches like IBIS and QOC notations, and capturing psychological design rationale through user testing. The overall goal is to integrate usability considerations throughout the entire software development process from requirements to implementation.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
The document discusses the role of the modern software architect. It provides definitions of a software architect as someone who makes high-level design choices and dictates technical standards. The main responsibilities of an architect are to limit development choices by choosing standards and frameworks and communicating designs to developers. The document also discusses how the role of the architect changes with the size of the organization and types of architectures like enterprise, solution, and application architects. It notes challenges with more agile development where architecture may not receive focus and issues like technical debt can increase over time.
Docker Enables DevOps - Keep C.A.L.M.S. and Docker on ...Boyd Hemphill
The pillars of DevOps are Culture, Automation, Measurement and Sharing. Docker is a rare tool at enables DevOps through all 4 pillars. These slides take a look at how Docker can affect each pillar in your organization through a Lean lens.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
The Microsoft 365 Migration Tutorial For Beginner.pptxoperationspcvita
This presentation will help you understand the power of Microsoft 365. However, we have mentioned every productivity app included in Office 365. Additionally, we have suggested the migration situation related to Office 365 and how we can help you.
You can also read: https://www.systoolsgroup.com/updates/office-365-tenant-to-tenant-migration-step-by-step-complete-guide/
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
How information systems are built or acquired puts information, which is what they should be about, in a secondary place. Our language adapted accordingly, and we no longer talk about information systems but applications. Applications evolved in a way to break data into diverse fragments, tightly coupled with applications and expensive to integrate. The result is technical debt, which is re-paid by taking even bigger "loans", resulting in an ever-increasing technical debt. Software engineering and procurement practices work in sync with market forces to maintain this trend. This talk demonstrates how natural this situation is. The question is: can something be done to reverse the trend?
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/temporal-event-neural-networks-a-more-efficient-alternative-to-the-transformer-a-presentation-from-brainchip/
Chris Jones, Director of Product Management at BrainChip , presents the “Temporal Event Neural Networks: A More Efficient Alternative to the Transformer” tutorial at the May 2024 Embedded Vision Summit.
The expansion of AI services necessitates enhanced computational capabilities on edge devices. Temporal Event Neural Networks (TENNs), developed by BrainChip, represent a novel and highly efficient state-space network. TENNs demonstrate exceptional proficiency in handling multi-dimensional streaming data, facilitating advancements in object detection, action recognition, speech enhancement and language model/sequence generation. Through the utilization of polynomial-based continuous convolutions, TENNs streamline models, expedite training processes and significantly diminish memory requirements, achieving notable reductions of up to 50x in parameters and 5,000x in energy consumption compared to prevailing methodologies like transformers.
Integration with BrainChip’s Akida neuromorphic hardware IP further enhances TENNs’ capabilities, enabling the realization of highly capable, portable and passively cooled edge devices. This presentation delves into the technical innovations underlying TENNs, presents real-world benchmarks, and elucidates how this cutting-edge approach is positioned to revolutionize edge AI across diverse applications.
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Improving software econimics
1. 23 1
Chapter 3 – ImprovingChapter 3 – Improving
Software EconomicsSoftware Economics
Part 1 of 2Part 1 of 2
2. 2323 22
Balanced AttackBalanced Attack
Can improve software economicsCan improve software economics
Easy to do so and have poor resultsEasy to do so and have poor results
Key is a ‘balanced’ approach; patientKey is a ‘balanced’ approach; patient
Five Key Initiatives – In Order:Five Key Initiatives – In Order:
• Reducing theReducing the size and/or complexitysize and/or complexity of applicationof application
• Improving the developmentImproving the development processprocess itselfitself
• UsingUsing more-skilled personnelmore-skilled personnel and creation of betterand creation of better
teamsteams
• Creating better ‘Creating better ‘environmentsenvironments’ with appropriate’ with appropriate
tools and technology to foster improvementtools and technology to foster improvement
• Re-lookingRe-looking at Qualityat Quality
3. 2323 33
This lectureThis lecture
We will concentrate onWe will concentrate on
• Reducing the Size (most slides), and aReducing the Size (most slides), and a
little onlittle on
• Looking at the Process.Looking at the Process.
4. 2323 44
Cost Model Parameters Trends
Size
Abstraction and component-based
development technologies
Higher Order Languages (C++, Java, VB,
OO (analysis, design, programming)
Reuse
Commercial Components
Process
Methods and techniques Iterative Development
Process Maturity Models
Architecture-first development
Acquisition reform
Personnel
People factors Training and personnel skill development
Teamwork
Win-win cultures
Environment
Automation technologies and tools
Integrated tools (visual modeling, compiler, editors,
debuggers, CMS, ….
Open Systems
Hardware platform performance
Automation of coding, documents, testing, analyses
Quality
Performance, reliability, accuracy Hardware platform performance
Demonstration-based assessment
Statistical quality control
5. 2323 55
Comments on Overall ApproachesComments on Overall Approaches
Significant interdependencies are apparent!Significant interdependencies are apparent!
Examples:Examples:
• SomeSome toolstools ((environmentenvironment) can bring about a) can bring about a
reduction inreduction in sizesize andand processprocess improvementimprovement
(process).(process).
• UI and GUIs today (tools –UI and GUIs today (tools – environmentenvironment) GUI) GUI
Builders, affectBuilders, affect processprocess andand qualityquality……
• ImprovedImproved processprocess (use-case driven…) => end user(use-case driven…) => end user
functionality drives the process thus favorablyfunctionality drives the process thus favorably
impactingimpacting qualityquality….….
• A ‘host’ of other interdependencies…A ‘host’ of other interdependencies…
6. 2323 66
1. Reducing Software Product Size1. Reducing Software Product Size
The larger the product, the moreThe larger the product, the more
expensive it is ‘per line.’ Fact.expensive it is ‘per line.’ Fact.
Complicated due toComplicated due to
• Component-based developmentComponent-based development
• Automatic code generationAutomatic code generation
• ““Instruction Explosion”Instruction Explosion”
• GUI buildersGUI builders
• 4GLs4GLs
• Modeling LanguagesModeling Languages
• Executable code size often increases!Executable code size often increases!
7. 2323 77
1. Reducing Software Product Size:1. Reducing Software Product Size:
A. LanguagesA. Languages
Function Point metrics:Function Point metrics:
Language independentLanguage independent!!
External user inputs, outputs, internal logicalExternal user inputs, outputs, internal logical
data groups, external data interfaces, anddata groups, external data interfaces, and
external inquiries.external inquiries.
SLOC metrics:SLOC metrics:
usefuluseful afterafter a candidate solution is formulateda candidate solution is formulated
and implementation language is known.and implementation language is known.
Many comparisons of function pointsMany comparisons of function points
to lines of code.to lines of code.
8. 2323 88
Comparison TableComparison Table
LANGUAGE SLOC PER UFP
Assembler Language 320
C 128
Fortran 77 105
Cobol 85 91
Ada 83 71
C++ 56
Ada 95 55
Java 55
Visual Basic 35
9. 2323 99
More on Comparisons: LanguagesMore on Comparisons: Languages
Use table as a general comparison guide only.Use table as a general comparison guide only.
Languages (in general) are often best suitedLanguages (in general) are often best suited
for ‘classes of problems’ (domain of usage)for ‘classes of problems’ (domain of usage)
• Web-based apps: Java vs COBOLWeb-based apps: Java vs COBOL
• Transaction processing: Java vs COBOLTransaction processing: Java vs COBOL
• Systems programming: Assembler vs C vs JavaSystems programming: Assembler vs C vs Java
• Prototyping UI: VB versus Java (varies…)Prototyping UI: VB versus Java (varies…)
Shows ‘Shows ‘level of expressivenesslevel of expressiveness.’.’
Read through comparisons… pros and cons:Read through comparisons… pros and cons:
• C to C++C to C++
• JavaJava
10. 2323 1010
More on Comparisons: LanguagesMore on Comparisons: Languages
Function Points focus more on ‘Function Points focus more on ‘functionalityfunctionality.’.’
The implementingThe implementing programming language sizeprogramming language size
can becan be inferredinferred from function point count.from function point count.
Not simple to compute function points tho…Not simple to compute function points tho…
• Automatic code generators (CASE; GUI) can reduceAutomatic code generators (CASE; GUI) can reduce
sizesize of ‘human generated’ codeof ‘human generated’ code less time; fewerless time; fewer
team members…(helps cost; efficiency of automaticteam members…(helps cost; efficiency of automatic
code generators? Function point computation?)code generators? Function point computation?)
• Commercial DBMSs, GUI Builders, middleware, …Commercial DBMSs, GUI Builders, middleware, …
reduce the amount of code to be developed…reduce the amount of code to be developed…
Size may be larger! How are fpoints computed here???Size may be larger! How are fpoints computed here???
• Others!!Others!!
11. 2323 1111
Level of abstraction and functionalityLevel of abstraction and functionality
– benefits and ‘expressiveness’– benefits and ‘expressiveness’
Reducing size changes ‘level of abstraction’Reducing size changes ‘level of abstraction’
allowing us to focus on architectureallowing us to focus on architecture, …, … easier toeasier to
understand, reuse, maintain. (may importunderstand, reuse, maintain. (may import
packages of classes and objects…)packages of classes and objects…)
• We can talk about layers, dependencies, interfaces,We can talk about layers, dependencies, interfaces,
services!services!
• Can talk about classes, subsystems, packages.Can talk about classes, subsystems, packages.
• These are serious abstractions!These are serious abstractions!
But, these higher-level abstractions are often highBut, these higher-level abstractions are often high
users of storage, and communications bandwidth…users of storage, and communications bandwidth…
12. 2323 1212
A package is aA package is a general purpose mechanismgeneral purpose mechanism forfor
organizing elements into groups (use cases;organizing elements into groups (use cases;
classes, other model elements…)classes, other model elements…)
Package is aPackage is a model elementmodel element which can containwhich can contain
otherother model elementsmodel elements
Package ExpressivenessPackage Expressiveness
Package Name
Packages may contain many model
elements: use case models, classes,
objects, subsystems, components,
other packages.
General grouping for organizational
purposes
May have tremendous ‘expressiveness’
Think Math class in Java…
13. 2323 1313
Subsystem - ExpressivenessSubsystem - Expressiveness
AA combinationcombination of a packageof a package
• groups similar model elementsgroups similar model elements andand
• aa classclass has behaviors via its methods.has behaviors via its methods.
(classes provide / encapsulate behaviors(classes provide / encapsulate behaviors
or services)or services)
SubsystemsSubsystems RealizeRealize one or moreone or more
interfaces whichinterfaces which definedefine its behaviorsits behaviors
<<subsystem>>
Subsystem Name
Interface
(a class)
nterface
Realization
Subsystem
Generally has classes
associated that
provide the holistic
service of the
subsystem…
14. 2323 1414
Component
Name
Design Model Implementation Model
<<subsystem>>
Component Name
Component
Interface
Component
Interface
Subsystems and ComponentsSubsystems and Components
ComponentsComponents are theare the physical realizationphysical realization ofof
anan abstractionabstraction in the designin the design
• physical realization can exist on many levelsphysical realization can exist on many levels
• consider the realization of a presentaton layerconsider the realization of a presentaton layer
modeled as a ‘component.’modeled as a ‘component.’
Components (in the implementationComponents (in the implementation
model) can be used tomodel) can be used to represent therepresent the
subsystemssubsystems from the design model.from the design model.
15. 2323 1515
1. Reducing Software Product Size:1. Reducing Software Product Size:
B.B. OO Methods and Visual ModelingOO Methods and Visual Modeling
Assertions abound re benefits of OOAssertions abound re benefits of OO
methods on productivity and qualitymethods on productivity and quality
• Not terribly locked in concrete yetNot terribly locked in concrete yet
• High costs of OO training using OOSE,High costs of OO training using OOSE,
modeling languages like UML andmodeling languages like UML and
comprehensive,comprehensive, configurable processesconfigurable processes likelike
the RUP andthe RUP and many technologiesmany technologies……
OO technology reduces size (amongOO technology reduces size (among
other things), but there is no free lunch.other things), but there is no free lunch.
16. 2323 1616
B. OO Methods and Visual ModelingB. OO Methods and Visual Modeling
Size is not everything…Size is not everything…
OO technology approaches –OO technology approaches – so many other benefitsso many other benefits::
• Encourage aEncourage a commoncommon vocabularyvocabulary
Glossary; domain model; – artifacts ; object ‘concepts’ andGlossary; domain model; – artifacts ; object ‘concepts’ and
termsterms
• Support continuous integrationSupport continuous integration
Easy to talk about subsystems, classes, interfaces…Easy to talk about subsystems, classes, interfaces…
Architecture first approach – for stability, planning teams,Architecture first approach – for stability, planning teams,
iteration plans, …iteration plans, …
• Architecture provides aArchitecture provides a clear separation of concernsclear separation of concerns – for– for
development in paralleldevelopment in parallel; configuration;; configuration; integrity ofintegrity of
development…development…
And then, when you consider theAnd then, when you consider the RUP as a process builtRUP as a process built
around OO technologyaround OO technology, there are a, there are a hosthost of additionalof additional
benefits….benefits….
17. 2323 1717
1. Reducing Software Product Size:1. Reducing Software Product Size:
C.C. ReuseReuse
Always had ‘reuse’ with stored functions/subpgmsAlways had ‘reuse’ with stored functions/subpgms
Many forms of reuseMany forms of reuse::
Old stuff: data descriptions; documents, and a host ofOld stuff: data descriptions; documents, and a host of
similar, old artifacts, designs, architectures…similar, old artifacts, designs, architectures…
fromfrom allall phasesphases of software developmentof software development
Common architectures; processes, common environments...Common architectures; processes, common environments...
Very common during monolithic type developmentVery common during monolithic type development..
Differences in platforms / environments hasDifferences in platforms / environments has
hurt reuse potentialhurt reuse potential
Common Microsoft platforms: - counter exampleCommon Microsoft platforms: - counter example
Linux; MACs, resulting fromLinux; MACs, resulting from distributing applicationsdistributing applications!!
18. 2323 1818
C. Reuse (continued)C. Reuse (continued)
Main reason for Reuse or ‘lack’ thereof:Main reason for Reuse or ‘lack’ thereof: moneymoney..
(not addressing commercial components…)(not addressing commercial components…)
Costs toCosts to buildbuild reusable and configure reusable components.reusable and configure reusable components.
Must be able to justify.Must be able to justify.
Can reuse be justified across many projects?Can reuse be justified across many projects?
Some commercial organizations focused on sellingSome commercial organizations focused on selling
commercial components.commercial components.
Very few success storiesVery few success stories for software componentfor software component
reusereuse
• exceptions: operation systems, middleware, GUIexceptions: operation systems, middleware, GUI
Builders, other obvious ones.Builders, other obvious ones.
Most developersMost developers dodo undertake some kind of reuseundertake some kind of reuse
– just perhaps not as formalized…– just perhaps not as formalized…
19. 2323 1919
1. Reducing Software Product Size:1. Reducing Software Product Size:
D. Commercial ComponentsD. Commercial Components
Major trend –Major trend – buy commercial componentsbuy commercial components..
Saves custom developmentSaves custom development
Usually needs tailoringUsually needs tailoring
Certainly pros and cons.Certainly pros and cons.
Bottom line: may well haveBottom line: may well have global impacts on:global impacts on:
• qualityquality
• costcost
• supportability, and thesupportability, and the
• architecturearchitecture..
20. 2323 2020
APPROACH ADVANTAGES DISADVANTAGES
Commercial Components Predictable license costs Frequent upgrades
Broadly used, mature technology Up-front license fees
Available now Recurring maintenance fees
Dedicated support organizations Dependency on vendor
Hardware/software independence Run-time efficiency sacrifices
Rich in functionality Functionality constraints
Integration not always trivial
No control over upgrades or maintenance
Unnecessary features that consume extra
resources
Often inadequate reliability and stability
Multiple vendor incompatibilities
Custom Development Complete change freedom Expensive, unpredictable development
Smaller, often simpler implementations Unpredictable availability date
Often better performance Underdefined maintenance model
Control of development and enhancement Often immature and fragile
Single-platform dependency
Drain on expert resources
Advantages and Disadvantages of Commercial Components versus Custom Software
21. 2323 2121
2. Improving Software2. Improving Software
ProcessesProcesses
Development projects are complex undertakingsDevelopment projects are complex undertakings
• Some activities done in parallel; others sequential.Some activities done in parallel; others sequential.
• Some activities: overhead; some productionSome activities: overhead; some production..
Production activitiesProduction activities the project itself – requirementsthe project itself – requirements
elicitation and modeling, analysis, design,elicitation and modeling, analysis, design,
implementation…implementation…
Overhead activitiesOverhead activities planning, progress monitoring,planning, progress monitoring,
risk assessment, financial assessments, configurationrisk assessment, financial assessments, configuration
control, quality assessment, integration, testing, latecontrol, quality assessment, integration, testing, late
rework, management, personnel training, etc….rework, management, personnel training, etc….
Objective: minimize overhead and directObjective: minimize overhead and direct
these energies toward production activities.these energies toward production activities.
22. 2323 2222
2. Improving Software Processes – (cont.)2. Improving Software Processes – (cont.)
• It is all aboutIt is all about process!process!
• A high-qualityA high-quality processprocess reduces:reduces:
Required effortRequired effort and thusand thus scheduleschedule
Project time yet withProject time yet with improved qualityimproved quality..
ThreeThree genericgeneric improvement scenarios:improvement scenarios:
• ImproveImprove efficiencyefficiency of eachof each stepstep in processin process
• Eliminate some stepsEliminate some steps in the processin the process
• Undertake the same number of steps, butUndertake the same number of steps, but
employ concurrency where possibleemploy concurrency where possible
23. 2323 2323
2. Improving Software Processes -2. Improving Software Processes -
continuedcontinued
First approachFirst approach
• more efficient steps – older approach - is good,more efficient steps – older approach - is good,
• more ROI on second (fewer steps) andmore ROI on second (fewer steps) and
• third (concurrency in activities)third (concurrency in activities)
We want the highest quality system with fewestWe want the highest quality system with fewest
iterations in least time.iterations in least time.
• Must eliminateMust eliminate rework and late scraprework and late scrap – fixing things up!– fixing things up!
• Integration testing is culprit.Integration testing is culprit.
• Fixing things up as a result of integration and system testsFixing things up as a result of integration and system tests
are killers!!!are killers!!!
OurOur ProcessProcess must reduce the probability of latemust reduce the probability of late
rework!rework!
• Does the RUP facilitate this? If so, How?Does the RUP facilitate this? If so, How?
Editor's Notes
There are many different definitions and uses for subsystems. This is the definition we will focus on in this course.