Need as soon as
PowerPoint Presentation ITECH1400 – Foundations of Programming ITECH7201 Software Engineering: Analysis & Design Week 1 – Introduction CRICOS Provider No. 00103D CRICOS Provider No. 00103D This course provides a grounding in software engineering principles related to analysis and design. Welcome to ITECH7201 2 Course details are in the course description You will be able to find it in Moodle If you can’t contact your Lecturer immediately Contains information about Assessment – assignments, exams, others Lectures and Labs Objectives of the course Many other details The course description is a “contract” between you and the School about how the course is conducted. Make sure you read it and understand it. Course Overview 3 In Week 5 there will be a mid-semester test worth 10% of the course. The test can draw from all material from the first four weeks (inclusive). This test is what we call an “early intervention” task. It is designed to identify people who might be having problems so we can try to provide ways to help them turn the situation around. Assignment 1 will be handed out in week 3 Lecture Test and Assignment 1 4 Week 12 is the review week No new material is covered in this week It is your chance to go over the material from the course, ask questions, clarify concepts and generally start preparing for the exam The Final Test is worth 50% of the course marks. More details of the final test will be provided as the semester progresses. Review Week and Exam 5 After completing this week’s tasks you should be able to: Define the meaning of software engineering Differentiate between the requirements analysis and design phases of software development Describe where analysis and design fit into the overall software development lifecycle Write and execute small Java programs in Eclipse using concepts you learned Programming 1 Explain the terms abstraction and encapsulation in object-oriented programming Create a small class diagram in Enterprise Architect (EA) This week’s tasks 6 We will be covering some aspects of Software Engineering You will find many definitions of Software Engineering I’ll leave that to you as an exercise We’ll first consider what problem we are trying to solve In Programming 1 you wrote some small (yep – they were small) applications. Maybe 100 – 200 lines. What is ITECH7201 about? 7 You attempted to make these programs Conform to a specification provided by lab notes or assignment specs Be robust Not to crash or contain errors These are the major aims of all applications But imagine the difficulties of achieving these aims for programs that contain thousands of lines of code, millions . . . Just jumping onto the computer and typing code would be totally inappropriate for such applications. What is ITECH7201 about? 8 Usually involve more than one programmer Often teams Are often broken down into subsystems which are worked on independently Separate teams work on different subsystems Proper interfaces are required to ensure the subsystems work harmoniously together Will need to be maintained once they are installed The needs of the end-user will change over time Large Applications 9 We will provide an introduction to software engineering We will be concentrating on requirements analysis and design in this course We will also be doing some implementation to explore these concepts These three concepts fill one part of the Software Development Life Cycle (SDLC) The next slide gives a greater overview of all of the phases of the SDLC In ITECH7201 10 IEEE Std 1074: Standard for Software Lifecycle IEEE Std 1074 Project Management Pre- Development Develop- ment Post- Development Cross- Development (Integral Processes) > Project Initiation >Project Monitoring &Control > Software Quality Management > Concept Exploration > System Allocation > Requirements Analysis > Design > Implemen- tation > Installation > Operation & Support > Maintenance > Retirement > V & V > Configuration Management > Documen- tation > Training Processes http://slideplayer.com/slide/3265184/ Bernd Bruegge & Allen H.Dutoit Object-Oriented Software Engineering: Using UML, Patterns and Java Slide taken from http://slideplayer.com/slide/3265184/ Bernd Bruegge & Allen H.Dutoit Object-Oriented Software Engineering: Using UML, Patterns and Java 11 If you want to know more about the SDLC and the IEEE specification, search the Federation library for the following Schmidt, M. (2000). Implementing the IEEE software standards. Indianapolis, Ind. : Hemel Hempstead: Sams Prentice Hall. For those of you who are curious, search the library for standards such as the IEEE 15288-2015 Systems and software engineering – System life cycle processes Software Development Life Cycle 12 This phase involves understanding exactly what is needed for the application It involves Examining the problem Identifying the important features Coming to a consensus with the client Often involves getting regular feedback from the client To sum up, it involves deciding what needs to be done Not how to do it Requirements Analysis When we look at methodologies we will see that iterative methodologies (such as UP and XP) are becoming popular because the client’s vision of what they want changes as the project develops 13 Design involves developing a plan for implementing those features identified in the requirements analysis phase Design isn’t about deciding what needs to be done It’s about deciding how to do it Good design creates code that Is functional Provides good performance and other non-functional requirements Is easy to extend, modify and debug In case, user needs change Design 14 These provide means of creating abstract models of parts of an application Useful for design and documentation The tool used in the course is called Enterprise Architect (EA) Good documentation is important for communication between teams You will be using EA in the labs as the course progresses Computer Assisted Software Engineering (CASE) Tools 15 When programmers start working in teams, it is necessary to organise the work so that everyone knows what is expected of them. Formalised work practices designed to organise teams to work together to create an application is called a methodology There are many different methodologies which suit different types of project. Two different methodologies – Unified Process and eXtreme Programming are covered and contrasted Methodologies 16 Design Patterns are formalised descriptions of common problem solving techniques used in programming. You may have heard of factories or Model-View-Controller (common in mobile apps) We will cover various design patterns while describing aspects of the design and implementation of a large application – which will also form part of your second assignment. Design Patterns 17 While ITECH7201 is intended as primarily a software engineering course, there will be a lot of programming involved as we explore the various concepts A significant (and tested) part of this course will involve learning important object oriented concepts involving inheritance and polymorphism We will explore these concepts using Java, with the Eclipse IDE. (You might already have had some experience with these.) Eclipse and Java 18 A very quick look at Java and OO concepts Objects, classes, methods, access specification, constructors, general syntax Abstraction Encapsulation The new OO and Java concepts are: Inheritance Polymorphism Abstract classes Interfaces We will see that these concepts are vital in writing code that is easier to modify, maintain, debug, test and (hopefully) understand We will cover . . . 19 Liang, Y. D., author. (2014). Intro to Java programming, brief version / Y. Daniel Liang ; global edition contributions by Ming-Jyh Tsai (10th ed. Global ed. ed.). Pearson: Boston This text is available online from the library Chapters 4,5,6 focus on the Java language Chapters 10,11,12 focus on Object Oriented Thinking Suggested Text Computer Programming: What is Object-Orientated language https://www.youtube.com/watch?v=SS-9y0H3Si8 21 The object is the building block on an OO program (surprise!) An object has three defining features: Identity Each object is separate from other objects If we eat one apple, we haven’t eaten every apple in the world Attributes Values that define the object An apple might be big and red In Java, we might call attribute instance variables or fields We might refer to them as the object’s data Behaviour An object does things An aeroplane flies, a telephone rings In Java, behaviour is contained in methods What to take away from video 22 A class is a way to create multiple objects The code we write in Java defines classes A class is a blueprint of a set of objects. Defines the name, attributes, behaviour of a class The following link describes classes and their relationship to objects Class 23 Java Tutorials The Java tutorials link is here for your convenience: https://java.sun.com/docs/books/tutorial/index.html The first three are: Getting Started -- An introduction to Java technology and lessons on installing Java development software and using it to create a simple program. Learning the Java Language -- Lessons describing the essential concepts and features of the Java Programming Language. Essential Java Classes -- Lessons on exceptions, basic input/output, concurrency, regular expressions, and the platform environment. 4 overarching principle of OO design include: Abstraction Encapsulation Inheritance Polymorphism Others include: Reuse Information hiding Principles of OO Design 25 Abstraction is the process of determining what is important about the things we are considering and discarding those aspects that we don’t consider important Fundamental process in class creation For example, if we are modelling an apple we might abstract out the properties of size and colour, but we might discard information about the farm from which the apple came. Abstraction 26 Encapsulation refers to two features of OO The feature of an object in which data and the behaviour are wrapped in the one construct This aspect is such a fundamental part of an object that you will have seen it many times already The ability of an object to only show those parts of itself that the user needs to see This is often referred to as information-hiding It is common practice to hide an object’s data and to make that data accessible only through associated methods Encapsulation 27 VideoPlayer - songFile + play ( ) + pause ( ) + stop ( ) Class Diagram A class can be summarised in a class diagram Consists of name (top) attributes (middle) behaviour (bottom) We can draw class diagrams using Enterprise Architect (EA) 28 BankAccount - balance - accountNo + deposit (double) + withdraw (double) Demo In coming weeks we will cover the other OO principles Inheritance Polymorphism We will now go over some programming 1 Java concepts using this BankAccount example 29 Any questions? Next week: Week 2 – Class reuse, Composition/Aggregation (briefly) and Inheritance (in some detail) CRICOS Provider No. 00103D CRICOS Provider No. 00103D School of Science, Engineering and Information Technology CP616 Semester 1, 2004 Commonwealth of Australia Copyright Act 1968 Notice for paragraph 135ZXA (a) of the Copyright Act 1968 Warning This Material has been reproduced and communicated to you by or on behalf of Federation University Australia under Part VB of the Copyright Act 1968 (the Act). The Material in this communication may be subject to copyright under the Act. Any further reproduction or communication of this material by you may be the subject of copyright protection under the Act. Do not