Chapter 1 Introduction COS 3113 Software Engineering PDF
Document Details
Uploaded by AccessibleElbaite
University of Jaffna
Dr.R.Nagulan
Tags
Summary
This document is an introduction to software engineering. It discusses different types of software products, including generic and customized/bespoke ones. It also covers widely used software products, essential attributes of good software, diversity in software engineering and process activities.
Full Transcript
COS 3113 Software Engineering Chapter 1 Introduction Dr.R.Nagulan Software Program is set of instructions that performs a specific task when executed by a computer. Software is the combination of program(s), documentatio...
COS 3113 Software Engineering Chapter 1 Introduction Dr.R.Nagulan Software Program is set of instructions that performs a specific task when executed by a computer. Software is the combination of program(s), documentation (documents produced during development), data and operating procedure manuals (delivered with programs to customer at the time of release). Program VS Software Programming VS Software Engineering Programmer VS Software Engineer VS Software Developer Importance of Software Software has become an integral part of almost all fields of human life. More and more systems are software controlled (transportation, medical, telecommunications, military, industrial, entertainment, etc.) Software Products Generic Products – Stand-alone systems that are marketed and sold to any customer who wishes to buy them. – Examples: PC software such as graphics programs, PC software such as Excel or Word; CAD software; Game software. Customized/Bespoke Products – Software that is commissioned by a specific customer to meet their own needs. – A software contractor develops the software especially for that customer. – Examples of this type of software include control systems for electronic devices, systems written to support a particular business process. Widely Used Software Products System Software (Windows, Linux, Mac, Drivers, Compilers) – Heavy interaction with Hardware – Multiple Users – Concurrent operations – Scheduling & Resource sharing – Provide interface to other applications Real Time software (Air traffic control system, Anti-Virus Programs) – Monitor, Analyze, control the real time events. Business Software (Payroll, Inventory Management system) – Business software used by business users to perform various business functions. Engineering/Scientific Software (CAD, MATLAB, AutoCAD) – used to facilitate the engineering functions and tasks. Embedded software (modems, robots, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches) – Resides in ROM – specialized for the particular hardware – Embedded software is written to control machines or devices that are not typically thought of as computers. Personal Computer Software (MS Word, Spread sheet) Software Engineering Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use. Engineering discipline – Using appropriate theories and methods to solve problems bearing in mind organizational and financial constraints. All aspects of software production – Not just technical process of development. Also project management and the development of tools, methods etc. to support software production.. Importance of Software Engineering More and more, individuals and society rely on advanced software systems. Software Engineering is concerned with designing, writing, testing, implementing and maintaining software. Software engineering is therefore necessary to become able to build software on time, on budget, within specification while minimizing defects, managing quality, cost, time, complexity, verifiability, maintainability, availability, reliability, performance, security, usability, and other attributes of software. Essential Attributes of Good Software Product Description characteristic Maintainability Software should be written in such a way so that it can evolve to meet the changing needs of customers. This is a critical attribute because software change is an inevitable requirement of a changing business environment. Reliability and Reliable and Secure software should not cause physical or Security economic damage in the event of system failure. Malicious users should not be able to access or damage the system. Efficiency Software should not make wasteful use of system resources such as memory and processor cycles. Efficiency therefore includes responsiveness, processing time, memory utilisation, etc. Acceptability Software must be acceptable to the type of users for which it is designed. This means that it must be understandable, usable and compatible with other systems that they use. Software Engineering Diversity There are many different types of software system and there is no universal set of software engineering techniques that is applicable to all of these. There are many different types of system and each requires appropriate software engineering tools and techniques for their development. The software engineering methods and tools used depend on the type of application being developed, the requirements of the customer and the background of the development team. However, The fundamental notions of software engineering are universally applicable to all types of system development. Software engineers have responsibilities to the engineering profession and society. They should not simply be concerned with technical issues. Professional societies publish codes of conduct which set out the standards of behaviour expected of their members. Software Process Activities Software specification, where customers and engineers define the software that is to be produced and the constraints on its operation. Software development, where the software is designed and programmed. Software validation, where the software is checked to ensure that it is what the customer requires. Software evolution, where the software is modified to reflect changing customer and market requirements. General issues that affect software Heterogeneity: Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Business and social change: Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Security and trust: As software is intertwined with all aspects of our lives, it is essential that we can trust that software. Scale: Software has to be developed across a very wide range of scales, from very small embedded systems in portable or wearable devices through to Internet-scale, cloud-based systems that serve a global community. Web-based Software Engineering The Web is now a platform for running application and organizations are increasingly developing web-based systems rather than local systems. Web services allow application functionality to be accessed over the web. The basic idea was that documents stored on computer that were linked by a network could be accessed by an authorized individual using the network. This idea however, relied on two types of software, a web server and a web browser. The web server stores the documents and “serves” them to other computers who desire access to the documents. The web browser allows user to request and view the documents. What is Desktop and Web-Based Software? It’s common to use the term “desktop software” to refer to a self-contained system that can be independently deployed on a specific type of hardware. For example, when you download an installation tool that runs on your machine to install something like Microsoft Word, it’s considered desktop software. In contrast, “web-based” software systems are delivered through a user’s web browser, while they actually run on remote hardware that is maintained by the tool’s owners. Examples of such tools include Google Docs (a web-based word processor) or Salesforce.com (a web-based customer relationship management tool). Feature Desktop Web-Based Connectivity Does not require an internet connection. Requires an internet connection. Requirements Scalability controlled by software provider’s Scalability Dependent on client hardware. hosting infrastructure. Installation Skill Requires no customer installation or Requires customer installation and maintenance. / Maintenance maintenance. Hardware Written for specific target operating system / No customer hardware requirements beyond a Requirements hardware platforms modern web browser, Collection of user data could be performed, but Customer data is uploaded for processing Data Collection requires an extra upload step. anyway, and storage could be automatic. Must be installed and maintained on every No installation is required beyond logging into an Deployment workstation where it is used. account. A variety of techniques exist for managing Licenses are simply stored as part of a user’s desktop software licenses, from license servers Licensing account, and require no maintenance on a to maintaining a list of license keys that must be customer’s part. used at each workstation. Desktop applications must be developed for every target platform. For example, developing Similar or less expensive than developing a Cost for both PC and Mac platforms would involve desktop application for any one target platform. nearly double the development costs of either platform alone. CASE STUDIES Mentcare: A patient information system for mental health care A patient information system to support mental health care is a medical information system that maintains information about patients suffering from mental health problems and the treatments that they have received. Most mental health patients do not require dedicated hospital treatment but need to attend specialist clinics regularly where they can meet a doctor who has detailed knowledge of their problems. To make it easier for patients to attend, these clinics are not just run in hospitals. They may also be held in local medical practices or community centres. Mentcare Mentcare is an information system that is intended for use in clinics. It makes use of a centralized database of patient information but has also been designed to run on a PC, so that it may be accessed and used from sites that do not have secure network connectivity. When the local systems have secure network access, they use patient information in the database but they can download and use local copies of patient records when they are disconnected. Mentcare goals To generate management information that allows health service managers to assess performance against local and government targets. To provide medical staff with timely information to support the treatment of patients. The organization of the Mentcare system Key features of the Mentcare system Individual care management – Clinicians can create records for patients, edit the information in the system, view patient history, etc. The system supports data summaries so that doctors can quickly learn about the key problems and treatments that have been prescribed. Patient monitoring – The system monitors the records of patients that are involved in treatment and issues warnings if possible problems are detected. Administrative reporting – The system generates monthly management reports showing the number of patients treated at each clinic, the number of patients who have entered and left the care system, number of patients sectioned, the drugs prescribed and their costs, etc. Mentcare system concerns Privacy – It is essential that patient information is confidential and is never disclosed to anyone apart from authorised medical staff and the patient themselves. Safety – Some mental illnesses cause patients to become suicidal or a danger to other people. Wherever possible, the system should warn medical staff about potentially suicidal or dangerous patients. – The system must be available when needed otherwise safety may be compromised and it may be impossible to prescribe the correct medication to patients.