THE RELATIONSHIP OF SOFTWARE ENGINEERING TO OTHER AREA
























- Slides: 24
THE RELATIONSHIP OF SOFTWARE ENGINEERING TO OTHER AREA OF COMPUTER SCIENCE
Programming language Central tools used in software development Having influenced how well we can achieve our software engineering goals
Operating systems Software should usually run on a specific operating system Need to consider if the software can work well with a specific operating system
Databases allow applications to be written that use data without worrying about the underlying representation of the data Allow database systems to be used as components of large software systems
Artificial intelligence Some researchers have been trying to apply artificial-intelligence techniques to improve software engineering
THE SOFTWARE LIFE CYCLE Software is said to have a life cycle composed of several phases. waterfall model - the process structures the activities as a linear cascade of phases, in which the output of one phase flows as the input to the next one. Each phase has well-defined starting and ending points, with clearly identifiable deliverables to the next phase
PHASES OF WATERFALL LIFE CYCLE MODEL: Requirements analysis and specification Usually the first phase of a large-scale software development project Purpose of this phase is to identify and document the exact requirements for the system
System design and specification Software engineers design a software system to meet requirements. Sometime split into two sub-phases • Architectural design: entails defining the overall organization of the system in terms of high-level components and interactions • Detailed design: components are decomposed into lower level modules with precisely defined interfaces
Coding and module testing The engineer produces the actual code that will be delivered to the customer as the running system Individual modules developed in the coding phase are tested before being delivered to the next phase
Integration and system testing All the modules having been developed before and tested individually are put together-integrated-in this phase and are tested as a whole system
Delivery and maintenance Once the system passes all the tests, it is delivered to the customer and enters the maintenance phase. All modifications made to the system after the initial delivery are usually attributed to this phase
DEFINITION OF SOFTWARE PRODUCTION PROCESS Software production process: The process we follow to build, deliver, deploy and evolve the software product, from the inception of an idea all the way to the delivery and final retirement of the system. Satisfying customer’s expectations delivering quality products on time. by
Software can be decomposed into a number of specific activities: • Feasibility study Performed before the production process actually starts, to support the decision of weather a new development should be started. Its goal is to provide a feasibility study document, which represents different scenarios and alternative solutions. The A feasibility study document should contain definition of problem Alternative solutions and their expected benefits Required resources, costs, and delivery dates in each proposed alternative solution
• Designing Design is the activity through which software engineer structure the application at different levels of detail. The result is a design specification document, which contains a description of the software architecture, including: The system in terms of its components Their interfaces, Their interconnections
• Delivery, deployment, and maintenance Delivery Distributed among a selected group of customers prior to its official release, also called beta testing Deployment It defines the physical run-time architecture Maintenance A set of activities performed to modify the system after it is delivered to the customer
PROJECT SIZE CATEGORIES CATEGORY NUMBER OF DURATION PRODUCT SIZE PROGRAMMERS Trivial 1 1 -4 weeks 500 Small 1 1 -6 months 1 K to 2 K Medium 2 to 5 1 -2 years 5 k to 50 k Large 5 to 20 2 -3 years 50 k to 100 k Very Large 100 to 1000 4 -5 years 1 M Extremely Large 2000 - 5000 5 - 10 years 1 M to 10 M
TRIVIAL PROJECTS 1 programmer working perhaps, part time. Packaged in 10 to 20 sub routines. Doesn’t need a formal analysis. Conflict If personal software intended for personal use became a software product.
SMALL PEOJECTS 1 programmer packaged perhaps in 25 to 50 routines Small programs have no interaction at all. Client interaction. Do have standards. Development Notation Documentation Reviews
MEDIUM PROJECTS 2 to 5 programmers 250 to 1000 subroutines Have interactions with other programs! Do also have client and developer interaction. Advantage: has a vastly improved product quality
LARGE PROJECTS 5 to 20 programmers Has massive number of subroutines Applies several subsystem Example: 1. Compiler 2. Database Package 3. Graphics Program 4. Real-time control system
VERY LARGE PROJECT Requires 100 to 1000 programmers 1, 000 source instructions HAS MASSIVE NUMBER OF SUBROUTINES and SUBSYSTEMS which forms a LARGE SYSTEM! Involves real-time processing, telecommunication and multitasking! Example: LARGE SCALE OS, LARGE DB SYSTEM,
TRIVIA: According to Brooks… IBM and OS/360 was developed by 5000 programmers over a period of 5 years and contained more that 1, 000 codes!
EXTREMELY LARGE PROJECT Employs 2000 to 5000 programmers for a period of up to 10 years and results in 1 to 10 million lines of codes. It involves LIFE-and-DEATH processes Example: air traffic control ballistic missile defense military command control system
























