The document discusses the software crisis and how early software development led to issues. It describes what an information system is and different categories of information systems. It also explains how the capability maturity model was developed to formalize the software development process and address problems caused by the software crisis.
The document discusses the software crisis and how early software development led to issues. It describes what an information system is and different categories of information systems. It also explains how the capability maturity model was developed to formalize the software development process and address problems caused by the software crisis.
The document discusses the software crisis and how early software development led to issues. It describes what an information system is and different categories of information systems. It also explains how the capability maturity model was developed to formalize the software development process and address problems caused by the software crisis.
The document discusses the software crisis and how early software development led to issues. It describes what an information system is and different categories of information systems. It also explains how the capability maturity model was developed to formalize the software development process and address problems caused by the software crisis.
Lecture 1- The Software Crisis Learning Outcomes At the end of this learning unit, you shall be able to: • Describe what is meant by a 'system'. • Describe what is meant by 'information systems'. • Distinguish the categories of information systems. • Explain the major causes of problems associated with information systems. • Explain the concept of software crisis. • Describe the approaches developed to overcome the so-called software crisis What is a System? • A system is an organized collection of parts (or subsystems) that are highly integrated to accomplish an overall goal. • The system has various inputs, which go through certain processes to produce certain outputs, which together, accomplish the overall desired goal for the system. Data vs Information • Data is a representation of a fact, a number, a word, an image, a picture or a sound. • Information is data that is meaningful or useful to someone. What is an Information System? • An Information System is a collection of components that work together to provide information to help in the operations and management of an organization. • Information Technology is the integration of computers, communications equipment, and other technology used in information systems. Components of an Information System • Users • Procedures • Information • Documents • Hardware • Software Categories of Information Systems • Data-processing systems • Real-time systems • Decision support systems • Knowledge-based systems Categories of Information Systems Data-processing systems • Such a system generally has some large database of information and the purpose of the system is to provide quick, easy access and processing of data. • Depending on the degree to which data is processed and analyzed, the systems may be further classified as: 1. Transaction Processing Systems (TPS) - Computerized system that performs and records daily routine transactions of the business. 2. Management Information Systems (MIS) - Summarizes data in a form useful for the management of a business. Categories of Information Systems Real-time systems • A real-time system is any information processing system which must respond to externally generated input stimuli within a finite and specified period. • Typical response times would be of the order of a few milliseconds or even microseconds. • Types of real time systems based on timing constraints: • Hard real time system • Soft real time system Categories of Information Systems Decision Support systems • A decision support system (DSS) is a computer program application that analyzes business data and presents it so that users can make business decisions more easily. • Typical information used by a DSS includes target or projected revenue, sales figures or past ones from different time periods, and other inventory- or operations-related data. Categories of Information Systems Knowledge-based systems • A knowledge-based system is a computer program that uses a knowledge base with an inference engine in order to solve problems that usually require significant specialized human expertise. • It embodies the problem-solving knowledge of a human expert in a narrowly defined domain and it can extend that body of knowledge through its inference engine or query system. • In business systems, the knowledge-based system often takes the form of what is called an expert system. Early Software Development: Code and Fix Approach The Code and Fix Approach • This is the simplest way to produce software. • Generally this is how every programmer learns programming. • This way is okay for small pieces of software for personal use. • But code-and-fix is a disaster for the following reasons: • There is no way to estimate time-scales or budgets. • There is no assessment of possible risks and design flaws. • You may get close to a finished product only to find an insurmountable technical problem that sets the whole project back to the drawing board. Early Software Development: Code and Fix Approach • Creating the software is easy - but creating the system is hard.
Figure 1: "Code and Fix" approach which gave rise
to the Software Crisis The Chronic Software Crisis What is the Chronic Software Crisis? • A typical software system today contains thousands lines of codes. • Usually large software development projects includes teamwork consisting of project managers, requirements analysts, software engineers, documentation experts, and programmers. • With so many professionals collaborating in an organized manner on a project why is that project may still fail? • There is no single approach which will prevent project overruns and failures in all cases. • In general, software projects which are large, complicated, poorly- specified, and involve unfamiliar aspects, are still particularly vulnerable to large, unanticipated problems. The Chronic Software Crisis Some facts • The cost of owning and maintaining software in the 1980’s was twice as expensive as developing the software. • During the 1990’s, the cost of ownership and maintenance increased by 30% over the 1980’s. • In 1995, statistics showed that half of surveyed development projects were operational but were not considered successful. • The average software project overshoots its schedule by half. • Three quarters of all large software products delivered to the customer are failures that are either not used at all, or do not meet the customer’s requirements. The Chronic Software Crisis Typical Problems • The causes of the software crisis is linked to the overall complexity of hardware and the software development process. • If we don't have an effective and efficient software development process, then we may have problems like: • Projects running over-budget. • Projects running over-time. • Software being inefficient. • Software of low quality. • Software not meeting requirements. • Projects being unmanageable and code difficult to maintain. • Software never being delivered. The Chronic Software Crisis Critics and constraints of current software development practices • Software development today is more of a craft than a science. • Developers rely on their talents and skills using techniques that cannot be measured or reproduced. • On the other hand, software engineering place emphasis on reproducible, quantifiable techniques. • The software industry still has got some time to become a mature engineering discipline. • Software technology is constrained by hardware technology. • Since hardware develops at a much faster pace than software, software developers are constantly trying take advantage of hardware improvements. The Chronic Software Crisis • Management often encourages ad hoc software development to get products out on time for the new hardware architectures. Design, documentation, and evaluation are of secondary importance and are omitted or completed afterwards. • However, as the statistics show, the ad hoc approach just doesn’t work. Software developers have classically accepted a certain number of errors in their work as inevitable and part of the job. • That mindset becomes increasingly unacceptable as software becomes embedded in more and more consumer electronics. Sixty errors per thousand lines of code is unacceptable when the code is embedded in a toaster, automobile, ATM machine or razor. The Chronic Software Crisis Mature Software • As we have seen, most software projects that do not follow a formal process result in a product that is poorly designed and documented. • Fortunately, there has been an awareness of the software crisis that inspired a worldwide movement towards process improvement. • The SEI (Software Engineering Institute @ http://www.sei.cmu.edu/) uses a Capability Maturity Model (CMM) to assess the state of an organization’s development process. The Chronic Software Crisis • CMM ratings range from Maturity Level 1 (ad hoc development ) up to Maturity Level 5 (formal process) which is continually refined and improved. • Each maturity level is further broken down into key process areas that indicate the areas an organization should focus on to improve its software process (e.g. requirement analysis, defect prevention, or change control). • Customers contracting large projects will naturally seek organizations with high CMM ratings which has resulted in more and more organizations investing on software process improvement. The Chronic Software Crisis • A mature software also means reusable software. • Inability to produce standardized products is a reason why there is so little interchangeability in software components. • Software has become too big to treated as a ‘craft’. • Systems are too large for only one person to comprehend on his own. • Therefore It is necessary to apply formal software processes. • Developers need to think like engineers Capability Maturity Model: An Overview Capability Modeling or Maturity Models • A maturity model can be described as a structured collection of elements that describe certain aspects of maturity in an organization. A maturity model may provide, for example : • a place to start • the benefit of a community’s prior experiences • a common language and a shared vision • a framework for prioritizing actions • a way to define what improvement means for your organization. Capability Maturity Model: An Overview • A maturity model can be used as a benchmark for comparison and as an aid to understanding. • For comparative assessment of different organizations something in common is needed that can be used as a basis for comparison. • For instance basis for comparison can be the organizations' software development processes. Capability Maturity Model: An Overview The Capability Maturity Model • A maturity model can be described as a structured collection of elements that define certain aspects of maturity in an organization. • A maturity model aids in the definition and understanding of an organization's processes. • The Capability Maturity Model (CMM) in software engineering is a model of the maturity of the capability of certain business processes. Capability Maturity Model: An Overview The Capability Maturity Model involves the following aspects: • Maturity Level: It is a well-defined evolutionary plateau toward achieving a mature software process. The five maturity levels provide the top-level structure of the CMM. • Key Process Areas: A Key Process Area (KPA) identifies a cluster of related activities that, when performed collectively, achieve a set of goals considered important. Capability Maturity Model: An Overview • Goals: The goals summarize the key practices of a key process area and can be used to determine whether an organization or project has effectively implemented the key process area. The goals signify the scope, boundaries, and intent of each key process area. • Common Features: Common features include practices that implement and institutionalize a key process area. There are five types of common features: Commitment to Perform, Ability to Perform, Activities Performed, Measurement and Analysis, and Verifying Implementation. Capability Maturity Model: An Overview • Key Practices: Each key process area is described in terms of key practices that, when implemented, help to satisfy the goals of that key process area. The key practices describe the elements of infrastructure and practice that contribute most effectively to the implementation and institutionalization of the KPAs. Capability Maturity Model: An Overview Levels of the Capability Maturity Model
Figure 2: The Five Levels of Software Process Maturity
Capability Maturity Model: An Overview Levels of the Capability Maturity Model • Level 1 – Initial (Chaotic) • Processes at this level are (typically) undocumented and in a state of dynamic change, tending to be driven in an ad hoc, uncontrolled and reactive manner by users or events. This provides a chaotic or unstable environment for the processes. • Level 2 - Repeatable • At this level, some processes are repeatable, possibly with consistent results. The necessary process discipline is in place to repeat earlier successes on projects with similar applications. Capability Maturity Model: An Overview • Level 3 - Defined • At this level there are sets of defined and documented standard processes established and subject to some degree of improvement over time. These standard processes are in place and used to establish consistency of process performance across the organization. • Level 4 - Managed • At this maturity level, the performance of processes is controlled using statistical and other quantitative techniques and is quantitatively predictable. Management can identify ways to adjust and adapt the process to projects without measurable losses of quality or deviations from specifications. Process Capability is established from this level. Capability Maturity Model: An Overview • Level 5 – Optimizing • At this level, the focus is on continually improving process performance through both incremental and innovative technological changes/improvements and at the same time maintaining statistical probability to achieve the established quantitative process-improvement objectives. CMMI: Capability Maturity Process Model Integration CMMI Overview • CMMI is the successor to CMM and combines several maturity models into one integrated capability maturity model. • CMMI can be used to guide process improvement across a project, a division, or an entire organization. • CMMI helps integrate traditionally separate organizational functions, set process improvement goals and priorities, provide guidance for quality processes, and provide a point of reference for appraising current processes. CMMI: Capability Maturity Process Model Integration • CMMI currently addresses three areas of interest: 1. Product and service development — CMMI for Development (CMMI-DEV) 2. Service establishment, management, and delivery — CMMI for Services (CMMI-SVC) 3. Product and service acquisition — CMMI for Acquisition (CMMI-ACQ) CMMI: Capability Maturity Process Model Integration Appraisal • An organization cannot be certified in CMMI but instead itis appraised. Depending on the type of appraisal, the organization can be awarded a maturity level rating (1-5) or a capability level achievement profile. • Many organizations find value in measuring their progress by conducting an appraisal. Appraisals are typically conducted for one or more of the following reasons: 1. To determine how well the organization’s processes compare to CMMI best practices, and to identify areas where improvement can be made. 2. To inform external customers and suppliers of how well the organization’s processes compare to CMMI best practices. 3. To meet the contractual requirements of one or more customers. CMMI: Capability Maturity Process Model Integration CMMI Framework and Process Areas
Figure 3: CMMI Process Areas, Categories, and Maturity Levels
Systems Life Cycle • Due to past failures and problems, the business computing community began to understand the need of system development process to be a reliable and rigorous discipline like architecture or engineering. • Need for understanding the process. • Need for improving the process. Systems Life Cycle • Analysis of findings from study of past systems and learned experiences has led to a model of what is called the system life cycle. • There are now several different models. A life cycle model is really a descriptive model, presenting a summary of best practice of system development. However, it is often treated as a prescriptive model, that needs to be precisely followed, but this need not be the case. Systems Life Cycle Each life cycle model presents the following: • A set of project stage. • The sequence (or repetitions) in which the stages occur. • The deliverables (products output) for each stage. • The required input products for each stage. References • http://people.cs.ksu.edu/~dwyer/courses/748/resources/cmm-tr25/tr25_o2.html • https://en.wikipedia.org/wiki/Process_area_(CMMI) • https://en.wikipedia.org/wiki/Software_crisis • https://link.springer.com/referenceworkentry/10.1007%2F978-1-4419-9863-7_596 • https://managementhelp.org/systems/defn-system.pdf • https://www.geeksforgeeks.org/real-time-systems/ • https://www.investopedia.com/terms/d/decision-support-system.asp • https://www.slideshare.net/Redhruhri/information-system-74045445?from_action=save • https://www.slideshare.net/somipam123456/information-systems-concept-purpose- types • https://www.tutorialspoint.com/artificial_intelligence/artificial_intelligence_expert_syst ems.htm