1.1 Introduction to Software Engineering

Cards (12)

  • Defining Software
    Software is:
    1. Instructions (computer programs): that when executed provide desired features, function, and performance
    2. Data structures: that enable the programs to adequately manipulate information.
    3. Documentation: that describes the operation and use of the programs
  • What is Software?
    • Software is developed or engineered it is not manufactured in the classical sense
    • Software doesn't "wear out“ it deteriorates
    • Although the industry is moving toward component-based construction, most software continues to be custom-built.
  • Software Application Domains
    • System software
    • Application software
    • Engineering/Scientific software
    • Embedded software
    • Product-line software
    • Web/Mobile applications
    • AI software (robotics, neural nets, game playing)
  • Legacy Software
    Why must software change ?
    • ADAPTED to meet the needs of new computing environments or technology
    • ENHANCED to implement new business requirements
    • EXTENDED to make it interoperable with other more modern systems or databases
    • RE-ARCHITECTED to make it viable within a network environment
  • Defining the Discipline
    Software Engineering (IEEE Definition):
    1. The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software
    2. The study of approaches as in (1)
  • Software Engineering Layers (Top down)
    1. Tools
    2. Methods
    3. Process
    4. A quality focus
  • Framework Activities
    • Communication
    • Planning
    • Modeling: Analysis of requirements, Design
    • Construction: Code generation, Testing
    • Deployment
  • Umbrella Activities
    • Software project tracking and control
    • Risk management
    • Software quality assurance
    • Technical reviews
    • Measurement
    • Software configuration management
    • Reusability management
    • Work product preparation and production
  • Process Difference Requiring Adaptation
    • Flow of activities, actions, and tasks and their interdependencies
    • Degree to which actions and tasks are defined within each framework activity
    • Degree to which work products are identified and required
    • How quality assurance activities are applied
    • How project tracking and control activities are applied
    • Degree of detail and rigor with which the process is described
    • Degree to which the customer and other stakeholders are involved with the project
    • Level of autonomy given to the software team
    • Degree to which team organization and roles are prescribed
  • The Essence of Practice
    Polya suggests:
    1. Understand the problem (communication and analysis)
    2. Plan a solution (modeling and software design)
    3. Carry out the plan (code generation)
    4. Examine the result for accuracy (testing and quality assurance).
  • Hooker’s General Principles
    1. The Reason It All Exists – provide value to users
    2. KISS (Keep It Simple, Stupid!) – design simple as it can be
    3. Maintain the Vision – clear vision is essential
    4. What You Produce, Others Will Consume
    5. Be Open to the Future - do not design yourself into a corner
    6. Plan Ahead for Reuse – reduces cost and increases value
    7. Think! – placing thought before action produce results
  • Every software project is precipitated by some business need
    • the need to correct a defect in an existing application
    • the need to the need to adapt a ‘legacy system’ to a changing business environment
    • the need to extend the functions and features of an existing application
    • the need to create a new product, service, or system