Software encompasses programs, documentation, and configuration data necessary for operation, with two main types: generic products for the open market and customized products for specific customers. Software engineering is a discipline focused on the systematic production and maintenance of software, employing various methodologies throughout the software life cycle. Key characteristics of software include reliability, correctness, performance, usability, and maintainability, all of which are essential for developing high-quality software products.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
11 views
module 1
Software encompasses programs, documentation, and configuration data necessary for operation, with two main types: generic products for the open market and customized products for specific customers. Software engineering is a discipline focused on the systematic production and maintenance of software, employing various methodologies throughout the software life cycle. Key characteristics of software include reliability, correctness, performance, usability, and maintainability, all of which are essential for developing high-quality software products.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11
What is software?
Software is not just the programs but also it includes
1. all associated documentation 2. configuration data These are needed to make the software correctly Software: It is the set of: 1) Instructions (programs) that when executed provide desired features, functions and performance. 2) Data structures that enable the programs to adequately manipulate information. 3) Documents that describe the use and operation of the programs. • Software engineers are concerned with developing software products. • Software products means software (set of programs) which can be sold to a customer. • There are two fundamental types of software: 1. Generic products 2. Customized products Generic products ➢ Developed by an organization or a company and sold on the open market to any customer who is able to buy them. Customized products ➢ These are developed for a particular customer. ➢ A software contractor develops the software especially for that customer. What is Software Engineering? • Software engineering is an engineering discipline that is concerned with all aspects of software production. • That is from the early stages of system specification to maintaining the system after it has gone into use. • Software engineering is the establishment and use of engineering principles in order to obtain economically feasible software that is reliable and works efficiently on real machines. • Software engineering is “a systematic approach to the analysis, design, assessment, implementation, test, maintenance and reengineering of software. • In the software engineering approach, several models for the software life cycle are defined, and many methodologies for the definition and assessment of the different phases of a life-cycle model” Why Learn Software Engineering? • Software engineers play an important role in today's information driven society. • Software engineering is one of the fastest growing professions with excellent job prospects predicted throughout the coming decade. • Software engineering brings together various skills and responsibilities. How do software engineers spend their time on the job? • Software engineers probably spend less than 10% of their time writing code. • The other 90% of their time is involved with other activities that are more important than writing code. Characteristics of Software • Software can be characterized by any number of qualities. • External qualities, such as usability and reliability, are visible to the user. • Internal qualities are those that may not be necessarily visible to the user, but help the developers to achieve improvement in external qualities. • For example, good requirements and design documentation might not be seen by the typical user, but these are necessary to achieve improvement in most of the external qualities. External qualities Reliability ▪ Software reliability can be defined informally in a number of ways. ▪ For example, can the user “depend on” the software? How do you measure software reliability? ▪ Software reliability can be defined in terms of statistical behaviour; i.e., the probability that the software will operate as expected over a specified time interval. ▪ Let S be a software system and let T be the time of system failure. Then the reliability of S at time t, denoted r(t), is the probability that T is greater than t ; that is, r(t) =P(T > t) ▪ This is the probability that a software system will operate without failure for a specified period. ▪ Thus, a system with reliability function r(t) = 1 will never fail ▪ The failure intensity is initially high, as would be expected in new software as faults are detected during testing. ▪ The number of failures would be expected to decrease with time, presumably as failures are uncovered and repaired. ▪ The bathtub curve is often used to explain the failure function for physical components that wear out, electronics, and even biological systems. ▪ We expect a large number of failures early in the life of a product (from manufacturing defects) and then a steady decline in failure incidents until later in the life of that product when it has “worn out” or, in the case of biological entities, died Correctness ▪ Software correctness is closely related to reliability and the terms are often used interchangeably. ▪ The main difference is that minor deviation from the requirements is strictly considered a failure and hence means the software is incorrect. ▪ Correctness can be measured in terms of the number of failures detected over time. Performance ▪ Performance is a measure of some required behavior — often with respect to some relative time constraint. ▪ For example, o the baggage inspection system may be required to process 100 pieces of luggage per minute. o a photo reproduction system might be required to digitize, clean, and output color copies at a rate of one every two seconds. ▪ One method of measuring performance is based on mathematical or algorithmic complexity. ▪ Another approach involves directly timing the behaviour of the completed system with logic analysers and similar tools. Usability ▪ Usability is a measure of how easy the software is for humans to use. ▪ Software usability is synonymous with ease-of-use, or user-friendliness. ▪ Usually informal feedback from users, as well as surveys, focus groups, and problem reports are used to measure/determine usability Interoperability ▪ This quality refers to the ability of the software system to coexist and cooperate with other systems. ▪ In many systems, special software called middleware is written to enhance interoperability. ▪ In other cases, standards are used to achieve better interoperability. ▪ For example, o in embedded systems, the software must be able to communicate with various devices using standard bus structures and protocols. ▪ Interoperability can be measured in terms of compliance with open system standards. These standards are typically specific to the application domain. ▪ An open system is an extensible collection of independently written applications that cooperate to function as an integrated system. ▪ This concept is related to interoperability. ▪ Open systems differ from open-source code, which is source code that is made available to the user community for improvement and correction. ▪ An open system allows the addition of new functionality by independent organizations through the use of interfaces whose characteristics are published. ▪ Any software engineer can then take advantage of these interfaces, and thereby create software that can communicate using the interface. ▪ Open systems also permit different applications written by different organizations to interoperate Maintainability, Evolvability and Repairability ▪ A software system in which changes are relatively easy to make has a high level of maintainability. ▪ Maintainability can be decomposed into two contributing properties — evolvability and repairability. ▪ Evolvability is a measure of how easily the system can be changed to accommodate new features or modification of existing features. ▪ Repairability is the ability of a software defect to be easily repaired. ▪ Measuring these qualities is not always easy, and is often based on anecdotal observation. ▪ This means that changes and the cost of making them are tracked over time. ▪ Software is portable if it can run easily in different environments. Life cycle of a software system • Producing a software application is relatively simple in concept: Take an idea and turn it in to a useful program. • The different steps that we need to take to keep a software engineering project on track. • Software Development Life cycle is a process followed for a software project, within a software organization. • It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. • The lifecycle defines a methodology for improving the quality of software and the overall development process. • The different steps that we need to take to keep a software engineering project on track • These are more or less the same for any large project although there are some important differences 1.Requirements Gathering (Requirements Analysis) 2. Design 3. Development (coding) 4. Testing 5. Deployment (Implementation) 6. Maintenance Characteristics of good requirements • Clear ❖ Good requirements are clear, concise, and easy to understand. ❖ requirements cannot be vague or ill‐defined. ❖ Each requirement must state in concrete • Unambiguous (not open to more than one interpretation) ❖ As we write requirements, do our best to make sure we can’t think of any way to interpret them other than the way we intend. • Consistent ❖ That means not only that they cannot contradict each other, but that they also don’t provide so many constraints that the problem is unsolvable. ❖ Each requirement must also be self‐consistent. (It must be possible to achieve.) • Prioritized ❖ We might like to include every feature but don’t have the time or budget, so something’s got to go. ❖ At this point, we need to prioritize the requirements. • Verifiable ❖ If we can’t verify a requirement, how do we know whether we have met it? ❖ Being verifiable means the requirements must be limited and precisely defined. MOSCOW METHOD - a common system for prioritizing application features. • M - Must. These are required features that must be included. They are necessary for the project to be considered a success. • S - Should. These are important features that should be included if possible. • C - Could. These are desirable features that can be omitted if they won’t fit in the schedule. • W - Won’t. These are completely optional features that the customers have agreed l will not be included in the current release Requirement Categories ➢ Audience‐Oriented Requirements: • These categories focus on different audiences and the different points of view that each audience has. ➢ Business Requirements: • Business requirements layout the project’s high‐level goals. ➢ User Requirements: • User requirements (which are also called stake holder requirements), describe how the project will be used by the end users. ➢ Functional Requirements: • Functional requirements are detailed statements of the project’s desired capabilities. ➢ Non-functional Requirements: • Non-functional requirements are statements about the quality of the application’s behaviour or constraints on how it produces a desired result. • They specify things such as the application’s performance, reliability, and security characteristics. ➢ Implementation Requirements: • Implementation requirements are temporary features that are needed to transition to using the new system but that will be later discarded.