Software Engineering: Paradigms, Development, and Business Models
Software Development Methods
Creating Deployment Projects
- Data Model (Data Flow Diagram & Entity-Relationship)
- Business Model (Microsoft Project & Visio)
- Logic Model (CASE Tools & UML Diagrams)
- Development Model Patterns (RUP, ISO, CMMI, XP)
Software Development Paradigms
- Functional Paradigm: Computing as mathematical function evaluation (LISP, Haskell).
- Structured Paradigm: Popularized PC software development (C, Pascal, COBOL). Divide and conquer approach, but faced maintainability issues due to redundant code and global variables. Systems were entirely procedural.
- Object-Oriented Paradigm: Based on interacting objects. Analysis and design aim to identify the optimal object set (Delphi, Java, Visual Basic).
- Component-Oriented Paradigm: Interacting software components form complex systems. Components, defined as objects with similar purposes, can be static.
- Aspect-Oriented Paradigm: Separates and organizes code by importance. Enables code encapsulation and modularization (AspectJ).
Software Engineering
Definition
Software engineering uses sound engineering principles for cost-effective, reliable, and efficient software creation.
Types of Software
- Basic Software: Supports other software (compilers, editors).
- Real-Time Software: Manages real-world events (air traffic control, ICU monitoring).
- Commercial Software: Used by organizations (accounts payable, inventory).
- Scientific & Engineering Software: Processes complex algorithms (astronomy, geology, CAD/CAM).
- Educational Software: Aids learning (dictionaries, translators, e-book readers).
- Artificial Intelligence Software: Solves complex problems using non-numerical algorithms (expert systems, neural networks).
- Business Management Software: Integrates management functions (ERP systems).
Software Development Stages
- Specification: Defines functionality and operational restrictions (requirements gathering, interviews).
- Development: Production according to specifications (analysis, models, diagrams).
- Validation: Ensures customer requirements are met (testing, prototypes).
- Evolution: Adapts to changing needs and technologies.
Software Requirements Engineering
- System Requirements: Documents functions and constraints (contract between buyer and developer).
- Project Specification: Abstract software description (diagrams for detailed implementation).
- Functional Requirements: System reactions to specific inputs and expected results.
- Non-Functional Requirements: Constraints on services or functions.
- Domain Requirements: Hardware and physical infrastructure.
Business Model and Information Technology
Challenges
- Internal conflicts regarding IT roles and responsibilities.
- Complaints about IT system performance, costs, and benefits.
- Lack of company-level vision and functional integration.
- Decreased competitiveness due to competitors’ innovative IT use.
- Redundant information system development and lack of information reuse.
Key Considerations for Integrated Systems
- Information flow through management information.
- Adequate information.
- Eliminating paper.
- Internet-based business models.
- Expanding the company’s information field.
- Rational use of business analysis and competitive intelligence tools.