SENG201 Fundamentals of Software Engineering Lecture Slides PDF

Summary

These are lecture slides for a course on Fundamentals of Software Engineering (SENG201). The document covers topics such as course content, software development life cycle, managing projects, and more.

Full Transcript

Ajayi, Olusoga, Ayite, Akande, Adetunji TOPICS 1. Course Content/Introduction 2. Software Development Life Cycle & Process Models 3. Managing and Planning Software Projects 4. Proposal Writing 5. Introduction to Risk 6. Requirements Engineering 7. Modelling Requirements- Introduction to UML;...

Ajayi, Olusoga, Ayite, Akande, Adetunji TOPICS 1. Course Content/Introduction 2. Software Development Life Cycle & Process Models 3. Managing and Planning Software Projects 4. Proposal Writing 5. Introduction to Risk 6. Requirements Engineering 7. Modelling Requirements- Introduction to UML; use case modelling and Scenario Analysis; UML Sequence diagram for key use cases; State diagram. 8. Design models 9. Usability Engineering 10. Software Testing 11. Project Monitoring and Quality Assurance - Configuration Management; Using Earned Value Ajayi, Olusoga, Analysis Ayite, Akande, Adetunji for monitoring progress WEEK ONE This week’s lecture aims to cover the following: Course Expectations Characterizing a Software Lecture Topics Defining and Appreciating Class Conduct Software Engineering Course Grading The Software Engineering Profession Software Engineering Ethics Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content/Introduction Lecture Objectives At the end of this week’s lecture, students are expected to: 1. Know the course content, course grading and the expectations of SENG201 as a course 2. Understand what software engineering is all about 3. Appreciate the need for software engineering and the software engineering profession 4. Know the ethics that govern a software engineer Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content Course Description SENG201: Fundamentals of Software Engineering The course covers the basics of the Software Engineering global practice. It is aimed at helping students appreciate Software Engineering concepts and terminologies for large and complex systems. As a result we will cover topics associated with appropriate processes involved in the production of quality software products. Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content What should you expect from INSY405? This course is designed to expose students to the methods used to deal with issues encountered during the design and implementation of software systems. Typical Class sessions will involve the use of clearly described software project scenarios to help understand the various software engineering methods and their application. Students will be required to work in groups while they attempt practice exercises during practical classes. Students are also made to understand that there are many ways to solve a software problem, but Software Engineering aims to apply the method that produces the best quality using minimal resource Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content Course Activities 1. Lectures 2. Reading Assignments/Class Interactions 3. Class Teams 4. Team Assignment 5. Case Studies 6. Group Interactions Class Conduct 1. Lateness to class will not be tolerated. No student will be allowed entry after 5 minutes 2. Students are encouraged to contribute to class discussions. Bonus marks will be awarded discretionally 3. Students are expected to display high level of discipline in conduct and speech Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content Recommended Text 1. Fundamentals of Software Engineering (2nd Edition) by Carlo Ghezzi, Mehdi Jazayeri and Dino Mandrioli, 2002 2. Object-Oriented Software Engineering: Practical Software Development using UML and Java 3. Software Engineering: Theory and Practice (4th Edition) by Shari Lawrence Pfleeger & Joanne M. Atlee, Pearson Education, 2010 4. Software Engineering (7th edition) by Ian Sommerville, Addison Wesley, 2004. 5. Applying UML and Patterns – An Introduction to Object-Oriented Analysis and Design and the Unified Process (2nd Edition) by Craig Larman Ajayi, Olusoga, Ayite, Akande, Adetunji Course Content Course Grading The grading structure for this course is itemized in the table below: Grading Component Weight Remarks Attendance 5 Marks This also includes attendance at practical class Quizzes 10 Marks Quizzes in class will be un-announced. Students are encouraged to revise previous lecture(s) and go through next lecture. Be prepared always! Quizzes may be given in practical class too Assignment 10 Marks Details will be communicated in practical class Mid-Semester 15 Marks A mid-semester examination will be carried out, during the period stipulated by the University Group Project 20 Marks Details will be communicated in practical class Final Examination 40 Marks Examinations will be based of case studies. Students are advised to get a clear understanding of the concepts taught in the course. TOTAL 100 MARKS Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction Why Software Engineering? Many software solutions have poor design and it is getting worse The cost and time spent on software projects are inaccurately estimated WE NEED SOFTWARE Demand for quality ENGINEERING software is high and rising We have to learn to ‘engineer’ software Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction What is a Software? Software can be difficult to describe because it is not tangible! The term Software, is a generic term for an organized collection of computer data and programming instructions Software is created using a programming language and related utilities. These utilities may be script interpreters, compilers, IDEs (Integrated Development Environments), etc. Reading Assignment: Ajayi, Olusoga, Ayite, Akande, Adetunji Is there any difference between a software and a program? Introduction About Software No “wear and Unskilled Easy to modify tear” - unlike people can hardware create one Difficult to see Easy to development reproduce / effort replicate The Unique Nature of Software Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction About Software Types of Software CUSTOM GENERIC EMBEDDED For general use. Built in Hardware Developed for a Commercial Off Difficult to specific customer The Shelf - COTS change Software Categories Application Programming System Software Software Tools For the computer For end-users, For building System system, not depends on and Application human users. system software Software Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction What is Software Engineering? The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and other constraints Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction What is Software Engineering? IEEE: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1). The Canadian Standards Association: The systematic activities involved in the design, implementation and testing of software to optimize its production and support. The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction Software Engineering Explained Solving customers’ problems: This is the main goal of software engineering Sometimes the solution is to buy, not build Adding unnecessary features does not help solve the problem Software engineers must communicate effectively to identify and understand the problem Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction Software Engineering Explained Systematic Development and Evolution: An engineering process involves applying well understood techniques in an organized and disciplined way Most development work are mainly an evolution from a previous scheme of work Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction Software Engineering Explained Large, High Quality Software System: We are dealing with large systems – they cannot be completely understood by one person We need Teamwork How do we divide End product and co-ordination the work and still MUST be ensure delivery Ajayi, Olusoga, Ayite, Akande, Adetunji Satisfactory Introduction Software Engineering Explained Cost, Time and Other Constraints: Resources are limited – Money, Time, etc. Therefore, 1. The benefit must outweigh the cost 2. An accurate estimate of cost and time must be made 3. Remember that others are competing to do the job cheaper and faster Ajayi, Olusoga, Ayite, Akande, Adetunji Introduction Is there a demand for Software Engineers? How attractive is the Software Engineering Profession? In terms of average base salary, job availability and career progression, the software engineering profession is 2nd on the list in America. This information was gotten from 25 Best Jobs in America 2015, a survey conducted by career, community and employment website Glassdoor (Adams, 2015) Adams, C. (2015) Software engineers in demand, Ajayi,high-paid jobs Akande, Olusoga, Ayite, available. Retrieved from: Adetunji http://www.rcrwireless.com/20150310/workforce/jobs/software-engineer-in-demand-high-paid-job Introduction Ethics that guide the Software Engineering Profession Software engineering ethical conduct requires software engineers to always: 1. Act consistently with public interest 2. Act in the best interests of their clients 3. Develop and maintain with the highest standards possible 4. Maintain integrity in professional judgment 5. Encourage an ethical approach in management 6. Advance the integrity and reputation of the profession 7. Be fair and supportive to colleagues 8. Participate in lifelong learning Ajayi, Olusoga, Ayite, Akande, Adetunji WEEK TWO This week’s lecture aims to cover the following: SDLC Knowing how to choose the Software Development Process most appropriate model Models Class Examples/Discussions Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Lecture Objectives At the end of this week’s lecture, students are expected to: 1. Have a clear understanding of the SDLC concept 2. Know all the SDLC stages, in the “right order” 3. Know the connection between the SDLC and the different process models 4. Understand the different software development process models, so as to know the most applicable model for different software project scenarios. Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC) Software When thinking about SDLC, think about phases and Development forms. has a Life Cycle??? The merriam webster dictionary defines the term ‘life cycle’ as “the series of stages in form and functional activity through which an organism passes between successive recurrences of a specified primary stage” E.g. The life cycle of a mosquito is from egg to larva to pupa then to adult SDLC has to do with the different phases (and forms) that a software under development undergoes, in order to have a complete deployable software product. Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC) Various diagrams and phrases describe the different stages of software development, but they all mean the same in essence Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC)  Requirements Elicitation & Analysis: This phase identifies business requirements. Requirements such as: “Expected Users of the System” and what the system is expected to do, are determined and analysed. This phase produces a Requirements Specification document  Design: The system and software design is produced using details derived from the specification document Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC)  Implementation (or Coding): The designed blueprint is turned to reality by writing the source code of the entire application  Testing: The software is tested against the initially identified requirements. This is to ensure that the product is truly solving the needs gathered during the requirements phase Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC)  Deployment: The software is installed on systems. Client’s custom software are deployed at client’s site, while generic software are made available via appropriate medium. Once the product is tested and ready to be deployed it is released formally in the appropriate market  Support & Maintenance: The software team is also responsible for support and maintenance. Plans on how to scale and enhance your system are made Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Life Cycle (SDLC) Who SDLC does VS What SOFTWARE DEVELOPMENT ROLES ? Most Software Engineering Analysts Requirement Organisations structure workflow, Engineers Business team formation and project Analysts Programmers dependence differently. Solutions Support Architects This difference is mainly as a result Team of varying business strategies and Developers Testers priorities. Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Process Models This leads us to the different Ajayi, Olusoga,Software development processes Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Software Development Process Models Some traditional Software development process models process models describe the different approaches that can be employed in the creation of a are: software solution. Waterfall Iterative They are the approaches and Incremental techniques which define the Spiral foundation pillar of the software development life cycle Big Bang Prototyping As the software engineering profession Re-use based grows, more development strategies Agile evolve. Ajayi, Olusoga, Ayite, Akande, Adetunji Process Models Waterfall Model The waterfall model is the traditional model of software development It follows a serial execution of the SDLC phases The waterfall model upholds the believe that each phase should be given adequate attention and should be completed before proceeding to the next phase of the SDLC Each phase has specific deliverables and a review process Advantages Disadvantages Simple to understand and use Hard to get ALL requirements at project start Easy to manage Difficult to go back to a previous phase Highly systematic in nature High risk and uncertainty - no risk analysis Enables proper documentation Working software available late in the project Requires heavy documentation Ajayi, Olusoga, Ayite, Akande, Adetunji Developers are often delayed between phases Process Models Big Bang Model This process model is based on the theory of the creation of the universe Money and people are gathered to build a software, within flexible deadline It is useful for small projects, and often results into repetitive development It requires little or no formal testing Advantages Disadvantages Useful when requirements are not very Known to have high product failure rate clear High level of uncertainty – very risky A very simple and easy model with no Cannot be used for Large, complex systems rules. Hence easy for starters Does not fit into object oriented design and Requires less resource development Gives room for developers to be Gives little or no room for thorough creative and flexible Ajayi, Olusoga, Ayite, Akande, Adetunji requirements analysis Process Models Incremental Model This process model breaks a development project/product into divisions called modules for easy management Each module is developed separately The 1st module is often a major aspect of the system that can be used, and other module integrated incrementally It can be seen as a “multiple-waterfall” process Advantages Disadvantages A working version of software is It can sometimes be difficult to agree on produced after the first module which increment is the last increment High success rate Problems may arise from additional Easy to manage and monitor progress increments. Reduced risk of requirements changes Ajayi, Olusoga, Ayite, Akande, Adetunji Process Models Iterative Model This process model is used to develop a system in repetitions (iterative) Each iteration gives rise to an executable release With each iteration, extra features can be designed, developed and tested until there is a fully functional software (ready for deployment) Is there any difference between incremental and iterative development? Advantages Disadvantages Early and periodic results Difficult to know when to end project Easy to measure progress Design issues may occur since requirements Requirements change are less costly are not concluded at the beginning Easier to manage risk - High risk part is Not suitable for smaller projects Ajayi, Olusoga, Ayite, Akande, Adetunji done first Intense customer involvement Process Models Prototyping Prototyping is the act of developing a sample version of an intended software solution. It allows users evaluate developer proposals before implementation It also helps understand user specific requirements Advantages Disadvantages It provides reality-check on initial project Customer satisfaction may take a while plan and estimates High risk of compromising quality Implementation is based on a tried sample Building prototypes may be too much if Early feedback not monitored properly High user involvement Ajayi, Olusoga, Ayite, Akande, Adetunji Easy to identify non-captured requirements Process Models Spiral Model The spiral method is a risk- biased development strategy It consciously iterates risk analysis at a predefined frequency It is a combination of iterative development process model and waterfall model It analyses alternatives and weighs their viability Advantages Disadvantages A good model for very large products Spiral may go on longer than planned Risk analysis hints on required testing Not suitable for smaller projects – expensive modalities Expert skills needed for risk analyses Working software is produced early Ajayi, Olusoga, Ayite, Akande, Adetunji Accommodates changing requirements Process Models Spiral Model Ajayi, Olusoga, Ayite, Akande, Adetunji Process Models Agile The agile model is perhaps the most widely used model It is mostly used in time-critical situations It uses iterative development as a basis, but its centred on people’s feedbacks instead of using planning as the primary control mechanism There are many variations of agile model - Agile Modeling, Extreme Programming, Feature Driven Development, etc. Advantages Disadvantages Minimal development rules Poor documentation Documentations easily employed Very high project risk Customer satisfaction by rapid, continuous Poor emphasis on design principles delivery of useful software Ajayi, Olusoga, Ayite, Akande, Adetunji Process Models Present Day Variants of the Agile Methodology Extreme Programming (XP) Lean Kanban Crystal Agile Agile Data Methodology Scrum Agile Modelling Feature Driven Dynamic Systems Development Development (FDD) Method (DSDM) Ajayi, Olusoga, Ayite, Akande, Adetunji Process Models Variants of the Agile Methodology XP FDD Scrum A code first approach that An adaptive development organized A software development focuses on having results in around 5 process: framework that focuses on increments using continual 1. Develop an overall model proper management and testing and revision, in order to 2. Build features list adequate control. It aims to achieve customer satisfaction. 3. Plan by feature deliver a working software 4. Design by feature incrementally and empirically. 5. Build by feature The framework is self-organizing, Features serve as a basis for team cross-functional in team creation formation It allows developers to respond A Feature in FDD refers to as a small, It is useful for complex projects. to changing requirements – client-valued function expressed in through constant the form the There is no overall team leader communication. the decision is made by the team at different stages of the It denounces the advantage in A Feature Set is a group of business development thorough and time-consuming related features. The planning team Product Backlog Wish list analysis. reviews the features set assigned to Sprint planning Pull small chunk Hence no need for specialization programmers Sprint Code in Short time of duties, all team members write codes, test, design and An agile methodology for large ScrumMaster – keeps the team focused evaluate. projects Ajayi, and teams Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Choosing Process Models It can be very tricky deciding on what process model to follow. Two or more process models may be used in carrying out a software project, but the level of success may vary A deep consideration of the most appropriate model is required of a software engineering team. The following factors may be given deep consideration when deciding on what model to use Consequence Requirements Team Time Domain of wrong Stability Dynamics Constraint Familiarity analysis Customer Familiarity Developers’ Financial Geographical Involvement / with Proficiency Constraint Dynamics Availability Technology Ajayi, Olusoga, Ayite, Akande, Adetunji Read further: https://melsatar.wordpress.com/2012/03/21/choosing-the-right-software-development-life-cycle-model/ Software Development Life Cycle and Process Models Choosing Process Models How can you decide on which method or process to implement while developing a software? This depends on the feasibility analysis and key requirements factor. For larger projects, it is advisable to use Spiral and Incremental model. Development can be flexibly done in modules and parts. When dealing with small projects that have fixed requirements, you can decide to go with the waterfall model. Such projects do not require changes during implementation The size of a project is not enough to determine the appropriate process model(s). Other factors mentioned earlier should also be considered Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Reading Assignment For all the process models, list out a clear distinction of when to use of them Ajayi, Olusoga, Ayite, Akande, Adetunji Software Development Life Cycle and Process Models Choosing Process Models – Class discussion Ajayi, Olusoga, Ayite, Akande, Adetunji

Use Quizgecko on...
Browser
Browser