UNIT 1 Introduction to Software Engineering PDF

Summary

This document provides an introduction to software engineering, covering topics such as the definition, types (system, application, etc.), and process of software creation. The document also delves into the various functions and activities of different types of software.

Full Transcript

Software Engineering COMP UNIT 1 Introduction to Software Engineering Disclaimer The PowerPoint presentations of the Module COMP 20009.1 Software Engineering are created merely to guide me during the delivery of this module in my class. The content included in the slides are only i...

Software Engineering COMP UNIT 1 Introduction to Software Engineering Disclaimer The PowerPoint presentations of the Module COMP 20009.1 Software Engineering are created merely to guide me during the delivery of this module in my class. The content included in the slides are only indicative to remind me the sequence which I will be following during the delivery. The content presented in the slides is free from any plagiarism and copyright violations and wherever needed appropriate referencing/citations have been provided. In addition to the content in this PowerPoint presentations, I will also be verbally delivering other important content in the class as well as also writing on the board, some information related to the topic being covered wherever necessary. The student is therefore advised to refer to the text books, reference books and any supplementary materials recommended in the Module Information Guide (MIG) or in the PowerPoint presentations for complete understanding of the topic. Topics Covered The evolving role of software The changing nature of software Definition of software engineering Software engineering – a layered technology Software process Key challenges facing software engineering Professional and ethical responsibility The Evolving Role of Software Dual activity - Software can be a Product: Information transformer- producing, managing and displaying - Also software can be a vehicle for delivering another product. Control of computer(operating system),the communication of information(networks) and the creation of other programs Software as a Product: Information Transformer Software, in this context, refers to computer programs and applications. It can be considered a product because it is designed, developed, and distributed to fulfill specific tasks or functions. Software acts as an "information transformer" because it performs various operations on data or information. This includes: Producing: Software can create, generate, or calculate data. For example, spreadsheet software can produce financial reports. Managing: Software can organize and manipulate data efficiently. Database management software, for instance, manages large volumes of data. Displaying: Software presents information in a user-friendly format. Web browsers display web content, and graphic design software visualizes graphics. Software as a Vehicle for Delivering Another Product Software can also serve as a platform or medium to deliver other products or services. It plays a crucial role in various aspects: Control of Computer (Operating System): An operating system (OS) is a type of software that manages hardware resources and provides a foundation for running other applications. It controls the computer's functions, enabling users to interact with hardware and software. For example, Windows and macOS are operating systems. Communication of Information (Networks): Networking software enables devices to communicate over networks. This includes protocols, drivers, and applications that facilitate data transmission over the internet or local networks. Creation of Other Programs: Software development tools and environments allow programmers to create new software applications. Integrated Development Environments (IDEs) and compilers are examples. Types of software-Changing Nature of Software Name Type System Software Application Software Engineering Software Embedded Software Web Software Application/Mo bile applications Product Line Software Artificial Intelligence Software 1. System software a collection of programs written to service other programs. Infrastructure software come under this category like compilers, operating systems, editors, drivers, etc. https://whatis.techtarget.com/definition/system-softwar e 2. Application software Stand-alone programs that solve a specific business need. Designed to perform a group of organized functions ,task or activities that benefit user. Example, MS office(Word, Excel, Power Point), Chrome, IE. https://www.webopedia.com/TERM/A/application.html 3. Scientific / Engineering software These are number crunching programs that perform operations of greater complexity. Example, Software for astronomy , volcanology, automotive stress analysis , computer aided design etc. 4. Embedded software Example, microwave oven key pad, digital functions used in fuel control, automobile braking system and dashboard displays in cars. This type of software is placed in “Read-Only- Memory (ROM)”of the product and control the various functions of the product. The product could be an aircraft, automobile, security system, signalling system, control unit of power plants, etc. The embedded software handles hardware components and is also termed as intelligent software. 5. Product-line software(market requirement) Designed to provide a specific capability for use by many different customers. Example, Computer graphics, multimedia, inventory control 6. Web applications/Mobile applications This is network-centric software category spans a wide array of applications and encompasses both browser-based apps and software that resides on mobile devices. Example, mobile banking software, social Fig: 1 Acunetix(2016), Web App Security – Check your Site for Web Application Vulnerabilities [online] available from 7. Artificial intelligence software Makes use of non numerical algorithms to solve complex problems that are not amenable to computation or straight forward analysis. Applications within this area include robotics, expert systems, pattern recognition (image and voice), artificial neural networks, and game playing. Example, IBM Watson, IBM deep blue, SIRI, Cortana, Alexa etc. Software Instructions, data structure and all the documents that provide description about the functions and use of the program together called as Software. Instructions (computer programs) that when executed provide desired features, function, and performance. Data structures that enable the programs to adequately manipulate information. Descriptive information in both hard copy and virtual forms that describes the operation and use of the programs. Software Engineering It is: A systematic(done or acting according to a fixed plan), Disciplined(showing a controlled form of way of working), and Quantifiable (measurable) approach for creation, operation, and maintenance of software; Software Engineering: A layered technology Quality Focus Process Method s Tools Software Engineering: A layered technology Quality focus: The bedrock that supports software engineering is a quality focus. Any engineering approach (including software engineering) must rest on an organizational commitment to quality. Total quality management, Six Sigma, and similar approaches leads to the development of quality software. Process: The foundation for software engineering is the process layer.. Process defines a framework that must be established for effective delivery of software. The software process forms the basis for management control of software projects and establishes the context in which technical methods are applied, work products are produced, milestones are established, quality is ensured, and change is properly managed. Methods: Software engineering methods provide the technical “know how” for building software. Methods includes tasks that include communication, requirements analysis, design modeling, program construction, testing, and support. Tools: Software engineering tools provide automated or semi-automated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development.(CASE environment) Software Process Software process is a framework for the activities, actions ,and tasks that are required to build high-quality software An activity tries to achieve an objective -(e.g., communication with stakeholders) - It is applied regardless of the application domain, size of the project, complexity of the effort, or degree of rigor with which software engineering is to be applied. An action (e.g., architectural design) encompasses a set of tasks that produce a major work product (e.g., an architectural design model). A task focuses on a small, but well-defined objective (e.g., conducting a unit test) that produces a tangible(real thing) Process Framework A generic process framework for software engineering encompasses five activities: Communication Planning Modeling Construction Deployment Communication Before any technical work can commence, it is important to communicate and collaborate with the customer and other Stakeholders. The intent is to understand stakeholders’ objectives for the project and to gather requirements that help define software features and function. Effective communication fosters collaboration among team members, stakeholders, and project managers. It ensures that everyone is aligned with project goals, requirements, and timelines, reducing misunderstandings and conflicts. Regular status updates and transparent communication help identify and address issues promptly, ensuring the project stays on track Planning A software project is a complicated journey, and the planning activity creates a “map” that helps guide the team as it makes the journey. The map—called a software project plan— defines the software engineering work by describing  the technical tasks to be conducted,  the risks that are likely,  the resources that will be required,  the work products to be produced,  work schedule Comprehensive project planning involves defining objectives, scopes, and timelines. It allows for resource allocation, It allows for risk assessment, It allows for budget management, It ensures that the project has a clear roadmap. It sets expectations and enables effective tracking and control throughout the project lifecycle Modeling Creation of models that allow the developer and customer to better understand software requirements Creation of design that will achieve those requirements The Importance of Modeling in Software Development It allows for the creation of detailed plans and prototypes. It helps in visualizing the final product, identifying potential issues, and optimizing designs. It reduces errors during the construction phase and ultimately saves time and resources Construction and Deployment Construction.-This activity combines code generation (either manual or automated) and the testing that is required to uncover errors in the code. The construction phase involves the actual implementation of the project's plans. Importance in Software Development Proper construction ensures that the project is built according to specifications, meets quality standards, and is completed on time. Skilled construction teams play a crucial role in translating plans into tangible results. Deployment- The software (as a complete entity or as a partially completed or increment) is delivered to the customer who evaluates the delivered product and provides feedback based on the evaluation. Deployment marks the transition from development to the operational phase. Importance in Software Development Successful deployment includes activities like testing, training, and ensuring the project is ready for use. A well-managed deployment ensures that the project delivers its intended value to end- users and stakeholders Umbrella activities in Software Engineering Software engineering process framework activities are complemented by a number of umbrella activities Typical umbrella activities include: Software project tracking and control—allows the software team to assess progress against the project plan and take any necessary action to maintain the schedule. Risk management—assesses risks that may affect the outcome of the project or the quality of the product. Software quality assurance—defines and conducts the activities required to ensure software quality. Technical reviews—assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity. Umbrella activities in Software Engineering Measurement—defines and collects process, project, and product measures that assist the team in delivering software that meets stakeholders’ needs; can be used in conjunction with all other framework and umbrella activities. Software configuration management—manages the effects of change throughout the software process. Reusability management—defines criteria for work product reuse (including software components) and establishes mechanisms to achieve reusable components. Work product preparation and production—encompasses the activities required to create work products such as models, documents, logs, forms, and lists. Key Challenges In Software engineering/industries 1.Increase in software scale. As the use of computers increased and the scale of use of software products became larger, it has become almost impossible to manage software developments manually. 2.Rapid changes in technology Software development needs to keep pace with rapid advancements in hardware and also make use of latest developments like those related to Artificial intelligence and code refactoring, automatic code generation, no code movement etc. 3.Legacy challenge Software products must be continuously maintained and updated to meet the changing requirements of customer and Key Challenges In Software engineering/industries 4. Managing Heterogeneity. There is need for developing platform independent software. It is quite challenging to develop software which will run on new platforms using different hardware and networking configurations 5. Ensuring Trust. Software is now being used for almost all aspects of human life. Need to ensure that Security is not compromised, and Privacy is maintained. Key Challenges In Software engineering/industries 6. Changing customer needs/Delivery Challenge/ Decline in software productivity/Need for agility. Most of the work in any process of creating products depends on the experience of personnel. A lack of experience leads to a decrease in software productivity. As a result, it becomes more and more difficult to match new requests for system development. 7. Deterioration in software quality. The creation of software products depends mostly on the work of people. As a result, the quality of software products can be unstable. This poses greater risk particularly in case of mission critical / systems related to health etc. Key Challenges In Software engineering/industries 8. Shortage of software engineers. Expansion of use of the software products means that more human resources are required. Use of computers has been increasing, and the demand for software products has also been increasing. Consequently, this has led to a shortage of human resources for software development. Software Engineering Principles David Hooker [Hoo96] has proposed seven principles that focus on software engineering practice as a whole. If every software engineer and every software team simply followed Hooker’s seven principles, many of the difficulties we experience in building complex computer based systems would be eliminated. The First Principle: The Reason It All Exists The Second Principle: KIS (Keep It Simple) The Third Principle: Maintain the Vision The Fourth Principle: What You Produce, Others Will Consume The Fifth Principle: Be Open to the Future The Sixth Principle: Plan Ahead for Reuse The Seventh principle: Think! Software Engineering Principles The First Principle: The Reason It All Exists A software system exists for one reason: to provide value to its users. All decisions should be made with this in mind. Before specifying a system requirement, before noting a piece of system functionality, before determining the hardware platforms or development processes, ask yourself questions such as: “Does this add real value to the system?” If the answer is “no,” don’t do it. All other principles support this one. The Second Principle: Keep It Simple All design should be as simple as possible This facilitates having a more easily understood and easily maintained system. This is not to say that features, even internal features, should be discarded in the name of simplicity. The more elegant designs are usually the more simple ones Software Engineering Principles The Third Principle: Maintain the Vision A clear vision is essential to the success of a software project Compromising the architectural vision of a software system weakens and will eventually break even the well-designed systems. Having an empowered architect who can hold the vision and enforce compliance helps ensure a very successful software project. The Fourth Principle: What You Produce, Others Will Consume In some way or other, someone else will use, maintain, document, or otherwise depend on being able to understand your system. So, always specify, design, and implement knowing someone else will have to understand what you are doing. Design, keeping the implementers in mind. Code with concern for those that must maintain and extend the system. Someone may have to debug the code you write, and that makes them a user of your code. Making their job easier adds value to the system Software Engineering Principles The Fifth Principle: Be Open to the Future In today’s computing environments, where specifications change on a moment’s notice and hardware platforms are obsolete just a few months old, software lifetimes are typically measured in months instead of years. However, true “industrial-strength” software systems must endure far longer. To do this successfully, these systems must be ready to adapt to these and other changes. Systems that do this successfully are those that have been designed this way from the start. The Sixth Principle: Plan Ahead for Reuse Reuse saves time and effort. The reuse of code and designs has been proclaimed as a major benefit of using object-oriented technologies. To leverage the reuse possibilities that object-oriented [or conventional] programming provides requires forethought and planning. Planning ahead for reuse reduces the cost and increases the value of both the reusable components and the systems into which they are incorporated. The Seventh principle: Think! Placing clear, complete thought before action almost always produces better results. A side effect of thinking is learning to recognize when you don’t know something, at Professional responsibility of software Engineer 1.Confidentiality: Engineers should normally respect the confidentiality of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed. 2.Competence: Engineers should not misrepresent their level of competence. They should not knowingly accept work which is outwit their competence. Professional responsibility of software Engineer 3. Intellectual property rights: Engineers should be aware of local laws governing the use of intellectual property such as patents, copyright, etc. They should be careful to ensure that the intellectual property of employers and clients is protected. 4. Computer misuse: Software engineers should not use their technical skills to misuse other people’s computers. ie. (game playing on an employer’s machine, say) to extremely serious (dissemination of viruses). Questions… 1) With the help of a diagram Describe a process framework 2) Software engineering in the 21st century faces many key challenges. Analyze the reason for those challenges 3) Software engineering process framework activities are complemented by a number of umbrella activities. List and explain all the activities 4) A software project is a complicated journey, and the planning activity creates a “map” that helps guide the team as it makes the journey. Justify the statement 5) Discuss the Issues of professional responsibility 6) “A generic process framework for software engineering encompasses five activities", With the help of a diagram explain all the five activities. 7) “Software process is a framework for the activities, actions, and tasks that are required to build high-quality software”. Discuss the terms activities, actions and tasks with respect to this definition Questions? 8) Discuss the seven categories of software. 9) Define Software Engineering? 10)With the help of a diagram explain Software engineering as layered technology. 11)Discuss dual role of software References Pressman, R.S. Software engineering: a practitioner’s approach. McGraw‐Hill.,2004 http://www.cs.colorado.edu/~kena/classes/5828/s99/ comments/srinivasan/01- 291999.html referenced 11/9/2006 http://www.infosys.tuwien.ac.at/se-book/slides/ referenced 16/9/2006 Below site will give you more details regarding COCOMO model http://www.cs.unc.edu/~stotts/145/cocomo.html Following sites will give you more details regarding software models http://istqbexamcertification.com/what-is-prototype-model- advantages-disadvantages-and-when-to-use-it/ https://www.technotrice.com/prototype-model/ http://www.tutorialspoint.com/sdlc/sdlc_rad_model.htm https://watirmelon.blog/2015/02/02/iterative-vs-incremental- software-development/ http://softwareengineeringhub.blogspot.com/2010/03/ evolving-role-of-software.html Saroj , Pandey(2010),Software Engineering

Use Quizgecko on...
Browser
Browser