Tuesday, September 20, 2016

HW11: Chapter 6


(6.4) Draw diagrams showing conceptual  view and a process view...
  • A ticket machine used by passengers at a railway system.
  • A computer-controlled video conferencing system that allows video, audio and computer data to be visible to several participants at the same time.
  • A robot floor-cleaner that is intended to clean relatively clear spaces... cleaner must be able to sense walls and other obstructions.





Wednesday, September 14, 2016

HW10: Chapter 5





(5.3): ... Using an activity diagram, model the process context... that shows the activities involved in planning a party and the system elements that might be used at each stage.


(5.5): Develop a sequence diagram showing the interactions involved when a student registers for a course in a university...

(5.7):  Based on your experience with a bank ATM, draw an activity diagram that models the data processing involved when a customer withdraws cash from the machine.

(5.8): Draw a sequence diagram fro the same system. Explain why you might want to develop both activity and sequence diagrams when modeling the behavior of a system.

A Sequence diagram shows in better detail the interactions between actors and the objects in a system. This also includes interactions between differing objects. An Activity diagram better shows the  individual activities involved in a system. Together, Sequence and Activity diagrams give the designer and potentially the client a clearer perspective of how the system is structured.












Monday, September 12, 2016

HW9: Reflections

    
     Software design and programming are inherently becoming critical parts of our lives. We have witnessed a steady progression of technological advances in our everyday products that at one-time, had no association to such. Because of this steady progression, we have to ask ourselves what technologies do we have today, that may be radically changed in the near tomorrow. From the “ 9 predictions for the future of programing”, there are  3 distinct trends I see that will continually advance. 

  “Smartphones will do everything but phone calls”… ? Practically, yes; the advancement of mobile devices is at the pinnacle at what we consider rapid advancement. Just a little over 25 years ago pagers (aka beepers) were the standard for mobile devices, and its main functionality was no more than receiving limited lines of text. Compared to today, our mobile devices can receive and deliver virtually an unlimited amount of messages, access the world wide web, snap and record pictures/videos, download applications, act as a GPS, be used an accelerometer, video conferencing,  and finally take and place phone calls.  This steady line of innovative features packed in small electronic box will continue to grow. The basic feature of making a phone call will not evade the smartphone, but will continue to see a slew of new technologies embedded into it.

  Data collection has become a necessity for a lot of applications, businesses, state and federal institutions. The more the data we have, the easier it becomes for us analyze and understand the world around us. It is not by accident that data centers are emerging around every corner. We as society understand with the useful collection of information about our surroundings, we will be better equipped to handle tasks in a safe and efficient manner. Collected data that can be used in a relational type database can improve in how we live and go about our daily lives. Such databases can easily identify current and potential problems, virtually store unlimited information, and identify trends that we may have otherwise overlooked. Information is power, and the more power we have, the less complicated our everyday lives become. Thus, databases will continue to soar and become an intermediary feature that sets apart one technology from the other.

It is no secret technology is all around us. As so, it only makes sense to try to understand it. I believe one who understands his environment is one who will have a significant better chance of thriving. Likewise, our legislators and educators seem to have embraced this approach. We are now seeing programming courses being offered and taught to our youth. Wether offered as apart of  a school curriculum, elective or via summer camps, there is a heightened effort to acquaint our youth with programming concepts and technologies.  As a result, at some point the majority of the population will have some type of programming experience. Unfortunately this does not equate to the majority of the population writing “real code”. Programming can be stressful, aggravating, and time-consuming. With technology continually advancing, it will require coders to be self-teachable. All of this combined, I only see a small portion of the population willing to take on these challenges.

The trends outlined here will continue to grow. It benefits both the end-users and the industry. Within time the advancements will become self-evident, however, for these trends to continually trend upward, there has to be a steady base of talented individuals willing to take on the associated challenges. Wisely enough we are preparing for that by familiarizing the youth to the different realms of programming. 

HW8: Chapter 2


(2.1) Suggest the most appropriate generic software process model hat might be used as a basis for managing the development of the following systems...


A system to control antilock braking in a car

Waterfall model;  an antilock braking control system is a critical embedded software system that intertwines software with hardware that is apart of a broader system. These aspects makes it crucial for it to be modeled by the Waterfall process.

A virtual reality system to support software maintenance: 

Waterfall model; this system will require regular maintenance and updates. The Waterfall model highlights maintenance as its longest life-cycle phase, thus making it an ideal software process for this system.

 A university accounting system that replaces an existing system

Integration and configuration; this approach relies on the reuse of some components from a predecessor. With an intricate university accounting system, there are more than likely multiple components from the predecessor system that will be recycled and reused in the newer system. Also, this system is a stand alone application with a very defined role. Having these features  makes it a primary candidate for the Integration and Configuration process.


An interactive travel planning system that helps users plan journeys with the lowest environmental impact:

Incremental; this type of system will depend heavily upon its users. As such, the developers will need to consistently get feedback from users while developing the system. The Incremenatal approach will allow for this because of it allows user input at every relative stage of the process. Thus, designers can make changes as needed without a large amount of back tracking. 

Wednesday, September 7, 2016

HW7: Reflections


     Software engineers need to design resilient and dependable systems. Designing software is a multilayered process that encompasses user and system requirements..These requirements can be classified as functional and non-functional. One of the first hurdles for software designers to overcome is identifying what the functional and non-functional requires of the system are. Functional requirements are those specifications in which the system shall do, and non-functional requirements are those that define how the system works. 

    There a few ways to identify these requirements but using UML’s is an effective approach.  By using UML’s it helps the designer to graphically model parts of the system that is comprehensive to the client/user and to the programmers. Other Methods that help decompose a system to identify functional and non-functional requirements is by using Test-driven development (TTD) approach.  This approach provides the working specifications of functional code. It also produces quality code which incorporates exception cases that allow for increased resilience, which in-turn can increase dependability. Software designers must plan courses of action incase of software or hardware failure to ensure a dependable system. Thus implementing UML’s aid in accomplishing software design requirements that produce resilient and dependable systems that plan for failure. 

Tuesday, September 6, 2016

HW6: Chapter 4

(4.5) Using the technique suggested here, where natural language descriptions are presented in a standard format, write plausible user requirements for the following functions: 

 The gas pump system shall be unattended.
The gas pump system shall have a credit card reader (The pump system must have a card reader to ensure the system is functional when unattended),
The gas pump system shall ask for a specified amount of fuel after customer swipes their card.
The gas pump shall debit the customer account after fuel is delivered (Customers account should be charged after the  system verifies the fuel has been delivered to avoid a scenario where the system charges the customers account, but has less fuel available to deliver than the customers specified amount).
• The cash-dispensing machine shall be a bank ATM.
The internet banking system should allow customers to transfer funds between accounts hosted by the bank.
(4.6) Suggest how an engineer responsible for drawing up a system requirements specification might keep track of the relationships between functional and non-functional requirements.

 Requirement specification is defined as the process of formally documenting the requirements of the software, user and system. An engineer can track of their functional and non-functional requirement relationships by using an appropriate Unified Modeling Language such as use cases. 

(4.7) Using your knowledge of how an ATM is used, develop a set of use cases that could serve as a basis for understanding  the requirements for an ATM system

ACTOR: USER
ACTOR: BANK_SYS.

  • USER (inserts card) —> enter pin —> enter withdraw amount
  • USER (inserts card) —> enter pin —> choose deposit account
  • BANK_SYS —> validate pin
  • BANK_SYS—> validate withdraw/deposit specified amount
  • BANK_SYS —> verify pin —> dispense/retrieve specified amount

Monday, September 5, 2016

HW5: Reflections

 
Software engineering without question can be a long and complicated process. With having to account for so many features, it can turn into a downward whirlwind if the process is not managed appropriately. Those features that need to be accounted for but not limited to are security, safety, and an adaptive design. When these features are ignored or improperly  managed there are adverse effects, thus raising the need for strict regulations on safety-critical systems.
 
The most noticeable of effects that can be seen with safety-critical systems are commonly found in the medical field, when safety and security features are handled irresponsibly. Irresponsible designed medical software is dangerous in safety-critical systems because it has the potential to affect masses of people. With the “Therac -25”, “2010 Radiation Follies”, and related articles, we see how the lack of strict regulations allowed for a continuous production of intolerable risky software (systems that can threaten human life). They highlight the need to have in place strict regulations that impose routine hazard analysis. It also highlights the need for manufactures to have well documented user manuals for their safety-critical devices, and for those institutions that utilize such devices, to employ certified technicians. By these steps alone it minimizes the denial of accountability. We see in the related articles that because there was lack of detailed operation procedures from manufactures, and unregulated device operation standards, it allowed for both the manufacturing and medical industries to avoid taking accountability for any detrimental effects that originated from their product or practice. 
  
    Improper software design is not limited to just affecting the safety of those devices found in the medical industry, it expands into compromising the security of our everyday infrastructure. That infrastructure being anything with a computer in it that we depend on to perform common  routines that allows for us to sustain our quality of living… such as transportation. Vehicles are becoming more dependent upon computers that monitor and control many functions of the car. When these computer controlled systems are designed in a way that does not adhere to standard security design guidelines, it compromises its user and those around. We saw that due to poor software security measures in “FBI Auto Warning” and related articles, malicious software could be loaded into a vehicles onboard computer system, granting access and control to outside parties who could manipulate actions and functions of the car.  
 
     Adaptive design is another safety and security feature that should not be ignored when designing software systems. Adaptive design relates to the ability for the software to be used that is conducive to its specification, comprehensive to its users, and incorporates flexibility. This can otherwise be described as sociotechnical resilience. In the FBIs long quest to upgrade their outdated relational database system, the lack of sociotechnical resilience characteristics in the Sentinel system caused expensive delays for the agency. Because it did not incorporate some of the basic principals of sociotechnical resilience, its designers were always playing “catch-up”. Not always being user-friendly and incorporating basics features, and having to consistently update and include new features made the Sentinel project a long and unpleasurable process.
     
    Adhering to safety-critical, secure and adaptive software guidelines is becoming more crucial as technology advances. We need to protect our infrastructure by enforcing strict regulations on intolerable risk systems and those that can massively jeopardize the quality of life. We see that irresponsible software design has extensive range that can negatively affect the individual or conglomerates such as the FBI. It would serve us best to implement and follow design principals that promote sociotechnical resiliency.