Because of the widespread applications of software products in social and personal life, the quality of software products can have profound impact on our personal well-being and societal harmony. Software engineers must handle unique engineering problems, producing software with known characteristics and reliability. This requirement calls for software engineers who possess a proper set of knowledge, skills, training, and experience in professional practice.
The professional community is often represented by one or more professional societies; those societies publish codes of ethics and professional conduct as well as criteria for admittance to the community. Those criteria form the basis for accreditation and licensing activities and may be used as a measure to determine engineering competence or negligence. Software engineering economics is about making decisions related to software engineering in a business context.
The success of a software product, service, and solution depends on good business management. Yet, in many companies and organizations, software business relationships to software development and engineering remain vague. This knowledge area KA provides an overview on software engineering economics. Economics is the study of value, costs, resources, and their relationship in a given context or situation. In the discipline of software engineering, activities have costs, but the resulting software itself has economic attributes as well.
Software engineering economics provides a way to study the attributes of software and software processes in a systematic way that relates them to economic measures. These economic measures can be weighed and analyzed when making decisions that are within the scope of a software organization and those within the integrated scope of an entire producing or acquiring business. Software engineering economics is concerned with aligning software technical decisions with the business goals of the organization.
Navigation Toggle navigation. This is particularly relevant in enterprise IT organisations which employ software engineers.
Core software engineering competencies. Requirements definition and management REQM. Systems design DESN. Software design SWDN. Methods and tools METL. Configuration management CFMG. T esting TEST. Systems integration and build SINT. Release and deployment RELM. Quality assurance QUAS. Measurement MEAS. Safety engineering SFEN. Accurate measurement of productivity must include total effort used to satisfy the exit criteria of a software process, activity, or task; for example, the effort required to correct defects discovered during software testing must be included in software development productivity.
Calculation of productivity must account for the context in which the work is accomplished. For example, the effort to correct discovered defects will be included in the productivity calculation of a software team if team members correct the defects they find—as in unit testing by software developers or in a cross-functional agile team. Or the productivity calculation may include either the effort of the software developers or the effort of an independent testing team, depending on who fixes the defects found by the independent testers.
Note that this example refers to the effort of teams of developers or teams of testers and not to individuals. Software productivity calculated at the level of individuals can be misleading because of the many factors that can affect the individual productivity of software engineers.
Standardized definitions and counting rules for measurement of software processes and work products are necessary to provide standardized measurement results across projects within an organization, to populate a repository of historical data that can be analyzed to identify software processes that need to be improved, and to build predictive models based on accumulated data.
In the example above, definitions of software defects and staff-hours of testing effort plus counting rules for defects and effort would be necessary to obtain satisfactory measurement results. Software processes may be institutionalized by adoption within the local organizational unit or across larger units of an enterprise. The quality of process and product measurement results is primarily determined by the reliability and validity of the measured results. Measurements that do not satisfy these quality criteria can result in incorrect interpretations and faulty software process improvement initiatives.
Other desirable properties of software measurements include ease of collection, analysis, and presentation plus a strong correlation between cause and effect.
The Software Engineering Measurement topic in the Software Engineering Management KA describes a process for implementing a software measurement program. Software information models allow modeling, analysis, and prediction of software process and software product attributes to provide answers to relevant questions and achieve process and product improvement goals.
Needed data can be collected and retained in a repository; the data can be analyzed and models can be constructed. Validation and refinement of software information models occur during software projects and after projects are completed to ensure that the level of accuracy is sufficient and that their limitations are known and understood. Software information models may also be developed for contexts other than software projects; for example, a software information model might be developed for processes that apply across an organization, such as software configuration management or software quality assurance processes at the organizational level.
Analysis-driven software information model building involves the development, calibration, and evaluation of a model. A software information model is developed by establishing a hypothesized transformation of input variables into desired outputs; for example, product size and complexity might be transformed into estimated effort needed to develop a software product using a regression equation developed from observed data from past projects.
A model is calibrated by adjusting parameters in the model to match observed results from past projects; for example, the exponent in a nonlinear regression model might be changed by applying the regression equation to a different set of past projects other than the projects used to develop the model.
A model is evaluated by comparing computed results to actual outcomes for a different set of similar data. There are three possible evaluation outcomes:. Continuous evaluation of the model may indicate a need for adjustments over time as the context in which the model is applied changes. It can be used to guide analysis-driven software information model building; results obtained from the software information model can be used to guide process improvement.
Software process measurement techniques are used to collect process data and work product data, transform the data into useful information, and analyze the information to identify process activities that are candidates for improvement. In some cases, new software processes may be needed. Process measurement techniques also provide the information needed to measure the effects of process improvement initiatives.
Process measurement techniques can be used to collect both quantitative and qualitative data. The purpose of quantitative process measurement techniques is to collect, transform, and analyze quantitative process and work product data that can be used to indicate where process improvements are needed and to assess the results of process improvement initiatives. Quantitative process measurement techniques are used to collect and analyze data in numerical form to which mathematical and statistical techniques can be applied.
Quantitative process data can be collected as a byproduct of software processes. For example, the number of defects discovered during software testing and the staff-hours expended can be collected by direct measurement, and the productivity of defect discovery can be derived by calculating defects discovered per staff-hour. Basic tools for quality control can be used to analyze quantitative process measurement data e.
In addition, various statistical techniques can be used that range from calculation of medians and means to multivariate analysis methods see Statistical Analysis in the Engineering Foundations KA. Data collected using quantitative process measurement techniques can also be used as inputs to simulation models see Modeling, Prototyping, and Simulation in the Engineering Foundations KA ; these models can be used to assess the impact of various approaches to software process improvement.
ODC can be used to group detected defects into categories and link the defects in each category to the software process or software processes where a group of defects originated see Defect Characterization in the Software Quality KA. Software interface defects, for example, may have originated during an inadequate software design process; improving the software design process will reduce the number of software interface defects.
ODC can provide quantitative data for applying root cause analysis. Statistical Process Control can be used to track process stability, or the lack of process stability, using control charts. Qualitative process measurement techniques— including interviews, questionnaires, and expert judgment—can be used to augment quantitative process measurement techniques.
Group consensus techniques, including the Delphi technique, can be used to obtain consensus among groups of stakeholders. Software process tools support many of the notations used to define, implement, and manage individual software processes and software life cycle models. In some cases, software process tools allow different types of analyses and simulations for example, discrete event simulation.
In addition, general purpose business tools, such as a spreadsheet, may be useful. Computer-Assisted Software Engineering CASE tools can reinforce the use of integrated processes, support the execution of process definitions, and provide guidance to humans in performing well-defined processes. Simple tools such as word processors and spreadsheets can be used to prepare textual descriptions of processes, activities, and tasks; these tools also support traceability among the inputs and outputs of multiple software processes such as stakeholder needs analysis, software requirements specification, software architecture, and software detailed design as well as the results of software processes such as documentation, software components, test cases, and problem reports.
Most of the knowledge areas in this Guide describe specialized tools that can be used to manage the processes within that KA. In particular, see the Software Configuration Management KA for a discussion of software configuration management tools that can be used to manage the construction, integration, and release processes for software products.
Other tools, such as those for requirements management and testing, are described in the appropriate KAs. Software process tools can support projects that involve geographically dispersed virtual teams. Increasingly, software process tools are available through cloud computing facilities as well as through dedicated infrastructures.
A project control panel or dashboard can display selected process and product attributes for software projects and indicate measurements that are within control limits and those needing corrective action. Gibson, D. Goldenson, and K. This technical report summarizes publicly available empirical evidence about the performance results that can occur as a consequence of CMMIbased process improvement.
The report contains a series of brief case descriptions that were created with collaboration from representatives from 10 organizations that have achieved notable quantitative performance results through their CMMI-based improvement efforts.
These guidelines include best practices for developing and improving products and services to meet the needs of customers and end users. Knowledge Engineering as the name suggests it is an Engineering of knowledge. It is different than classical engineering such as mechanical. Civil, manufacturing, or any other engineering.
Engineering basically refers to the action of working artfully to bring something about. In artificial intelligence, our goal is to imitate the intelligence of a human being. The human decision-making system is quite complex, it takes into consideration, facts from several sources, prior experiences and emotions like compassion -soft decision; gut-feeling -tough decision; happiness -promises; anger -quarrel; sadness wrong or unhealthy decisions , which brings nonlinear patterns in making decisions.
Knowledge engineering is a field of study where we do the engineering of all such thought processes for specific domains. It can be considered as the building blocks for AI , which attempts to imitate the judgment of a human with experts in a specific domain. In simple words, it is a field that concentrates on creating a knowledge base for a specific domain. It includes an in-depth investigation of a particular domain, learning all the important concepts about that domain, and then drafting out meaningful output.
Knowledge Engineering is a way to process the information of how an expert in a specific domain would process and accordingly will act and make decisions. For example, we want to automate the teaching process for children in the subject of mathematics. It will require the knowledge of teachers, subject matter experts, and data from previous batches and their performance in maths. The general workflow to do this, we need to process the metadata all about data, its quality, content, structure, objects, and format in order to have a basic idea of what it takes to make a decision.
Program — A computer program is a list of instructions that tell a computer what to do. Documentation — Source information about the product contained in design documents, detailed code comments, etc. Operating Procedures — Set of step-by-step instructions compiled by an organization to help workers carry out complex routine operations. There are four basic key process activities: Software Specifications — In this process, detailed description of a software system to be developed with its functional and non-functional requirements.
Software Development — In this process, designing, programming, documenting, testing, and bug fixing is done. Software Validation — In this process, evaluation software product is done to ensure that the software meets the business requirements as well as the end users needs.
Software Evolution — It is a process of developing software initially, then timely updating it for various reasons. Software Crisis : Size and Cost — Day to day growing complexity and expectation out of software. Software are more expensive and more complex. Quality — Software products must have good quality.
0コメント