Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Software Processes and Qualities-Software Engineering-Lecture Slides, Slides of Software Engineering

Prof. Ajeeta Vrajanadan delivered this lecture at Baddi University of Emerging Sciences and Technologies for Software Engineering course. Its main points are: Software, Processes, Qualities, Intanguble, Malleable, Intensive, Configuration, Management, Tools

Typology: Slides

2011/2012

Uploaded on 07/18/2012

paklashi
paklashi 🇮🇳

4.5

(2)

44 documents

1 / 38

Toggle sidebar

Related documents


Partial preview of the text

Download Software Processes and Qualities-Software Engineering-Lecture Slides and more Slides Software Engineering in PDF only on Docsity!

Software Engineering

Lecture 04 - 05

Dr. Mohammad Jaudet, DEE [email protected]

Pakistan Institute of Engineering and Applied Sciences

October, 2010

Outline of the Lecture 04 - 05

Software engineering (SE) is an intellectual activity and thus human-intensive Software is built to meet a certain functional goal and satisfy certain qualities Software processes also must meet certain qualities Software qualities are sometimes referred to as "ilities"

Software product

Different from traditional types of products intangible (can not touched) difficult to describe and evaluate malleable (bendable, shape) human intensive involves only trivial "manufacturing" process

Classification of software qualities

User’s point of view of software product Reliable Efficient Easy to use Producer’s point of view of software product Verifiable Maintainable Portable Extendable

Classification of software qualities ...

Internal vs. external External -> visible to users Internal -> concern developers Product vs. process Our goal is to develop software products The process is how we do it Internal qualities affect external qualities Reliability comes from Verifiability

Classification of software qualities ...

Process quality affects product quality User is concerned with executable code and user manual Producer is concerned with requirement and design documents Intermediate/work products allow delivery of delivery of customized products Sale of object code for embedded design Sale of Design and source code to others, e.g., Tools for integrated environments & Antivirus Configuration management Tools Configuration management is the part of software production process that is concerned with maintaining and controlling the relationship between between all related with work products of various versions of work product

Representative Qualities

Correctness, Reliability & Robustness Performance Usability Maintainability Reusability Portability Understandability Interoperability Productivity Timeliness Visibility

Correctness

Correctness is a Mathematical Property that establishes the equivalence between the software and specification Software is correct if it satisfies the functional requirements specifications assuming that specification exists! More details in Chapter 6

Reliability

Software is reliable if the user can depend on it The probability that the software will operate as expected over a specified time interval If specs are correct, all correct software is reliable, but not vice-versa (in practice, however, specs can be incorrect ...) Software is often taken as granted and used even if containing bugs Software design errors are generally treated as unavoidable Customer receives no guarantee of reliability Reliability depends on correctness More details in Chapter 6

Robustness

Reasonable behavior in circumstances not anticipated in the requirement specification incorrect input hardware failure A software generating unrecoverable runtime error during a sequence of procedures is not robust Code devoted for for robustness depends on application area Embedded systems depends on sensors but still need code for taking care of robustness Robustness also depends on correctness

Performance

Efficient use of resources memory, processing time, communication Can be verified complexity analysis performance evaluation (on a model, via simulation) Performance can affect scalability a solution that works on a small local network may not work on a large intranet Perfomance is evaluated after first initial release of the software

Usability or user-friendliness

Expected users find the system easy to use Rather subjective, difficult to evaluate Affected mostly by user interface e.g., visual vs. textual Consistency and Predictability of user interface

Verifiability

How easy it is to verify properties, e.g. Correctness Performance Verification can be done with formal and informal methods, to be discussed in Chapter 6 Mostly an internal quality but becomes quality when customer require verifiability for services provided by the software system Verifiability is contributed by: Modular design Disciplined coding practices Appropriate programming language

Maintainability

Maintainability is ease of maintenance Maintenance is changes after initial release Not so simple to be called bug fixing only Enhancing the product with features that were not available in original specifications or that were stated incorrectly Maintenance costs exceed 60% of total cost of software

Categories of maintenance

Corrective Removing residual errors put in during development and maintenance period (20%) Adaptive Adjusting to environment changes (20%) Change in operating system Change in data base system Perfective Quality improvements (>50%) Change the functions offered by software system Add new functions Improve the performance software system Make the software system easier to use

Repairability & Evolvability

Maintainability can be considered as: Repairability Evolvability

Repairability

Repairability Ability to correct defects in reasonable time Repairability is a major design goal Modular design helps easier analysis & repair Avoiding complex interfaces Repairability can be improved by using High level languages Source level debuggers

Evolvability

Evolvability Ability to adapt software to environment changes and to improve it in reasonable time Most systems start out being evolvable Evolvability decreases with each new release of the software product Evolvability is reduced by Unanticipated changes (functionality not considered during requirements specifications and design) Applying changes without understanding original requirements specifications and design American Airlines SABRE System has evolved since sixties

Maintainability ...

More on maintainability in Chapter 4

Reusability

Existing product (or components) used (with minor modifications) to build another product (Similar to evolvability) Reusability may be applied from the whole product to a routine but more applicable to software components Unix shell is a reusable product that can be used for certain purpose with a command file Numeric Libraries are first examples of reusable components Use of Modularity enhances Reusability Use of software methodologies is considered as attempt to reuse processes to develop different products

Portability

Software can run on different hardware platforms or software environments Modularity helps is isolation of components associated with environment Internet browsers are one example of software need to run on variety of platforms Linux operating system is other example but needed a lot of effort

Understandability

Ease of understanding software Program modification requires program understanding Understandability depends on abstraction and modularity Understandability helps in Evolvability Verifyability

Interoperability

Ability of a system to coexist and cooperate with other systems Importing input and exporting output Browser plugins Management of devices on the network Achieved by standardizing interfaces between components (open systems & protocols) More in Chapter 4

Qualities of software production process

Productivity Timeliness Visibility

Productivity

Productivity is a quality of software production process and denotes its efficiency and performance Depends on productivity of individual software engineers More in Chapter 8 and Chapter 9