Software Engineering Week 3 PDF
Document Details
Uploaded by IntelligentJasper7744
Tags
Summary
These notes cover software engineering concepts from week 3, emphasizing the layers, processes, activities, and tools involved. The document outlines topics such as operational, transitional, and maintenance aspects, as well as discussing software process models.
Full Transcript
SOFTWARE ENGINEERING Week 3 Software Engineering Layers Software Engineering Layers A “Quality” Focus (I) it is the bedrock that supports software engineering. It is where the commitment to continuous improvement. Three things to consider: Operational Transitional Maintenance So...
SOFTWARE ENGINEERING Week 3 Software Engineering Layers Software Engineering Layers A “Quality” Focus (I) it is the bedrock that supports software engineering. It is where the commitment to continuous improvement. Three things to consider: Operational Transitional Maintenance Software Engineering Layers Operational (1) This aspect tells how well the software performs the tasks it’s intended to do for its users. Correctness- It is the extents to which a program satisfies its specification and fulfills the customer’s mission objectives. Reliability- It is the extent to which a program is expected to perform its intended function with required precision. Efficiency- It is the amount of computing resources and codes required by a program to perform its function. Software Engineering Layers Integrity- It is the extent to which access to software or data by unauthorized person can be controlled. Usability- It is the effort required to learn, operate, prepare input and interpret the output of a program. Software Engineering Layers Transitional (2) This aspect is important when the software is moved from one (1) platform to another. Portability- It is the effort required to transfer the program from one hardware and/or software system environment to another. Reusability- It is the extent to which a program( or part of a program) can be reused in another application. Interoperability- It is the effort required to complete one system to another. Software Engineering Layers Maintenance(3) This aspect tells how capable a software in terms of adapting to ever-changing environment. Maintainability- It is the effort required to locate and fix a defect in a program. Flexibility- It is the effort required to modify an operational program. Testability- It is the effort required to test a program to ensure that it performs its intended function. Software Engineering Layers Process Model (II) It is the foundation of software engineering that serves as the glue that holds the technology layers together. It defines a framework that consists of key areas that define and enable rational and timely development of computer software. The key process areas are the basis for the software project management. A process is a series of steps involving activities, constraints, and resources that produce an intended output of some kind. A software process is a set of partially ordered steps (activities) intended to build a software product or enhance an existing one. Software Engineering Layers An activity(commonly known as the phases of the software development process or the software development life) is a conceptual model that describes the constituent task of a process performed by people involved in the development process applicable to any software project regardless of project size, composition of the development team, and complexity of problem. Software Engineering Layers Four Fundamental Process Activities SOFTWARE SPECIFICATION (a) This is where the functionality of the software and constraints on its operation must be defined. It includes the following: Feasibility Study (1) It is a preliminary study which investigates the information needs of prospective users and determines if it is technically, financially, practically, and technologically feasible to build the system. Software Engineering Layers Four Fundamental Process Activities Requirements Elicitation and Analysis (2) Analysis is a detailed study of the various operations performed by a system, including its limitations, learning system related problems or changes to be done in existing systems. This is where what the system stakeholders require or expect from the system is determined. Software Engineering Layers Four Fundamental Process Activities Requirements Specification (3) This is where the detailed requirements are defined. Requirements Validation (4) This is where the validity of the requirements is checked. Software Engineering Layers SOFTWARE DEVELOPMENT (b) This is where the software to meet the specification must be produced. It includes the following design activities: Architectural Design – This is where the overall structure of the system, as well as the principal components (sometimes called sub-systems or modules), and their relationships and how they are distributed are identified. Interface Design – This is where the interfaces between system components are identified. Software Engineering Layers SOFTWARE DEVELOPMENT (b) Component Design This is where the operation of each system component is designed. Database Design This is where the system data structures and how these are to b represented in a database are designed. Software Engineering Layers SOFTWARE VALIDATION (c) This is where software is validated/check to ensure that the system conforms to its specification and it does what the customer wants. It includes the following: Development or component testing – This is where the individual components are tested independently. System Testing – This is where the system is tested as a whole. Testing of emergent properties is particularly important. Acceptance Testing – This is where the customer data is check to prove that the system meets the customer’s needs. Software Engineering Layers SOFTWARE EVOLUTION (d) This is where software is developed using software engineering principles and methods to meet the changing customer needs. Software Engineering Layers Method (also referred as a technique) (III) It provides the technical “how to’s” for building software. It covers a broad array of tasks (e.g. requirements analysis, design, program construction, testing, and maintenance) that govern the execution of some activity. Also, it is heavily dependent on a selected paradigm and may be seen as a procedure for producing some result. It generally involves some formal notation and processes. Software Engineering Layers Tool (IV) It provides automated or semi-automated support for the processes and methods. This support makes us more accurate, more efficient, or more productive or that it enhances the quality of the resulting product. For example, we use a computer keyboard and printer to create letters because the resulting documents are easier to read than our handwriting. Thank you for listening. God bless.