Lec1,2 Summary
Lec1,2 Summary
- It’s a systematic approach to design, develop, test, deploy and maintain a software Lec(1)
- It combines engineering principles with software developing
- Focuses on scalability, reliability and maintainability
Important of Software Engineering:
- Manages complexity in large-scaled systems
- Reduces system failures & Bugs
- Improves Efficiency & Security
- Enhances Team collaboration
Software Development Lifecycle (SDLC)
Requirement Analysis -> System Design -> Implementation -> Testing -> Deployment -> Maintenance & Evolution
Software Development Models:
- Waterfall Model
- Agile Methodology
- DevOps
- Spiral Model
Software Requirements:
- Users & System
- Functional
- non-Functional
Steps in Requirement Engineering:
1. Abstraction
2. Documentation
3. Validation
System Modelling:
Visual Representation of a system’s architecture, using UML (Unified Modeling Language)
Design Principles:
- Modularity -> Breaking into smaller parts
- Separation -> Each part has a responsibility
- Encapsulation -> Hiding unnecessary info/details
- Scalability -> System growth without any performance issues
Software Development & Implementation:
- Is at which an executable software is deployed, that involves:
1) Designing the system architecture
2) Writing code based on the requirements
3) Debugging to ensure reliability
Types of Testing: Quality Assurance Techniques:
- Unit Testing - Debugging
- Integration Testing - Code reviewing
- System Testing - Automated Testing
- User acceptance testing (UAT)
Importance of Maintenance:
- Fixing Bugs & Exploits
- Adapting new requirements
- Improving Performance
Security Concepts:
- Authorization & Authentication
- Secure Coding
- Data Encryption & Privacy
- Software Engineering is concerned with theories, methods and tools for professional software development
- All developed nations depends on software
Lec(2)
Software Costs:
- Software costs are often greater than the hardware cost, such as ERP (Enterprise Resource Planning), these systems include all
he tools and processes needed
- Software costs more to maintain that it is to develop
Software Products:
1) Generic Products:
- Stand-alone systems that are marketed/sold to anyone, Specifications of what the software should do is owned/decided by the
Software Dev
Example) PC
2) Customized Products:
- Software that are commissioned for a certain need/purpose, Specifications of what the software should do is owned/decided
by the customer
Examples) Embedded systems, traffic controls
Software: Computer Programs that are developed for either a customer or the general markets, they come associated
with documentations
Attributes of a Good Software:
- Delivers the required functionality & Performance to its user
Software Engineering: a discipline concerned about all aspects of software production
Fundamental Software Engineering Activities:
- Software Specification
- Software Development
- Software Validations & Evolution
Essential attributes of a Good Software:
- Maintainability
- Dependability & Security
- Efficiency
- Acceptability
General Issues that affect Most software:
- Heterogeneity: systems need to operate as distributed systems across networks that include different type of devices
- Business & Social Change: as society emerges quickly, we need to adapt and develop new updated software
- Security & Trust: Its essential that we can trust that software
Application Types:
- Stand-alone Applications: applications that run on a local computer, they include all the necessary functionality
- Interactive transaction-based: executed on a remote computer, access by users from their own PCs or terminal
- Embedded Control Systems: control and manage hardware devices
- Batch Processing systems: Designed to process data in large batches, they process large individual inputs to create outputs
- Entertainment Systems: primarily used by the user and their entertainment
- Modelling & Simulations Systems: used to model physical processes or situations
- Data Collections Systems: collect data from a certain environment using a set of sensors then it’s sent to be processed
- Systems of Systems: Systems that are composed of a number of other software systems
Software Engineering Fundamentals:
- Systems should be developed using a managed and understood development process
- Performance is important for all types of systems
- Understanding the system’s specifications & requirements
Web & Software:
- Web is running applications & organizations has been increasingly developing web-based systems and cloud computing
Software Engineering Ethics:
- Engineers must behave in an honest & ethical way, if they want to be respected as professionals
- Engineers should normally respect the confidentiality of their clients whether or not a formal contract was signed
- Engineers should not accept work that is out of their hands
- Engineers should ensure that the copyrights of the software and their clients are protected
- Engineers should not use their technical skills to misuses other people’s computer